Skip to content

erebor lost ZVTBSDL3 at lifetime hour 27, node_exporter hung nine minutes before the fault, and erebor/apps has no copy anywhere else #558

Description

@Gerrrt

What happened

At 20:55 PDT on 2026-09-19 (03:55 UTC 2026-09-20) TrueNAS on smaug raised:

Pool erebor state is ONLINE: One or more devices are faulted in response to persistent errors. Sufficient replicas exist for the pool to continue functioning in a degraded state.
Disk ST18000NM003D-3DL103 ZVTBSDL3 is FAULTED

ZVTBSDL3 is sdb, one half of the two-disk Exos X20 mirror
build-the-nas.md §3
built on 2026-09-18. It was at about lifetime hour 27, one day after arrival, and its
extended self-test had completed without error at hour 26 that same evening
(hardware.md, Exos entry).
The TS150 has two trays and no spare, so the pool runs on ZVTBS4NL alone until a
replacement is fitted.

What the monitoring host saw, read the same night:

When (PDT, 2026-09-19) What
20:46 up{job="node",instance="smaug"} went 1 → 0 and stayed there. TCP 9100 still accepts a connection; GET /metrics never returns (curl gives up at 30 s, exit 28). A collector is blocked on the faulted device.
20:50 InstanceDown firing, severity=critical, routed to urgent. Still firing.
20:55 The TrueNAS alert above.

Three things this exposed

  1. No rule reads node_zfs_zpool_state. smaug has exported it since the scrape went live (feat(nas): the drives are in, erebor exists, the stack runs and the scrape is on #522) — one 0/1 series per pool per state, for erebor and boot-pool — and nothing in stacks/observability/prometheus/rules/ reads any node_zfs_* series. The only page was InstanceDown, and only because the exporter hung. The rule that should have fired is in the PR on this issue; it can only catch the case where the exporter survives the fault, and that limit is written into it.
  2. erebor/apps has zero off-host copies. feat(backup): pull Jellyfin's state off smaug from a ZFS snapshot, encrypt it here and copy it to oracle (#484) #554 merged scripts/backup-nas.sh today and closed erebor/apps is declared backed up in two files and backed up by nothing #484, but on the monitoring host backups/nas does not exist, homelab-backup-nas.timer is not installed, ssh frodo@10.0.40.30 is refused, and build-the-nas.md §6.2 is marked Not yet done. ADR-0008 calls that dataset the irreplaceable half of the media tier, and it is now on one spinning disk and nowhere else.
  3. No runbook covered a NAS disk swap, and build-the-nas.md §7 and hardware.md both still read that the pool is ONLINE with no errors.

The clock

The pair is eBay item 237056026029, delivered 2026-09-18. The eBay Money Back Guarantee runs
30 days from delivery, so a "not as described / defective" return must be opened by
2026-10-18. Whether Seagate's own warranty applies to an "0HR" lot is unknown until the
serial is checked.

What has to happen, in this order

Runbook: docs/runbooks/replace-the-nas-disk.md. Refs #483 (why nothing on smaug can
push more than node_exporter offers), #413 (the build this happened one day after).


Corrected 2026-09-20

Point 2 under Three things this exposed is answered: erebor/apps has an off-host copy as of 20260920T060234Z, frodo and SSH exist on smaug, §6.2 reads Done 2026-09-20, and the timer is installed — #484 closed on it. Two boxes above are ticked with the evidence. The tray can be touched.

Milestone NAS, seq/1: this swap is now what that milestone closes on, beside #523. The vdev-level signal (a faulted leaf under an ONLINE pool) stays an open box here; #483, which owns how anything host-level reaches smaug, is re-sequenced to seq/1 in its own milestone so the two are worked together rather than decided twice.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmediastacks/media on smaug (VLAN 40)observabilitystacks/observability on prometheusseq/1Step 1 within its milestone; same number = can run in parallel

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions