ZFS | |
---|---|
Udvikler | Oracle (tidligere Sun Microsystems ) , OpenZFS |
Filsystem | ZFS - Zettabyte filsystem |
Indsendelsesdato | november 2005 ( OpenSolaris ) |
Struktur | |
Mappeindhold | Udvidelig hash-tabel |
Begrænsninger | |
Maksimal filstørrelse | 16 exbibyte |
Maksimalt antal filer | 248 _ |
Maksimal filnavnlængde | 255 bytes |
Maksimal volumenstørrelse | 256 zebibyte |
Gyldige tegn i titler | ingen kodning eller UTF-8 (valgfrit) |
Evner | |
Datolagringsnøjagtighed | 1 ns [1] |
Metadatastrømme | Ja (kaldet udvidede attributter ) |
Egenskaber | POSIX , yderligere |
Adgangsrettigheder | POSIX |
Baggrundskomprimering | Ja |
Baggrundskryptering | Fra pool version 30 |
OS understøttet | Solaris , OpenSolaris , FreeBSD , Linux (via FUSE eller separat kernemodul ( ZFS på Linux )), Apple Mac OS X 10.5 , Windows ( ZFSin ) |
ZFS (Zettabyte File System) er et Merkle-træ kopi-på-skriv- filsystem skabt af Sun Microsystems i 2004-2005 til Solaris -operativsystemet . Dette filsystem understøtter store mængder data, kombinerer koncepterne fra et filsystem, RAID -arrays, en logisk disk (volumen) manager , principperne for lette filsystemer og giver enkel styring af datalagermængder. På det tidspunkt, ZFS blev oprettet, var dens datalayoutstruktur innovativ. Der er åbne implementeringer af ZFS, især OpenZFS er licenseret under CDDL ( Common Development and Distribution License ). På grund af licensbegrænsninger er ZFS-understøttelse på GNU/Linux begrænset, hvilket ikke er tilfældet med det ZFS-lignende Btrfs -filsystem . ZFS er i øjeblikket under aktiv udvikling.
De vigtigste fordele ved ZFS er dens fuldstændige kontrol over fysiske medier og logiske volumener og den konstante vedligeholdelse af filsystemkonsistens. ZFS opererer på forskellige niveauer af dataabstraktion og er i stand til at give højhastighedsadgang til dem, kontrollere deres integritet og minimere datafragmentering . ZFS er meget konfigurerbar, giver dig mulighed for at ændre mængden af diskplads i processen og indstille forskellige størrelser af datablokke til forskellige applikationer, og giver parallelle læse-skrive-operationer.
ZFS blev designet og bygget hos Sun Microsystems af et team ledet af Jeff Bonwick og annonceret den 14. september 2004 [2] . Kildekoden til den endelige udgivelse blev integreret i Solaris master filial den 31. oktober 2005 [3] .
ZFS blev inkluderet i OpenSolaris build 27 , udgivet den 16. november 2005. Sun udtalte, at ZFS blev integreret i 6/06-opdateringen til Solaris 10 i juni 2006, et år efter åbningen af OpenSolaris -fællesskabet [4] .
ZFS blev oprindeligt kaldt " Zettabyte File System", men senere udviklede navnet sig til et simpelt akronym [5] .
ZFS blev udgivet under en kommerciel licens som en del af Solaris-operativsystemet, derefter SUN Microsystems open-source ZFS i OpenSolaris-projektet under en CDDL. Efter Oracles opkøb af SUN Microsystems blev koden lukket igen, men på dette tidspunkt var ZFS allerede inkluderet i FreeBSD og andre open source-projekter, der udviklede sig uafhængigt og udvekslede kildekoder gennem "backports" ( eng. backports ) [6] .
I 2013 blev OpenZFS- projektet [7] [8] lanceret, som tager nye funktioner og rettelser fra Illumos og distribuerer til alle porte til andre platforme og omvendt [9] .
ZFS - 128-bit[10] et filsystem, der gør det muligt at lagre 18,4 × 10 18 gange mere data end alle kendte 64-bit systemer. ZFS er designet således, at dets begrænsninger er så uopnåelige, at de ikke vil blive stødt på i praksis inden for en overskuelig fremtid [11] .
Nogle teoretiske grænser i ZFS:
Samtidig pålægger filsystemstyringsværktøjer yderligere begrænsninger.
I modsætning til traditionelle filsystemer, som ligger på en enkelt enhed og derfor kræver en volumenhåndtering, når de bruges på mere end én enhed, er ZFS bygget oven på virtuelle lagerpuljer kaldet zpools . Puljen er bygget af virtuelle enheder ( vdevs ), som hver er enten en fysisk enhed eller et spejl ( RAID 1) af en eller flere enheder eller ( RAID Z) en gruppe på to eller flere enheder. Kapaciteten for alle vdev'er er så tilgængelig for alle filsystemer i zpool .
En kvote kan indstilles for at begrænse den tilgængelige plads til et bestemt filsystem eller volumen . Derudover er det muligt at bruge diskreservation (limit) - dette sikrer, at der altid vil være noget ledig plads til et bestemt filsystem eller volumen.
ZFS Pool-versionerDer er forskellige versioner af ZFS-filsystemet og versioner af ZFS-puljen ( zpool ), og forskellig funktionalitet er tilgængelig afhængigt af versionen. Fra november 2012 er der 34 versioner af ZFS-puljen. Alle versioner af puljen er oprindeligt udgivet til Solaris .
Version 2 inkluderede understøttelse af replikerede metadata ( ditto blokke ) . På grund af ZFS-diskformatets træstruktur kan uoprettelige fejl i puljens metadata resultere i, at puljen ikke kan åbnes. Denne funktion giver automatisk metadata-replikering (op til tre kopier af hver blok ) uanset underliggende redundans i hele poolen . For eksempel, i en pulje med et enkelt spejl, vil de mest kritiske metadata blive skrevet tre gange på hver side af spejlet, i alt seks kopier. Dette sikrer, at hvis data går tabt på grund af korruption, vil alle data i puljen kunne lokaliseres, og puljen vil være sund.
Version 3 inkluderer understøttelse af hot spares og dobbelt paritet RAID-Z (raidz2); version 4 introducerede understøttelse til vedligeholdelse af ZFS-puljens historie ( zpool history); version 5 tilføjede understøttelse af on-the-fly-komprimering for ZFS-datasæt ved hjælp af gzip -metoden ; version 6 inkluderer understøttelse af bootfs- egenskaben (giver dig mulighed for at skifte rod-FS af det bootbare OS gennem en attribut, ud over bootloader-indstillingen).
Version 7 introducerede understøttelse af en "mållog" ( ZFS Intent Log , ZIL , lit. "intent log"), som giver applikationer mulighed for at vide, at de data, de har ændret, er i stabil lagring, når de vender tilbage fra et systemkald . Målloggen fører fortegnelser over disse systemkald, de afspilles igen, hvis der var et strømsvigt eller en kritisk fejl, hvor hovedpuljen ikke anerkendte deres udførelse. Når måljournalen er uden for hovedpuljen, allokerer den blokke, der kæder gennem puljen.
I version 8 er muligheden for at uddelegere administrative opgaver til administration af ZFS til almindelige brugere implementeret; før det havde kun administratorer mulighed for at administrere ZFS.
I version 9 er der udover de eksisterende kvote- og reservationsfunktioner tilføjet tildelingen af kvoter og reserver, som ikke inkluderer forbrug af diskplads ved indlejrede datastrukturer, såsom kloner og kvoter ( zfs set refquota, zfs set refreservation). Reservationen etableres automatisk, når den oprettede ikke-sparse ( ikke-sparse ) ZFS-volumen matcher størrelsen af partitionen. Også i version 9 er understøttelse af CIFS -serveren tilføjet.
Version 10 introducerede muligheden for at tilføje enheder til en pulje som cache-enheder for at give et ekstra lag af caching mellem hovedhukommelsen og disken. Brugen af cache-enheder forbedrer ydeevnen betydeligt for tunge læsninger af uordentligt, for det meste statisk indhold. I version 12 dukkede understøttelse af snapshot-egenskaber op, i version 13 blev følgende snapshot-egenskaber tilgængelige: usedbysnapshots, usedbychildren, usedbyrefreservation, usedbydataset, i version 14 er egenskaberne og også tilgængelige passthrough-x, aclinheriti version 15 er egenskaberne userused, groupused, userquota, inkluderet groupquota.
Version 17 introducerede understøttelse af triple parity RAID-Z . Version 18 understøtter funktionen ZFS snapshot holds . Fra version 19 blev det muligt at fjerne en tilsluttet enhed til lagring af logfiler; tidligere kunne en sådan enhed ikke fjernes. Version 20 inkluderer zle- komprimeringsalgoritmen .
Version 21 introducerer deduplikering (større brug af zle). Fra version 30 understøttes filsystemkryptering , startende med version 32 understøttes en 1 MB blok, og i version 34 er oprettelsen af netværksshares med nedarvning mellem filsystemer implementeret.
Version 37 tilføjede understøttelse af lz4- komprimeringsalgoritmen (mere effektiv og hurtigere end de eksisterende).
ZFS bruger en objekttransaktionsmodel baseret på kopi-på-skriv-mekanismen . Alle pointere til blokke i filsystemet indeholder en 256-bit kontrolsum i målblokken, som kontrolleres, når blokken læses. Enten Fletcher-summen eller den kryptografiske hash-funktion SHA-256 kan bruges som kontrolsum . [13] Andre kontrolsummer kan vælges for dataene. Datablokke, der indeholder aktive (i øjeblikket) data, overskrives aldrig sammen; tværtimod tildeles en ny blok, de ændrede data skrives til den, og derefter metadataene for alle blokke, der refererer til den, så alt omallokeres og skrives. For at reducere overhead, grupperer denne proces flere opdateringer i en transaktionsgruppe, og hvis det er nødvendigt, logger brugen på synkrone skrivninger.
ZFS-puljen vedligeholder en log over de sidste par dusin versioner af pooldataene (for de sidste par minutter, timer eller dage, afhængigt af intensiteten af dataændringen), designet til at gendanne data, hvis en systemfejl har medført samle sig i en inoperabel, uhelbredelig tilstand. Med copy-on-write er alle disse versioner af dataene i loggen selvstændige, men deler fælles data.
Kopier-for-skriv-modellen i ZFS har en anden stærk fordel: når ZFS skriver nye data - i stedet for at frigøre blokke, der indeholder gamle data - kan den gemme dem ved at skabe snapshots af filsystemet. Snapshots i ZFS oprettes meget hurtigt (med undtagelse af sjældne tilfælde af en lang puljeblokering ved en tidskrævende operation med FS), da alle data i snapshottet allerede er gemt; de er også pladseffektive, da uændrede data deles (deltes) mellem filsystemet og dets snapshot.
Et skrivbart snapshot ("klon") kan også oprettes fra ethvert snapshot, hvilket resulterer i to eller flere uafhængige filsystemer eller volumener, der deler et kompleks af blokke for at reducere det overordnede fodaftryk og reducere klonoprettelsestiden. Så snart der er foretaget ændringer i en hvilken som helst klon af filsystemet, oprettes blokke af nye data til det, og de gamle data forbliver i alle andre kloner.
Når den er oprettet, er en klon knyttet til det øjebliksbillede, hvorfra den blev oprettet. Dette snapshot kan ikke ødelægges, så længe det er refereret af mindst 2 kloner (inklusive det originale lager). For at fjerne dette link skal lageret (filsystemet eller volumen) genskabes, men det gøres nemt ved hjælp af overførsel, og du kan undgå at optage ekstra plads i poolen, hvis du aktiverer deduplikering under overførslen og overfører lageret inden for samme pool.
Snapshots giver dig adgang til de data, der var i hvælvingen på det tidspunkt, hvor snapshottet blev taget som den samme skrivebeskyttede hvælving, uanset den originale hvælving, dens kloner og andre snapshots. De giver dig også mulighed for hurtigt og præcist at gendanne lagerdata til en snapshot-tilstand.
Snapshots og kloner kan oprettes rekursivt for et træ af filsystemer. Dette undgår behovet for selv at gentage kommandoer og administrere transaktioner, da rekursiv snapshot-oprettelse er atomisk.
Oprettelse af snapshots og kloner (såvel som nye filsystemer) kan være vanskeligt på grund af begrænsningerne ved ZFS. Snapshots og kloner kan ikke oprettes, hvis navnet på mindst én af dem overstiger grænsen (og det fulde navn på snapshottet er længere end originalens fulde navn med mindst 2 tegn), hvis der er en navnekonflikt (vigtigt for rekursiv snapshot-oprettelse), hvis nye kvoter overskrides, eller reserver ikke er gennemførlige (kvoter og reserver er nedarvet fra originalen).
Baseret på snapshots implementeres inkrementelle lagerbackups. Ved at bruge snapshot-videresendelse kan du genskabe den samme sekvens af snapshots i enhver ZFS-pulje. Efter oprettelse af nye snapshots af originalen genskaber trinvis snapshot-overførsel de samme opdaterede data i kopien eller klonen, medmindre der er en opdateringskonflikt. Snapshots fortæller dig også, hvilke filer der er blevet ændret, oprettet, slettet og omdøbt mellem snapshots.
Dynamisk partitionering af alle enheder ved maksimal gennemstrømning betyder, at yderligere enheder er inkluderet i zpoolen, bredere kanaler udvides automatisk til at omfatte brugen af alle diske i puljen, dette afbalancerer skrivebelastningen.
ZFS bruger en variabel blokstørrelse på op til 1 megabyte (fra poolversion 32 var den tidligere op til 128 kilobyte). I øjeblikket har administratoren lov til at indstille den maksimale blokstørrelse, der bruges, men noget arbejde vil mislykkes (eller mislykkes), hvis der bruges for store blokke. Automatiske ydeevneindstillinger svarer til privilegier.
Hvis komprimering er aktiveret, bruges variable blokstørrelser. Hvis en blok er blevet komprimeret, kan den smelte sammen til en mindre blok, hvilket betyder, at der bruges mindre diskplads, og gennemløbet (Input/Output) øges (på bekostning af øget CPU- og RAM-brug til komprimerings- og dekomprimeringsoperationer).
ZFS-puljen understøtter også forskellige enhedssektorstørrelser og vælger automatisk den største blokstørrelse fra de enheder, der blev angivet, da puljen blev oprettet (derefter kan poolblokkens størrelse ikke ændres). Størrelser på 512 bytes, 4 KiB (4K) understøttes stabilt. Store blokstørrelser understøttes også, men operativsystemet fungerer muligvis ikke stabilt.
End-to-end integritetskontrol refererer til at skrive en kontrolsum til disken for hver datablok, og kontrolsummen og dataene er specielt placeret så langt som muligt fra hinanden for at reducere sandsynligheden for deres ledskader. Hvis der er flere enheder i puljen, vil kontrolsummen blive skrevet på den anden for dataene på en af dem. Kontrolsummer beregnes ikke kun for data, men også for metadata, og det viser sig, at puljen altid har en kontrolsum for hver informationsblok.
Når du læser en blok, beregnes dens kontrolsum, og resultatet sammenlignes med kontrolsummen, der er gemt på disken. I tilfælde af uoverensstemmelse opdages fejlen straks. Selvfølgelig, hvis ingen redundans var planlagt på forhånd i puljen (hverken RAID-Z eller på anden måde), så kan fejlen ikke rettes, men de beskadigede data vil ikke blive præsenteret som sande.
Pointen med End-to-End-dataintegritet er at forhindre uopdaget datakorruption på grund af drev- eller controllerhardware eller firmwarefejl. Selvom sandsynligheden for en sådan hændelse synes lav, viser nogle undersøgelser, at den er ret væsentlig for organisationer af enhver størrelse [14] .
Programmer, der læser eller skriver data, skal understøtte disse funktioner (muligheden for manglende læsning af en enkelt blok af en fil, muligheden for, at puljen går ind i en tilstand af at vente på lagergendannelse med I/O hængende på ubestemt tid).
I ZFS er det nemmere at manipulere et filsystem i en pulje end mængden af manipulation i traditionelle filsystemer; den tid og indsats, der kræves for at oprette eller ændre et ZFS-filsystem, svarer mere til mængden af arbejde, der er involveret i en ny mappe end med partitionsmanipulation i andre teknologier.
Yderligere funktioner omfatter en funktion til at indstille en specifik I/O-prioritet med en planlægningsperiode, understøttelse af flere uafhængige gevind med forebyggende automatisk detektering af længde og pitch, intelligent rengøring og korrektion [15] , indlæsning og deling af diske i en pool [16] , multipel afspilning af metadata [ 17 ] , understøttelse af copy-on-write-mekanismen , muligheden for at vælge et boot-filsystem i OS -indlæseren , installere det primære boot-filsystem, oprette flere rodfilsystemer, hvoraf et (med alle børn) vil blive brugt ved indlæsning af OS , evnen til at integrere software og OS -opdateringer med oprettelse af snapshots og kloner af filsystemer, hvor programmerne er gemt, og brugen af disse snapshots til nemt at gendanne en tidligere version, og kloner at oprette et multiboot-system med mulighed for at starte forskellige konfigurationer eller OS -versioner ( Solaris opdateres som standard), en mulighed for begrænsning af filnavne til gyldig tekst i UTF-8 i den valgte normale form, en mulighed for at ufølsomme tilfælde af bogstaver i filnavne.
ZFS introducerer også adaptiv cache-erstatning ( ARC ), en ny metode til at administrere cachen i stedet for de traditionelle Solaris-in-memory-cache-virtuelle sider.
Arrays og ZFS konfigureret på dem kan overføres mellem forskellige platforme, selvom de har en anden endianitet. ZFS-blokformatet giver mulighed for automatisk registrering og genbestilling af bytes på farten, når metadata læses.
Samtidig påvirker den forskellige byte-rækkefølge på forskellige systemer ikke applikationer på nogen måde, filerne for dem forbliver en simpel sekvens af bytes. Således er applikationer ansvarlige for det uafhængige (platform)format, der allerede findes i selve filerne.
Pool-attributter er en måde at kontrollere funktioner og indstillinger for en pool. De har specielle typer og skrivebegrænsninger. De angiver, om puljen er skrivbar eller læsbar, om datadeduplikering er aktiveret, FS til indlæsning af OS som standard, en alternativ mount-rod, poolkarakteristika og mere.
Repository-systemattributter er en måde at administrere arkivernes muligheder og indstillinger. De har specielle typer og skrivebegrænsninger. De specificerer indstillingerne for kryptering, komprimering, kontrolsummer, deduplikering, sikkerhedskopiering, cachelagring, størrelsen af datalagerblokke for specifikke lager. De angiver også størrelsen af volumener, FS-monteringspunkter, tilgængeligheden af individuelle lager til skrivning, tilhørsforhold af lager til zoner, mandater, reserver, kvoter, indstillinger for automatisk oprettelse af netværksshares (NFS, SMB), adgangsrettigheder til dem og mere. Disse attributter specificerer hvælvingernes karakteristika. Disse attributter gør det nemmere at administrere FS-relaterede funktioner, der tidligere blev udført manuelt (f.eks. opsætning af montering af flere yderligere filsystemer, oprettelse af netværksshares).
Nogle af systemattributterne nedarves af underordnede arkiver; som følge heraf anvendes attributterne også med det samme på underordnede arkiver. Attributter til kontrolkompression, deduplikering, datakontrolsummer og lignende gælder kun for nyskrevne data. For at anvende dem på alle data skal dataene overskrives (dette gøres nemt ved at sende snapshots til den samme pulje med genskabelse af lagrene).
Hvert datalager (FS, volumen, snapshot osv.) kan tildeles brugerdefinerede attributter. Brugerattributter adskiller sig fra systemattributter i deres navne. For brugerdefinerede attributter kan du bruge et hvilket som helst navn (fra 1 til 2¹⁰ bytes), men det anbefales at bruge navne, der indeholder et kolon (for at undgå konflikter med systemattributter), dit domænenavn før dette kolon (for at undgå med andre brugere) , attributnavnet efter kolon. Tilpassede attributter arves af underordnede butikker.
På grund af den forgrenede udvikling af nye funktioner i forskellige operativsystemer, bruges flere af disse attributter som nye systemattributter.
Brugerdefinerede attributter bruges af brugere og selvstændige programmer (f.eks. tidsskyderen automatisk oprettelse og backup-program).
For filer af enhver type kan værdien af flere systemattributter angives. [18] Disse attributter giver dig mulighed for at kontrollere handlinger på filen. Udvidede filattributter har de samme systemattributter.
Ud over de attributter, der gemmer oprettelsesdatoer, sidste adgang, sidste ændring, sidste metadataændring, er der attributter [19] :
Attributnavn | Attributnavn i kommando chmod[20] | Formål | Hvad gør OS med denne attribut |
---|---|---|---|
Skjult | hidden | Filer med denne attribut vises ikke på den generelle liste, hvis denne indstilling er aktiveret og understøttet i filoutputprogrammet. | Ikke noget. |
sparsom | sparse | En fil med denne attribut anbefales at blive behandlet som sparse, dvs. indeholdende blokke på nul bytes, der ikke er gemt på drevet, men underforstået. Denne egenskab er vejledende og har intet at gøre med, om filen faktisk er sparsom. Filbehandlingsprogrammet til at arbejde med sparsomme filer skal stadig modtage data om de sparsomme blokke af filen fra FS. | Ikke noget. |
Systemisk | system | En fil med denne attribut er beregnet til OS, det er ikke en brugerfil. Normalt ignoreret af programmer. | Ikke noget. |
Kun til læsning | readonly | En fil med denne attribut kan ikke ændres (kun data, ikke attributter). Det gælder for alle uden undtagelse. | Blokerer skriveadgang, hvis attributten er indstillet. |
Til arkivering | archive | Filen skal arkiveres. | Ikke noget. |
Uaftagelig | nounlink | For telefonbøger kan navnet på biblioteket og navnene på dets umiddelbare børn ikke slettes eller ændres. For andre filtyper: filnavnet kan ikke slettes eller ændres. | Blokerer navneændring og sletadgang, hvis attributten er indstillet. |
uforanderlig | immutable | En fil med denne attribut kan ikke ændres (data, attributter, undtagen selve denne attribut og sidste adgangsdato). Det gælder for alle uden undtagelse. | Blokke ændrer adgang, hvis attributten er indstillet. |
Kun mod tillæg | appendonly | Fildata kan kun ændres ved at tilføje, men kan ikke overskrives. | Blokerer skriveadgang, hvis attributten er indstillet. |
Ikke til lossepladser | nodump | Bruges ikke på Solaris. Kom fra BSD . Kræver passende rettigheder for at ændre. | Bruges ikke på Solaris. |
I antivirus karantæne | av_quarantined | Adgangen til filen er begrænset, indtil karantænen ophæves. Attributten kan kun indstilles og fjernes, hvis du har superbrugerrettigheder (antivirussen har det). | Blokerer adgang, hvis attributten er indstillet. |
Ændret (efter sidste antivirus-tjek) | av_modified | Angiver, at den aktuelle version af filen ikke er kontrolleret af antivirus. Indstilles automatisk, når filen oprettes, og hver gang fildata eller filstørrelse ændres. Kan indstilles af en bruger med rettigheder til at ændre attributter. Det kan kun nulstilles, hvis du har superbrugerrettigheder (antivirussen har det). | Indstiller automatisk attributten, når du ændrer data, opretter en fil. |
Du kan oprette udvidede attributter for hver fil af enhver type. Den udvidede attribut er et navngivet array af bytes, ligesom en almindelig fil. Udvidede attributter, som almindelige filer, kan tildeles deres egne tilladelser og systemattributter. I modsætning til en almindelig fil kan udvidede attributter, hårde links, ikke oprettes for udvidede attributter. Udvidede filattributter har mulighed for at blive behandlet som normale filer i begrænset omfang. For at gøre dette oprettes en unavngiven mappe for hver fil (på tidspunktet for oprettelsen af den første udvidede attribut), hvor almindelige filer svarende til de udvidede attributter for denne fil er tilgængelige. På Solaris kan denne mappe tilgås ved hjælp af værktøjet runat[21] .
Administration af individuelle bokse kan delegeres til brugere. For at gøre dette har ZFS tildelt beføjelser, der kan delegeres (oprettelse af lager, snapshots, sletning, montering, sammenligning, videresendelse og mere). Tilladelser delegeres til de valgte bokse på samme måde som tildeling af attributter og udvides til underordnede bokse.
På grund af " kopier-på-skriv "-princippet er dataene i ZFS altid i en konsistent tilstand, filen kan ikke gå tabt på tidspunktet for overskrivning [6] .
Ved brug af diskenheder med redundans (RAIDZ-volumener) sikres datasikkerheden i tilfælde af fysisk mediefejl [6] [22] , mens RAIDZ er effektiv til relativt langvarig lagring af store filer, især ved indstilling af blokstørrelsen svarende til filer, og med hyppig omskrivning og ved placering af filer i små størrelser, er der en øget belastning på processor- og diskundersystemet [6] .
ZFS er en del af Solaris-operativsystemet og er tilgængelig til både SPARC- og x86 -platforme . Da ZFS-koden er open source (CDDL-licens), kan porte til andre operativsystemer og platforme produceres uden Oracle-involvering.
OpenSolaris 2008.05 bruger ZFS som standard filsystem.
Nexenta OSNexenta OS er et operativsystem med et GNU - miljø bygget oven på OpenSolaris-kernen og dens runtime-miljø, ZFS-understøttelse var inkluderet i alpha1-versionen af kernen. For nylig introducerede Nexenta Systems NexentaStor , et ZFS-aktiveret netværkslagersystem, der giver NAS / SAN / iSCSI -funktioner og er baseret på Nexenta OS. NexentaStor inkluderer en grafisk grænseflade, der forenkler processen med at bruge ZFS. Den 2. december 2008 blev NexentaStor 1.1 udgivet. Det opdaterede OpenSolaris-kernen, forbedrede integrationen med CIFS/AD, tilføjede adskillige plugins og rettede nogle fejl. Der er to udgaver af NexentaStor: en kommerciel Enterprise Edition og en gratis Community Edition med en maksimal lagerkapacitet på 18TB. Fra august 2012 er den aktuelle softwareversion 3.1.3.
På grund af CDDL-licensrestriktioner er ZFS ikke inkluderet i kernen, men er tilgængelig som et kernemodul, der nu er tilgængeligt i mange GNU/Linux-distributioner [6] [24] .
I lang tid i Linux blev portering af ZFS til kerneniveau betragtet som juridisk umuligt på grund af inkompatibiliteten af CDDL- licenserne , under hvis jurisdiktion ZFS er, og GNU GPL , under hvis jurisdiktion Linux er . Men i maj 2010 præsenterede Brian Behlendorf en ny version af projektet, som arbejder på at implementere native support til ZFS-filsystemet til Linux. For at omgå licensbegrænsningen besluttede Behlendorf at distribuere hele sit produkt under CDDL-licensen som et separat downloadbart modul, der sendes separat fra kernen [25] [26] . Siden marts 2013 (version 0.6.1) anses projektet for klar til industriel brug [24] . Ubuntu 16.04 (64-bit) er den første mainstream Linux-distribution, der er ZFS-klar [27] .
FUSEGoogle Summer of Code- initiativet sponsorerer en Linux -tilpasning af ZFS ved hjælp af FUSE -modulet , som kører ZFS-filsystemet i brugerrummet [28] . Det menes, at denne løsning teoretisk set er fyldt med ydeevnetab [29] . Men eksemplet med implementering af NTFS ( NTFS-3G ) gennem FUSE viser god ydeevne sammenlignet med andre systemer [30] , hvilket giver grund til at forudsige acceptabel ydeevne af ZFS-FUSE.
I slutningen af 2012 blev ZFS-FUSE [31] præsenteret som version 0.7.0, som indeholdt næsten komplet understøttelse af ZFS og alle dens funktioner - understøttelse af den 23. version af puljen blev introduceret.
Pawel Jakub Dawidek har tilpasset ZFS til FreeBSD som et kernemodul. ZFS er inkluderet i FreeBSD 7.0 (udgivet 27. februar 2008) [32] .
ZFSv28-koden er testet på FreeBSD 9 og porteret til den stabile udviklingsgren 8. FreeBSD 8.3, 8.4 og 9.0 udgiver supportversion 28 af ZFS-puljen. FreeBSD 9.2-udgivelsen og senere versioner af FreeBSD bruger nye "feature flag"-funktioner baseret på Poolens version 5000-implementering [33] .
Det er bemærkelsesværdigt, at i FreeBSD, siden version 8, kræver ZFS, i modsætning til Linux, ikke tilstedeværelsen af FUSE, og derfor er der ingen ydeevneproblemer forbundet med det. Dette bekræftes af, at ZFS i FreeBSD er inkluderet i kernen og er til stede i systemet med det samme, blandt andet, hvilket giver dig mulighed for at starte operativsystemet fra ZFS-volumener. Og FUSE-modulet er ikke inkluderet i operativsystemet og kan valgfrit installeres fra portsamlingen [34] (som f.eks. kræves for at understøtte NTFS).
Apple har forsøgt at portere ZFS til Mac OS X , og der har været aktiv diskussion om ZFS-mailinglisterne og foreløbige klip til den næste version af Apples Mac OS X [35] . Selvom Mac OS X 10.5 (9A321) understøtter ZFS, har den ikke mulighed for at bruge ZFS på rodpartitioner, og den har heller ikke mulighed for at formatere lokale drev under ZFS (sidstnævnte betragtes som en fejl [36] ).
I juni 2009 opgav Apple på sin WWDC '09 pressekonference ZFS i den præsenterede version af Mac OS X 10.6 Snow Leopard, alle referencer til ZFS blev fjernet fra dokumentationen og webstedets materialer. Virksomheden afslører ikke årsagerne til ikke at bruge ZFS [37] .
Mens understøttelse af ZFS blev returneret i Mac OS X 10.6 Snow Leopard build 10A432, mærket Golden Master, blev ZFS-understøttelse fjernet igen i den endelige udgivelse af Mac OS X 10.6, definitivt [38] .
Som svar på lukningen af den officielle støtte til ZFS dukkede et gratis projekt op, som er baseret på kodebasen, der tidligere er oprettet af Apple, men adskiller sig i metoden til integration i systemet. MacZFS udføres ikke på kerneniveau, men på brugerniveau, der arbejder med MacFUSE, er der udarbejdet en binær pakke, kompileret på basis af kildetekster offentliggjort i Git -lageret, samt konfigurationsinstruktioner.
Redox -operativsystemet planlagde at bruge ZFS som standardfilsystem, men skiftede senere til sin egen implementering af lignende principper - TFS [39] [40] , skrevet på det primære Redox-sprog - Rust .
Sun Microsystems (overtaget af Oracle ) | |
---|---|
Udstyr | |
Software |
|
Data opbevaring | |
High Performance Computing |
|
Forskning | |
Uddannelse |
|
Fællesskab |
Solaris | |
---|---|
Teknologi | |
OpenSolaris |
Filsystemer ( liste , sammenligning ) | |||||||
---|---|---|---|---|---|---|---|
Disk |
| ||||||
Distribueret (netværk) | |||||||
Særlig |
|