Wat is ZFS? Werking en gegevensbescherming

Auteur: Gepubliceerd

Kort samengevat: ZFS is een bestandssysteem met geïntegreerd beheer van schijfruimte. Het controleert de integriteit van gegevens, maakt snapshots mogelijk en laat je schijven combineren in opslagpools. Het is vooral geschikt voor servers en NAS-apparaten, die bestanden via het netwerk beschikbaar stellen, maar vervangt geen back-up.

Hoe ZFS werkt en verschilt van een gewoon bestandssysteem

Een bestandssysteem bepaalt hoe gegevens op een opslagmedium worden opgeslagen en teruggevonden. ZFS verzorgt ook functies die bij andere oplossingen vaak in een aparte laag zijn ondergebracht: schijven combineren, gegevensredundantie en ruimte toewijzen. Daardoor heeft het direct inzicht in zowel de bestandsstructuur als de plek waar de gegevens zijn opgeslagen.

ZFS is ontwikkeld bij Sun Microsystems. Veel oplossingen op basis van Linux en FreeBSD gebruiken tegenwoordig OpenZFS, een implementatie van ZFS die als opensourcesoftware wordt ontwikkeld. Welke functies beschikbaar zijn en hoe de installatie verloopt, hangt af van het systeem en de versie. Kies daarom configuratie-instructies die bij jouw omgeving passen.

De opslagruimte in ZFS kent verschillende niveaus:

Je kunt dus aparte datasets maken voor documenten, multimedia en back-ups van computers, zonder de schijven vast op te delen in partities met vooraf bepaalde groottes. Datasets delen de beschikbare vrije ruimte, rekening houdend met ingestelde limieten en reserveringen.

Hoe ZFS beschadigde gegevens detecteert

ZFS gebruikt controlesommen: waarden die worden berekend op basis van de inhoud van gegevens. Bij het lezen controleert het of de opgeslagen blokken overeenkomen met hun controlesommen. Daarmee kan het onder meer stille gegevensbeschadiging opsporen, waarbij een apparaat onjuiste inhoud teruggeeft zonder een leesfout te melden.

Een fout detecteren betekent niet altijd dat deze kan worden hersteld. Als de pool voldoende redundantie heeft, bijvoorbeeld een mirror, kan ZFS een correcte kopie van het blok ophalen en de beschadigde kopie herstellen. Op een losse schijf kan het beschadigde bestandsgegevens detecteren, maar zonder een extra, correcte kopie kan het de inhoud niet reconstrueren.

ZFS gebruikt ook copy-on-write: in plaats van een blok dat in gebruik is te overschrijven, schrijft het gewijzigde gegevens op een nieuwe plek en werkt het daarna de verwijzingen bij. Dit helpt de structuur van het bestandssysteem consistent te houden en vormt de basis voor snapshots. Het betekent echter niet dat bij plotselinge stroomuitval alle laatste wijzigingen van een toepassing behouden blijven.

Voor periodieke controle is er scrub, waarbij opgeslagen gegevens worden vergeleken met hun controlesommen. Als er redundantie beschikbaar is, kunnen ook gedetecteerde fouten worden hersteld. Een scrub vult schijfbewaking aan, maar vervangt geen schijfdiagnostiek of back-up.

Snapshots, compressie en back-ups

Een snapshot legt de toestand van een dataset op een bepaald moment vast. Aanvankelijk neemt deze weinig extra ruimte in. Het ruimtegebruik groeit wanneer oude blokken van gewijzigde of verwijderde gegevens bewaard moeten blijven. Daarom levert het verwijderen van een groot bestand niet altijd vrije ruimte op als een snapshot de inhoud nog vasthoudt.

Stel dat je een snapshot maakt voordat je familiefoto’s gaat opruimen. Als je per ongeluk een map verwijdert, kun je de eerdere versie terughalen zonder de hele verzameling vanaf een externe schijf te herstellen. Een snapshot in dezelfde pool helpt echter niet als alle schijven verloren gaan, het apparaat wordt gestolen of een aanvaller met voldoende rechten de snapshot verwijdert.

ZFS kan snapshots naar een andere pool verzenden, ook incrementeel: daarbij worden alleen de wijzigingen ten opzichte van een eerdere toestand overgedragen. Dat vormt de basis voor gemakkelijke replicatie. De veiligheid van zo’n kopie hangt echter af van de opslaglocatie, toegangsrechten en regels voor het bewaren van oudere versies.

Ook compressie tijdens het schrijven is nuttig. Die kan ruimte besparen en het aantal schijfoperaties beperken, maar het resultaat hangt af van de gegevens: tekst is doorgaans beter te comprimeren dan kant-en-klare video’s of archieven. Verwar compressie niet met deduplicatie, die dubbele blokken verwijdert maar veel werkgeheugen en zorgvuldige planning kan vereisen.

Mirror of RAID-Z: de schijfindeling kiezen

Een mirror slaat dezelfde gegevens op meerdere schijven op. Bij twee schijven met dezelfde capaciteit komt de bruikbare ruimte ongeveer overeen met de capaciteit van één schijf, vóór aftrek van overhead en de aanbevolen reserve aan vrije ruimte. Deze indeling kan blijven werken als één schijf uitvalt.

RAID-Z verdeelt gegevens en de informatie waarmee ze kunnen worden gereconstrueerd over de schijven. De varianten RAID-Z1, RAID-Z2 en RAID-Z3 verdragen respectievelijk het uitvallen van één, twee of drie schijven binnen de betreffende vdev. De keuze hangt af van de benodigde capaciteit, belasting en het aanvaardbare risico.

De indeling van de hele pool is doorslaggevend: verlies van een vdev die gegevens opslaat, kan verlies van de pool betekenen. Als je aan een pool met een beschermde mirror een losse schijf als extra vdev toevoegt, geldt de bescherming van de mirror niet voor die schijf. Controleer vóór uitbreiding ook wat jouw versie van OpenZFS ondersteunt: niet elke wijziging van de indeling is mogelijk of eenvoudig terug te draaien.

Wanneer ZFS een goede keuze is

ZFS is een goede kandidaat voor het opslaan van documenten, archieven en back-ups als je integriteitscontroles en snapshots nodig hebt. Je moet wel de schijfindeling plannen, de toestand van de pool bewaken en voldoende vrije ruimte overhouden. De prestaties en de behoefte aan RAM hangen af van de belasting en de ingeschakelde functies. Er bestaat geen universele verhouding tussen werkgeheugen en schijfcapaciteit.

ECC-geheugen, dat bepaalde fouten in het werkgeheugen detecteert en corrigeert, is nuttig in een server, maar is geen absolute vereiste voor ZFS. Je kunt schijven het beste rechtstreeks aan ZFS beschikbaar stellen, in plaats van ze achter een hardwarematige RAID-array te verbergen.

Teken voordat je belangrijke gegevens overzet een plan van de vdevs, bepaal waar je een onafhankelijke back-up bewaart en test het herstel van één map. Zo’n test laat beter zien of je configuratie klaar is voor gebruik dan alleen het succesvol aanmaken van een pool.

Zie ook: Wat is Linux?

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.