Wat is ZFS? Waarom zijn mensen gek?

Vandaag gaan we kijken naar ZFS, een geavanceerd bestandssysteem. We zullen bespreken waar het vandaan komt, wat het is, en waarom het zo populair is bij techneuten en ondernemingen.

Ook al kom ik uit de VS, ik spreek het liever ZedFS uit in plaats van ZeeFS omdat het cooler klinkt. Je bent vrij om het uit te spreken zoals je wilt.

Opmerking: u ziet ZFS vele malen in het artikel worden herhaald. Als ik het heb over functie en installatie, heb ik het over OpenZFS. ZFS (ontwikkeld door Oracle) en OpenZFS hebben verschillende paden gevolgd sinds Oracle OpenSolaris heeft afgesloten. (Daarover later meer.)

Geschiedenis van ZFS

Het Z-bestandssysteem (ZFS) is in 2001 gecreëerd door Matthew Ahrens en Jeff Bonwick. ZFS is ontworpen als een bestandssysteem van de volgende generatie voor OpenSolaris van Sun Microsystems. In 2008 werd ZFS geporteerd naar FreeBSD. In hetzelfde jaar werd een project gestart om ZFS naar Linux te porten. Aangezien ZFS echter is gelicentieerd onder de Common Development and Distribution-licentie, die niet compatibel is met de GNU General Public License, kan deze niet worden opgenomen in de Linux-kernel. Om dit probleem te omzeilen, bieden de meeste Linux-distro's methoden om ZFS te installeren.

Kort nadat Oracle Sun Microsystems had gekocht, werd OpenSolaris dichtbij. Alle verdere ontwikkeling van ZFS werd ook closed source. Veel van de ontwikkelaars van ZFS waren niet blij met deze gebeurtenissen. Tweederde van de belangrijkste ZFS-ontwikkelaars, waaronder Ahrens en Bonwick, verliet Oracle vanwege deze beslissing. Ze sloten zich aan bij andere bedrijven en creëerden het OpenZFS-project in september 2013. Het project is de speerpunt geweest van de open-sourceontwikkeling van ZFS.

Laten we teruggaan naar het bovenstaande licentiekwestie. Omdat het OpenZFS-project losstaat van Oracle, vragen sommigen zich waarschijnlijk af waarom ze de licentie niet veranderen in iets dat compatibel is met de GPL, zodat het kan worden opgenomen in de Linux-kernel. Volgens de OpenZFS-website zou het wijzigen van de licentie betekenen dat contact moet worden gelegd met iedereen die code heeft bijgedragen aan de huidige OpenZFS-implementatie (inclusief de oorspronkelijke, gemeenschappelijke ZFS-code tot OpenSolaris) en toestemming krijgt om de licentie te wijzigen. Omdat deze baan bijna onmogelijk is (omdat sommige bijdragers misschien dood of moeilijk te vinden zijn), hebben ze besloten de licentie die ze hebben te behouden.

Wat is ZFS? Wat zijn de functies?

Zoals ik al eerder zei, is ZFS een geavanceerd bestandssysteem. Als zodanig heeft het een aantal interessante kenmerken. Zoals:

  • Gepoolde opslag
  • Copy-on-write
  • snapshots
  • Gegevensintegriteitsverificatie en automatische reparatie
  • RAID-Z
  • Maximaal 16 Exabyte-bestandsgrootte
  • Maximale 256 Quadrillion Zettabytes-opslag

Laten we een paar van deze functies afbreken.

Gepoolde opslag

In tegenstelling tot de meeste bestandssystemen, combineert ZFS de functies van een bestandssysteem en een volumemanager. Dit betekent dat ZFS, in tegenstelling tot andere bestandssystemen, een bestandssysteem kan maken dat zich uitstrekt over een reeks schijven of een pool. Niet alleen dat, maar u kunt ook opslagruimte aan een pool toevoegen door een nieuwe schijf toe te voegen. ZFS zal partitioneren en formatteren.

Gepoolde opslag in ZFS

Copy-on-write

Copy-on-write is een andere interessante (en coole) functie. Op het meeste bestandensysteem, wanneer gegevens worden overschreven, is het voor altijd verloren. Op ZFS wordt de nieuwe informatie naar een ander blok geschreven. Als het schrijven is voltooid, worden de metadata van het bestandssysteem bijgewerkt om naar de nieuwe info te verwijzen. Dit zorgt ervoor dat als het systeem vastloopt (of iets anders gebeurt) terwijl het schrijven plaatsvindt, de oude gegevens worden bewaard. Het betekent ook dat het systeem fsck niet hoeft uit te voeren na een systeemcrash.

snapshots

Kopiëren-op-schrijf leidt naar een andere ZFS-functie: snapshots. ZFS maakt gebruik van snapshots om wijzigingen in het bestandssysteem bij te houden. "De momentopname bevat de originele versie van het bestandssysteem en het live-bestandssysteem bevat alle wijzigingen die zijn aangebracht sinds de momentopname werd gemaakt. Er wordt geen extra ruimte gebruikt. Terwijl nieuwe gegevens naar het live-bestandssysteem worden geschreven, worden nieuwe blokken toegewezen om deze gegevens op te slaan. "Als een bestand wordt verwijderd, wordt ook de snapshotreferentie verwijderd. Snapshots zijn dus vooral bedoeld om wijzigingen in bestanden bij te houden, maar niet om bestanden toe te voegen en aan te maken.

Snapshots kunnen als alleen-lezen worden gekoppeld om een ​​eerdere versie van een bestand te herstellen. Het is ook mogelijk om het live-systeem terug te draaien naar een vorige momentopname. Alle wijzigingen die sinds de momentopname zijn gemaakt, gaan verloren.

Gegevensintegriteitsverificatie en automatische reparatie

Wanneer nieuwe gegevens naar ZFS worden geschreven, wordt er een controlesom voor die gegevens gemaakt. Wanneer die gegevens worden gelezen, wordt de controlesom geverifieerd. Als de controlesom niet overeenkomt, weet ZFS dat er een fout is gedetecteerd. ZFS probeert vervolgens automatisch de fout te corrigeren.

RAID-Z

ZFS kan RAID afhandelen zonder dat extra software of hardware nodig is. Niet verrassend, ZFS heeft zijn eigen implementatie van RAID: RAID-Z. RAID-Z is eigenlijk een variatie op RAID-5. Het is echter ontworpen om de schrijffoutfout van RAID 5 te omzeilen, "waarin de gegevens en pariteitsinformatie inconsistent worden na een onverwachte herstart". Om het basisniveau van RAID-Z (RAID-Z1) te gebruiken, hebt u ten minste twee schijven nodig voor opslag en één voor pariteit. RAID-Z2 vereiste ten minste twee opslagstations en twee schijven voor pariteit. RAID-Z3 vereist ten minste twee opslagstations en drie schijven voor pariteit. Wanneer stations worden toegevoegd aan de RAID-Z-pools, moeten deze in veelvouden van twee worden toegevoegd.

Enorme opslagmogelijkheden

Toen ZFS werd gemaakt, was het ontworpen als het laatste woord in bestandssystemen. In een tijd waarin de meeste bestandssystemen 64-bit waren, besloten de makers van ZFS om meteen naar 128-bit te springen om het later te kunnen bewijzen. Dit betekent dat ZFS "16 miljard miljard keer de capaciteit van 32- of 64-bit-systemen biedt". Jeff Bonwick (een van de makers) zei zelfs dat het aandrijven van een "volledig bevolkende 128-bits opslagpool letterlijk meer energie zou vereisen dan het koken van de oceanen."

Hoe ZFS te installeren?

Als u ZFS uit de verpakking wilt gebruiken, moet u FreeBSD of een besturingssysteem installeren met behulp van de Illumos-kernel. illumos is een vork van de kernel van OpenSolaris.

Ondersteuning voor ZFS is zelfs een van de belangrijkste redenen waarom sommige ervaren Linux-gebruikers voor BSD kiezen.

Als je ZFS op Linux wilt proberen, kun je het alleen gebruiken als je opslagbestandssysteem. Voor zover ik weet, biedt geen Linux-distro je de mogelijkheid om ZFS op je root out of the box te installeren. Als je geïnteresseerd bent in het proberen van ZFS op Linux, heeft het ZFS op Linux-project een aantal tutorials over hoe je dat moet doen.

Caveat

Dit artikel heeft de voordelen van ZFS gezongen. Laat me je nu een snel probleem met ZFS vertellen. Het gebruik van RAID-Z kan duur zijn vanwege het aantal schijven dat u moet aanschaffen om opslagruimte toe te voegen.

Heb je ooit ZFS gebruikt? Hoe was je ervaring? Laat het ons weten in de comments hieronder.

Als u dit artikel interessant vindt, neem dan even de tijd om het te delen op sociale media, Hacker News of Reddit.

Aanbevolen

Epic Games Store is nu beschikbaar op Linux Dankzij Lutris
2019
Nuvola: Linux Desktop Music Player voor streamingdiensten
2019
Hoe installeer ik Windows 10 in VirtualBox onder Linux
2019