This article is a follow-up of an earlier post about ZFS on FreeBSD. We have created a ZFS pool with one disk and put some data on it. Now we want to mirror the data to safeguard them from disk failure.
In my virtual machine I created a new disk of the same size than previous ZFS dedicated disk and fire-up the machine.
Creating a dataset with 2 internal copies for each file
But before I added the second disk, I decided to create a dataset (of the file system type) inside the pool I have created in previous article. The dataset will be configured to replicate internally the data for safety. This is an entirely optional step which I did just to experiment with ZFS.
The reader should notice that my pool had only 1 drive which means that each file in this dataset will appear twice on the same drive. If the drive fails, everything is lost. It just help if one version of the file gets corrupted, ZFS will detect it and use the (hopefully) uncorrupted copy to restore the file.
# zfs create -o copies=2 laug/safe
Note about: mirror/striped pools and dataset copies
Dataset copies are in addition to any pool configuration such as mirroring or RAID-Z. In case of a stripped pool (the case if you use
zpool add command), ZFS will try to use different disks in the pool for each copy, if it can! In case of mirrors (the case if you use
zpool attach command) or RAID-Z, in addition to the pool duplication of data, ZFS will try to keep extra copies on different drives.
Preparing the second ZFS drive and adding it as a mirror to the existing pool
As the hard disk is exactly of the same size (same disk space and number of sectors) I can reuse the commands from the previous articles:
gpart create -s gpt ada2 gpart add -b 2048 -s 41932733 -t freebsd-zfs -l disk01 ada2
But now we are going to add the new disk to the existing pool in a mirror configuration. For this we use
# zpool attach laug ada1p1 ada2p1 # zpool status pool: laug state: ONLINE scan: resilvered 1.37M in 0h0m with 0 errors on Tue Jul 31 18:16:43 2012 config: NAME STATE READ WRITE CKSUM laug ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ada1p1 ONLINE 0 0 0 ada2p1 ONLINE 0 0 0 errors: No known data errors
As I don’t have much data on my pool, the resilvering was fast (see the scan message). In addition, one can see that the 2 disk partitions are now inside a mirror.
I really like ZFS, the command line interface is clean, it is easy to manage and it is powerful.