Add TrueNAS hardware inventory and SMART analysis (2026-05-19)
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user