APFS Explained: Snapshots, Clones, and Space Sharing in Apple's Filesystem
How APFS's container/volume model, copy-on-write clones, and snapshots replaced HFS+ across every Apple platform.
Apple replaced HFS+ — a filesystem whose lineage traced back to the original 1985 Mac — with APFS across every one of its platforms starting in 2017, in one of the largest simultaneous filesystem migrations in the industry’s history. The redesign wasn’t cosmetic: APFS’s container model, copy-on-write clones, and native snapshot support reflect priorities HFS+ was never built for — flash storage, encryption as a default expectation, and multiple volumes sharing space dynamically.
Containers and volumes: space-sharing by design
An APFS container occupies a physical partition, but unlike HFS+ (where a partition and a filesystem were the same thing), a single container can hold multiple volumes, all drawing from the same pool of free space rather than each being allocated a fixed size upfront.
diskutil apfs list
diskutil apfs listVolumes
This is precisely how modern macOS installations get a separate read-only System volume and a writable Data volume without wasting space on a fixed partition split — both live in the same container, and free space simply belongs to whichever volume needs it, expanding and shrinking as data is added or removed from either one.
diskutil apfs addVolume disk1 APFS "Extra Volume"
Copy-on-write and instant clones
APFS is copy-on-write at the block level: when you duplicate a file with Finder or cp -c, the copy doesn’t actually duplicate the underlying data blocks — it creates a new file that shares the same blocks as the original, only diverging (and consuming additional space) once one copy is modified.
cp -c largefile.mov largefile-copy.mov
This is why duplicating a multi-gigabyte file in Finder on APFS is instantaneous rather than taking as long as the copy would over a real disk transfer — no bytes are actually being copied at that moment, only a new set of block references.
Snapshots
An APFS snapshot freezes a volume’s state at a point in time without copying any data, using the same copy-on-write machinery that makes file clones instant. Time Machine’s local snapshot feature and macOS’s own update-safety mechanism (letting a botched OS update roll back cleanly) are both built directly on this primitive.
tmutil localsnapshot
tmutil listlocalsnapshots /
tmutil deletelocalsnapshots 2026-04-26-120000
Because a snapshot only costs space as the live volume diverges from it, taking one before a risky operation (a manual system change, testing an unstable app) is essentially free — the cost only appears afterward, and only proportional to what’s actually changed since.
Encryption as a first-class feature
Where HFS+ supported encryption as an add-on (FileVault effectively wrapped the whole volume in a single encrypted container), APFS supports encryption natively and more granularly — a container can hold both encrypted and unencrypted volumes, and multi-key encryption allows metadata and file content to use separate keys.
diskutil apfs list | grep -i encrypt
fdesetup status
Space sharing versus fixed partitions
The practical, everyday consequence of the container/volume model is one most Mac users benefit from without ever thinking about it: internal storage doesn’t need to be manually partitioned into “system space” and “user space” with a fixed boundary chosen at setup time. Every APFS volume in a container competes for the same free space pool, and diskutil apfs list shows exactly how that pool is currently being consumed across every volume sharing it — a very different mental model from HFS+’s rigid, pre-allocated partitions, and one that maps far more naturally onto how flash storage actually works.
Fusion Drives and APFS
For Macs with Fusion Drive (a hybrid of flash and spinning storage, now largely legacy hardware), APFS handles the tiering logic that used to be Core Storage’s job under HFS+ — deciding which blocks live on the fast flash tier versus the slower spinning tier — as an integrated part of the same container model, rather than a separate logical volume manager layered underneath a traditional filesystem.
Checking a volume’s health
fsck_apfs (invoked automatically by diskutil verifyVolume/repairVolume, or directly for advanced diagnostics) walks APFS’s own metadata structures — very different internally from HFS+’s catalog B-tree, though the user-facing verification workflow in Disk Utility looks similar:
diskutil verifyVolume /
diskutil repairVolume /
The shift from HFS+ to APFS is a good example of a filesystem redesign driven by a change in the underlying hardware assumptions — HFS+ was designed around spinning disks and fixed partitions; APFS was designed around flash storage, pervasive encryption, and multiple logical volumes that should be able to share one pool of physical space without the user ever needing to pre-allocate how much each gets.