How Do You Tell Whether a QuTS Hero Pool Still Has Its Data Integrity?
Three per-vdev counters & one file list. zpool status reports READ, WRITE, & CKSUM counts for every member of every vdev, & zpool status -v names the files whose blocks no longer reconstruct.
What the zpool status counters actually report
The READ & WRITE columns count I/O errors that happened on the device. The CKSUM column counts uncorrectable checksum errors that happened on the device.
A QNAP support article says "Using ZFS CLI commands on your QuTS hero NAS is not supported and should be avoided" & points you to the Storage & Snapshots utility instead.
| Telemetry field | What it actually tells us |
|---|
| READ | I/O errors that happened on the device. When this count is climbing, we image that member before we touch anything else in the pool. |
| WRITE | I/O errors that happened on the device. |
| CKSUM | Uncorrectable checksum errors that happened on the device. |
ZFS self-healing needs surviving redundancy
ZFS catching corruption doesn't mean ZFS can fix it. ZFS repairs a bad block as long as there is at least one good copy of that block that matches the checksum.
That good copy comes from redundancy: RAIDZ parity, a mirrored copy, or an extra copy ZFS kept because of the copies property. A RAIDZ vdev that has already lost its redundancy to a failed member has no surviving parity to rebuild that block from. ZFS still catches the checksum mismatch. It shows up as an unrecoverable read instead of a silent repair.
No scrub & no resilver until every member is imaged
A scrub reads every allocated block in the pool & verifies every checksum. A resilver only looks at data ZFS knows is out of date, like the data for a replaced device.
For what that read load does to a same-batch vdev, see the resilver-triggered cascading drive failure walkthrough.
Snapshot retention limits inside a QuTS hero pool
A QuTS hero snapshot is an object inside the pool, not a copy parked somewhere else. It is enumerated with zfs list -t snapshot against an imported pool, the same dependency a zvol has on this platform: the pool assembles first, then the objects inside it become addressable.
Redundancy inside the chassis buys you availability & uptime. It isn't data protection. A copy only survives a pool that won't import if it's stored somewhere other than that pool. That means a replication target or a separate offline backup. Adding more snapshots to the same pool doesn't change that.