Files
homelab-configs/truenas-hardware-inventory.md
T

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:

  1. sdi (9JGZL01T) — first priority; has confirmed reallocated + uncorrectable sectors
  2. 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 zpool or smartctl directly — use midclt call for TrueNAS API access