Skip to content

Storage Health

Storage Health watches each machine’s physical drives for signs of wear, errors and possible failure, and watches storage performance separately. It appears on Hardware Health: a fleet overview at the top, and each machine’s drives below it.

Two things are deliberately kept apart:

  • Health is what the drive reports about itself (S.M.A.R.T. for SATA and SAS drives, the health log for NVMe), plus errors the operating system logs.
  • Performance is how busy and how quick the drive is (busy time, latency, operations and throughput per second).

A healthy drive can be slow because it is overloaded, and a drive that performs normally can be reporting a worrying counter. Guardian assesses them independently and shows how they relate.

State Meaning
Healthy The drive was read successfully and reports nothing concerning. This is the drive’s own view and does not guarantee it cannot fail.
Warning Something warrants investigation. The evidence is listed.
Critical The drive reports a critical condition (for example its own overall health check failed, or an NVMe critical warning). Back up and plan replacement.
Unavailable The drive supports health reporting but it could not be read right now (permission, timeout, tool missing, or the drive disappeared).
Unsupported The drive, controller or virtual disk does not expose health data.
Unknown The drive answered but gave nothing Guardian can judge it by.

Unavailable, Unsupported and Unknown are never shown as healthy. A drive Guardian could not read is not the same as a drive that is fine.

Every Warning or Critical lists the observations behind it, how strong the evidence is, and (on plans that include it) suggested next steps. Guardian does not predict when a drive will fail and never claims a drive “will fail”. Its rules say what was observed and what is sensible to do.

Only what the drive reports, in the units the specifications define. A reading the drive does not report is not shown (it is never displayed as zero).

  • SATA / SAS: the drive’s overall health result; reallocated, pending, offline-uncorrectable and reported-uncorrectable sectors; command timeouts; interface CRC errors; power-on hours and power cycles; temperature; the drive’s error log count; and its last self-test result. The raw attribute table is available on the page, exactly as reported. Vendor-specific attributes are shown but not interpreted, because their meaning differs between makers.
  • NVMe: critical-warning flags, temperature, available spare and its threshold, percentage used, media and data-integrity errors, unsafe shutdowns, data read and written (NVMe data units, converted at 512,000 bytes each), host read and write commands, controller busy time, and time spent above warning and critical temperatures.
  • Operating-system storage errors: I/O errors, timeouts and resets from the kernel log (Linux) or the System event log (Windows). They are evidence independent of what the drive says.
  • Performance: busy time, read and write latency, operations and throughput per second, from the operating system’s own per-disk counters.

Serial numbers are not sent. The agent sends a hash that identifies the drive and the last four characters of the serial so you can recognise it.

Percentage used is the vendor’s wear indicator. It is not a measured remaining lifetime, and Guardian never presents 100% minus it as one.

Platform What works What it needs
Linux S.M.A.R.T. and NVMe health, temperature, OS errors, per-disk performance smartmontools installed (smartctl); nvme-cli is used for NVMe if smartctl cannot read it. The agent must be allowed to open the drives (the installed service runs as root).
Windows Drive inventory and Windows’ own health status without any extra step. Full S.M.A.R.T. counters, temperature and OS errors with elevation. The installed Windows service runs elevated. Installing smartmontools adds full S.M.A.R.T. attributes. Drives behind some controllers are not exposed.
macOS Battery state and what the system exposes. Low-level drive health is limited by Apple hardware, third-party enclosures and macOS version. Where it is not exposed, the drive is shown as Unsupported or Unavailable, with the reason. Disk performance is not measured on macOS.

Guardian never installs software or changes system settings on its own. If a tool is missing, the drive shows Unavailable with the reason and what to install.

Drives behind a hardware RAID controller, virtual machine disks and cloud volumes appear as logical disks: Guardian shows them but does not claim to know the physical drives behind them. USB drives are readable only when the enclosure passes the health commands through.

Alerts go through Guardian’s normal alerting. Examples:

  • the drive’s own overall health check reports failure, or an NVMe critical warning is set;
  • reallocated, pending or uncorrectable sectors, or media errors, increase since the previous check;
  • available spare falls below the drive’s threshold, or the wear indicator crosses your threshold;
  • a drive’s temperature exceeds the drive’s own limit (or your configured limit);
  • repeated I/O errors or timeouts in the operating system log;
  • a drive that was readable before can no longer be read;
  • storage latency or busy time stays degraded for several checks in a row. This alert says plainly that it is about load, not confirmed hardware failure.

Counters are judged by change, not only by value: a stable count of a few remapped sectors is information, a count that grew since yesterday is a warning. A counter that goes backwards (a reset, or a replaced drive) is reported as a reset and never as a recovery. The same condition does not alert again on every check; a further increase is new. When a drive returns to healthy, the alerts Guardian raised for it are resolved. A critical state also opens one incident per drive.

Where the drive reports its own limit (for example its temperature limit or spare threshold), Guardian uses it. Where it does not, Guardian uses its own defaults, and says so. Administrators can change them under Hardware Health’s thresholds API (/api/storage/thresholds): wear warning level (default 90%), spare warning level (20%), temperature warning levels (HDD 55 °C, SSD 70 °C, NVMe 75 °C), reallocated-sector warning level (100), latency (100 ms) and OS-error count (3 in 24 hours).

Technicians and above can start a drive’s own short or extended S.M.A.R.T. self-test from a drive’s details, where the drive and plan support it. Before it starts you are shown what it does (a short test takes a couple of minutes and has little effect; an extended test reads the whole surface and can slow the drive for hours) and must confirm. If the drive has been busy, Guardian asks you to confirm again. A second test cannot start while one is running. Every request is recorded in the audit log, and progress and the result appear on the drive. Guardian never starts a self-test by itself.

Seeing that a drive is in trouble is never restricted. Plans differ in how much more you get:

Free Starter Professional Enterprise
State, device-reported evidence, current readings ✓ ✓ ✓ ✓
History kept 7 days 30 days 90 days 365 days
Drive self-tests ✓ ✓ ✓
Trend analysis, correlation with OS errors and performance, suggested next steps ✓ ✓

While a machine is in Investigation Mode, its agent reads storage health and the operating-system error log every two minutes instead of every 30, for as long as the investigation lasts (at most 15 minutes), then returns to normal on its own. It does not start self-tests or any long-running diagnostic.

  • GUARDIAN_STORAGE=off turns storage monitoring off for a machine.
  • GUARDIAN_STORAGE_INTERVAL (default 30m, minimum 5m) sets how often health is read.
  • Under sustained CPU, memory or disk pressure, or on battery, the agent skips a few rounds (then reads anyway so data cannot go stale).
  • A drive that keeps failing to read is retried less and less often, and a repeated failure is logged once.

The agent runs smartctl, nvme and, on Windows, a fixed PowerShell query, with no shell, a time limit, a cap on output size, a minimal environment and device names it has validated. Everything the agent reports is validated and size-limited again by the hub, and storage data is tenant-isolated. Drive self-test requests need the Technician role, the plan, an explicit confirmation, and are audited.