Un NAS può rimanere accessibile anche quando zpool status inizia a segnalare errori di lettura o checksum. Prima di concludere che un disco è morto, esegui uno scrub sul pool corretto. Questa verifica legge i blocchi del pool e controlla i loro checksum.
Su un server che ospita VM, backup o condivisioni, sceglierei una finestra di I/O tranquilla. Uno scrub utilizza i dischi, e ZFS rifiuta di eseguire uno scrub contemporaneamente a un resilver. L’obiettivo è sapere se il pool rimane sano, non rilanciare un comando per far scomparire un allerta.

Prima dello scrub, confermare il nome del pool
Inizia leggendo lo stato attuale. Non inventare il nome del pool da un mount o da un disco visto in lsblk. Il comando zpool list mostra i pool importati, poi zpool status -v visualizza il loro stato e gli errori noti.
sudo zpool list
sudo zpool status -v tank
Sostituisci tank con il nome restituito dalla tua macchina. Nella output, guarda la riga scan, lo stato generale del pool e i contatori READ, WRITE e CKSUM dei vdev. La variante -v può anche elencare i file interessati quando ZFS conosce il loro percorso.
Un pool già in resilver ricostruisce un disco aggiunto o sostituito. Aspetta questa operazione prima di richiedere uno scrub: OpenZFS consente solo un’operazione di questo tipo alla volta. Se i dischi servono un database o VM molto sollecitate, rimanda il controllo piuttosto che creare una saturazione I/O in pieno giorno.
Avviare lo scrub durante un periodo tranquillo
Il seguente comando avvia uno scrub normale su tank:
sudo zpool scrub tank
Lo scrub scorre i dati e verifica i checksum. Su uno specchio, un RAIDZ o un dRAID, ZFS può riparare i blocchi danneggiati se ha una copia valida. Un disco isolato o una corruzione senza replica rimane un incidente da trattare con un backup o una sostituzione hardware.
Il comando ritorna quasi immediatamente. È normale: il lavoro continua in background. Se il carico diventa fastidioso, OpenZFS consente di mettere in pausa lo scrub, quindi di riprenderlo più tardi con lo stesso comando.
sudo zpool scrub -p tank
sudo zpool scrub tank
Evita zpool scrub -a per un primo controllo. Questa opzione avvia, mette in pausa o interrompe l’operazione su tutti i pool, e può caricare fortemente una macchina che ne ospita più di uno.
Seguire i progressi e leggere gli errori
Rilancia zpool status durante lo scrub:
sudo zpool status tank
sudo zpool status -v tank
La riga scan indica l’inizio dell’operazione, il volume scansionato, il progresso, il throughput e una stima rimanente. Un progresso superiore al 100% può apparire su un pool attivo, poiché i dati cambiano durante la lettura.
Alla fine, rileggi i contatori dei dischi e l’elenco dettagliato. Un risultato pulito assomiglia a uno scrub terminato con 0 errors. Gli errori riparati meritano comunque un controllo della cronologia del disco, dei cavi e del controller. I messaggi del kernel sono spesso utili a questo punto: la guida dmesg sotto Linux mostra come isolare i warning di storage.
- READ o WRITE in aumento: controlla il disco, il cavo e il controller prima di una nuova operazione pesante.
- CKSUM in aumento: cerca un errore di trasferimento o di lettura, anche se ZFS ha riparato i blocchi grazie a una copia sana.
- File elencati dopo lo scrub: ripristinali da un backup verificato, poi sostituisci l’hardware in causa se gli errori persistono.
Dopo un errore permanente, uscire dal semplice controllo
Uno scrub valida l’integrità osservabile del pool in un certo momento. Non sostituisce un backup fuori dal NAS, e non trasforma un disco instabile in un disco affidabile. Se zpool status -v tank continua a elencare errori dopo la fine della scansione, copia prima i dati ancora leggibili verso una destinazione sana.
La documentazione OpenZFS su zpool scrub precisa che i controlli di checksum scansionano tutti i blocchi e che le riparazioni automatiche richiedono una copia ridondante valida. Per un pool senza ridondanza, la decisione ragionevole rimane il ripristino da un backup e la sostituzione del supporto difettoso.