ZFS The Last Word In File Systems
Jeff Bonwick Bill Moore
(modifed by yupu for CS537)
Trouble with Existing Filesystems
ZFS Objective
End the Suffering
ZFS Overview
FS/Volume Model vs. Pooled Storage
Volume
FS
Volume
FS
Volume
FS
FS/Volume Model vs. Pooled Storage
Storage PoolVolume
FS
Volume
FS
Volume
FS ZFS ZFS ZFS
Copy-On-Write
Transactional Object System
Trends in Storage Integrity
End-to-End Data Integrity in ZFS
DataChecksum
DataChecksum
End-to-End Data Integrity in ZFSDisk Block Checksums
Checksum stored with data blockAny self-consistent block will passCan't detect stray writesInherent FS/volume interface limitation
DataChecksum
DataChecksum
Address
Disk checksum only validates mediaBit rotPhantom writesMisdirected reads and writesDMA parity errorsDriver bugsAccidental overwrite
• • •
End-to-End Data Integrity in ZFSDisk Block Checksums
Checksum stored with data blockAny self-consistent block will passCan't detect stray writesInherent FS/volume interface limitation
Data Data
AddressChecksum Checksum
Address
DataChecksum
DataChecksum
ZFS Data AuthenticationChecksum stored in parent block pointer
Fault isolation between data and checksum
Checksum hierarchy formsself-validating Merkle tree
ZFS validates the entire I/O pathBit rotPhantom writesMisdirected reads and writesDMA parity errorsDriver bugsAccidental overwrite
AddressChecksum Checksum
Address
Disk checksum only validates mediaBit rotPhantom writesMisdirected reads and writesDMA parity errorsDriver bugsAccidental overwrite
• • •
End-to-End Data Integrity in ZFSDisk Block Checksums
Checksum stored with data blockAny self-consistent block will passCan't detect stray writesInherent FS/volume interface limitation
Data Data
AddressChecksum Checksum
Address
DataChecksum
DataChecksum
ZFS Data AuthenticationChecksum stored in parent block pointer
Fault isolation between data and checksum
Checksum hierarchy formsself-validating Merkle tree
ZFS validates the entire I/O pathBit rotPhantom writesMisdirected reads and writesDMA parity errorsDriver bugsAccidental overwrite
AddressChecksum Checksum
Address
Disk checksum only validates mediaBit rotPhantom writesMisdirected reads and writesDMA parity errorsDriver bugsAccidental overwrite
• • •
Ditto Blocks
Creating Pools and Filesystems
# zpool create tank mirror c2d0 c3d0
# zfs create tank/home# zfs set mountpoint=/export/home tank/home
# zfs create tank/home/ahrens# zfs create tank/home/bonwick# zfs create tank/home/billm
# zpool add tank mirror c4d0 c5d0