{
  "slug": "changed-block-tracking",
  "term": "Changed block tracking",
  "aliases": [
    "CBT",
    "changed-block tracking"
  ],
  "definition": "Changed block tracking records written regions of a block device relative to a tracking boundary so a backup can select those regions.",
  "note": "A libvirt checkpoint identifies a change-tracking boundary without capturing guest state. Recovery still needs the backup payload and its required predecessors. Application quiescing is a separate capture decision. [libvirt-state-capture]\n\nLibvirt associates checkpoint names with per-disk QEMU bitmaps. Before selecting an incremental, its documented checks require an active-image bitmap, a contiguous same-name bitmap subchain, recording state and no inconsistency. Preserve this tracking lineage when changing overlays; a readable disk chain alone is insufficient. [libvirt-bitmap-chain]",
  "status": "shipping",
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-28",
  "advantages": [],
  "limitations": [],
  "related": [
    "dirty-bitmap",
    "incremental-backup",
    "qcow2",
    "snapshot",
    "application-quiescing"
  ],
  "citations": [
    {
      "id": "libvirt-bitmap-chain",
      "title": "libvirt: incremental backup internals, checkpoint relationships and bitmap health",
      "url": "https://libvirt.org/kbase/internals/incremental-backup.html",
      "accessed": "2026-10-28"
    },
    {
      "id": "libvirt-state-capture",
      "title": "libvirt: domain state capture, quiescing and checkpoint APIs",
      "url": "https://libvirt.org/kbase/domainstatecapture.html",
      "accessed": "2026-10-28"
    }
  ]
}
