Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Lets say I have an rpool with etc/ as a regular directory within it and now I want to create a separate zfs rpool/etc, obviously inheriting all the data I had in original /etc.

What would be the most proper and safe way to do so?

share|improve this question
up vote 3 down vote accepted

It isn't supported to turn /etc into its own zfs file system.

The reason is that /etc is needed during the early stages of boot, before (Open)Solaris starts to mount zfs file systems, so it would be empty if you change it.

My guess is that you want to take snapshots of /etc, but you can just take snapshots of the root file system instead:

zfs snapshot rpool/ROOT/opensolaris

You may have to replace opensolaris with the name of the current boot environment (run beadm list to find out which)

share|improve this answer
ok, what about any other directory, then? say, rpool/zones/myzone/export/home/git? :) – Yurii Rashkovskii Jul 19 '09 at 14:48
If you want to turn your git directory into a zfs filesystem, you just need to make tar archive of the current contents, then "rm -rf" the git dir, after that run "zfs create -o mountpoint=/path/to/git rpool/path/to/whatever/git" and finally untar the saved files. – Martin Jul 20 '09 at 21:55
oh, ok, that's what I thought... but secretly hoped there was a transparent way to split zfs :) – Yurii Rashkovskii Jul 20 '09 at 22:57

There isn't a built-in or automated way to create a new DataSet and migrate existing data to it. To get it done you'll need to create the dataset and manually (e.g. rsync) the data to it.

Let's say you have a dataset named tank\set with a directory in it named folder. You want to 'promote' the folder to be a child dataset named tank\set\folder:

mv /mnt/tank/set/folder /mnt/tank/set/folder-backup # move this out of the way so the new dataset doesn't mount on top of it
zfs create tank/set/folder
rsync -aAX /mnt/tank/set/folder-backup/ /mnt/tank/set/folder # bring over all the old data including acls and attributes

Then review that the data looks good; take a snapshot of the parent dataset just in case, and delete the folder-backup directory.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.