{
  "slug": "ceph-deep-scrub",
  "term": "Ceph deep scrub",
  "aliases": [
    "Deep scrubbing (Ceph)"
  ],
  "definition": "Ceph deep scrub reads placement-group object data and checks it using checksums, beyond the metadata comparisons of a light scrub.",
  "note": "In Ceph Squid, a light scrub compares object sizes and attributes; deep scrub additionally reads data for checksum verification. The configured interval is a scheduling input, not evidence that a scan completed. [ceph-squid-schedule]\n\nThe active state permits requests and clean describes the required replication count. Neither establishes when a deep scrub last completed. The deep state describes checking in progress, not a successful result. [ceph-squid-states]\n\nFor replicated pools, pg repair can mark an inconsistent copy missing so recovery can reconstruct it; repair and recovery are distinct steps. For the documented erasure-coded and BlueStore cases, automatic scrub repair is disabled by default in Squid and, when enabled, is limited by a configured damaged-object threshold. [ceph-squid-repair] [ceph-squid-schedule]\n\nA read_error in a shard report calls for investigation of the underlying storage. Preserve the affected PG and object, shard errors, scan completion and subsequent recovery outcome before concluding that an inconsistency was resolved. [ceph-squid-repair]\n\nHistorically, the 2007 RADOS design kept a log of expected object versions even when replicas were missing. Peering reconciled that history before recovery; this is architectural context, not a description of Squid's scrub implementation. [rados-pdsw07]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "Scrubbing competes with client work, so increasing its frequency can affect cluster performance.",
      "citationIds": [
        "ceph-squid-schedule"
      ]
    }
  ],
  "related": [
    "placement-group",
    "data-scrubbing",
    "checksum",
    "ceph-acting-set"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "ceph-squid-schedule",
      "title": "Ceph Squid: OSD Config Reference, light/deep scrubbing and automatic repair controls",
      "url": "https://docs.ceph.com/en/squid/rados/configuration/osd-config-ref/#scrubbing",
      "accessed": "2026-11-13"
    },
    {
      "id": "ceph-squid-states",
      "title": "Ceph Squid: Placement Group States, active, clean, scrubbing, deep and repair",
      "url": "https://docs.ceph.com/en/squid/rados/operations/pg-states/",
      "accessed": "2026-11-13"
    },
    {
      "id": "ceph-squid-repair",
      "title": "Ceph Squid: Troubleshooting PGs, inconsistent shards and More Information on PG Repair",
      "url": "https://docs.ceph.com/en/squid/rados/troubleshooting/troubleshooting-pg/#more-information-on-pg-repair",
      "accessed": "2026-11-13"
    },
    {
      "id": "rados-pdsw07",
      "title": "Weil et al. (PDSW 2007): RADOS, sections 3.4 and 3.4.1",
      "url": "https://ceph.com/assets/pdfs/weil-rados-pdsw07.pdf",
      "accessed": "2026-11-13"
    },
    {
      "id": "hesela-scrub",
      "title": "Hesela: Ceph scrub coverage, placement-group state and recovery evidence",
      "url": "https://hesela.com/analyses/scrubbing-detection-not-durability/#ceph-deep-scrub",
      "accessed": "2026-11-13"
    }
  ],
  "provenance": [
    "Version-scoped documentation review of Ceph Squid, not a running-cluster experiment or a measured reduction in data loss.",
    "The distinction between active+clean and completed checksum verification follows from the separately documented PG states. [ceph-squid-states]"
  ],
  "updated": "2026-11-13"
}
