Power and environment
Twenty lessons on UPS behaviour, transfer switches, shutdown and restart, and keeping a server room cool.
Power is the layer where Node0 found the most instruments that lie. Not fail, lie: a transfer switch reporting a healthy source as faulty because the two supplies disagreed about nominal voltage (5.1), a management card returning an empty string rather than a busy signal when two of the fleet’s own jobs asked it a question at once (5.4), a server’s modern management API returning a confident 18 watts and zero fan speed for a machine running at 9,400 RPM (5.7), a label field that recorded what somebody believed on the day the rack was wired rather than what the copper does (5.2). In every case the output looked like a measurement. The habit that worked, over and over, was to get the same fact from a second, independent instrument: follow the cable, meter the voltage, read the device’s own screen, ask the older CLI.
The order matters, because the theme builds. August was bring-up: voltage, labels, battery vocabulary (5.3), fuses (5.19), and the deliberate decision to keep telnet on management hardware too old for usable SSH (5.8). Early September was measurement and its traps: the credential that crossed from a protected transport onto a cleartext one, a secret rotation that changed nothing while reporting success (5.9), a rack whose two supplies cannot carry each other and a nameplate rating that had been wrong for months (5.10).
Mid-September covered the harder half of the shutdown design: getting the fleet to come back. The shutdown design had been declared finished once on the strength of shutdowns alone. Asking the other half of the question found a two- minute deadline hidden in a factory default (5.5), a BIOS setting that guarantees a fleet stays dark after a textbook shutdown and means the opposite thing on two boards from the same vendor (5.11), commands that only work while the UPS is genuinely on battery (5.13), and a control path that ran through the firewalls the power event would also take down (5.14). Cooling ran alongside it: a real heat problem solved with existing capacity and kept explicitly provisional (5.16).
Declined #
- A lab-bench UPS and surge strip, deliberately unmonitored. A design choice, excluded from metrics and dashboards on purpose; nothing changed as the result of a problem.
- A USB Ethernet adapter that enumerated as a mass-storage device. A real, dated hardware lesson, but it belongs to the hardware and bring-up theme, and is declined here to avoid telling it twice.
- SNMPv1 left enabled on the four UPS network cards by design, decided 20260920. An accepted trade-off, since the PDUs can only read a UPS’s status over SNMPv1 or v2c and disabling it fleet-wide would break that stock feature. It is context for the credential-class lesson, not a lesson of its own.
- One transfer switch’s dead application link, fixed by a firmware reflash on 20260911. Real and dated, but a straightforward firmware fix with no design change and no reusable check beyond reflash and verify, and it is folded into the richer transfer-switch fault story from the same week.
- Thermostat wiring carried over from the previous unit, using a spare conductor for common. A one-time installation detail with no cost, no monitoring change and no reusable check beyond labelling your wires.
- Wireless environment sensors offline for an hour after a password change on the sensor network. Diagnosed quickly from the access point’s own log; it changed no design and no standing check.
- A contact sensor re-adhered on 20260915 after false alerts. A one-line physical maintenance fix with no design change, too small to carry a standalone lesson.
The lessons, in order
- 5.1A 208/240 V mismatch that looked like a bad transfer switch20260824after redaction
- 5.2Two labels, corrected three times, before anyone traced a cable20260820 (first labelled), 20260824 (found crossed), 20260906 (corrected, still wrong), 20260909 (settled by a physical trace)after redaction
- 5.3Three battery packs is not a fault, it is a vocabulary problem20260824 to 20260825after redaction
- 5.4A management card that lies quietly when two callers ask at once20260901 (found), 20260908 (made worse)after redaction
- 5.5The whole fleet had two minutes to shut down a 218 TiB array20260903 to 20260904after redaction
- 5.6A UPS service touch dropped a rack, and two hosts needed a person20260906, 17:53after redaction
- 5.7A BMC that reported fabricated power and thermal readings20260901 (approximate, from repository history)as-is
- 5.8Telnet on purpose, and the credential leak that proved the split mattered20260824 (decision), 20260907 (the leak it then prevented from being worse)after redaction
- 5.9A secret rotation that silently did nothing20260907after redaction
- 5.10103% of a UPS, and a nameplate rating that was wrong for months20260909 (measured), 20260912 (worsened by new hardware), 20260917 (nameplate correction), 20260920 (re-measured)after redaction
- 5.11A shutdown that works perfectly and still leaves the fleet dark forever20260910 to 20260913after redaction
- 5.12An agent caused a hardware fault, and it is on the record20260911after redaction
- 5.13Real outages and planned outages need different UPS commands20260913after redaction
- 5.14The route to the power controllers ran through the thing they had to survive20260913after redaction
- 5.15A knocked-loose USB cable went unnoticed for four days20260909 (lost), 20260913 (found and fixed)after redaction
- 5.16An interim fix with no new part solved a real heat problem20260827as-is
- 5.17The environment project made its own plan obsolete, and the team let it20260912as-is
- 5.18Following one sensor sounds simple; the thermostat quietly refused for a day20260912after redaction
- 5.19Blown fuses are invisible to the eye, and one already cost a transfer switch20260820after redaction
- 5.20Two power meters, 5% apart, and neither one is wrong20260920after redaction
Source: node0 lessons v0.1, section 5. Sanitized: checklist v0.1, 20260921; voice pass 20260921. Part of oznog.com/node0.
