Skip to content
Oznog

1.4 · hardware failures and rmas · as-is

Ceph hosts hang with no OS-side trace

date
20260906
what happened
ceph1 and ceph8 hung hours apart on the same morning, each with a processor IERR logged in the board management controller's event log. Nothing paged. Ceph ran on a fraction of its disks and two of three monitors for about ten hours.
what it cost
Roughly ten hours of silently degraded storage capacity, found only because someone happened to look.
what changed
The board management controller's system event log is now polled fleet-wide, and a rising Ethernet PAUSE-frame counter on an access port is treated as a host-health alarm rather than a network one. After any IERR the rule is a cold boot, never a warm reset.
the check now
Poll the board management controller's event log fleet-wide and alert on rising PAUSE-frame counts on an access port, because a truly hung host stops paging on its own and only the switch still sees it dying.

On the morning of 20260906 two storage hosts hung hard, hours apart. Each had a processor IERR (an internal error the CPU raises when it cannot continue) in the log kept by its board management controller, the small always-on computer that watches a server independently of the operating system. Both machines were powered, both were unresponsive, and neither had anything left to say: their consoles were blank and their own logs had stopped being written. Ceph kept serving from whatever survived, two of three monitors and a fraction of its OSDs (an OSD is the daemon that owns one disk), for about ten hours, and nothing paged.

The only external tell was on the switch. Each hung host was emitting roughly 600 Ethernet PAUSE frames per second on every port. PAUSE is flow control: a network card whose receive ring nobody is draining asks its peer to stop sending, and a card belonging to a dead operating system asks forever. That is the one signal a truly dead host can still produce, and it arrives somewhere other than the host.

The fix for the hang was mechanical. A warm reset re-triggered the identical fault on both machines within minutes; only removing power cleared it. The fix for the silence was structural: poll the management controller’s event log across the fleet, and treat PAUSE-frame growth on an access port as a sick server rather than a sick network. The same cold-boot-only pattern turned up later on a completely different component, an NVMe controller (lesson 1.11), which is the best evidence available that it generalises.

Source: node0 lessons v0.1, lesson 1.4. Sanitized: checklist v0.1, 20260921; names pass only; voice pass 20260921. Part of oznog.com/node0.