Home Storage ZFS Scrub Explained: What It Does and How Often to Run It

ZFS Scrub Explained: What It Does and How Often to Run It

ZFS Scrub Explained: What It Does and How Often to Run It

What Is a ZFS Scrub and Why Does Your NAS Need It?

If you run TrueNAS or any ZFS-based storage system, you’ve likely seen the word “scrub” in your web interface or scheduled tasks. A ZFS scrub is a background maintenance process that reads every single block of data on your drives, verifies its checksum against the stored checksum, and automatically repairs any corruption it finds — provided you have enough redundancy (mirrors or parity). It’s the single most important thing you can do to protect against silent data corruption (bit rot) that standard file systems like ext4 or NTFS will simply ignore until it’s too late. This guide explains what a scrub does, how often you should schedule one, and what the results mean for your homelab.

100%Of Allocated Blocks Read
Auto-RepairWith Mirrors or Parity
MonthlyRecommended Default Frequency

What Does a ZFS Scrub Do? A Block-by-Block Inspection

At its core, a scrub is a full data integrity check. Unlike a file system check (fsck) that only looks at metadata and file system structure, a ZFS scrub reads every allocated data block from disk, recalculates its checksum, and compares it to the checksum stored in the block’s metadata. If they match, the block is healthy. If they don’t, ZFS knows exactly which block is corrupt.

Here’s the critical part: if your pool has redundancy — a mirror (RAID 1), RAIDZ1 (similar to RAID 5), RAIDZ2 (similar to RAID 6), or RAIDZ3 — ZFS can read the good copy from another drive and overwrite the bad block with the correct data. This repair happens transparently and automatically. If you’re running a single-disk pool (stripe, no redundancy), ZFS will detect the corruption but cannot fix it — it will simply flag the file as damaged.

💾 Expert Note:

A ZFS scrub is not the same as a SMART test. SMART tests check the physical health of the drive (bad sectors, spin-up time, reallocated sectors). A scrub checks the logical integrity of your data. Both are needed: SMART tells you if a drive is failing, a scrub tells you if your data is still intact. Run both on separate schedules.

Why Scrubs Matter: Stopping Bit Rot Before It Spreads

Silent data corruption — often called bit rot — is a real phenomenon where individual bits on a hard drive flip due to magnetic decay, cosmic radiation, or simple manufacturing imperfections. On a standard file system like ext4 or NTFS, a flipped bit in a photo, document, or database file will go completely unnoticed until you open that file and find it corrupted. By then, the error may have already propagated to backups.

ZFS’s checksumming architecture is designed to catch these errors proactively. A scrub surfaces any corruption that has occurred since the last scrub and repairs it while a good copy still exists. If you wait too long between scrubs, you risk accumulating multiple corruptions that could exceed your redundancy — for example, two drives in a RAIDZ2 failing before the second error is detected. A monthly scrub keeps this window small.

🔍
Bit Rot Is Not a MythStudies from CERN and Google have shown that silent data errors occur more frequently than most people expect — roughly 1 in 10^14 to 10^16 bits read. For a 10 TB drive, that’s a measurable risk over a few years.

ZFS Scrub How Often: Monthly Is the Default for a Reason

The most common question from homelab users is “how often should I run a ZFS scrub?” The answer depends on your data value, drive count, and tolerance for risk, but here’s a practical breakdown.

Data Criticality Recommended Scrub Frequency Why This Works
Critical (family photos, databases, financial records) Weekly Catches corruption quickly; minimizes exposure window. Best for pools with 6+ drives.
Standard (media library, game ISOs, documents) Monthly Default TrueNAS schedule. Balances integrity checking with performance overhead.
Archival (cold storage, rarely accessed data) Quarterly Reduces drive wear for data that’s rarely read. Accepts slightly longer exposure.

For a typical homelab running TrueNAS on a 4-6 drive pool with media and personal files, monthly is a solid starting point. Weekly scrubs are overkill for most users — they increase drive wear without a proportional safety benefit. Quarterly scrubs are fine for pools that mostly contain replaceable data (Linux ISOs, streaming media you can re-download).

Warning:

Running a scrub too frequently — e.g., daily — on large pools (40 TB+) can significantly reduce drive lifespan due to constant read activity. Stick to weekly or monthly for most setups. A scrub is not a backup; it only protects against drive-level corruption, not accidental deletion or ransomware.

Zpool Scrub Schedule: Setting It Up in TrueNAS

TrueNAS makes scheduling scrubs straightforward through the web interface. Here’s how to set a custom schedule that fits your usage pattern.

1
Navigate to Tasks > Scrub Tasks

In the TrueNAS web UI, go to Tasks, then Scrub Tasks. You’ll see a list of your pools and their current scrub schedules.

2
Add or Edit a Scrub Task

Click Add to create a new task for a pool, or click the pencil icon to edit an existing one. Select the pool you want to scrub.

3
Set the Schedule

Choose a frequency: monthly (default) is fine for most. For weekly, select “Weekly” and pick a day. Schedule it during off-hours — for example, 2 AM on a Sunday.

4
Review and Save

Enable the task and click Save. The scrub will run automatically on the schedule you set. You can also trigger a manual scrub from Storage > Pools > (pool name) > Scrub.

If you’re running ZFS on Linux (via a command line), the equivalent command is zpool scrub poolname. To schedule it, add a cron job: 0 2 1 * * zpool scrub tank runs it at 2 AM on the first of every month.

Performance Impact: Why Off-Hours Scheduling Matters

A scrub reads every allocated block in your pool. On a large pool (20 TB+), this can take 6-12 hours or more depending on drive speed and controller throughput. During that time, the scrub consumes significant disk I/O bandwidth, which can slow down normal operations like file transfers, Plex streaming, or database queries.

The impact depends on your hardware. A pool of 7200 RPM hard drives will see more noticeable slowdown than an all-SSD pool. Scheduling the scrub during low-usage hours — typically 2 AM to 6 AM — ensures it runs when no one is actively using the NAS. TrueNAS also allows you to set a “scrub interval” in days; the default is 30 days, meaning it will scrub within 30 days of the last completion, not strictly on a calendar date.

Tip:

If you have a pool with both HDDs and SSDs (common in TrueNAS with a separate SLOG or L2ARC), scrubs only affect the main data drives (HDDs). The SSD cache devices are not scrubbed — they’re treated as volatile caches, not permanent storage. For power-conscious homelabs, see our guide on How to Reduce Your NAS’s Power Consumption (Without Losing Performance).

Reading Scrub Results: What Repaired and Unrepairable Errors Mean

After a scrub completes, TrueNAS shows a summary in the web interface or in the output of zpool status. You’ll see one of three outcomes, and each requires a different response.

Scrub Result What It Means What to Do
No errors found All blocks passed checksum verification. Your data is intact. Nothing — the pool is healthy. Continue with your normal schedule.
Errors repaired ZFS found corruption and successfully fixed it using redundancy. Check the specific files that were repaired. This is a warning sign — investigate if a drive is failing. Run a SMART test on all drives in the pool.
Errors not repaired ZFS found corruption but couldn’t fix it, usually because there’s no redundancy (single drive) or multiple drives failed. This is critical. Restore affected files from backup immediately. Replace any failed drives. The pool may be at risk of further data loss.

If you see “errors repaired” repeatedly on the same drive, that drive is likely developing bad sectors and should be replaced. If you see “errors not repaired” and you have redundancy, your pool may have suffered a double drive failure or a catastrophic metadata corruption. In that case, restoring from backup is your only option — which is why every ZFS guide emphasizes that RAID is not backup.

ZFS Scrub Best Practice: The Complete Checklist

  • Schedule scrubs monthly for standard homelab pools; weekly for critical data pools with 6+ drives.
  • Always run scrubs during off-hours to minimize performance impact on users.
  • Check scrub results after each run — don’t set and forget. TrueNAS sends email alerts on errors.
  • Pair scrubs with regular SMART tests (short test weekly, long test monthly).
  • Maintain a separate backup of irreplaceable data. A scrub protects against bit rot, not accidental deletion or ransomware.
  • Consider your CPU when building a ZFS system — scrubs are CPU-light but checksumming is not free. Our Best CPU for TrueNAS in 2026 guide covers suitable processors.

Bottom Line: Which Scrub Frequency Should You Choose?

For the vast majority of homelab users running TrueNAS or ZFS on Linux, a monthly scrub is the right default. It provides strong protection against bit rot without excessive drive wear or noticeable performance impact. If your pool stores irreplaceable data — family photos, home videos, financial records — bump that to weekly, but only if you have 6+ drives and good cooling. For archival or media-only pools, quarterly is acceptable. The key takeaway is simple: run scrubs on a regular schedule, check the results, and replace drives that show repeated repair errors. That one habit will save you from the silent data corruption that standard file systems can’t even detect.

Frequently Asked Questions

What does a ZFS scrub actually do?

A ZFS scrub reads every allocated data block in your pool, recalculates its checksum, and compares it to the stored checksum. If the checksums match, the block is healthy. If they don’t match, ZFS knows exactly which block is corrupt. If your pool has redundancy (mirror, RAIDZ1, RAIDZ2, or RAIDZ3), ZFS automatically reads the good copy from another drive and overwrites the bad block with correct data — all without any user intervention. If there’s no redundancy, ZFS flags the file as damaged but cannot repair it.

How often should I scrub my ZFS pool?

Monthly is the standard recommendation for most homelab users. It balances data integrity checking with drive wear and performance overhead. For pools with critical data (family photos, databases) and 6+ drives, weekly scrubs offer tighter protection. For archival or media-only pools where data is easily replaceable, quarterly scrubs are sufficient. Running scrubs more often than weekly on large pools (40 TB+) can reduce drive lifespan due to constant read activity. The default TrueNAS schedule is 30 days between scrubs, which works well for most setups.

Does a scrub slow down my NAS while running?

Yes, a scrub consumes significant disk I/O bandwidth because it reads every block in the pool. On a 20 TB pool of 7200 RPM hard drives, a scrub can take 6-12 hours and may slow down file transfers, Plex streaming, or database queries during that window. The impact is lower on all-SSD pools or pools with fewer drives. Scheduling the scrub during off-hours — typically 2 AM to 6 AM — prevents noticeable slowdowns for users. TrueNAS allows you to set a specific time and day for the scrub to minimize disruption.

What should I do if a scrub finds errors it can’t repair?

If a scrub reports “errors not repaired,” it means ZFS detected corruption but has no good copy to restore from. This usually happens on a single-drive pool (no redundancy) or after multiple drives have failed in a redundant pool. Your immediate action should be to restore the affected files from a backup — this is why RAID is not a backup. Next, identify and replace any failed drives. Run a full SMART test on all remaining drives to check for physical issues. After replacing drives and restoring data, run another scrub to confirm the pool is clean. If you don’t have a backup, the corrupted files may be lost permanently.

📋 Sources & Last Verified:

Last verified: July 09, 2026. Technical details cross-checked against OpenZFS documentation (openzfs.org), TrueNAS documentation (truenas.com/docs), and community best practices from the TrueNAS forums and r/zfs.

🛡 Shop Recommended Hardware

Prices and stock verified regularly by our affiliate partners. As an affiliate, HomeLabCost may earn a commission on qualifying purchases at no extra cost to you.

Browse Hardware Picks →

homelabcost

HomeLabCost editor covering NAS builds, hardware selection, and homelab server setup guides.

Leave a Reply

Your email address will not be published. Required fields are marked *