====== ZFS - Structure - Copy-on-Write semantics ====== Copy on Write (COW) is a fundamental underpinning beneath most of what makes ZFS awesome. * When a file is modified, the copy-on-write filesystem writes out a new version of the block that is modified, then updates the metadata of the files to unlink the old block, and link the new block just written. * Unlinking the old block and linking in the new is accomplished in a single operation, so it cannot be interrupted. * If the power went down after it happens, you have the new version of the file, and if the power went off before, then you have the old version. * Either way, the filesystem is consistent. Copy-on-write in ZFS is not only at the filesystem level. * It is also at the disk management level. * This means that the RAID hole, a condition in which a stripe is only partially written before the system crashes, making the array inconsistent and corrupt after a restart, does not affect ZFS. * Stripe writes are atomic, the vdev is always consistent.