WAFL’s snapshot facility is very efficient in that it does not even require that copy-on-write copies of each data block be taken before the block is modified.
Other file systems provide snapshots, but frequently with less efficiency. WAFL snapshots are depicted in Figure 12.17.
Newer versions of WAFL actually allow read–write snapshots, known as clones. Clones are also efficient, using the same techniques as shapshots.
In this case, a read-only snapshot captures the state of the file system, and a clone refers back to that read-only snapshot.
Any writes to the clone are stored in new blocks, and the clone’s pointers are updated to refer to the new blocks.
The original snapshot is unmodified, still giving a view into the file system as it was before the clone was updated.
Clones can also be promoted to replace the original file system; this involves throwing out all of the old pointers and any associated old blocks.
Clones are useful for testing and upgrades, as the original version is left untouched and the clone deleted when the test is done or if the upgrade fails.
Another feature that naturally results from the WAFL file system implementation is replication, the duplication and synchronization of a set of data over a network to another system.
First, a snapshot of a WAFL file system is duplicated to another
system. When another snapshot is taken on the source system, it is relatively easy to update the remote system just by sending over all blocks contained in the new snapshot.
These blocks are the ones that have changed