See also ZFS - Basic Commands
See also napp-it
See also OpenIndiana
Oracle ZFS with VMware ESXi 5.x Best Practices
Oracle Solaris ZFS Administration Guide
ZFS is a new and high-performance filesystem devised by Sun Microsystems (now Oracle) for the Solaris unix operating system. It has been ported to FreeBSD as well.
Why not RAIDZ (RAID5)? http://serverfault.com/questions/381908/grow-shrink-a-zfs-raidz
http://www.nex7.com/readme1st (scroll down to 'Pool Design Rules')
http://forums.freenas.org/showthread.php?158-What-number-of-drives-are-allowed-in-a-RAIDZ-config
http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
Always use mirrored VDEVs for best performance, reasonable protection, best degraded performance and fastest recovery from a failed disk.
Performance really depends on the number of spindles.
Only for VM storage and databases do you need or want to enable sync. If you simply use ZFS without foreign filesystems on it (VMs), ZFS will never corrupt on a crash due Copy On Write. So for regular filer use, disable sync unless you want a maximal security for small files like on a mailserver.
Always utilize an SLOG for your ZIL to improve synchronous write performance. Database applications, NFS environments, particularly for virtualization, as well as backups are known use cases with heavy synchronous writes.
You should have 3, 5, or 9 devices in each vdev
You should have 4, 6, or 10 devices in each vdev
You should have 5, 7, or 11 devices in each vdev
Always enable compression.
zfs set compression=on rpool zfs set compression=on rpool/ROOT
For large-memory systems, choose a larger boot drive because the swap and dump devices take up a lot of space by default.
http://docs.oracle.com/cd/E19963-01/html/821-1448/ggrln.html
http://docs.oracle.com/cd/E19963-01/html/821-1448/zfsboot-2.html
https://github.com/justintime/zpool-scrub-cron/blob/master/zpool_scrub.sh
Scrubs are I/O intensive and can negatively impact performance. They should be scheduled for evenings or weekends to minimize the impact to users.
auto-service
to facilitate scrub job scheduling and creationhttps://www.howtoforge.com/tutorial/how-to-use-snapshots-clones-and-replication-in-zfs-on-linux/
A snapshot provides a read-only, point-in-time copy of a file system or volume that does not consume extra space in the ZFS pool. The snapshot only uses space when the block references are changed. Snapshots preserve disk space by recording only the differences between the current dataset and a previous version.
A typical example use for a snapshot is to have a quick way of backing up the current state of the file system when a risky action like a software installation or a system upgrade is performed.
A clone is a writable volume or file system whose initial contents are the same as the dataset from which it was created.