Tutoriel Linux

ZFS : een scrub starten en de fouten van de pool lezen

Débutant4 min de lecture

Een NAS kan toegankelijk blijven terwijl zpool status begint te rapporteren over lees- of checksumfouten. Voordat je besluit dat een schijf dood is, voer je een scrub uit op de goede pool. Deze controle leest de blokken van de pool en controleert hun checksums.

Op een server die VM’s, back-ups of gedeelde bestanden host, zou ik een rustige I/O-tijd kiezen. Een scrub gebruikt de schijven, en ZFS staat niet toe dat er tegelijkertijd een scrub en een resilver wordt uitgevoerd. Het doel is om te weten of de pool gezond blijft, niet om een opdracht opnieuw uit te voeren om een waarschuwing te laten verdwijnen.

ZFS-pool van drie schijven gecontroleerd met een vergrootglas op een fout
Een scrub controleert de blokken van de pool en maakt fouten zichtbaar in zpool status.

Bevestig de naam van de pool voor de scrub

Begin met het lezen van de huidige status. Verzinn niet de naam van de pool op basis van een montage of een schijf die je ziet in lsblk. De opdracht zpool list geeft de geïmporteerde pools weer, en zpool status -v toont hun status en de bekende fouten.

sudo zpool list
sudo zpool status -v tank

Vervang tank door de naam die door je machine is geretourneerd. In de uitvoer, let op de regel scan, de algemene status van de pool en de tellers READ, WRITE en CKSUM van de vdevs. De variant -v kan ook de betrokken bestanden oplijsten wanneer ZFS hun pad kent.

Een pool die al in resilver is, reconstructeert een toegevoegde of vervangende schijf. Wacht op deze operatie voordat je om een scrub vraagt: OpenZFS staat maar één van dit type operatie tegelijk toe. Als de schijven een database of sterk gebruikte VM’s bedienen, stel dan de controle uit in plaats van een I/O-verzadiging te creëren tijdens de drukke uren.

Start de scrub tijdens een rustige periode

De volgende opdracht start een normale scrub op tank:

sudo zpool scrub tank

De scrub doorloopt de gegevens en controleert de checksums. Op een spiegel, een RAIDZ of een dRAID, kan ZFS de beschadigde blokken repareren als hij een geldige kopie heeft. Een geïsoleerde schijf of een corruptie zonder replicatie blijft een voorval dat aangepakt moet worden met een back-up of een hardwarevervanging.

De opdracht keert bijna onmiddellijk terug. Dit is normaal: het werk gaat op de achtergrond door. Als de belasting hinderlijk wordt, staat OpenZFS toe om de scrub op pauze te zetten, en later weer op te pakken met dezelfde opdracht.

sudo zpool scrub -p tank
sudo zpool scrub tank

Vermijd zpool scrub -a voor een eerste controle. Deze optie start, pauzeert of stopt de operatie op alle pools, en kan een machine die er meerdere herbergt zwaar belasten.

Volg de voortgang en lees de fouten

Start zpool status opnieuw tijdens de scrub:

sudo zpool status tank
sudo zpool status -v tank

De regel scan geeft het begin van de operatie aan, het gescande volume, de voortgang, de doorvoer en een resterende schatting. Een voortgang van meer dan 100 % kan verschijnen op een actieve pool, omdat de gegevens tijdens het lezen veranderen.

Aan het einde, herlees de tellers van de schijven en de gedetailleerde lijst. Een schoon resultaat lijkt op een voltooide scrub met 0 errors. Gerepareerde fouten verdienen nog steeds een verificatie van de geschiedenis van de schijf, de kabels en de controller. Kernberichten zijn vaak handig in dit stadium: de handleiding dmesg onder Linux laat zien hoe je opslagwaarschuwingen kunt isoleren.

  • READ of WRITE die toeneemt: controleer de schijf, de kabel en de controller voordat je een nieuwe zware operatie uitvoert.
  • CKSUM die toeneemt: zoek naar een overdracht- of leesfout, zelfs als ZFS de blokken heeft gerepareerd dankzij een gezonde kopie.
  • Bestanden vermeld na de scrub: herstel ze vanuit een gecontroleerde back-up en vervang vervolgens de betrokken hardware als de fouten aanhouden.

Na een permanente fout, stap uit de simpele controle

Een scrub valideert de observeerbare integriteit van de pool op een bepaald moment. Het vervangt geen back-up buiten de NAS, en het verandert geen onbetrouwbare schijf in een betrouwbare schijf. Als zpool status -v tank blijft fouten vermeldt na het einde van de scan, kopieer dan eerst de nog leesbare gegevens naar een gezonde bestemming.

De documentatie OpenZFS over zpool scrub geeft aan dat de checksumcontroles alle blokken doorlopen en dat automatische reparaties een geldige redundante kopie vereisen. Voor een pool zonder redundantie blijft de redelijke beslissing het herstellen vanuit een back-up en het vervangen van het defecte medium.

sudo apt update && sudo apt upgrade