Hello everyone. I have some issues with my system and with the help of Claude AI, I tried to fix it. but failed. This post was made with AI, claude had all my reports and contexts.
Hoping someone recognizes this signature. I have a 2-disk mirror pool that went offline unexpectedly and now fails to import with every standard recovery method, despite strong evidence the pool and data are structurally intact.
System: ZimaBlade, TrueNAS SCALE 25.10.5 (reverted back to this version after briefly running a newer update — the pool broke shortly after that update, within about a day)
Pool: 2x 4TB WD Red Plus (WDC WD40EFPX) in a single mirror vdev, ashift=12, ZFS pool version 5000 / filesystem version 5
Symptom: Pool shows offline in the UI. zpool import (no args) correctly detects the pool as ONLINE with both mirror members ONLINE. But actually importing it — by name, with -f, -F, -FX, -o readonly=on, in every combination, with zil_replay_disable=1 and zfs_recover=1 set — fails every time with either:
cannot import 'Nirala_Main_Pool': one or more devices is currently unavailable
or, with readonly/-F variants:
cannot import 'Nirala_Main_Pool': insufficient replicas
Destroy and re-create the pool from a backup source.
What we’ve ruled out:
-
Drive health: SMART overall-health PASSED on both disks, 0 reallocated sectors, 0 pending sectors, 0 offline uncorrectable, 0 UDMA CRC errors on both. Clean extended self-test history.
-
Cabling/power: dmesg shows zero ata reset/link/error events during any import attempt.
-
Label/uberblock corruption:
zdb -lon both disks shows all 4 labels intact and identical (txg=4145589at first check, latertxg=4147295), matchingguid_sumacross both disks. -
Hostid mismatch: found and ruled out as sole cause (pool hostid didn’t match system hostid, likely from an unclean shutdown, but forcing past this alone didn’t resolve the import).
-
Filesystem/read-write mode: confirmed block devices are fully read-write (
/sys/block/sdX/ro= 0,blockdev --getro= 0).
The actual reproducible signature, from zpool events -v after every failed attempt:
ereport.fs.zfs.data
zio_err = 0x34
zio_objset = 0x0
zio_object = 0x125
zio_level = 0x0
zio_blkid = 0x0
zio_priority = 0x0 [SYNC_READ]
followed immediately by:
ereport.fs.zfs.log_replay
This exact pair repeats identically across every import attempt, regardless of flags used. zio_err=0x34 (52, ENOMSG) on object 0x125 in objset 0x0 (the MOS/root objset) during log replay, every time.
Most interesting data point: zdb -e -p /dev/disk/by-partuuid Nirala_Main_Pool completes successfully:
spa_misc.c:430:spa_load_note(): spa_load(Nirala_Main_Pool, config trusted): LOADED
So zdb can fully load the pool’s trusted config from disk, which suggests the underlying data and most metadata are intact — the failure appears isolated to processing one specific intent log record during the import path itself.
Suspected trigger: Two days before discovery, I ran zpool import -f once, unsuccessfully, and I’m not fully certain if it was interrupted (system was later found in a bad state, and I subsequently reverted TrueNAS to the prior version). My best guess is this left a partially-written/corrupted ZIL record referencing object 0x125 that log replay can’t process, and which none of the standard bypass mechanisms are routing around.
Question: Is there a way to force ZFS to skip/discard this specific corrupted log record (object 0x125 in the MOS) during import rather than aborting entirely? Is zfs_recover=1 expected to cover this class of MOS-level replay error, or is there a lower-level tool/patch needed here? Happy to provide full zdb -e -bcsvL output or anything else that would help diagnose.