skip to content

Amazon EBS snapshots are described as incremental. What does that mean for what is stored and billed, and if you delete a snapshot from the middle of a chain, what happens to the snapshots taken after it?

level: middleimportance: must knowfreq 62%

answer

  1. only changed blocks are stored
  2. not a tape-style chain
  3. blocks are shared and reference-counted
  4. any single one restores the whole volume
  5. deleting reclaims less than you expect

basics

~20 s

Each EBS snapshot stores only the blocks that changed since the previous snapshot, and you are billed for the unique blocks retained. Deleting a middle snapshot is safe: AWS removes only blocks no other snapshot needs, and every remaining snapshot still restores a complete volume.

solid answer

~50 s

Incremental means the first snapshot of a volume copies every written block, and each later snapshot stores only the blocks that changed since the one before it, referencing the rest. Billing follows the same logic — you pay for the unique blocks your snapshots collectively retain, not for the full volume size times the number of snapshots. The part candidates get wrong is deletion. Snapshots are **not** a fragile backup chain: deleting one only removes blocks that no other snapshot references, and every surviving snapshot remains a **full, independent restore point**. So you can safely delete the middle of a series, and you can restore directly from the newest snapshot without replaying anything. The practical consequence is that a retention policy is about how much unique data you keep, not about protecting a chain from breaking.

code

bash · 9 lines
bash
# take a snapshot and tag it for a lifecycle policy to manage
aws ec2 create-snapshot --volume-id vol-0abc \
  --description "nightly" \
  --tag-specifications 'ResourceType=snapshot,Tags=[{Key=Backup,Value=daily}]'

# each of these is an independent, complete restore point
aws ec2 describe-snapshots --owner-ids self \
  --filters Name=tag:Backup,Values=daily \
  --query 'Snapshots[].[SnapshotId,StartTime]' --output table

go deeper

for a junior

Be able to say that snapshots store only what changed since the last one, and that each snapshot can still restore a complete volume by itself.

for a middle

Explain block-level sharing and reference counting: deletion removes only blocks nothing else references, so the chain never breaks and reclaimed space is smaller than the nominal size.

for a senior

Show that you can turn this into a retention policy — schedule and expiry driven by tags, a recovery window you can defend, and awareness that cross-Region copies start with one full copy.

for a principal

Own the backup posture across accounts: who can delete snapshots, whether copies live in a separate account or Region, what recovery time the policy actually buys, and what that costs against the risk it removes.

## What incremental actually stores An EBS volume is a collection of blocks. When you call `CreateSnapshot` the first time, AWS copies every block that has ever been written to that volume into snapshot storage (S3 storage managed by AWS, not a bucket you own). Blocks you never wrote are not stored at all — which is why a freshly created 1 TiB volume with 20 GiB of data produces a small first snapshot, not a 1 TiB one. Each subsequent snapshot of the same volume stores only the blocks that have **changed since the previous snapshot**. For every unchanged block, the new snapshot simply references the copy that already exists. A daily snapshot of a volume with a 2% daily change rate costs roughly the initial footprint plus 2% per day, not a full copy per day. ## Why deletion is safe — the misconception worth dismantling The word "incremental" leads people to a mental model borrowed from tape backups: full backup, then a chain of increments, and losing a link in the middle ruins everything downstream. **EBS does not work that way.** Every EBS snapshot is a complete, independently restorable point in time. Restoring the newest snapshot gives you the whole volume as of that moment; there is no replay, no "apply the increments in order", no dependency you must keep alive. What makes that possible is that the blocks are shared and reference-counted internally. When you delete a snapshot, AWS removes only the blocks that **no remaining snapshot needs** — blocks that were unique to the deleted snapshot. Any block that a later snapshot still references is retained and silently re-associated with the snapshot that needs it. The result: - Deleting a snapshot from the middle of a series leaves every other snapshot fully restorable. - Deleting the very first snapshot does not orphan the ones after it. - The storage you reclaim by deleting one snapshot is often far less than its logical volume size — sometimes nearly nothing — because most of its blocks are still referenced elsewhere. That surprises people trying to cut a bill. ## What this means for retention policy Because each snapshot is a standalone restore point, retention is a straightforward risk-and-cost decision rather than a chain-integrity problem: keep a series of daily snapshots for the recovery window you need, thin out to weekly or monthly beyond that, and understand that deleting the ones in between reclaims only their unique blocks. Amazon Data Lifecycle Manager exists to run exactly this policy — create snapshots on a schedule against a tag, retain by count or age, optionally copy them to another Region — so that retention is declarative rather than a cron job someone forgets to fix. Tag-driven scheduling is also what stops the classic failure of a volume being added to a fleet and quietly never being backed up. ```bash # what a volume's snapshots actually cost you is unique-block storage, # not the sum of their nominal volume sizes aws ec2 describe-snapshots --owner-ids self \ --filters Name=volume-id,Values=vol-0abc \ --query 'Snapshots[].[SnapshotId,StartTime,VolumeSize,State]' ``` ## Things adjacent to this that are worth knowing **Snapshots are Region-scoped.** `CopySnapshot` moves one to another Region or account. A copy into a new Region is a **full** copy the first time — the incremental relationship exists per Region — and subsequent copies of later snapshots from the same volume are incremental against it. **Snapshots do not slow down the volume much, and do not block it.** The snapshot's point in time is when the API call is made; it completes in the background while the volume keeps serving I/O. **Cold retention has its own tier.** EBS Snapshots Archive stores a snapshot as a full, standalone copy at a much lower storage price, in exchange for a restore that takes many hours and a minimum retention period. It suits compliance copies you must keep and hope never to read, not your operational recovery window. **Restores are lazy.** A volume created from a snapshot is usable at once but fetches untouched blocks from snapshot storage on first read, so first-touch performance is poor until warmed — the reason Fast Snapshot Restore exists. ## The short version to say out loud Incremental describes the *storage*, not the *restore*. Every snapshot restores fully on its own; only unique blocks are stored and billed; deleting one never breaks another.

  • Your snapshot bill is high, so you delete half the snapshots and barely save anything. Why?
    Because you are billed for unique blocks, and most blocks in the deleted snapshots were still referenced by the ones you kept, so nothing was actually freed. Real savings come from shortening the retention window across the whole series, deleting snapshots of volumes with high churn, or moving long-term compliance copies into the archive tier.
  • Is a cross-Region snapshot copy also incremental?
    The first copy into a destination Region is a full copy, because the incremental relationship is per-Region and nothing of that volume exists there yet. Later copies of subsequent snapshots from the same volume into that Region are incremental against the earlier copy, so ongoing DR copying is much cheaper than the first one suggests.
  • How would you make sure every volume in a growing fleet is actually being snapshotted?
    Drive it from tags with Amazon Data Lifecycle Manager rather than from a list of volume IDs: a policy that targets a tag creates and retains snapshots for anything carrying it, so new volumes are covered the moment they are tagged. Then enforce the tag itself with an organisation-level control, and alert on volumes that have no recent snapshot.

Think of a photo album where each new print reuses the frames that did not change and only adds the ones that did. Every print still shows the whole picture, and tearing one out only discards the frames nothing else was pointing at.

saying these in an interview costs you the question

  • Thinks deleting a middle snapshot corrupts later ones
  • Believes you must restore a full snapshot then apply increments
  • Assumes each daily snapshot costs a full volume copy
  • Says snapshots live in your own S3 bucket
  • Expects deleting one snapshot to free its whole nominal size

context