docs(runbooks): the Saruman SSD fit becomes a procedure, and the trays gate it - #507
Merged
Merged
Conversation
…s gate it nothing the documents say. This adds the document that makes the fit provable when it happens, and records what has actually been decided. The layout question the issue left open is answered: the SSDs become a second RAID 1 logical drive on the P440ar, Smart Array managed, with the 7.2K mirror keeping Proxmox, the ISOs and the backups. That is the smaller change, it keeps a spindle for the things that do not need IOPS, and it leaves IloDrivePredictiveFailure, IloDriveSmartUnreadable and the replaceDriveSSDWearOut(4) state reading cpqida.mib exactly as they do today — so #351's decision to skip smart-state on this host stays right rather than needing re-checking. The runbook's "before" column is read, not assumed: every cpqDa* value in it came out of Prometheus on 2026-09-17. That reading also sharpens #76. cpqDaAccelWriteCachePercent has been the one column anyone looked at; the baseline shows cpqDaAccelMemory, cpqDaAccelReadMemory and both cache percents all at 0 against a 2 GiB module, with cpqDaLogDrvHasAccel{1} reading other rather than enabled. Four columns agreeing is much weaker support for "the iLO does not populate the ratio" than one was. The runbook takes the ssacli reading that settles it and hands the finding to #76 without acting on it: modify cacheratio= is controller-wide and would land on the array holding every guest, and it would move two variables at once underneath the measurement. What is deliberately not here: ADR-0029's ninety random write IOPS is derived, not measured — seek plus half a rotation at 7200 rpm — so replacing it with a differently-shaped measured number would be worse than leaving it alone. The runbook measures both arrays at the parameters that derivation implies, 4 KiB at queue depth 1, three times. Until that reading exists ADR-0029, ADR-0007, ADR-0017 and the roadmap's #414 paragraph stand as written, and then each gets a dated note rather than a silent edit. The fit is blocked, and the runbook says so at the top. #498 recorded two SFF trays bought 2026-09-11 and still in transit; a Gen9 bay holds a drive only in a carrier, so step 4 is a stop condition rather than something discovered at the rack. Steps 0 to 3 can all be done first, and step 2 — getting ssacli onto Debian 13, which nothing in this repository is evidence of — is the one most worth failing early. README's runbook count goes to 28 for the runbook this adds. The ADR counter and the duplicate ADR-0041 that had check-docs failing on main are both fixed there now, by #503, so nothing about them is carried here. Refs #418, #76, #148 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Gerrrt
force-pushed
the
gerrrt/saruman-ssd-install-724d50
branch
from
September 18, 2026 02:40
7890b7c to
b612b97
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #418,Refs #76,Refs #148— no close keywords. #418 is a tracker for aphysical fit that has not happened and cannot yet happen; this adds the document
that will make it provable, and records what has actually been decided.
What this does
Adds
docs/runbooks/fit-the-saruman-ssds.md, in the shape offit-the-ups-battery.mdandreplace-the-smart-storage-battery.md— the samemachine, the same before/after table, the same silence discipline. Every step is
labelled with the host it runs on, because VLAN 30 is not reachable from the
monitoring host: steps 0, 1, 10 and 11 are Prometheus and Alertmanager, and
everything in between is run by hand from the Mac.
The layout question #418 left to the fit is answered. The SSDs become a
second RAID 1 logical drive on the P440ar, Smart Array managed; the 7.2K mirror
keeps Proxmox, the ISOs and the backups. That is the smaller change, it keeps a
spindle for the things that do not need IOPS, and it leaves
IloDrivePredictiveFailure,IloDriveSmartUnreadableand thereplaceDriveSSDWearOut(4)state readingcpqida.mibexactly as they do today —so #351's decision to skip
smart-stateon this host stays right rather thanneeding re-checking against an HBA layout.
Three things the live estate said that the documents did not
The runbook's "before" column is read, not assumed — every
cpqDa*value came outof Prometheus on 2026-09-17.
#76 looks worse than one column suggested.
cpqDaAccelWriteCachePercentis thecolumn that issue has been about. The baseline shows
cpqDaAccelMemory,cpqDaAccelReadMemoryand both cache percents at0against a 2 GiB module, withcpqDaLogDrvHasAccel{1}readingotherrather thanenabled. Four independentcolumns agreeing that nothing is allocated is much weaker support for "the iLO
simply does not populate the ratio" than one column was. The runbook takes the
ssaclireading that settles it — nobody has ever run that tool on this machine —and hands the finding to #76 without acting on it:
modify cacheratio=iscontroller-wide, would land on the array holding every guest, and would move two
variables at once underneath the measurement.
There is exactly one guest —
alexander, vmid 140. The migration is a singleonline
qm move-disk, so no guest stops,HypervisorGuestStoppednever fires, and#418's "guests down or not" question answers itself: no window is needed.
cpqDaPhyDrvTypereads3(sata) for both existing drives, on a metric whoseenumeration carries a distinct
4: sas, and the model isMM1000GBKAL— whilehardware.mdand ADR-0007 both say SAS. Flagged as a check at the rack, notcorrected: ADR-0007 is immutable, and neither document should be rewritten from an
SNMP enum alone.
What is deliberately not in this PR
No ADR changes. ADR-0029's ninety random write IOPS is derived, not measured —
seek plus half a rotation at 7200 rpm — so replacing it with a differently-shaped
measured number would be worse than leaving it alone. The runbook measures both
arrays at the parameters that derivation implies (4 KiB, queue depth 1, one stream)
and three times: HDD loaded, SSD idle, and HDD idle once the guest has moved off —
that last one only obtainable after the move, because until then the array is never
quiet. Until that reading exists, ADR-0029, ADR-0007, ADR-0017 and the roadmap's
#414 paragraph stand as written, and then each gets a dated
[!NOTE]rather than asilent edit. The runbook's "Flipping the documents" section carries the list.
No Compute table change.
hardware.mdsays the Storage column changes when #418fits them and not before. It has not.
The fit is blocked, and the runbook says so at the top
#498 recorded two SFF trays (
651687-001) bought 2026-09-11 and still in transit on2026-09-17. A Gen9 bay holds a drive only in a carrier, so this is a stop condition
at step 4 rather than something discovered at the rack. Steps 0–3 can all be done
first, and step 2 is the one most worth failing early: getting
ssaclionto Debian13 is something nothing in this repository is evidence of, and it is written as
an unknown with three fallbacks rather than as a command that works.
Fifteen such unknowns are listed at the end. Each is something the fit can settle,
and settling them is most of the value of doing it carefully.
CI
Green.
make check-docs,make lintand the rest ofmake validatepass on thisbranch, rebased onto
mainat 107256f.This PR originally also carried two README counter fixes, because
check-docswasfailing on
mainitself — stale ADR and runbook counts, plus two files bothclaiming ADR-0041 from merges nine minutes apart. #503
has since fixed the duplicate (renumbered the second to ADR-0042) and the ADR
counter on main, so all that remains here is the runbook count going to 28 for the
runbook this adds.
🤖 Generated with Claude Code