Sistemul de fișiere Unix

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 2 aprilie 2015; verificările necesită 24 de modificări .
UFS
Dezvoltator CSRG
Sistemul de fișiere sistem de fișiere UNIX
Data depunerii ( 4,2BSD )
Structura
Conținutul folderului masa
Restricții
Dimensiunea maximă a fișierului 2 73 de octeți
(8 Zbytes )
Lungimea maximă a numelui fișierului 255 de octeți
Dimensiunea maximă a volumului 2 73 de octeți
(8 Zbytes )
Capabilități
Sistem de operare acceptat FreeBSD , OpenBSD , NetBSD , DragonFlyBSD , A/UX și altele

Unix File System (UFS) este un sistem de fișiere creat pentru sistemele de operare din familia BSD și utilizat într-o formă revizuită și completată în prezent ca principal în sistemele de operare descendente ( FreeBSD , OpenBSD , NetBSD ).

Suportul pentru acest sistem de fișiere este disponibil și în nucleul Linux și sistemul de operare Solaris .

Design

Din punct de vedere fizic, UFS constă din următoarele părți:

Inodele sunt numerotate consecutiv. Primele câteva inode sunt păstrate din motive istorice, urmate de inode rădăcină .

Directorul de fișiere conține doar o listă de fișiere și un inod asociat fiecărui fișier. Toate metadatele fișierului sunt stocate în inode.

Istorie și dezvoltare

Versiunile timpurii ale Unix foloseau un sistem de fișiere numit simplu „FS”. FS a inclus doar blocuri de pornire, super bloc, multe inoduri și blocuri de date. Acest lucru a funcționat bine pe discurile mici produse în primele zile ale Unix. Dar tehnologia a evoluat, discurile au devenit mai mari, erau prea multe inoduri și blocuri de date. Apoi FS a fost optimizat și dezvoltat în FFS (Fast File System), în care au apărut grupuri de cilindri, fiecare având propriul inod și a evitat „dumpul” rezultat.

Scopul FFS este de a încerca să localizeze asocierea blocurilor de date și a metadatelor din același grup de cilindri și, în mod ideal, a întregului conținut al unui director (atât datele, cât și metadatele pentru toate fișierele) în același grup, reducând astfel fragmentarea cauzată de împrăștierea conținutului directoarelor de disc.

Unele dintre aceste caracteristici dintr-un superbloc includ numărul de piste și sectoare, viteza de rotație a discului, viteza capului. Într-un sistem complet optimizat, capul poate fi mutat între piste adiacente pentru a citi sectoare împrăștiate din straturile de piste intercalate.

Pe măsură ce dimensiunile discurilor au crescut, nivelul de optimizare a devenit mai puțin eficient (în special în cazul discurilor care utilizează sectoare de numerotare liniară și sectoare variabile pe pistă). Odată cu creșterea numărului de discuri și fișiere, citirea bucăților fragmentate a devenit mai dificilă. Pentru a combate acest lucru, BSD a crescut inițial dimensiunea blocului sistemului de fișiere de la un sector la 1K în 4.0BSD și, în FFS, la 8K. Numărul de blocuri reprezentabile cu o lățime de bloc fixă ​​(de biți) a fost mărit (rezoluție pentru discuri mari). Pe măsură ce dimensiunea blocului crește, discurile cu multe fișiere mici vor ocupa mult spațiu. Pentru a rezolva problema utilizării ineficiente a spațiului liber, a fost adăugat un nivel de fragment la stratul FFS al sistemului de fișiere UFS2, care este o modalitate de a aborda părți individuale ale unui bloc de date - fragmente.

Datorită volumului tot mai mare de unități de disc și tranziției adresării spațiului pe disc la formatul avansat în FreeBSD, dimensiunea implicită a blocului sistemului de fișiere a fost mărită de la 16 KB la 32 KB, iar dimensiunea fragmentului de la 2 KB la 4 KB. Această optimizare a îmbunătățit performanța operațiunilor de I/O pe disc pe unități de disc cu o capacitate de aproximativ 1 TB cu o dimensiune a sectorului de 4 KB. Dimensiunea maximă posibilă a blocului pe un sistem de fișiere UFS2/FFS este de 64 KB.

Aplicație

Utilizatorii unor sisteme comerciale Unix, cum ar fi Solaris , HP-UX și Tru64 UNIX , au adoptat UFS. Cei mai mulți dintre ei au migrat sistemele la UFS, au adăugat completări proprietare care ar putea împiedica utilizatorii altor versiuni de UNIX să recunoască UFS. În mod surprinzător, mulți dintre ei continuă să folosească dimensiunea și lățimea blocului de date originale așa cum au făcut-o în UFS original, așa că rămâne un anumit grad de compatibilitate între platforme. Compatibilitatea între implementări este incompletă în cel mai bun caz și ar trebui investigată înainte de a fi utilizată pe mai multe platforme.

În Solaris 7 , Sun Microsystems a inclus UFS Logging, care a adus jurnalizarea sistemului de fișiere la UFS. Solaris UFS a inclus și suplimente pentru fișiere și discuri mari. Începând cu Solaris 10, utilizatorul are posibilitatea de a alege fie UFS, fie ZFS (Sun's Advanced File System) la instalare. În OpenSolaris , UFS a fost complet înlocuit de ZFS.

După 4.4BSD și sistemele BSD Unix s-au împărțit. Au apărut sisteme precum FreeBSD , NetBSD , OpenBSD și DragonFlyBSD . Ia ființă UFS1 și UFS2, care sunt trei straturi - un strat superior care oferă structura directorului și menține metadatele (permisiuni, permisiuni etc.) în inodul structurii și 2 straturi inferioare care permit reprezentarea datelor containerului, cum ar fi ca inode. Acest lucru a fost făcut pentru a sprijini atât FFS tradiționale, cât și LFS . Stratul superior se numește „UFS”, iar straturile inferioare se numesc „FFS” și „LFS”.

Kirk McKusick a construit FreeBSD pe FFS și UFS pentru a suporta o nouă variantă numită UFS2, care adaugă un indicator de bloc pe 64 de biți (permițând până la 8 zettabytes ) cu o dimensiune variabilă a blocului (similar cu EFS ), câmpuri de steag extinse, atribut de suport extins și POSIX1.e ACLm. UFS2 a fost numit UFS în mod implicit începând cu FreeBSD 5.0. FreeBSD a făcut și câteva completări ( Soft Updates ) și capacitatea de a crea un sistem de fișiere din UFS1 și UFS2. Actualizările soft au fost portate la NetBSD, dar vor fi eliminate din NetBSD 6.0 în favoarea sistemului de fișiere cu mecanism de jurnalizare mai puțin complex ( WAPBL ) care a fost adăugat pentru FFS în NetBSD 5.0. OpenBSD a acceptat actualizări Soft în versiunea 2.9 [1] și UFS2 începând cu versiunea 4.2 [2] . Deoarece FreeBSD 7.0 UFS acceptă și un sistem de fișiere jurnal, folosind furnizorul gjournal GEOM . FreeBSD 9.0 a adăugat suport pentru jurnalizare pe lângă actualizările software (SU+J) [3] , ceea ce reduce foarte mult nevoia de verificări ale sistemului de fișiere de fundal și utilizează implicit ACL-uri în stil NFS.

Linux acceptă UFS la nivel de citire, dar nu are suport complet pentru scrierea UFS. Linux ext2 nativ este modelat după UFS (pe unele sisteme 4.4BSD, stratul UFS poate folosi stratul ext2 ca container, la fel cum poate folosi FFS și LFS).

NeXTStep , care provine din BSD, folosește și versiunea UFS. În Mac OS X de la Apple , UFS este disponibil ca alternativă la HFS+ . Cu toate acestea, începând cu Mac OS X v10.5 , nu puteți instala Mac OS X „Leopard” pe o partiție formatată UFS. De asemenea, nu puteți actualiza versiunile mai vechi de Mac OS X instalate pe UFS la Leopard; actualizarea necesită reformatarea partiției.

Consola de jocuri PlayStation 3 folosește UFS2 pe HDD-ul său. PlayStation 2 folosește UFS. [patru]

Puteți utiliza programul R.saver pentru a accesa sistemul de fișiere UFS din familia de sisteme de operare Windows .

Note

  1. Lansarea OpenBSD 2.9 . Preluat la 15 martie 2009. Arhivat din original la 2 decembrie 2008.
  2. Lansarea OpenBSD 4.2 . Data accesului: 15 martie 2009. Arhivat din original la 14 februarie 2009.
  3. Patch-uri de suport pentru jurnalizarea UFS adăugate la FreeBSD-CURRENT . Data accesului: 1 mai 2016. Arhivat din original pe 2 iunie 2016.
  4. Netkas începe să se joace cu JB PS3s (downlink) . Data accesului: 11 ianuarie 2012. Arhivat din original la 29 octombrie 2010. 

Link -uri