9.1 KiB
TrueNAS Hardware Inventory & SMART Analysis
Last updated: 2026-05-19
TrueNAS version: 25.04.2.6 (TrueNAS SCALE Fangtooth)
Kernel: 6.12.15-debug+truenas
Uptime: 11 days, 22 hours at time of audit
Hostname: truenas
System Board
- Motherboard: Gigabyte B450M DS3H WIFI-CF (AMD Ryzen AM4)
Storage Controllers
| PCI Slot | Controller | Driver | Notes |
|---|---|---|---|
| 03:00.0 | Broadcom/LSI SAS3008 (SAS 9300-16i) | mpt3sas | LANPAN HBA card (installed Apr 2026) |
| 05:00.0 | Broadcom/LSI SAS3008 (SAS 9300-16i) | mpt3sas | YiBaoTong SAS9300-16i (original replacement) |
| 06:00.1 | AMD 400 Series Chipset SATA | ahci | Onboard, 8 native ports |
| 0f:00.0 | AMD FCH SATA [AHCI mode] | ahci | Onboard |
| 0f:00.1 | AMD FCH SATA [AHCI mode] | ahci | Onboard |
Note: All pool drives connect via the SAS3008 HBAs. The boot SSD connects to the onboard SATA (ata10). SMART data is read via SAT (SCSI-ATA Translation) through the SAS controllers.
Drive Inventory
| Dev | Serial | Model | Size | HCTL (Host) | Pool Role | SMART Status |
|---|---|---|---|---|---|---|
| sda | 9JG47UTT | WDC WUH721414ALE600 | 12.7 TB | 12:0:1:0 (SAS) | pool1 data | ✅ Clean |
| sdb | 0007A62D | HGST OOS16000G | 14.6 TB | 0:0:0:0 (SAS) | pool1 spare | ✅ Clean |
| sdc | 9RG9L8BC | WDC WUH721414ALE604 | 12.7 TB | 12:0:0:0 (SAS) | pool1 data | ✅ Clean |
| sdd | 9JG47Y2T | WDC WUH721414ALE600 | 12.7 TB | 12:0:2:0 (SAS) | pool1 data | ✅ Clean |
| sde | ZX3014DP | Seagate ST16000NM000D | 14.6 TB | 12:0:3:0 (SAS) | pool1 data | ✅ Clean |
| sdf | 9JJ5DJET | WDC WUH721414ALE604 | 12.7 TB | 12:0:5:0 (SAS) | pool1 data | ✅ Clean |
| sdg | 9JGV4MLT | WDC WUH721414ALE604 | 12.7 TB | 12:0:6:0 (SAS) | pool1 data | ✅ Clean |
| sdh | 9JH31S2T | WDC WUH721414ALE604 | 12.7 TB | 12:0:7:0 (SAS) | pool1 data | ⚠️ See below |
| sdi | 9JGZL01T | WDC WUH721414ALE604 | 12.7 TB | 12:0:4:0 (SAS) | pool1 data | ⚠️ See below |
| sdj | AA000000000000001308 | EDILOCA EN206 512GB SSD | 477 GB | 10:0:0:0 (SATA) | Boot drive | ✅ Clean |
Pool drives: 8 data + 1 hot spare
Available space: ~56 TB
Pool configuration: RAIDZ2 (tolerates 2 simultaneous drive failures)
SMART Health Summary
✅ Clean Drives (7 drives)
All of the following have zero pending sectors, zero uncorrectable sectors, zero reallocated sectors, and no ATA errors:
- sda — 9JG47UTT (WDC WUH721414ALE600)
- sdb — 0007A62D (HGST OOS16000G) — hot spare
- sdc — 9RG9L8BC (WDC WUH721414ALE604)
- sdd — 9JG47Y2T (WDC WUH721414ALE600)
- sde — ZX3014DP (Seagate ST16000NM000D) — previously thought incompatible with SAS; now clean
- sdf — 9JJ5DJET (WDC WUH721414ALE604)
- sdg — 9JGV4MLT (WDC WUH721414ALE604)
⚠️ Drives Requiring Attention
sdh — Serial: 9JH31S2T (WDC WUH721414ALE604, 12.7 TB)
| SMART Attribute | Value |
|---|---|
| Reallocated Sectors (ID 5) | 0 |
| Current Pending Sectors (ID 197) | 40 |
| Offline Uncorrectable (ID 198) | 0 |
| ATA Error Count | 85 |
| Self-Test Errors | 21 |
| Power-On Hours | ~53,029 hrs (~6.1 years) |
Important context: The 21 self-test errors are almost entirely caused by a misconfigured SMART schedule (see Fix section below) — a LONG self-test was set to run every hour. A long test on a 12.7 TB drive takes ~12 hours; starting a new one every hour continuously aborts the previous test, and each abortion is logged as a self-test failure. This generated endless alerts.
The 40 pending sectors and 85 ATA errors are real and need monitoring. Pending sectors are sectors the drive couldn't read; they haven't been confirmed bad yet (zero reallocated, zero uncorrectable). The drive is still functional but showing age-related wear.
sdi — Serial: 9JGZL01T (WDC WUH721414ALE604, 12.7 TB)
| SMART Attribute | Value |
|---|---|
| Reallocated Sectors (ID 5) | 2 |
| Current Pending Sectors (ID 197) | 8 |
| Offline Uncorrectable (ID 198) | 6 |
| ATA Error Count | 17 |
| Self-Test Errors | 2 |
| Power-On Hours | ~53,503 hrs (~6.1 years) |
This drive has confirmed bad sectors: 6 offline uncorrectable and 2 already reallocated. This is a stronger warning sign than sdh. The drive is still online and ZFS is protecting data via RAIDZ2, but this drive should be prioritized for replacement.
ZFS Pool Status
Pool: pool1
Type: RAIDZ2 (8 data drives + 1 hot spare)
Status: ONLINE — healthy
Warning: true (due to SMART alerts, not data errors)
Last Scrub:
Completed: ~May 7, 2026
Result: 0 errors (all data intact)
Duration: ~5.8 hours
Data read: 24.96 TB
The scrub result is the most important number: ZFS read every byte of data across all drives and found zero checksum errors. This confirms RAIDZ2 is protecting all data correctly despite the SMART errors on sdh and sdi.
Root Cause Analysis: SMART Alert Flood
What was observed
A large number of SMART CRITICAL alerts across multiple drives, across multiple controller changes, leading to the theory that the controller hardware was causing errors.
Actual root cause (two separate issues)
Issue 1: Drive age (real hardware wear)
sdh and sdi have ~6.1 years of continuous runtime (53,000+ power-on hours). Enterprise WD Gold drives have a 5-year MTBF rating. These drives are past their design life and showing normal end-of-life bad sector accumulation. This is not a controller issue — the sectors on the drives themselves are worn.
Issue 2: Misconfigured SMART test schedule (false alarm amplifier)
Someone configured a LONG SMART self-test to run every hour on only one drive (9JH31S2T/sdh). This setting is still present in TrueNAS:
Schedule ID 1: LONG test, disk 9JH31S2T, schedule: every hour (all wildcards)
This caused an alert every single hour saying "new Self-Test Log error at hour timestamp XXXXX" — not because the drive was actively failing, but because each new hourly test was aborting the previous one.
Why the "three controllers showing the same errors" was misleading
- Linux device names (sda, sdb, sdh...) are not stable — they can be reassigned on reboot
- Alert messages recorded serials like 9JH31S2T appearing on sda, sdd, sde, sdf, sdh, sdj at different times — this was the same physical drive being seen under different device names
- The controller changes never fixed the errors because the problem was always in the drives themselves, not the controllers
Why different controllers also appeared to show errors
- The SATA controller was replaced with LANPAN SAS3008, and the old SAS9300-16i (YiBaoTong) may still be installed
- Both SAS3008 controllers read SMART data via SAT (SCSI-ATA Translation) — the elevated ATA error counts partially reflect SAT overhead, not pure drive errors
- But the pending and uncorrectable sectors are stored on the drive itself and cannot be faked by a controller
Action Items
🔴 Immediate — Fix SMART test schedule
Delete the hourly LONG test schedule for 9JH31S2T (TrueNAS UI: Data Protection → S.M.A.R.T. Tests).
Replace it with a monthly LONG test (or use the global TrueNAS SMART schedule for all drives).
This will immediately stop the hourly alert flood.
🟡 Medium-term — Plan drive replacements
Both sdh (9JH31S2T) and sdi (9JGZL01T) are showing real bad sectors after ~6 years of operation. RAIDZ2 currently protects the data, but losing a third drive while these two are degraded would be data-threatening.
Replacement priority:
- sdi (9JGZL01T) — first priority; has confirmed reallocated + uncorrectable sectors
- sdh (9JH31S2T) — second priority; 40 pending sectors, high ATA error count
The hot spare sdb (0007A62D, HGST OOS16000G, 14.6 TB) is clean and ready to take over automatically if either drive fails completely.
Replacement drives recommended: WD Gold or Seagate Exos 14TB+ (WDC WUH721414ALE604 or newer).
🟢 Ongoing — Monthly scrubs
Run a ZFS scrub monthly to verify data integrity. TrueNAS default schedule handles this. The May 2026 scrub showed 0 errors — continue monitoring.
Controller Replacement History
| Date | Event |
|---|---|
| ~2025 | Original generic ASMedia ASM1061 SATA controller running |
| April 2026 | ASMedia ASM1061 diagnosed as faulty (ata10, sda/sdh errors) |
| April 18, 2026 | LANPAN SAS3008 ordered ($89.80) |
| April 19, 2026 | LANPAN SAS3008 installed; Seagate Exos X20 16TB drives (0007A62D, ZX3014DP) found incompatible with SAS |
| April 19, 2026 | 2x WD 12.7TB drives replaced with HGST OOS16000G (sdb) and Seagate (sde); resilver started |
| April 20, 2026 | Resilver completed; pool returned to ONLINE |
| May 2026 | YiBaoTong SAS9300-16i also present (two SAS3008 controllers total) |
| May 7, 2026 | Scrub completed — 0 errors |
| May 19, 2026 | Full hardware audit performed; root cause identified (drive age + bad SMART schedule) |
SSH Config Note
- SSH key:
~/.ssh/id_rsa(RSA key — TrueNAS authorized_keys uses RSA, not ed25519) - SSH alias:
truenas - Admin user cannot run
zpoolorsmartctldirectly — usemidclt callfor TrueNAS API access