Ein Scrub ist die Integritätsprüfung von ZFS — jeder Block im Pool wird gelesen und seine Checksumme verifiziert. Beschädigte Blöcke werden automatisch aus der Redundanz repariert (Mirror oder RAID-Z). Ohne Redundanz erkennt ZFS den Fehler immerhin, kann ihn aber nicht korrigieren.

Empfehlung: Einmal pro Woche oder mindestens einmal im Monat. Auf Produktivsystemen am besten per Cronjob.

Scrub starten

zpool scrub backup

Fortschritt prüfen

zpool status backup
  pool: backup
 state: ONLINE
  scan: scrub in progress since Sun May 27 11:11:00 2012
        4.20G scanned out of 74.5G at 102M/s, 0h11m to go
        0 repaired, 5.64% done

Scrub abbrechen

Braucht man die I/O-Leistung gerade für etwas anderes:

zpool scrub -s backup

Im Status sieht man dann den Unterschied — stopped statt completed:

# Abgebrochen
scan: scrub stopped after 0h7m with 0 errors on Sun May 27 11:18:52 2012

# Normal beendet
scan: scrub completed after 0h7m with 0 errors on Sun May 26 10:52:13 2012

Ein abgebrochener Scrub setzt beim nächsten Start nicht dort fort, sondern beginnt von vorne.

Scrub per Cronjob

# Jeden Sonntag um 02:00 alle Pools scrubben
0 2 * * 0 /sbin/zpool scrub backup

Unter FreeBSD läuft der Scrub standardmäßig über periodic daily — dort muss man nichts extra einrichten. Unter Linux gibt es je nach Distribution einen systemd-Timer (zfs-scrub-weekly.timer) oder man legt den Cronjob selbst an.

Mehr zu ZFS: ZFS RAID: Mirror und RAID-Z und ZFS Snapshots. Fragen? Einfach melden.