XFS

Izvor: HrOpenWiki
Skoči na: orijentacija, traži

XFS je dnevnički datotečni sustav visokih performansi kojeg je stvorio Silicon Graphics za svoj IRIX operacijski sustav, a koji je kasnije portan za Linux. XFS je izrazito dobar u baratanju sa velikim datotekama i osiguranju laminarnog transfera podataka.


Povijest razvoja

Razvoj XFS-a je započeo Silicon Graphics 1993, a prva verzija spremna za korištenje se pojavila na IRIX-u v5.3, 1994. Datotečni sustav je izdan na GNU GPL licenci u svibnju 2000 i portan na Linux 2001. Omogućen je u gotovo svim modernim Linux distribucijama.

Prva verzija XFS-a je ušla u generički Linux kernel 2.4, što ga je efektivno učinilo dostupno svim Linux distrama. Instalacijski programi Arch, Debian, Fedora, openSUSE, Gentoo, Kate OS, Mandriva, Slackware, Ubuntu, VectorLinux i Zenwalk Linux omogućuju XFS kao izbor za instalaciju, no nije previše popularan zbog problema sa GRUB-om. FreeBSD za sada podržava samo čitanje XFS particija, no ne i pisanje.

Specifikacije

Kapacitet

XFS je 64-bitni datotečni sustav. Podržava datotečne sustave do 8 exabajta minus 1 bajt, no ovo je subjekt limita operacijskog sustava na kojem se nalazi. Na 32 bitnim Linuxima, ovaj limit je 16 terabajta.

Dnevnik

Dnevnik (journaling) je mehanizam koji garantira konzistentnost sustava unatoč mogućim prekidima u napajanju ili padu sustava. XFS osigurava dnevnik za sistemske meta-podatke, gdje su sustavne nadogradnje prvo zapisane u serijski dnevnik prije nego što se stvarni blokovi osvježe. Dnevnik je "kružni" međuspremnik disk blokova kojeg se normalno nikada ne čita u normalnim datotečnim operacijama. XFS dnevnik je ograničen maksimalnom veličinom od 64k blokova do 128 MB, gdje najmanja veličina ovisi o kalkulaciji veličine bloka i direktorija. Dnevnik se može staviti i na odvojeni uređaj ili ga se može držati unutar datotečnog sustava. Dnevnik na XFS-u sadrži "logičke" unose koji opisuju na razini više apstrakcije koje se operacije trebaju izvršiti, za razliku od uobičajenog načina gdje se drže kopije blokova modificirane u svakoj transakciji. Dnevnik se nadopunjuje asinkrono kako bi se izbjeglo smanjenje performansi. U slučaju pada sustava, operacije odmah prije pada se mogu izvršiti tijekom oporavka prilikom ponovnog pokretanja koristeći dnevnik (što osigurava konzistentnost XFS datotečnog sustava). Oporavci i duljina popravaka nemaju korelacijju sa veličinom diska. XFS zapisuje nule na sve blokove koji nisu zapisani tijekom ponovnog pokretanja kako bi se izbjegle sigurnosne rupe na rezidualnim podatcima.

Alokacijske grupe

XFS datotečni sustav je interno particioniran u alokacijske grupe, koje su jednako velike linearne regije unutar datotečnog sustava. Datoteke i direktoriji mogu biti preko više alokacijskih grupa. Svaka alokacijska grupa obrađuje svoje inode i slobodni prostor, što omogućuje skalabilnost i paralelizam – višestruki threadovi i procesi mogu vršiti paralelne operacije I/O u isto vrijeme. Ova arhitektura pomaže optimizaciji paralelnih I/O na višeprocesorskim sustavima (meta-podatci su isto subjekt paralelizacije).

Extent bazirana alokacija

Blokovi koji se zapisuju na XFS se obrađuju extentima prilagodljive duljine, gdje su ekstenti opisani blokovima u fizičkom nizu. Ovo bitno skraćuje liste koje opisuju blokove, ako se usporedi sa datotečnim sustavima koji zapisuju svaki individualni blok koji opisuje datoteku. XFS obrađuje prostornu alokaciju pomoću extent baziranih struktura koje koriste par B+ stabla (B+ tree) za svaku datotečnu alokacijsku grupu (AG). Jedan od B+ stabala se indeksira duljinom slobodnih extenta, dok se drugi indeksira početnim blokom slobodnih extenta. Ova dualna shema indeksiranja stvara visokoefikasnu alokaciju slobodnih extenta.

Direktni I/O

Aplikacijama kojima treba velika propusnost XFS osigurava direktni I/O podataka koji nisu u međuspremniku prema korisničkom prostoru. Podatci se prenose između aplikacijskog međuspremnika i diska koristeći DMA, koji omogućuje pristup punoj I/O vezi između uređaja.

Garantirana razina I/O

XFS-ov garantirani I/O sustav ima API koji dozvoljava aplikacijama da rezerviraju određenu propusnost podataka. XFS dinamički izračuna performanse na konkretnom uređaju i rezervira traženi protok podataka za specifizirano vrijeme. Garancije mogu biti "tvrde" ili "meke" prezentirajući razliku između pouzdanosti i performansi, iako će XFS dozvoliti jedino "tvrde" garancije ako ga konkretni uređaj na kojem se nalazi podržava. Ova se funkcija koristi za aplikacije koje trebaju protočnost u stvarnom vremenu poput video streaminga.

Online defragmentacija

Iako zbog korištenja extenta i odgođene alokacije XFS ima veoma visoku otpornost prema fragmentaciji, postoji alat xfs_fsr (xfs filesystem reorganizer) koji može defragmentirati montirani datotečni sustav.

Online povećavanje

XFS ima alat xfs_growfs koji može povećati XFS datotečni sustav dok je isti u pogonu i pod uvjetom da postoji slobodni prostor na disku. Ovo zahtijeva suradnju sa dodatnim programima jer se particija kao takva ne povećava i potreban je eksterni program koji će povećati particiju kao takvu. XFS se ne može smanjiti, ali se na tome radi.

Ugrađeni backup/restore alati

Posotje alati xfsdump i xfsrestore koji služe za stvaranje i vraćanje backupa podataka na XFS datotečnom sustavu. xfsdump radi rezervnu kopiju u inodnom poretku i za razliku od klasičnog UNIX načina gdje se za dump mora demontirati particija, xfsdump može napraviti kopiju na montiranom disku. Ovo je različito od snapshota jer se ne treba smrznuti sav I/O. xfsdump je također prilagođen višeprocesorskim/jezgrenim računalima kao i mogućnost slanja dumpa na više lokacija odjednom što radikalno povećava brzinu i protok. Slanje na više lokacija nije za sada podržano na Linux.

Atomske disk kvote

Kvote su na XFS datotečnim sustavim uključene kada se disk montira; ovo popravlja situaciju kod većine ostalih sustava gdje se prvo montira particija, a onda se poziva quotation() što stvara jednu sigurnosnu rupu.