Drive and pool errors
Recordings have gaps, Frigate is complaining about disk space or write errors, or you suspect a drive in your NVR is failing. This guide helps you figure out whether you're dealing with a full pool, a drive that's starting to fail, or something else entirely, and what to do about it.
On an NVR, the recording drives work harder than a typical desktop disk. Frigate writes video continuously, often around the clock. That makes free space and drive health worth paying attention to before something fails without warning.
Argus systems use ZFS for recording storage. The most reliable way to check pool health and drive S.M.A.R.T. status is over SSH with zpool and smartctl. Cockpit is useful for basic host metrics (CPU, memory, overall disk usage), but it does not show ZFS pool status or detailed S.M.A.R.T. data on a stock Ubuntu install.
Before you start
This guide assumes:
- You can SSH into the NVR, or use Cockpit at
https://cockpit.internalfor basic system overview - Frigate has been recording, or was until the problem started
- You're troubleshooting storage on the NVR itself, not a camera's SD card
Throughout this guide, example IP addresses are used for clarity. Replace them with the addresses from your own network:
- NVR (main LAN):
192.168.1.100 - Router / OPNsense (main LAN):
192.168.1.1
If Frigate won't load at all and containers are crashing, also check What to do when a container won't start. If everything runs but feels slow without any drive warnings, start with NVR running slow or dropping frames.
How storage is set up on Argus systems
Argus systems use two separate storage layers: a small fast drive for the operating system, and a larger pool of NAS-rated hard drives where Frigate stores recordings.
Boot drive (operating system)
| Tier | Boot storage | If it fails |
|---|---|---|
| Vigil | Single M.2 NVMe | The NVR may not boot until the drive is replaced and the OS restored. Recordings on the pool may still be intact. |
| Sentinel | Single M.2 NVMe | Same as Vigil. |
| Warden | Mirrored M.2 pair (RAID 1) | One boot drive can fail and the system keeps running. Replace the failed drive to restore boot redundancy. |
The M.2 drives run Ubuntu, Docker, and your configuration. They are not where Frigate writes camera footage.
Recording pool (ZFS RAID-Z)
Frigate recordings live on a ZFS pool made from NAS-rated hard drives. ZFS spreads data across the drives with parity so a single failed disk (or more, depending on layout) does not immediately destroy your footage.
| Tier | Pool layout | Drive count | Failure tolerance |
|---|---|---|---|
| Vigil | RAID-Z1 | 3 HDDs | 1 drive can fail before data is at risk |
| Sentinel | RAID-Z2 | 4 HDDs | 2 drives can fail before data is at risk |
| Warden | RAID-Z2 | 8 HDDs | 2 drives can fail before data is at risk |
When this guide talks about recording problems, gaps in footage, or a full disk, it usually means the ZFS pool, not the M.2 boot drive.
If you built your own NVR with a different layout, the same S.M.A.R.T. and pool-health principles apply. Focus on whichever volume Frigate writes recordings to.
Full pool is not the same as a failing drive
These problems look similar but need different fixes. Check both before assuming the hardware is bad.
| What you're seeing | Likely cause | First step |
|---|---|---|
Pool usage at 95% or above in df -h |
Retention or too much recording | Free up space |
| S.M.A.R.T. warning on a pool HDD | Drive wear or hardware fault | Check S.M.A.R.T. on pool drives |
| Recordings choppy, SMART looks fine | Heavy write load or nearly full pool | NVR running slow or dropping frames |
| SMART failed, clicking, or read errors on a pool drive | Drive failure in progress | Act now |
Pool status DEGRADED in zpool status |
A pool member failed or is missing | ZFS pool problems |
| NVR won't boot | Boot M.2 problem | Boot drive problems |
Figure out what you're seeing
| What you see | Likely cause | Jump to |
|---|---|---|
smartctl reports a warning on a pool HDD |
Early warning on a recording drive | Read the S.M.A.R.T. warning |
smartctl health check FAILED |
Imminent failure risk | Act now |
zpool status shows DEGRADED or resilvering |
Failed HDD in the ZFS pool | ZFS pool problems |
| "No space left on device" in Frigate logs | Pool full | Free up space |
| Gaps in recordings, SMART looks fine | I/O pressure or config issue | Frigate and recording symptoms |
Pool drive UNAVAIL in zpool status |
Cable, backplane, or dead drive | Drive not detected |
| Clicking or grinding from the NVR | Physical HDD failure | Act now |
| System won't boot, pool was healthy | Boot M.2 failure | Boot drive problems |
Step 1 — Check pool health
SSH into the NVR and run:
zpool status is the most important command for recording health. Look for:
- ONLINE on all pool drives (healthy)
- DEGRADED (a drive failed; pool still running with reduced redundancy)
- FAULTED (pool is not usable; recordings may be inaccessible)
- UNAVAIL on a drive (missing or not responding)
- resilvering or scrub in progress (rebuild or consistency check running)
The READ, WRITE, and CKSUM columns in zpool status show I/O and checksum errors per drive. Non-zero CKSUM values on a pool drive mean ZFS detected data integrity problems on that device. That warrants immediate attention.
Example of what healthy output looks like conceptually: the pool state is ONLINE, every pool member shows ONLINE, and error counts are zero.
Save the output if you plan to open a support ticket. A copy of zpool status is more useful than a Cockpit screenshot for storage problems.
Step 2 — Check S.M.A.R.T. on pool drives
S.M.A.R.T. is each drive's self-monitoring system. Argus recording pools use NAS-rated hard drives, which report the attributes in the table below.
First, identify which devices belong to the pool. zpool status lists them by device name (such as /dev/sda). Those are the drives to check, not the NVMe boot device.
Install smartmontools if needed:
Quick health check on a pool drive (replace /dev/sdX with the correct device):
Full attribute report:
Repeat for each drive in the pool if you're doing a general health survey. If one drive in zpool status already shows errors or UNAVAIL, start with that device.
Read the S.M.A.R.T. warning
These are the attributes that matter most for NAS hard drives in a 24/7 recording workload.
| Attribute | Plain language | When to worry |
|---|---|---|
| Reallocated sectors | Bad spots the drive swapped out | A few on an old drive: monitor. A number that keeps rising: plan replacement. |
| Pending sectors | Problem areas not yet remapped | Any non-zero value: back up and replace soon. |
| Uncorrectable errors | Data the drive could not fix | Treat as serious. Do not wait. |
| Temperature | Current drive heat | Sustained high temps shorten life. Check case airflow and drive bays. |
| UDMA/CRC errors | Communication errors on the cable or backplane | Sometimes cabling, not the platter. Worth reseating before RMA. |
A single early warning on an otherwise healthy drive is a reason to watch closely and back up, not necessarily to panic. A FAILED health result, uncorrectable errors, clicking, or a DEGRADED pool mean act now.
Boot M.2 drives (OS only)
The M.2 boot drive on Vigil and Sentinel, and the mirrored pair on Warden, are NVMe devices. They see far less write load than the recording pool. Check them separately if the NVR won't boot:
Adjust the device name to match lsblk. Warnings on a boot M.2 affect system uptime but do not directly mean your recordings are corrupt.
What Cockpit can and can't tell you
Cockpit at https://cockpit.internal is still worth opening for a quick overview:
- CPU, memory, and load while troubleshooting performance-related storage symptoms
- Overall filesystem usage if the recording mount appears in the Storage page
On a stock Ubuntu Server install, Cockpit's Storage page does not reliably show:
- ZFS pool health, vdev layout, or degraded/resilvering state
- Per-drive S.M.A.R.T. attributes for pool hard drives
Do not assume storage is healthy just because Cockpit looks quiet. zpool status and smartctl are the source of truth for Argus recording storage.
Optional ZFS UI (future)
A third-party Cockpit module (45Drives cockpit-zfs) can add ZFS pool management to the web UI. LAN Foundry does not ship it on Argus systems today. The 45Drives package repository currently supports Ubuntu 22.04 LTS, not the Ubuntu Server version used on Argus hardware.
We are monitoring their releases. When they officially support the Ubuntu Server version on Argus systems, we may add cockpit-zfs to the stack and publish an installation guide. Until then, use the SSH commands in this guide for pool health and S.M.A.R.T. checks.
Free up space
A full recording pool causes recording failures, Frigate errors, and sluggish behavior that can look like hardware failure. Always rule this out first.
Check usage:
Look at the filesystem where Frigate stores recordings. Anything at 95% or above needs attention.
Short-term relief:
- Reduce retention in your Frigate
config.ymland restart Frigate - Remove old recordings you no longer need from the storage path Frigate uses
- Temporarily disable recording on non-essential cameras
Longer term:
- See How Frigate stores recordings and Retention policies
- See Adding more storage if you need more capacity
After freeing space, confirm Frigate is writing again by checking the timeline for new events. If problems persist with plenty of free space and healthy S.M.A.R.T. on all pool drives, a drive may be failing even though the pool is not full.
Frigate and recording symptoms
Storage trouble often shows up in Frigate before zpool status reports a fault.
What you might notice:
- Gaps in the recording timeline
- Live view freezing while other cameras work
- Events missing video clips
- Frigate container restarting on its own
Check Frigate logs:
Look for messages mentioning no space, I/O error, read-only filesystem, or failed to write. A full pool produces different messages than a dying drive, but both need prompt action.
If Frigate won't stay running, see What to do when a container won't start. If feeds are fine but video stutters, see NVR running slow or dropping frames.
ZFS pool problems
When a hard drive in the recording pool fails, ZFS keeps the pool online if redundancy allows it. The pool enters a DEGRADED state. You have lost failure tolerance until the bad drive is replaced and the pool finishes resilvering (rebuilding).
What each tier can survive
| Tier | Layout | While healthy | After one drive fails |
|---|---|---|---|
| Vigil (RAID-Z1, 3 drives) | 1 parity drive | Tolerates 1 failure | No redundancy left. Replace the failed drive immediately. |
| Sentinel (RAID-Z2, 4 drives) | 2 parity drives | Tolerates 2 failures | 1 failure remaining. Replace the failed drive promptly. |
| Warden (RAID-Z2, 8 drives) | 2 parity drives | Tolerates 2 failures | 1 failure remaining. Replace the failed drive promptly. |
A second failure on Vigil while the pool is already degraded can mean lost recordings. On Sentinel and Warden, a second failure while degraded is also an emergency, but you still have one parity drive in reserve until a third fails on Sentinel (two on Warden before total loss).
What to do when the pool is DEGRADED
- Do not ignore it. The pool is running without full redundancy.
- Back up your Frigate config and any footage you cannot afford to lose.
- Identify the failed drive from
zpool status. Note the device name, slot, and serial number if visible. - Replace the failed HDD with a compatible NAS-rated drive. Exact replacement procedure will be covered in Adding more storage.
- Let the resilver complete before heavy maintenance. Rebuilding stresses the remaining drives.
Monitor progress:
While degraded, avoid unnecessary reboots and large bulk copies unless you're actively backing up. The priority is replacing the failed member and restoring full redundancy.
If zpool status shows FAULTED, the pool is not serving data normally. Contact support if you are on Argus hardware.
Boot drive problems
Boot drive issues affect whether the NVR starts. They are separate from recording pool health.
| Tier | Symptom | What it usually means |
|---|---|---|
| Vigil / Sentinel | NVR won't boot, won't reach Cockpit or SSH | Single M.2 boot drive failure or corruption |
| Warden | Boot mirror degraded (check mdadm or installer docs) |
One M.2 boot drive failed; system runs on the survivor |
If the NVR won't boot but the pool drives should be fine:
- The recording HDDs may still contain your footage even though the OS will not start
- Do not remove or reformat pool drives trying to fix a boot problem
- Contact support for Argus systems. Boot recovery is different from pool drive replacement
If Warden's boot mirror is degraded:
- Replace the failed M.2 boot drive to restore OS redundancy
- This is independent of the eight-drive recording pool. You can have a healthy pool and a degraded boot mirror at the same time, or the reverse
Boot M.2 drives see relatively light write load compared to the recording pool. S.M.A.R.T. warnings on a boot NVMe are worth fixing, but they are not caused by Frigate recording volume.
Drive not detected
If zpool status shows a pool drive as UNAVAIL or REMOVED:
- Check whether Frigate is still recording. A missing drive may have already moved the pool to DEGRADED.
- Power cycle once if the system is otherwise unresponsive. Do not reboot repeatedly during a resilver.
- If you're comfortable opening the case, confirm the drive is fully seated in its bay and any backplane connections are secure.
- Check recent kernel messages:
Look for I/O error, drive reset messages, or SCSI errors tied to the missing device.
If the drive does not reappear after a single reboot and reseat, treat it as failed and plan replacement. On Vigil, the pool has no redundancy left while a RAID-Z1 member is missing.
If an M.2 boot drive is missing, the NVR may not boot at all. That is a boot recovery problem, not a pool problem.
What to do by severity
Monitor (early warning)
Use this when smartctl shows a minor warning on a pool drive, overall health is still PASSED, zpool status is ONLINE, and recordings are normal.
- Note the warning and the date in your own records
- Check again in a week with
smartctl -Handzpool status - Back up your Frigate
config.yml. See Backing up Frigate config
Act soon (warnings plus symptoms)
Use this when warnings are worsening, you see pending or uncorrectable sectors, recordings are occasionally missing, or the pool just turned DEGRADED.
- Back up Frigate config and any critical clips immediately
- Reduce write load: shorter retention, lower camera bitrates, fewer simultaneous record streams
- Order a replacement NAS-rated HDD matched to your tier's pool
- Do not wipe or reformat the old drive until data and config are safe elsewhere
Act now (S.M.A.R.T. failed or physical symptoms)
Use this when a pool drive health is FAILED, uncorrectable errors are present, you hear clicking or grinding, the pool is FAULTED, or a drive is not detected.
- Stop assuming the drive is reliable. Further writes may fail without warning.
- Back up what you can while the pool still responds. Do not wait for a convenient time.
- Do not run destructive tests such as long bad-sector scans unless support specifically asks you to.
- Replace the failed pool drive and allow the resilver to finish. On Vigil, treat any DEGRADED pool as urgent because there is no redundancy margin left.
- If the system will not boot, treat it as a boot drive issue and contact support with your tier and last known
zpool statusif you have it.
Quick reference
| Symptom | First check | Likely fix |
|---|---|---|
| Pool nearly full | df -h, zpool list |
Free space, reduce retention |
| S.M.A.R.T. warning, recordings OK | smartctl -H, zpool status |
Monitor, back up config, plan replacement |
| S.M.A.R.T. FAILED | smartctl --all, zpool status |
Replace drive, resilver pool |
| Pool DEGRADED | zpool status |
Replace failed HDD, allow resilver |
| Pool FAULTED | zpool status |
Contact support; do not experiment |
| CKSUM errors on a drive | zpool status |
Failing member; check SMART, replace drive |
| Frigate write errors, space available | docker logs frigate |
Failing pool member; check SMART |
| Pool drive missing | zpool status, dmesg |
Reseat drive, replace if still missing |
| Clicking or grinding | Physical inspection | Replace HDD, resilver pool |
| NVR won't boot | lsblk, boot NVMe SMART |
Boot drive recovery, not pool repair |
| Slow NVR, healthy pool | Performance guide | I/O load or config, not necessarily hardware |
Where to go from here
Once the immediate issue is under control:
- NVR running slow or dropping frames, if the pool is healthy but the system feels sluggish
- Checking drive health with Cockpit, for routine monitoring once things are stable
- Backing up Frigate config, so a drive swap does not mean rebuilding from scratch
- Adding more storage, when replacing a pool drive or expanding capacity
Related troubleshooting
- What to do when a container won't start, if Frigate will not stay running
- NVR running slow or dropping frames, if recordings stutter but S.M.A.R.T. looks clean
If you're still stuck
The OpenZFS documentation and smartmontools documentation go deeper on pool management and S.M.A.R.T. attributes. Bring zpool status and smartctl output to community forums if you're on DIY hardware.
LAN Foundry customer support
The guides on this site are free for everyone, whether you bought hardware from us or not. If you've worked through this guide and you still have drive warnings, missing recordings, or a degraded pool, there are a few more places to go depending on your situation.
If you're running your own hardware
Community forums for your drive manufacturer, the OpenZFS project, and the Frigate project are good resources. Include zpool status, smartctl --all output for the affected drive, df -h, and the last fifty lines of docker logs frigate that mention storage or I/O.
If you purchased an Argus system from LAN Foundry
Your system was validated before it shipped, so unexpected drive faults are something we can help you work through. Visit lanfoundry.com/support for support options and how to submit a ticket.
When you open a support request, include:
- Your Argus tier (Vigil, Sentinel, or Warden)
- Full output of
zpool statusanddf -h sudo smartctl --all /dev/sdXfor any flagged pool drive (adjust device name)- Whether the boot M.2 is involved (NVR won't boot) or only a pool HDD
- When the warning or symptom started, and whether there was a power outage or move recently
- Whether Frigate is still recording, and any relevant lines from
docker logs frigate --tail 50
The more context you provide, the faster we can pinpoint the issue. If your system is still within its warranty period, check your purchase documentation for what coverage applies.
Was this page helpful?
Found something wrong or out of date? Let us know below, or open a GitHub issue if you have a GitHub account.