How to format external drive into ZFS?
The getting started page you posted a link to explains how to create a simple one disk pool.
This is the only thing you need to do. Creating a pool will automatically create a file system with the same name as the pool, which is what you call formatting a drive.
In your case, you can run from the command line:
diskutil partitiondisk /dev/disk5 GPTFormat ZFS %noformat% 100%
zpool create extdrive /dev/disk5s2
and you'll have a new volume named extdrive
available.
If you happen to run software with inconsistent file naming, like Adobe products and possibly Nikon capture, you might want to create a dedicated file system with case insensitivity set using something like:
zfs create -o casesensitivity=insensitive -o normalization=formD extdrive/data
I'm not so familiar with ZFS on Mac, so I'll try and speak on ZFS in general.
ZFS is a software-based volume manager that you can use to 'virtually' RAID a number of disks together.
The resultant storage volume that is created, is referred to as a zpool.
For example, you can take 2x raw disks [2x 3TB disks for example] and create a zpool (mirrored) via: zpool create MyPool mirror /dev/sda /dev/sdb
It's possible you might not have raw disks; in this case you can force ZFS to use preformatted disks by using the -f flag: zpool create -f MyPool mirror /dev/sda /dev/sdb
In your case, with a single preformatted disk, you can try forcing the creation of a zpool via: zpool create -f MyPool /dev/sda
- Some disks use a 4k sector size. You might choose to create your zpool using a 4k sector size to maintain proper alignment: zpool create -f -o ashift=12 MyPool /dev/sda
Now let's assume you have a zpool called MyPool with total pool capacity of 3TB (mirrored 2x 3TB drives).
Creating A Filesystem:
- From that raw 'pool' of storage, you can now create a filesystem. Your OS will be able to use/read/write the filesystem... NOT the pool.
- create a ZFS filesystem on your pool via: zfs create MyPool/Videos
- Now you should have a zfs filesystem called 'Videos' residing in /MyPool/Videos
- You can freely read and write to /MyPool/Videos, share it over the network, set permissions, etc.
Creating a Virtual Block Device:
- If you want, you can also create a virtual block device from your zpool via: zfs create -V 100GB MyPool/TestDevice
- TestDevice will be a virtual device with 100GB capacity, and it generally resides in: /dev/zvol/MyPool/TestDevice
- You can create any filesystem you want on TestDevice (HFS, EXT4, NTFS, etc), mount it, then use it!
You can create a bunch of Filesystems/Virtual-block-devices on your pool, and use them all very differently.
- For example, you can have a zpool with multiple filesystems/virtual-devs tuned accordingly to Videos, TimeMachine-backups, Databases, etc respectively.
- All these filesystems/virtual-devs would share from the same pool of storage. All data on the pool is redundant and dynamically protected against bit-rot.
First, find your device node:
$ diskutil list
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *4.0 TB disk1
1: Windows_NTFS My Book 4.0 TB disk1s1
Then format your HDD (where /dev/disk1
is your device node from above command):
$ zpool create -f -O casesensitivity=insensitive -O normalization=formD WD_4TB /dev/disk1
checking path '/dev/disk1'
You may be able to improve performance for some workloads by setting ashift=12. This tuning can only be set when the pool is first created and it will result in a decrease of capacity. For additional detail on why you should set this option when using Advanced Format drives see section 1.15 How does ZFS on Linux handles Advanced Format disks?