S.M.A.R.T. is firmware-level instrumentation built into every modern HDD, SSD, and NVMe drive. The drive reports on its own internal state. The smartctl tool from smartmontools reads what the firmware already knows. SMART monitoring is necessary but not sufficient: it catches gradual media degradation and endurance wear-out, but cannot predict sudden controller failures, firmware bugs, or silent data corruption. You still need redundancy, backups, and checksumming filesystems.

The single most important principle in this checklist: track rate of change, not absolute values. A drive with 50 reallocated sectors accumulated over five years is stable. A drive that gained 5 reallocated sectors this week is actively dying. Most monitoring failures come from alerting on absolute thresholds while missing the acceleration signal that distinguishes historical damage from active failure.

The four monitoring maturity levels

Each level builds on the previous one. A team at Level 2 already collects everything in Level 1 plus the additional signals listed. Ensure solid coverage at your current level before adding sophistication.

flowchart TD
    L1["Level 1: Survival
Device presence + SMART PASSED/FAILED"] L2["Level 2: Operational
+ Media, transport, NVMe health"] L3["Level 3: Mature
+ Rate-of-change, self-tests, endurance"] L4["Level 4: Expert
+ Cross-drive correlation, prediction"] L1 --> L2 --> L3 --> L4

Level 1: survival

Without these two signals, you will not know when a drive has died or when the drive firmware itself has declared failure.

SignalHow to checkWhat it detects
Device presencels /dev/sdX or ls /dev/nvme0n1Complete drive failure, bus disconnection, controller death
SMART overall healthsmartctl -H /dev/sdXDrive firmware declaring itself PASSED or FAILED

Device presence is binary and unconditional. If the device node was present yesterday and is gone today, the drive has dropped off the bus. Track which devices are expected to exist (inventory baseline) and alert when any expected device is absent.

SMART overall health (smartctl -H) returns PASSED or FAILED. A FAILED result means at least one pre-fail attribute has crossed its vendor-defined threshold. Treat FAILED as a page-worthy event requiring immediate data evacuation.

The critical limitation: PASSED is notoriously optimistic. A drive can report PASSED while having hundreds of pending sectors, dozens of reallocated sectors, and degraded performance. Google’s 2007 study found that 36% of failed drives had zero SMART attribute warnings beforehand . Never stop at Level 1.

Level 2: operational

Missing any of these signals means you are blind to common, predictable failure modes.

SignalSourceHow to checkWhat it detects
Reallocated Sector CountATA ID 5smartctl -A /dev/sdX | grep -i ReallocatedMedia degradation, spare pool consumption
Current Pending SectorATA ID 197smartctl -A /dev/sdX | grep -i PendingUnstable sectors causing I/O latency spikes
Offline UncorrectableATA ID 198smartctl -A /dev/sdX | grep -i UncorrectableConfirmed data loss at media level
Drive TemperatureATA ID 194 / NVMe Compositesmartctl -A /dev/sdX | grep -i TemperatureThermal damage risk, throttling
UDMA CRC Error CountATA ID 199smartctl -A /dev/sdX | grep -i CRCCable, backplane, or transport failure
NVMe Available SpareNVMe Health Logsmartctl -A /dev/nvme0n1 | grep -i SpareSSD spare pool exhaustion
NVMe Media and Data Integrity ErrorsNVMe Health Logsmartctl -A /dev/nvme0n1 | grep -i MediaNVMe data integrity failures
NVMe Critical WarningNVMe Health Log byte 0smartctl -A /dev/nvme0n1 | grep -i CriticalDrive-flagged critical conditions
Telemetry blind spotExpected vs actual drive countsmartctl -i /dev/sdX on all drivesMonitoring coverage gaps from RAID masking or USB bridges

The first three ATA attributes (IDs 5, 197, 198) form the core media integrity triad. Reallocated sectors are permanently remapped to spares from a finite pool. Pending sectors are unstable and waiting to be either recovered or reallocated on next write. Offline uncorrectable sectors are confirmed data loss: the drive tried and failed to recover the data. When all three are rising together, the drive is in terminal failure.

UDMA CRC Error Count (ID 199) is the most commonly misdiagnosed SMART attribute. CRC errors indicate data corruption on the SATA wire between the host and the drive. This is almost never the drive’s fault: it is a bad cable, loose connector, failing backplane port, or electromagnetic interference. If CRC errors are increasing but reallocated, pending, and uncorrectable counts are all zero, the problem is the cable, not the drive. Reseat or replace the cable first.

For NVMe drives, the monitoring center of gravity shifts. NVMe uses a standardized health log (Log Page 02h) instead of vendor-specific ATA attributes. The three signals that matter most: Available Spare (percentage of spare NAND remaining for bad-block replacement), Percentage Used (estimated endurance consumed), and the Critical Warning byte (a bitmask of five critical conditions). Teams that only look for NVMe media errors (a lagging indicator) miss the early warning that Available Spare and Percentage Used provide.

Telemetry blind spot detection is a monitoring infrastructure check, not a drive health check. Compare the number of physical drives your system should have against the number returning valid SMART data. Behind hardware RAID controllers, you need passthrough flags like -d megaraid,N or -d cciss,N to reach individual drives. Without them, SMART queries return virtual device data or fail silently.

Level 3: mature

Level 3 adds trend analysis, proactive scanning, and endurance planning. This is where you stop reacting to failures and start predicting them.

SignalSourceWhy it matters
Rate-of-change trackingAll cumulative countersDistinguishes stable history from active failure
ATA Error Logsmartctl -l error /dev/sdXError type detail: UNC (data loss), ICRC (transport), CCTO (timeout)
Self-test resultssmartctl -l selftest /dev/sdXProactive surface scan catches latent bad sectors before production I/O
NVMe Percentage UsedNVMe Health LogEndurance consumption tracking, runway to rated TBW
Write VolumeATA ID 241 / NVMe Data Units WrittenRaw input for endurance runway calculation
Power-On HoursATA ID 9 / NVMe Health LogFleet age management, warranty tracking, attribute normalization
NVMe Composite Temperature TimeNVMe Health LogCumulative thermal exposure history
Unsafe Shutdown CountNVMe Unsafe Shutdowns / ATA vendor-specificPower stability monitoring
Host I/O errorsdmesg, kernel logsFailures that SMART does not record

Rate-of-change tracking is the defining upgrade at this level. Every cumulative counter (reallocated sectors, pending sectors, CRC errors, NVMe media errors, power-on hours) should be tracked as a rate, not just a snapshot. The monitoring system must store historical values and compute deltas. A single snapshot tells you nothing about whether the drive is stable or deteriorating.

Scheduled self-tests are the active probing mechanism for SMART. Without them, SMART is passive: it only reports issues that surface during normal I/O. Sectors that are rarely read can silently degrade for months until a scrub or restore operation discovers the data is lost. Run a weekly short test and a monthly extended test. The extended test is the only reliable way to proactively discover bad sectors across the entire drive surface before the filesystem hits them.

# Schedule self-tests via smartd.conf
# Short test nightly at 2am
/dev/sda -a -s (S/../.././02)
# Extended test on the 1st of each month at 1am
/dev/sda -a -s (L/../01/../01)

NVMe Percentage Used can exceed 100%. The NVMe specification explicitly allows values up to 255%. A drive at 150% Percentage Used but with 90% Available Spare and zero media errors is operating fine, just beyond its warranty endurance rating. The failure indicator to watch is Available Spare declining toward zero, not Percentage Used alone.

Host I/O error monitoring catches failure modes that SMART misses entirely. A drive with clean SMART attributes but I/O errors and command timeouts in kernel logs is a classic pattern. Check dmesg for messages like “I/O error, dev sdX”, “medium error”, “task abort”, or SCSI error recovery loops. These indicate intermittent controller hangs, firmware bugs, or bus-level errors that never get recorded in SMART.

Level 4: expert

Level 4 adds cross-drive correlation, predictive modeling, and fleet-level analysis. This is what experienced operators build after incidents where earlier levels failed them.

SignalSourceWhy it matters
Seek Error Rate (normalized)ATA ID 7HDD mechanical wear, actuator degradation
Spin Retry CountATA ID 10HDD spindle motor or power supply issues
NVMe Critical Warning individual bitsBit-level trackingSpecific failure category: spare, temperature, read-only, PLP failure
Cross-drive correlationMultiple drives in same chassisInfrastructure problem vs individual drive failure
Drive identity trackingModel, serial, firmware versionChange detection, known-buggy firmware versions
First-observation baselinesFleet-wide initial SMART snapshotPrevents alert storms when deploying monitoring on existing fleets

Cross-drive correlation is the most valuable expert technique. If one drive shows spin retries, that drive’s motor is failing. If multiple drives in the same chassis show spin retries simultaneously, the power supply is sagging. If multiple drives of the same model start showing similar SMART degradation around the same time, you have a batch defect. Individual drive monitoring cannot detect these patterns.

First-observation baseline management solves the deployment problem. When you first deploy SMART monitoring on an existing fleet, every drive with any historical errors will trigger alerts if your logic checks absolute values. Offline Uncorrectable counts, NVMe Media Errors, Power-On Hours, and Unsafe Shutdowns are all cumulative lifetime counters. The monitoring system must establish a baseline on first scrape and alert only on growth from that baseline.

Drive identity tracking (model, serial, firmware version via smartctl -i) catches unauthorized drive swaps, unexpected firmware changes, and known-buggy firmware versions. Known firmware bugs have bricked drives from every major manufacturer. Without firmware version tracking across your fleet, you cannot proactively identify drives running vulnerable firmware before the bug triggers.

Rate of change: the signal that matters most

Absolute values are context. Rate of change is the signal.

Consider a drive with 10 reallocated sectors. Is that concerning?

  • If those 10 appeared over 5 years and have been stable for the last 12 months: the drive contained a manufacturing defect that was contained. Monitor for growth.
  • If those 10 appeared in the last week: the drive is actively deteriorating. Schedule replacement now.
  • If the count went from 10 to 50 overnight: the drive suffered a physical event (head slap, shock, power surge). Evacuate data immediately.

Every cumulative SMART counter should be tracked as a rate. The monitoring system needs to store historical values, compute deltas over meaningful windows (hours, days, weeks), and alert on acceleration. A threshold like “reallocated sectors > 10” is nearly useless. A threshold like “reallocated sectors increased by >= 5 in 24 hours, AND current pending sectors is non-zero sustained across >= 2 polls, AND at least one corroborating signal (offline uncorrectable also increased, or self-test failed, or SMART health is FAILED)” catches active multi-signal media failure without false alarms.

This also applies to smartctl exit codes. The exit status is a bitmask: exit code 0 means all checks passed. Bit 3 (value 8) indicates the SMART health check returned FAILED. Bit 6 (value 64) indicates the device error log contains records, which may be historical. Bit 7 (value 128) indicates the self-test log contains records. A monitoring script that treats any non-zero exit as failure will generate constant false positives on drives with historical error log entries.

Pitfalls and false alarms

PitfallWhat happensHow to avoid it
Monitoring only PASSED/FAILED36% of failed drives had zero SMART warnings (Google 2007). By the time SMART says FAILED, the drive has been dying for weeks.Track individual attributes (IDs 5, 197, 198) alongside the health check.
Seagate raw value panicIDs 1 and 7 show raw values in the billions on healthy Seagate drives. The raw field encodes total operation counts plus error counts, not just errors.Use the normalized value (VALUE column), not the raw value, for Seagate drives.
Replacing drives for cable problemsCRC errors (ID 199) spike, team replaces the drive. The new drive develops the same errors because the cable was the problem.CRC errors increasing with zero media errors = cable problem. Reseat or replace the cable first.
No scheduled self-testsLatent bad sectors hide until production I/O hits them, producing an I/O error instead of a self-test warning.Schedule weekly short tests and monthly extended tests via smartd.
Treating NVMe like SATATeams only look for NVMe media errors (lagging indicator) and miss Available Spare and Percentage Used (leading indicators).Center NVMe monitoring on Available Spare, Percentage Used, and Critical Warning bits.
RAID controller blind spotStandard SMART queries return virtual device data or fail. Monitoring appears to work but sees nothing.Use controller-specific passthrough: -d megaraid,N, -d cciss,N, -d sat+megaraid,N.
Alerting on lifetime counters at first deploymentEvery drive with any history triggers an alert. Operators learn to ignore all SMART alerts.Baseline on first scrape. Alert on growth from baseline, not absolute values.
Single-metric alerting without drive-type contextTemperature threshold of 60 C pages for both an HDD (critical) and an enterprise NVMe (well within spec).Make thresholds drive-type-aware. Check datasheets for rated maximums.

Netdata integration

Per-second SMART attribute collection matters operationally for two reasons:

  1. Rate-of-change detection on short timescales. Daily smartctl cron jobs miss acceleration that happens over hours. Per-second collection catches a reallocated sector count jumping from 0 to 15 in minutes.
  2. Cross-signal correlation. A latency spike in disk await can be confirmed against non-zero pending sectors on the same drive. A temperature rise on an NVMe drive can be correlated with throughput dropping due to thermal throttling.

For NVMe, Available Spare, Percentage Used, Media and Data Integrity Errors, and Critical Warning bits are collected as first-class metrics continuously, not just on manual smartctl runs. Device presence monitoring detects drives dropping off the bus within seconds, and kernel log correlation helps distinguish sudden disappearance (controller failure) from gradual degradation.