Give storage time to prove itself
- date
- 20260901 to 20260917
- what happened
- Across the first three weeks of the pulled fleet, storage was by far the largest source of hardware failures. Three of about 80 refurbished drives were dead on arrival and one of three RAID cards; an 18 TB drive died at 297 power-on hours mid-scrub; a SATA SSD passed a health check at rest twice and failed in service twice; a 12 TB drive read PASSED through 12,232 reallocated sectors; two NVMe controllers wedged a week apart and came back only from a cold power cycle; a dirty bay connector condemned two good drives in turn.
- what it cost
- Six drives and a controller card in three weeks, a six-hour drain-and-rebuild for a fault that was never in a drive, and two RMA claims that would have been wrong. No data was lost, because none of it was ever the only copy: the drive at 297 hours died inside a raidz3 group with two parity disks still standing.
- what changed
- New storage is not trusted with the only copy of anything until it has run under load long enough to fail. Drives go through a burn-in pass before they join a pool, a full scrub runs before a pool is depended on, a suspect part is reproduced under the load that exposes it rather than checked at rest, and the counters that matter are collected per serial. The first weeks of a storage tier are treated as the test, with the tier behind redundancy that can absorb the loss.
- the check now
- A drive or server joins production only after a written burn-in pass; the pool it joins keeps enough parity to lose it; the per-serial counters are collected from the first day so the next early failure is seen coming.
Storage fails early, and it fails more than anything else. On Node0 that was not a suspicion but a count. Over the three weeks from bring-up on 20260901, the hardware theme’s incidents split cleanly: two boards, three network cards, a transfer switch and a KVM on one side, and the drives and their controllers on the other, with more failures than all of those together. Three of about 80 refurbished drives never spun up. One of three RAID cards was dead. An 18 TB drive in the hub’s main pool died abruptly at 297 power-on hours, in the middle of a scrub, going from a clean history to unable to read sector 0 (1.14). A SATA SSD passed a health check at rest twice and failed in service twice, and a 12 TB drive’s own self-assessment read PASSED throughout 12,232 reallocated sectors (1.17). Two NVMe controllers wedged a week apart, on different hosts, and each came back only from a full cold power cycle, with counters that afterwards read as if nothing had happened (1.11). A dirty bay connector made two good drives look bad in turn, and cost a six-hour drain-and-rebuild that was never about a drive (1.10).
The rule that came out of it is about time. New storage is not trusted with the only copy of anything until it has run under load long enough to fail. In practice that is four habits:
- Burn a drive in before it joins a pool. A sustained write pass and a read-back, long enough to find the drive that dies in its first hundred hours, because that is when they die. A health check at rest is not this; the SSD above passed two of them.
- Scrub a pool before you depend on it. The scrub is what found the 297-hour drive, and the scrub is also what proved the pool had absorbed it: the remaining 52.7 TB finished with zero repairs.
- Reproduce a suspect part under the load that exposes it, rather than checking it at rest (rule 4), and clean the bay before condemning the drive (1.10).
- Collect the counters that matter, per serial, from the first day. The drives that make up most of the Ceph fleet keep their worst numbers outside the standard health table (1.9); a collector that reads the right table, keyed on the serial and not the device letter, is what turns an early failure into a warning instead of a surprise.
What made the count survivable was that none of the early failures ever hit the only copy. The tiers were built with parity to spare, the hub’s groups run three-disk parity, and the first weeks of a new tier were treated as the test they turned out to be. A builder with less redundancy has the same choice in a different form: give the drives their burn-in on the bench, and give the tier its first weeks with a second copy elsewhere.
Source: Christoph's ruling of 20260922; instances from lessons 1.1, 1.9, 1.10, 1.11, 1.14 and 1.17. Sanitized: checklist v0.1, 20260922. Part of oznog.com/node0.
