Identical CKSUM errors across all 7 drives in a raidz1 — persist after replacing HBA, testing RAM + PSU. raidz-expanded pool on OpenZFS 2.4.1 (26.0.0-BETA.2)
I was trying to use Claude to troubleshoot ) please dont judge!) and this is what i have done, any help would be appreciated.
TL;DR
All 7 disks in a single raidz1 vdev show the exact same checksum error count, incrementing in lockstep, with zero READ and zero WRITE errors and nothing in dmesg. This has survived a full hardware swap of the suspected component and clean RAM/PSU tests. The pool was raidz-expanded and is running a bleeding-edge OpenZFS build. Looking for anyone who’s seen this signature and knows whether it’s salvageable in place or a known raidz-expansion / OpenZFS 2.4.x issue.
System / Hardware
-
TrueNAS version: TrueNAS 26.0.0-BETA.2
-
OpenZFS version:
zfs-2.4.1-1/zfs-kmod-2.4.1-1 -
Motherboard: gigabyte (older)
-
CPU: 2600x
-
RAM: ddr4 32g, non-ECC
-
PSU: Corsair 850
-
HBA / controller (NEW): 10Gtek 6-Port PCIe Expansion Card, PCIe x4 to 6xSATA
-
HBA / controller (OLD, since replaced): m.2-to-SATA adapter, several years old (i dont think this was the issue)
-
Boot device: single SSD (
sdb3,boot-pool)
Pool layout
-
Pool:
raid -
Topology: single
raidz1-0vdev, 7 × HDD -
Hot spare: 1 × HDD (AVAIL)
-
Drive connections: 5 drives were on the old m.2-to-SATA adapter, 4 on motherboard SATA (9 drives total: 7 vdev + 1 boot + 1 spare). Since replacing the adapter with a PCIe HBA. 5 drives on HBA, 3 on MOBO + boot on MOBO
-
Pool history: this vdev was raidz-expanded —
expand: expanded raidz1-0 copied 9.38T in 19:05:11, on Mon May 26 00:00:40 2025
The problem
Previously the pool had zero checksum errors. They appeared suddenly (I was away for a weekend; my first thought was a cable knock or a bad adapter). What’s unusual is that every drive shows the identical error count, not a spread — which is not what independent disk/cable failure looks like.
Representative zpool status -v raid (counts climb over time; snapshot below):
pool: raid
state: DEGRADED
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
scan: scrub repaired 440K in 2 days 09:20:28 with 36 errors on Thu Jul 9 21:45:55 2026
expand: expanded raidz1-0 copied 9.38T in 19:05:11, on Mon May 26 00:00:40 2025
config:
NAME STATE READ WRITE CKSUM
raid DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
79040f44-422b-4f54-9528-c0264e64bcc6 ONLINE 0 0 266
fd0ea60d-016d-48d5-bc87-c4de4174b3aa ONLINE 0 0 266
6476bca5-e800-4ed4-b830-8bf312f87651 ONLINE 0 0 266
ea73c50a-5069-49ce-aca4-9d1946e1e5e7 ONLINE 0 0 266
c4e4c9d0-7744-4d5c-8ab6-897cfa226134 ONLINE 0 0 266
4f6e0b01-fef0-4ba6-a207-c1d64891d94e ONLINE 0 0 266
f2ae3af8-40dc-4feb-b573-762bd9b97413 DEGRADED 0 0 266 too many errors
spares
1cf534a5-4afd-4453-b0cf-65709190c024 AVAIL
Notes on the above:
-
All 7 drives track the identical CKSUM count. READ/WRITE are 0 across the board.
-
One drive (
f2ae3af8) flipped toDEGRADED / too many errors, but it shows the same count as the other six and zero read/write — it just crossed the threshold first. I do not believe it’s a failing drive. -
A
zpool clearresets the counters to 0, after which they immediately begin climbing again.
Permanent errors reported
A scrub (2d 9h, repaired 440K with 36 errors) reported permanent errors in:
raid/ix-apps/app_mounts/jellyfin/config:<0x10139>
/var/db/system/netdata/dbengine/datafile-1-0000000834.ndf
/var/db/system/netdata/dbengine/journalfile-1-0000000834.njf
/var/db/system/netdata/ml.db
/var/db/system/netdata/dbengine/datafile-1-0000000833.ndf
/var/db/system/configs-.../TrueNAS-26.0.0-BETA.1/20260705.db
The Jellyfin dataset now fails to mount:
[EZFS_MOUNTFAILED]: zfs_mount_at() failed - cannot mount
'raid/ix-apps/app_mounts/jellyfin/config': Input/output error
(The <0x...> object-ID form suggests corrupted metadata rather than a plain file, which is presumably why the whole dataset won’t mount.)
Event log — fixed-interval “heartbeat”
zpool events raid | tail shows ereport.fs.zfs.data events arriving on an almost exact ~5.12 second interval while the pool is otherwise idle, plus periodic bursts of ereport.fs.zfs.checksum events sharing an identical nanosecond timestamp (a single stripe read hitting all drives at once):
Jul 11 2026 19:10:10.850621835 ereport.fs.zfs.data
Jul 11 2026 19:10:11.138619705 ereport.fs.zfs.checksum <-- x14, all same ns timestamp
...
Jul 11 2026 19:10:16.734578328 ereport.fs.zfs.data
Jul 11 2026 19:10:21.858540455 ereport.fs.zfs.data
Jul 11 2026 19:10:26.978502602 ereport.fs.zfs.data <-- ~5.12s apart, metronomic
My read: this looks like something reading the same already-corrupted blocks on a timer, with ZFS counting each hit across the whole stripe — rather than new/spreading corruption. But I can’t get it to stop (see below), and it’s still climbing.
Troubleshooting already done
-
Replaced the old m.2-to-SATA adapter with a new PCIe HBA. Errors returned with the identical-count signature. (Note: some vdev drives are/were on onboard SATA on an unchanged path, yet track the same count as drives whose entire path was replaced.)
-
Memtest86+ on the (non-ECC) RAM — reported clean. [FILL IN number of passes / duration]
-
PSU tested — reported fine. [FILL IN how it was tested]
-
Moved the System Dataset from
raidtoboot-pool(midclt call systemdataset.update '{"pool": "boot-pool"}', then rebooted). Confirmed it moved — but theereportheartbeat and climbing CKSUM continue. -
Stopped
netdata, then stoppeddocker/docker.socketto try to identify/stop whatever is re-reading the corrupted blocks. [FILL IN whether the heartbeat stopped after this] -
zpool clear raid— resets counters; they climb again immediately. -
Attempted
zfs rollbackof the Jellyfin config to a pre-corruption snapshot (@1.3.11, dated before the corruption event) — this suspended the whole pool; required a reboot to bring it back ONLINE. Did not retry. -
dmesgshows no SATA/SAS link errors, drive resets, or controller complaints.
Deliberately NOT done (to avoid making it worse): no further scrubs, no resilver, no replacing the DEGRADED drive, no swapping in the spare.
What I think is going on (open to being wrong)
-
Identical counts + zero read/write + clean
dmesg, persisting through an HBA swap and clean RAM/PSU, seem to rule out per-drive hardware and point above the disk layer. -
The metronomic event interval reads like a daemon repeatedly hitting the same permanent (unrecoverable, whole-stripe on raidz1) blocks — i.e. the climbing counter is a re-read artifact, not active corruption.
-
The pool is raidz-expanded and running OpenZFS 2.4.1 (very new). I’m suspicious of a raidz-expansion / new-OpenZFS interaction, but I have no proof.
Questions for the community
-
Has anyone seen identical CKSUM counts across all drives in a raidz vdev that persist after full hardware replacement (controller swapped, RAM + PSU tested clean)? What was the root cause?
-
Is there a known issue with raidz expansion + OpenZFS 2.3/2.4 producing spurious or real checksum errors like this?
-
Is the metronomic
ereport.fs.zfs.datainterval a reliable indicator that this is a reader re-hitting dead blocks vs. live corruption? How would you confirm which? -
Given the permanent errors are all disposable (netdata metrics DB, a Jellyfin config object, a config-backup snapshot), is there any point trying to repair in place, or is evacuate → destroy → rebuild (on a stable release, without the expansion history) the correct call?
-
Anything I should capture now (e.g. full
zpool events -v, specificzdboutput) that would help diagnose before I tear the pool down?
Happy to post any additional output — zpool events -v, zdb, smartctl, full dmesg, etc. Thanks in advance.