ZFS | |
---|---|
Dezvoltator | Oracle (fostă Sun Microsystems ) , dezvoltatori de OpenZFS |
Sistemul de fișiere | ZFS - Sistemul de fișiere Zettabyte |
Data depunerii | noiembrie 2005 ( OpenSolaris ) |
Structura | |
Conținutul folderului | Tabel hash extensibil |
Restricții | |
Dimensiunea maximă a fișierului | 16 exbibytes |
Numărul maxim de fișiere | 248 _ |
Lungimea maximă a numelui fișierului | 255 de octeți |
Dimensiunea maximă a volumului | 256 zebibytes |
Caractere valide în titluri | fără codare sau UTF-8 (opțional) |
Capabilități | |
Precizia stocării datei | 1 ns [1] |
Fluxuri de metadate | Da (numite Atribute extinse ) |
Atribute | POSIX , suplimentar |
Drepturi de acces | POSIX |
Comprimarea fundalului | da |
Criptare în fundal | Din versiunea de piscină 30 |
Sistem de operare acceptat | Solaris , OpenSolaris , FreeBSD , Linux (prin FUSE sau modul separat de kernel ( ZFS pe Linux )), Apple Mac OS X 10.5 , Windows ( ZFSin ) |
ZFS (Zettabyte File System) este un sistem de fișiere Merkle arbore copiere pe scriere creat de Sun Microsystems în 2004–2005 pentru sistemul de operare Solaris . Acest sistem de fișiere acceptă cantități mari de date, combină conceptele unui sistem de fișiere, matrice RAID , un manager de disc logic (volum) , principiile sistemelor de fișiere ușoare și oferă o gestionare simplă a volumelor de stocare a datelor. La momentul în care a fost creat ZFS, structura sa de aspect a datelor era inovatoare. Există implementări deschise ale ZFS, în special, OpenZFS este licențiat sub CDDL ( Common Development and Distribution License ). Din cauza restricțiilor de licențiere, suportul ZFS pe GNU/Linux este limitat, ceea ce nu este cazul sistemului de fișiere Btrfs asemănător ZFS . ZFS este în prezent în curs de dezvoltare activă.
Principalele avantaje ale ZFS sunt controlul complet asupra mediilor fizice și volumelor logice și menținerea constantă a consistenței sistemului de fișiere. Funcționând la diferite niveluri de abstractizare a datelor, ZFS este capabil să ofere acces de mare viteză la acestea, să le controleze integritatea și să minimizeze fragmentarea datelor . ZFS este foarte configurabil, vă permite să modificați cantitatea de spațiu pe disc în proces și să setați diferite dimensiuni de blocuri de date pentru diferite aplicații și oferă operații paralele de citire-scriere.
ZFS a fost proiectat și construit la Sun Microsystems de o echipă condusă de Jeff Bonwick și anunțat pe 14 septembrie 2004 [2] . Codul sursă pentru versiunea finală a fost integrat în ramura principală Solaris la 31 octombrie 2005 [3] .
ZFS a fost inclus în versiunea OpenSolaris 27 , lansată pe 16 noiembrie 2005. Sun a declarat că ZFS a fost integrat în actualizarea 6/06 pentru Solaris 10 în iunie 2006, la un an după deschiderea comunității OpenSolaris [4] .
ZFS a fost inițial numit „ Zettabyte File System”, dar mai târziu numele a evoluat într-un acronim simplu [5] .
ZFS a fost lansat sub o licență comercială ca parte a sistemului de operare Solaris, apoi ZFS cu sursă deschisă SUN Microsystems în proiectul OpenSolaris sub un CDDL. După achiziționarea SUN Microsystems de către Oracle, codul a fost închis din nou, dar în acest moment ZFS era deja inclus în FreeBSD și în alte proiecte open source care s-au dezvoltat independent și au schimbat coduri sursă prin „backport-uri” ( eng. backports ) [6] .
În 2013, a fost lansat proiectul OpenZFS [7] [8] , care preia noi funcții și remedieri de la Illumos și le distribuie pe toate porturile pe alte platforme și invers [9] .
ZFS - 128 de biți[10] un sistem de fișiere care îi permite să stocheze de 18,4 × 10 de 18 ori mai multe date decât toate sistemele cunoscute pe 64 de biți. ZFS este conceput astfel încât limitările sale să fie atât de imposibil de atins încât nu vor fi întâlnite în practică în viitorul apropiat [11] .
Câteva limite teoretice în ZFS:
În același timp, utilitățile de gestionare a sistemului de fișiere impun restricții suplimentare.
Spre deosebire de sistemele de fișiere tradiționale, care rezidă pe un singur dispozitiv și, prin urmare, necesită un manager de volum atunci când sunt utilizate pe mai multe dispozitive, ZFS este construit pe bazinele de stocare virtuale numite zpools . Pool-ul este construit din dispozitive virtuale ( vdevs ), fiecare dintre acestea fiind fie un dispozitiv fizic, fie o oglindă ( RAID 1) a unuia sau mai multor dispozitive sau ( RAID Z) un grup de două sau mai multe dispozitive. Capacitatea tuturor vdev -urilor este apoi disponibilă pentru toate sistemele de fișiere din zpool .
O cotă poate fi setată pentru a limita spațiul disponibil pentru un anumit sistem de fișiere sau volum . În plus, este posibil să utilizați rezervarea discului (limită) - acest lucru asigură că va exista întotdeauna spațiu disponibil pentru un anumit sistem de fișiere sau volum.
Versiuni ZFS PoolExistă diferite versiuni ale sistemului de fișiere ZFS și versiuni ale pool-ului ZFS ( zpool ), iar funcționalități diferite sunt disponibile în funcție de versiune. În noiembrie 2012, există 34 de versiuni ale pool-ului ZFS. Toate versiunile pool-ului sunt lansate inițial pentru Solaris .
Versiunea 2 a inclus suport pentru metadate replicate ( ditto blocks ) . Datorită structurii arborescente a formatului de disc ZFS, erorile irecuperabile din metadatele pool-ului pot duce la imposibilitatea deschiderii pool-ului. Această caracteristică oferă replicare automată a metadatelor (până la trei copii ale fiecărui bloc ) indiferent de redundanța subiacentă la nivelul întregului grup . De exemplu, într-un pool cu o singură oglindă, metadatele cele mai critice vor fi scrise de trei ori pe fiecare parte a oglinzii, pentru un total de șase copii. Acest lucru asigură că, dacă datele sunt pierdute din cauza corupției, toate datele din pool vor fi localizabile și pool-ul va fi sănătos.
Versiunea 3 include suport pentru piese de rezervă și paritate duală RAID-Z (raidz2) ; versiunea 4 a introdus suport pentru menținerea istoricului pool-ului ZFS ( zpool history); versiunea 5 a adăugat suport pentru compresia din mers pentru seturile de date ZFS folosind metoda gzip ; versiunea 6 include suport pentru proprietatea bootfs (vă permite să comutați FS rădăcină a sistemului de operare bootabil printr-un atribut, în plus față de opțiunea bootloader).
Versiunea 7 a introdus suport pentru un „jurnal țintă” ( ZFS Intent Log , ZIL , lit. „intent log”), care oferă aplicațiilor posibilitatea de a ști că datele pe care le-au modificat sunt în stocare stabilă, la întoarcerea de la un apel de sistem . Jurnalul țintă păstrează înregistrări ale acestor apeluri de sistem, acestea sunt reluate dacă a existat o întrerupere de curent sau o eroare critică în care pool-ul principal nu a confirmat executarea lor. Când jurnalul țintă se află în afara pool-ului principal, acesta alocă blocuri care se conectează prin pool.
În versiunea 8, este implementată capacitatea de a delega sarcini administrative pentru gestionarea ZFS utilizatorilor obișnuiți; înainte de aceasta, numai administratorii aveau capacitatea de a gestiona ZFS.
În versiunea 9, pe lângă funcțiile de cotă și rezervare existente, a fost adăugată și alocarea de cote și rezerve, care nu include consumul de spațiu pe disc de către structurile de date imbricate, precum clonele și cotele ( zfs set refquota, zfs set refreservation). Rezervarea este stabilită automat atunci când volumul ZFS creat non-sparse ( non-sparse ) se potrivește cu dimensiunea partiției. Tot în versiunea 9 a fost adăugat suport pentru serverul CIFS .
Versiunea 10 a introdus capacitatea de a adăuga dispozitive la un pool ca dispozitive de stocare în cache pentru a oferi un strat suplimentar de stocare în cache între memoria principală și disc. Utilizarea dispozitivelor de stocare în cache îmbunătățește semnificativ performanța pentru citirile grele ale conținutului inordonat, mai ales static. În versiunea 12 a apărut suport pentru proprietățile instantanee, în versiunea 13 au devenit disponibile următoarele proprietăți instantanee: usedbysnapshots, usedbychildren, usedbyrefreservation, usedbydataset, în versiunea 14 sunt disponibile și proprietățile și passthrough-x, aclinheritîn versiunea 15 sunt incluse proprietățile userused, groupused, userquota, groupquota.
Versiunea 17 a introdus suport pentru RAID-Z cu paritate triplă . Versiunea 18 acceptă caracteristica de reținere a instantaneelor ZFS . Începând cu versiunea 19, a devenit posibilă eliminarea unui dispozitiv atașat pentru stocarea jurnalelor; anterior, un astfel de dispozitiv nu putea fi eliminat. Versiunea 20 include algoritmul de compresie zle .
Versiunea 21 introduce deduplicarea (utilizarea majoră a zle). Începând cu versiunea 30 , este acceptată criptarea sistemului de fișiere , începând cu versiunea 32, este suportat un bloc de 1 MB, iar în versiunea 34, este implementată crearea de partajări de rețea cu moștenire între sistemele de fișiere.
Versiunea 37 a adăugat suport pentru algoritmul de compresie lz4 (mai eficient și mai rapid decât cele existente).
ZFS utilizează un model de tranzacție cu obiecte bazat pe mecanismul de copiere la scriere . Toți pointerii către blocuri din sistemul de fișiere conțin o sumă de control de 256 de biți în blocul țintă, care este verificată atunci când blocul este citit. Fie suma Fletcher , fie funcția hash criptografică SHA-256 poate fi utilizată ca sumă de control . [13] Alte sume de control pot fi alese pentru date. Blocurile de date care conțin date active (în acest moment) nu sunt niciodată suprascrise împreună; dimpotrivă, un bloc nou este alocat, datele modificate sunt scrise în el și apoi metadatele oricăror blocuri care se referă la el, astfel totul este realocat și scris. Pentru a reduce cheltuielile generale, acest proces grupează mai multe actualizări într-un grup de tranzacții și, dacă este necesar, înregistrează utilizarea în scriere sincronă.
Pool-ul ZFS menține un jurnal al ultimelor zeci de versiuni ale datelor pool (pentru ultimele minute, ore sau zile, în funcție de intensitatea modificării datelor), conceput pentru a restaura datele în cazul în care o eroare de sistem a adus pool într-o stare inoperabilă, incurabilă. Cu copiere la scriere, toate aceste versiuni ale datelor din jurnal sunt autonome, dar partajează date comune.
Modelul copy-by-write din ZFS are un alt avantaj puternic: atunci când ZFS scrie date noi - în loc să elibereze blocuri care conțin date vechi - le poate salva prin crearea de instantanee ale sistemului de fișiere. Instantaneele în ZFS sunt create foarte rapid (cu excepția cazurilor rare de blocare lungă a pool-ului printr-o operație consumatoare de timp cu FS), deoarece toate datele din instantaneu sunt deja salvate; sunt, de asemenea, eficiente în spațiu, deoarece orice date neschimbate sunt partajate (partajate) între sistemul de fișiere și instantaneul său.
De asemenea, un instantaneu care poate fi scris („clonă”) poate fi creat din orice instantaneu, rezultând două sau mai multe sisteme de fișiere sau volume independente care împart un complex de blocuri pentru a reduce amprenta totală și a reduce timpul de creare a clonelor. De îndată ce se fac modificări oricărei clone a sistemului de fișiere, blocuri de date noi sunt create pentru aceasta, iar datele vechi rămân în toate celelalte clone.
Când este creată, o clonă este legată de instantaneul din care a fost creată. Acest instantaneu nu poate fi distrus atâta timp cât este referit de cel puțin 2 clone (inclusiv stocarea originală). Pentru a elimina această legătură, spațiul de stocare (sistem de fișiere sau volum) trebuie recreat, dar acest lucru se face cu ușurință utilizând transferul și puteți evita ocuparea spațiului suplimentar în pool dacă activați deduplicarea în timpul transferului și transferați spațiul de stocare în aceeasi piscina.
Instantaneele vă permit să accesați datele care se aflau în seif la momentul în care a fost realizat instantaneul ca același seif numai pentru citire, indiferent de seiful original, clonele sale și alte instantanee. De asemenea, vă permit să restaurați rapid și precis datele de stocare la o stare instantanee.
Instantaneele și clonele pot fi create recursiv pentru un arbore de sisteme de fișiere. Acest lucru evită necesitatea de a repeta comenzile și de a gestiona singur tranzacțiile, deoarece crearea recursive de instantanee este atomică.
Crearea de instantanee și clone (precum și noi sisteme de fișiere) poate fi dificilă din cauza limitărilor ZFS. Instantaneele și clonele nu pot fi create dacă numele a cel puțin unuia dintre ele depășește limita (și numele complet al instantaneului este mai lung decât numele complet al originalului cu cel puțin 2 caractere), dacă există un conflict de nume (esențial pentru crearea de instantanee recursive), dacă sunt depășite noi cote sau rezervele nu sunt fezabile (cotele și rezervele sunt moștenite de la original).
Pe baza unor instantanee, sunt implementate backup-uri incrementale de stocare. Folosind redirecționarea instantaneelor, puteți recrea aceeași secvență de instantanee în orice pool ZFS. După crearea unor noi instantanee ale originalului, transferul incremental de instantanee recreează aceleași date actualizate în copiere sau clonă, cu excepția cazului în care există un conflict de actualizare. De asemenea, instantaneele vă informează ce fișiere au fost modificate, create, șterse și redenumite între instantanee.
Partiționarea dinamică a tuturor dispozitivelor la debit maxim înseamnă că dispozitivele suplimentare sunt incluse în zpool, canalele mai largi sunt extinse automat pentru a include utilizarea tuturor discurilor din pool, ceea ce echilibrează sarcina de scriere.
ZFS folosește o dimensiune variabilă a blocului de până la 1 megaoctet (de la versiunea pool 32, obișnuia să fie de până la 128 de kiloocteți). În prezent, administratorului i se permite să seteze dimensiunea maximă a blocurilor utilizate, dar unele lucrări vor eșua (sau eșuează) dacă sunt folosite blocuri prea mari. Setările automate de performanță corespund privilegiilor.
Dacă compresia este activată, sunt utilizate dimensiuni variabile ale blocurilor. Dacă un bloc a fost comprimat, acesta se poate îmbina într-un bloc mai mic, ceea ce înseamnă că este utilizat mai puțin spațiu pe disc și debitul (Intrare/Ieșire) este crescut (cu prețul utilizării CPU și RAM crescute pentru operațiunile de compresie și decompresie).
Pool-ul ZFS acceptă, de asemenea, diferite dimensiuni de sector de dispozitiv și selectează automat cea mai mare dimensiune a blocului dintre dispozitivele specificate când a fost creat pool-ul (după aceea, dimensiunea blocului pool-ului nu poate fi modificată). Dimensiunile de 512 octeți, 4 KiB (4K) sunt acceptate stabil. Dimensiunile mari ale blocurilor sunt, de asemenea, acceptate, dar este posibil ca sistemul de operare să nu funcționeze stabil.
Controlul integrității end-to-end se referă la scrierea unei sume de control pe disc pentru fiecare bloc de date, iar suma de control și datele sunt distanțate în mod special cât mai departe posibil una de cealaltă pentru a reduce probabilitatea deteriorării articulațiilor. Dacă există mai multe dispozitive în pool, atunci pentru datele aflate pe unul dintre ele, suma de control va fi scrisă pe celălalt. Sumele de control sunt calculate nu numai pentru date, ci și pentru metadate și se dovedește că pool-ul are întotdeauna o sumă de control pentru fiecare bloc de informații.
La citirea oricărui bloc, suma de control este calculată și rezultatul este comparat cu suma de control stocată pe disc. În caz de discrepanță, eroarea este imediat detectată. Desigur, dacă nu a fost planificată în prealabil o redundanță în pool (nici RAID-Z, nici altfel), atunci eroarea nu poate fi corectată, dar datele corupte nu vor fi prezentate ca adevărate.
Scopul integrității datelor de la capăt la capăt este de a preveni corupția nedetectată a datelor din cauza defecțiunilor hardware sau firmware-ului unității sau controlerului. Deși probabilitatea unui astfel de eveniment pare scăzută, unele studii arată că este destul de semnificativă pentru organizațiile de orice dimensiune [14] .
Programele care citesc sau scriu date trebuie să accepte aceste caracteristici (posibilitatea eșecului de a citi un singur bloc al unui fișier, posibilitatea ca pool-ul să intre într-o stare de așteptare pentru recuperarea stocării cu I/O suspendat pentru o perioadă nedeterminată).
În ZFS, manipularea unui sistem de fișiere într-un pool este mai ușoară decât cantitatea de manipulare din sistemele de fișiere tradiționale; timpul și efortul necesar pentru a crea sau modifica un sistem de fișiere ZFS seamănă mai mult cu cantitatea de muncă implicată cu un director nou decât cu manipularea partițiilor în alte tehnologii.
Caracteristicile suplimentare includ o funcție pentru a seta o anumită prioritate I/O cu o perioadă de programare, suport pentru mai multe fire independente cu detectarea automată preventivă a lungimii și pasului, curățare și corecție inteligentă [15] , încărcare și partajare a discurilor într-un pool [16] , redare multiplă a metadatelor [ 17] , suport pentru mecanismul de copiere la scriere , abilitatea de a selecta un sistem de fișiere de pornire în încărcătorul sistemului de operare , instalarea sistemului principal de fișiere de boot, crearea mai multor sisteme de fișiere rădăcină, dintre care unul (cu toți copiii) vor fi utilizate la încărcarea sistemului de operare , capacitatea de a integra software și actualizări ale sistemului de operare cu crearea de instantanee și clone ale sistemelor de fișiere în care sunt stocate programe și utilizarea acestor instantanee pentru a restaura cu ușurință o versiune anterioară și clonele pentru a crea un sistem multiboot cu posibilitatea de a porni diferite configurații sau versiuni de sistem de operare ( Solaris este actualizat implicit), o opțiune pentru limitarea numelor de fișiere la text valid în UTF-8 în forma normală selectată, o opțiune pentru a nu sensibiliza majusculele caracterelor din numele fișierelor.
ZFS introduce, de asemenea, înlocuirea adaptivă a memoriei cache ( ARC ), o nouă metodă de gestionare a memoriei cache în locul paginilor virtuale tradiționale din cache în memorie Solaris.
Array-urile și ZFS-ul configurat pe ele pot fi transferate între diferite platforme, chiar dacă au o îndianitate diferită. Formatul bloc ZFS permite detectarea automată și reordonarea octeților din mers atunci când metadatele sunt citite.
În același timp, ordinea diferită a octeților pe diferite sisteme nu afectează în niciun fel aplicațiile, fișierele pentru aceștia rămânând o simplă secvență de octeți. Astfel, aplicațiile sunt responsabile pentru formatul independent (platformă) deja în fișierele în sine.
Atributele pool-ului sunt o modalitate de a controla caracteristicile și setările unui pool. Au tipuri speciale și restricții de scriere. Acestea indică dacă pool-ul este inscriptibil sau citibil, dacă deduplicarea datelor este activată, FS pentru încărcarea OS în mod implicit, o rădăcină de montare alternativă, caracteristicile pool-ului și multe altele.
Atributele sistemului de depozit sunt o modalitate de a gestiona capabilitățile și setările depozitelor. Au tipuri speciale și restricții de scriere. Acestea specifică setările pentru criptare, compresie, sume de control, deduplicare, backup, cache, dimensiunea blocurilor de stocare a datelor din anumite stocări. Ele indică, de asemenea, dimensiunea volumelor, punctele de montare FS, disponibilitatea stocărilor individuale pentru scriere, apartenența depozitelor la zone, mandate, rezerve, cote, setări pentru crearea automată a partajărilor de rețea (NFS, SMB), drepturi de acces la acestea și Mai Mult. Aceste atribute specifică caracteristicile bolților. Aceste atribute facilitează gestionarea funcțiilor legate de FS care au fost efectuate anterior manual (de exemplu, configurarea montarii mai multor sisteme de fișiere suplimentare, crearea de partajări de rețea).
Unele dintre atributele sistemului sunt moștenite de depozitele copil; ca urmare, atributele sunt aplicate imediat și depozitelor copil. Atributele pentru controlul compresiei, deduplicarii, sumelor de verificare a datelor și altele asemenea se aplică numai datelor nou scrise. Pentru a le aplica tuturor datelor, datele trebuie suprascrise (acest lucru se face cu ușurință prin trimiterea de instantanee la același pool cu recrearea stocărilor).
Fiecărui depozit de date (FS, volum, instantaneu etc.) i se pot atribui atribute personalizate. Atributele utilizatorului diferă de atributele sistemului în numele lor. Pentru atributele personalizate, puteți utiliza orice nume (de la 1 la 2¹⁰ octeți), dar este recomandat să folosiți nume care conțin două puncte (pentru a evita conflictele cu atributele sistemului), numele dvs. de domeniu înainte de aceste două puncte (pentru a evita cu alți utilizatori) , numele atributului după două puncte. Atributele personalizate sunt moștenite de magazinele pentru copii.
Datorită dezvoltării ramificate a noilor caracteristici în diferite sisteme de operare, mai multe dintre aceste atribute sunt folosite ca atribute de sistem noi.
Atributele personalizate sunt folosite de utilizatori și de programele de sine stătătoare (de exemplu, programul de creare automată și backup cu glisare de timp).
Pentru fișierele de orice tip, poate fi specificată valoarea mai multor atribute de sistem. [18] Aceste atribute vă permit să controlați acțiunile asupra fișierului. Atributele de fișiere extinse au aceleași atribute de sistem.
Pe lângă atributele care stochează datele de creare, ultimul acces, ultima modificare, ultima modificare a metadatelor, există atribute [19] :
Numele atributului | Nume atribut în comandă chmod[20] | Scop | Ce face sistemul de operare cu acest atribut |
---|---|---|---|
Ascuns | hidden | Fișierele cu acest atribut nu sunt afișate în lista generală dacă această opțiune este activată și acceptată în programul de ieșire a fișierelor. | Nimic. |
rar | sparse | Se recomandă ca un fișier cu acest atribut să fie procesat ca rar, adică să conțină blocuri de zero octeți care nu sunt stocate pe unitate, dar sunt implicite. Acest atribut este consultativ și nu are nimic de-a face cu dacă fișierul este de fapt rar. Programul de procesare a fișierelor pentru lucrul cu fișiere rare trebuie încă să primească date despre blocurile rare ale fișierului de la FS. | Nimic. |
Sistemică | system | Un fișier cu acest atribut este destinat sistemului de operare, nu este un fișier utilizator. De obicei ignorat de programe. | Nimic. |
Doar pentru lectură | readonly | Un fișier cu acest atribut nu poate fi modificat (doar date, nu atribute). Se aplică tuturor, fără excepție. | Blocează accesul la scriere dacă atributul este setat. |
Pentru arhivare | archive | Fișierul trebuie arhivat. | Nimic. |
De nedemontat | nounlink | Pentru directoare, numele directorului și numele copiilor săi imediati nu pot fi șterse sau modificate. Pentru alte tipuri de fișiere: numele fișierului nu poate fi șters sau modificat. | Blochează schimbarea numelui și șterge accesul dacă atributul este setat. |
imuabil | immutable | Un fișier cu acest atribut nu poate fi modificat (date, atribute, cu excepția acestui atribut în sine și a ultimei date de acces). Se aplică tuturor, fără excepție. | Blocurile modifică accesul dacă atributul este setat. |
Doar pentru supliment | appendonly | Datele fișierului pot fi modificate doar prin adăugare, dar nu pot fi suprascrise. | Blocează accesul la scriere dacă atributul este setat. |
Nu pentru gropi | nodump | Nu este utilizat pe Solaris. A venit de la BSD . Necesită privilegii adecvate pentru modificare. | Nu este utilizat pe Solaris. |
În carantină antivirus | av_quarantined | Accesul la dosar este restricționat până la ridicarea carantinei. Atributul poate fi setat și eliminat doar dacă aveți drepturi de superutilizator (antivirusul îl are). | Blocează accesul dacă atributul este setat. |
Modificat (după ultima verificare antivirus) | av_modified | Indică faptul că versiunea curentă a fișierului nu este verificată de antivirus. Setați automat atunci când fișierul este creat și ori de câte ori datele sau dimensiunea fișierului sunt modificate. Poate fi setat de un utilizator cu drepturi de modificare a atributelor. Poate fi resetat doar dacă aveți drepturi de superutilizator (antivirusul îl are). | Setează automat atributul la modificarea datelor, crearea unui fișier. |
Puteți crea atribute extinse pentru fiecare fișier de orice tip. Atributul extins este o matrice numită de octeți, la fel ca un fișier obișnuit. Atributelor extinse, cum ar fi fișierele obișnuite, li se pot atribui propriile permisiuni și atribute de sistem. Spre deosebire de un fișier obișnuit, atributele extinse, linkurile hard nu pot fi create pentru atributele extinse. Atributele extinse ale fișierelor au capacitatea de a fi tratate ca fișiere normale într-o măsură limitată. Pentru a face acest lucru, este creat un folder fără nume pentru fiecare fișier (la momentul creării primului atribut extins), în care sunt disponibile fișiere obișnuite corespunzătoare atributelor extinse ale acestui fișier. Pe Solaris, acest folder poate fi accesat utilizând utilitarul runat[21] .
Gestionarea seifurilor individuale poate fi delegată utilizatorilor. Pentru a face acest lucru, ZFS a alocat puteri care pot fi delegate (crearea de stocări, instantanee, ștergerea lor, montare, comparare, redirecționare și multe altele). Permisiunile sunt delegate pentru seifurile selectate în același mod ca și atribuirea de atribute și se extind la seifurile secundare.
Datorită principiului „ copy-on-write ” , datele din ZFS sunt întotdeauna într-o stare consecventă, fișierul nu poate fi pierdut în momentul suprascrierii [6] .
Atunci când se utilizează volume cu redundanță (volume RAIDZ), siguranța datelor este asigurată în cazul defecțiunii suportului fizic [6] [22] , în timp ce RAIDZ este eficient pentru stocarea pe termen relativ lung a fișierelor mari, mai ales când se stabilește dimensiunea blocului corespunzătoare fișiere, iar cu rescrierea frecventă și la plasarea fișierelor de dimensiuni mici, există o sarcină crescută asupra procesorului și a subsistemului de disc [6] .
ZFS face parte din sistemul de operare Solaris și este disponibil atât pentru platformele SPARC , cât și pentru x86 . Deoarece codul ZFS este open source (licență CDDL), porturile către alte sisteme de operare și platforme pot fi produse fără implicarea Oracle.
OpenSolaris 2008.05 folosește ZFS ca sistem de fișiere implicit.
Nexenta OSNexenta OS este un sistem de operare cu un mediu GNU construit pe nucleul OpenSolaris și pe mediul său de rulare, suportul ZFS a fost inclus în versiunea alpha1 a nucleului. Mai recent, Nexenta Systems a introdus NexentaStor , un sistem de stocare de rețea activat ZFS care oferă capabilități NAS / SAN / iSCSI și se bazează pe Nexenta OS. NexentaStor include o interfață grafică care simplifică procesul de utilizare a ZFS. Pe 2 decembrie 2008, NexentaStor 1.1 a fost lansat. A actualizat nucleul OpenSolaris, a îmbunătățit integrarea cu CIFS/AD, a adăugat mai multe plugin-uri și a remediat unele erori. Există două ediții de NexentaStor: o ediție comercială Enterprise și o ediție gratuită pentru comunitate, cu o limită maximă a capacității de stocare de 18 TB. Din august 2012, versiunea actuală a software-ului este 3.1.3.
Din cauza restricțiilor de licențiere CDDL, ZFS nu este inclus în nucleu, dar este disponibil ca un modul de nucleu care este acum disponibil în multe distribuții GNU/Linux [6] [24] .
Multă vreme în Linux , portarea ZFS la nivelul kernelului a fost considerată imposibilă din punct de vedere legal din cauza incompatibilității licențelor CDDL , sub jurisdicția cărora se află ZFS, și GNU GPL , sub jurisdicția cărora se află Linux . Cu toate acestea, în mai 2010, Brian Behlendorf a prezentat o nouă versiune a proiectului, care lucrează la implementarea suportului nativ pentru sistemul de fișiere ZFS pentru Linux. Pentru a evita restricția de licență, Behlendorf a decis să-și distribuie întregul produs sub licența CDDL ca un modul descărcabil separat, care este livrat separat de kernel [25] [26] . Din martie 2013 (versiunea 0.6.1), proiectul este considerat gata de utilizare industrială [24] . Ubuntu 16.04 (64 de biți) este prima distribuție Linux standard care este pregătită pentru ZFS [27] .
FUSEInițiativa Google Summer of Code sponsorizează o adaptare Linux a ZFS folosind modulul FUSE , care rulează sistemul de fișiere ZFS în spațiul utilizatorului [28] . Se crede că această soluție este teoretic plină de pierderi de performanță [29] . Însă exemplul de implementare a NTFS ( NTFS-3G ) prin FUSE arată performanțe bune în comparație cu alte sisteme [30] , ceea ce dă motive de a prezice performanța acceptabilă a ZFS-FUSE.
La sfârșitul anului 2012, ZFS-FUSE [31] a fost prezentat ca versiunea 0.7.0, care includea suport aproape complet pentru ZFS și toate funcțiile sale - a fost introdus suportul pentru cea de-a 23-a versiune a pool-ului.
Pawel Jakub Dawidek a adaptat ZFS pentru FreeBSD ca modul kernel. ZFS este inclus în FreeBSD 7.0 (lansat pe 27 februarie 2008) [32] .
Codul ZFSv28 este testat pe FreeBSD 9 și portat în ramura de dezvoltare stabilă 8. Versiunile FreeBSD 8.3, 8.4 și 9.0 acceptă versiunea 28 a pool-ului ZFS. Versiunea FreeBSD 9.2 și versiunile ulterioare ale FreeBSD folosesc noi caracteristici „feature flags” bazate pe implementarea versiunii 5000 a Pool-ului [33] .
Este de remarcat faptul că în FreeBSD, începând cu versiunea 8, ZFS, spre deosebire de Linux, nu necesită prezența FUSE și, prin urmare, nu există probleme de performanță asociate cu acesta. Acest lucru este confirmat de faptul că ZFS în FreeBSD este inclus în kernel și este prezent în sistem imediat, printre altele, permițându-vă să porniți sistemul de operare din volumele ZFS. Iar modulul FUSE nu este inclus în sistemul de operare și poate fi instalat opțional din colecția de porturi [34] (care este necesară, de exemplu, pentru a suporta NTFS).
Apple a încercat să port ZFS la Mac OS X și au existat discuții active despre listele de corespondență ZFS și reduceri preliminare pentru următoarea versiune a Mac OS X de la Apple [35] . Deși Mac OS X 10.5 (9A321) acceptă ZFS, nu are capacitatea de a utiliza ZFS pe partițiile rădăcină și nici nu are capacitatea de a formata unități locale sub ZFS (acesta din urmă este considerat un bug [36] ).
În iunie 2009, Apple la conferința de presă WWDC '09 a abandonat ZFS în versiunea prezentată de Mac OS X 10.6 Snow Leopard, toate referințele la ZFS au fost eliminate din documentație și materialele site-ului. Compania nu dezvăluie motivele neutilizarii ZFS [37] .
În timp ce suportul pentru ZFS a fost returnat în Mac OS X 10.6 Snow Leopard build 10A432, marcat Golden Master, suportul ZFS a fost eliminat din nou în versiunea finală a Mac OS X 10.6, definitiv [38] .
Ca răspuns la închiderea suportului oficial pentru ZFS, a apărut un proiect gratuit, care se bazează pe baza de cod creată anterior de Apple, dar diferă prin metoda de integrare în sistem. MacZFS nu se execută la nivel de kernel, dar la nivel de utilizator, lucrând cu MacFUSE, a fost pregătit un pachet binar, compilat pe baza textelor sursă publicate în depozitul Git , precum și a instrucțiunilor de configurare.
Sistemul de operare Redox plănuia să folosească ZFS ca sistem de fișiere implicit, dar mai târziu a trecut la propria sa implementare a unor principii similare - TFS [39] [40] , scris în limbajul principal Redox - Rust .
Sun Microsystems (preluat de Oracle ) | |
---|---|
Echipamente | |
Software |
|
Stocare a datelor | |
Calcul de înaltă performanță |
|
Cercetare |
|
Educaţie |
|
Comunitate |
Solaris | |
---|---|
Tehnologie | |
OpenSolaris |
Sisteme de fișiere ( listă , comparație ) | |||||||
---|---|---|---|---|---|---|---|
Disc |
| ||||||
Distribuit (rețea) | |||||||
Special |
|