XXIX. konference EurOpen.CZ
1
´ syste ´my Co um´ı souborove Jan Kasprzak E-mail:
[email protected]
Klov slova: Linux, storage, file system
Abstrakt Souborov´ y syst´em je jednou ze z´ akladn´ıch komponent UNIXov´eho poˇc´ıtaˇce. V t´eto pˇredn´ aˇsce shrneme historii souborov´ ych syst´em˚ u v UNIXu i Linuxu, pˇredstav´ıme souborov´e syst´emy, kter´e se re´ alnˇe pouˇz´ıvaj´ı v souˇcasnosti v Linuxu (ext3, XFS, JFS, ReiserFS, JFFS2, OCFS2, GFS2), pop´ıˇseme pokroˇcil´e a nestandardn´ı vlastnosti nˇekter´ ych souborov´ ych syst´em˚ u, a uk´ aˇzeme, kam smˇeˇruje v´ yvoj, vˇcetnˇe pˇredstaven´ı projekt˚ u, kter´e se vize budoucnosti snaˇz´ı realizovat: ext4, Reiser4, CRFS/BTRFS, POHMELFS, UBIFS a nˇekter´e dalˇs´ı.
Abstract The File system is one of the principal components of the UNIX computer. In this paper, we will summarize a history of the file systems in both UNIX and Linux, we will introduce the file systems currently in use in Linux (such as ext3, XFS, JFS, ReiserFS, JFFS2, OCFS2, GFS2), we will describe advanced features of some file systems, and we will show possible directions of future development in this are: ext4, Reiser4, CRFS/BTRFS, POHMELFS, UBIFS, and some others.
2
1
Jan Kasprzak
Z´ akladn´ı sluˇ zby souborov´ ych syst´ em˚ u
Operaˇcn´ı syst´em UNIX, stejnˇe tak jako jeho ideov´ y n´asledn´ık Linux, pouˇz´ıv´a k ukl´ ad´ an´ı dat na diskov´e jednotky datovou strukturu, naz´ yvanou souborov´y ´ syst´em (file system, FS). Ulohou souborov´eho syst´emu je zav´est na blokov´em zaˇr´ızen´ı jako je pevn´ y disk, disketa, ˇci dnes st´ale v´ıce rozˇs´ıˇren´a flash pamˇet’ strukturu, kter´ a umoˇzn´ı vyuˇz´ıvat blokov´e zaˇr´ızen´ı jako u ´loˇziˇstˇe stromu soubor˚ u a adres´ aˇr˚ u. Takov´eto struktuˇre ˇr´ık´ ame tak´e metadata (na rozd´ıl od dat, coˇz uˇz jsou uˇzivatelem uloˇzen´e informace uvnitˇr soubor˚ u). Jednotliv´e souborov´e syst´emy se pak liˇs´ı zejm´ena t´ım, jak vypadaj´ı jimi pouˇz´ıvan´a metadata, ale tak´e t´ım, jak´ ym zp˚ usobem s metadaty pracuj´ı. Souborov´e syst´emy v UNIXu jsou ukl´ ad´ any na nez´avisl´ ych blokov´ ych zaˇr´ızen´ıch (blokov´e zaˇr´ızen´ı je typicky oblast – partition – pevn´eho disku) tak, ˇze kaˇzd´e blokov´e zaˇr´ızen´ı se souborov´ ym syst´emem na nˇem tvoˇr´ı samostatn´ y strom soubor˚ u a adres´ aˇr˚ u, tak zvan´ y svazek (volume). Jednotliv´e svazky jsou pak spojeny do jednoho stromu soubor˚ u a adres´ aˇr˚ u, kter´ y je zpˇr´ıstupnˇen proces˚ um, bˇeˇz´ıc´ım na UNIXov´em poˇc´ıtaˇci.
1.1
I-uzly
Ve vˇsech UNIXov´ ych souborov´ ych syst´emech se v r˚ uzn´ ych podob´ach vyskytuje datov´ a struktura naz´ yvan´ a i-uzel (identifikaˇcn´ı uzel, i-node). Tato struktura obsahuje metadata o jednom konkr´etn´ım souboru a je tedy jakousi hlaviˇckou“ ” souboru. I-uzel je identifikov´ an sv´ ym ˇc´ıslem, kter´e je v r´amci jednoho svazku jednoznaˇcn´e. V i-uzlu jsou uloˇzena pˇr´ıstupov´ a pr´ava souboru, vlastn´ık a skupina souboru, typ souboru (bˇeˇzn´ y soubor, adres´ aˇr, roura a dalˇs´ı), ˇcasy (modifikace souboru, pˇr´ıstupu k souboru a modifikace i-uzlu), poˇcet odkaz˚ u, d´elka souboru, a tak´e odkaz na datov´e bloky souboru. Datov´e bloky b´ yvaj´ı z i-uzlu odkazov´ any r˚ uznˇe. Tradiˇcn´ı UNIXov´e souborov´e syst´emy pouˇz´ıvaj´ı pseudologaritmickou strukturu naznaˇcenou na obr´azku 1: pˇr´ımo v i-uzlu je tˇrin´ act ukazatel˚ u na datov´ y blok. Prvn´ıch deset ukazatel˚ u ukazuje pˇr´ımo na prvn´ıch deset blok˚ u souboru. Jeden´act´ y ukazatel je tzv. prvn´ı nepˇr´ım´ y odkaz – odkaz na blok v datov´e oblasti, kter´ y je cel´ y rozdˇelen na ukazatele na skuteˇcn´e datov´e bloky souboru. Dvan´ act´ y ukazatel funguje podobnˇe, jen bloky jsou odkazov´ any pˇres dvˇe u ´rovnˇe. Tˇrin´ act´ y ukazatel je pak tˇret´ı nepˇr´ım´ y odkaz.1 1 M´ ame-li napˇr´ıklad bloky velikosti 1 KB a 32-bitov´ e (ˇ ctyˇrbajtov´ e) ukazatele na blok, pak v iuzlu je prvn´ıch 10 blok˚ u (10 KB) odkazov´ ano pˇr´ımo, dalˇs´ıch 1 KB/4 B = 256 blok˚ u odkazov´ ano pˇres prvn´ı nepˇr´ım´ y ukazatel, 2562 blok˚ u (tedy 64 MB) pˇres druh´ y nepˇr´ım´ y ukazatel a 2563 , ˇ cili 16 GB pˇres tˇret´ı nepˇr´ım´ y ukazatel. Maxim´ aln´ı velikost souboru v takov´ emto souborov´ em syst´ emu je tedy o nˇ eco v´ıce neˇ z 16 GB.
XXIX. konference EurOpen.CZ
3
Inode
Blocks in data area
Obr´ azek 1 I-uzel standardn´ıho UNIXov´eho souborov´eho syst´emu
Tato struktura m´ a nˇekolik zaj´ımav´ ych vlastnost´ı: • Kr´ atk´e soubory a zaˇc´ atky dlouh´ ych soubor˚ u maji menˇs´ı reˇzii a pˇr´ıstup k nim je rychlejˇs´ı. • Na druh´e stranˇe adresa kter´ehokoli bloku souboru je zjistiteln´a pomoc´ı nejv´ yˇse tˇr´ı pˇr´ıstup˚ u na disk. • K pˇr´ıstupu ke kter´emukoli datov´emu bloku souboru nen´ı tˇreba nejprve naˇc´ıtat pˇredchoz´ı bloky souboru (lze tedy efektivnˇe prov´adˇet i nesekvenˇcn´ı, n´ ahodn´ y pˇr´ıstup k souboru). • Je-li v i-uzlu odkazovan´ y nˇejak´ y datov´ y blok, neznamen´a to, ˇze nutnˇe mus´ı b´ yt odkazov´ any vˇsechny pˇredchoz´ı bloky. V tom pˇr´ıpadˇe mluv´ıme o souboru s d´ırou (sparse file). Takov´eto soubory mohou za jist´ ych okolnost´ı ˇsetˇrit m´ısto na disku. D´ıra se pˇri ˇcten´ı tv´ aˇr´ı jako bloky nulov´ ych bajt˚ u, pˇri z´apisu se teprve alokuje m´ısto na disku.2 2 Pˇr´ıkladem souboru s d´ırou m˚ uˇ ze b´ yt soubor lastlog (obvykle /var/log/lastlog). Vyzkouˇsejte na nˇ em pˇr´ıkaz ls -ls – tento pˇr´ıkaz vyp´ıˇse poˇ cet skuteˇ cnˇ e alokovan´ ych blok˚ u souboru i velikost souboru (offset posledn´ıho platn´ eho bajtu).
4
1.2
Jan Kasprzak
Adres´ aˇ re
Adres´ aˇr (directory) je v UNIXu v podstatˇe bˇeˇzn´ y soubor, jen m´a u sebe pˇr´ıznak, ˇze jde o adres´ aˇr. Obsah tohoto souboru je interpretov´an jako seznam dvojic: pro kaˇzd´ y soubor je zde jm´eno souboru a ˇc´ıslo i-uzlu, kter´ y je pod t´ımto jm´enem dostupn´ y. Takto zejm´ena m˚ uˇze b´ yt jeden soubor (i-uzel) dostupn´ y pod v´ıce jm´eny, pˇr´ıpadnˇe z v´ıce adres´ aˇr˚ u na tomt´eˇz svazku (tzv. pevn´y odkaz, hard link). Kaˇzd´ y adres´ aˇr obsahuje poloˇzku .“ (odkaz s´am na sebe) a poloˇzku ..“ – ” ” odkaz na nadˇrazen´ y adres´ aˇr (v koˇreni svazku odkaz s´am na sebe). Jm´eno souboru se v UNIXu interpretuje s rozliˇsov´an´ım velikosti p´ısmen a m˚ uˇze obsahovat libovoln´e znaky kromˇe lom´ıtka (pouˇz´ıv´a se pro oddˇelen´ı komponent jm´ena v r´ amci cesty) a nulov´eho bajtu (pouˇz´ıv´a se pro ukonˇcen´ı ˇretˇezc˚ u v jazyce C). Starˇs´ı souborov´e syst´emy povolovaly jm´ena soubor˚ u do d´elky 14 znak˚ u, dneˇsn´ı maj´ı limit nˇekde okolo 256 znak˚ u. UNIX neeviduje k´odov´an´ı (znakovou sadu) jmen soubor˚ u, na dneˇsn´ıch syst´emech se obvykle pouˇz´ıv´a UTF-8 pro svoji kompatibilitu s ASCII i univerz´ alnost.
Inode table
Directory
links
first_file 2
1
parser
3
1
1 2
2 parser.c
1
3
0
4
a.out
3
Obr´ azek 2 Struktura adres´aˇre
2 2.1
Historie System V File System
Souborov´ y syst´em z UNIXu System V (s5fs) m˚ uˇze poslouˇzit jako pˇr´ıklad toho, jak´e minim´ aln´ı vlastnosti dneˇsn´ı UNIXov´ y souborov´ y syst´em potˇrebuje.
5
XXIX. konference EurOpen.CZ Boot
Super Inode table
Data blocks
Obr´ azek 3 Struktura souborov´eho syst´emu s5fs S5FS nech´ aval na zaˇc´ atku voln´ y blok (tzv. boot block) pro zavadˇeˇc syst´emu. D´ ale n´ asledoval superblok se sum´ arn´ımi informacemi o tomto souborov´em syst´emu. Pak tabulka i-uzl˚ u a nakonec datov´e bloky. Vadn´e bloky souboru byly znepˇr´ıstupnˇeny tak, ˇze byly alokov´ any pro nˇekter´ y vyhrazen´ y i-uzel, kter´ y nebyl odkazov´ an z ˇz´ adn´eho adres´ aˇre. Voln´e datov´e bloky byly ukl´ad´any jako zˇretˇezen´ y seznam, coˇz po delˇs´ım pouˇz´ıv´ an´ı souborov´eho syst´emu vedlo k fragmentaci, a t´ım ke sn´ıˇzen´emu v´ ykonu. Typick´ a velikost bloku S5FS je 512 bajt˚ u nebo 1 KB.
2.2
FAT
Souborov´ y syst´em FAT (File Allocation Table) vlastnˇe nem´a s UNIXem ani Linuxem nic spoleˇcn´eho, i kdyˇz Linux i vˇetˇsina dalˇs´ıch syst´em˚ u s n´ım um´ı pracovat. Uv´ ad´ıme jej jako ilustraci jin´eho neˇz UNIXov´eho pˇr´ıstupu k souborov´ ym syst´em˚ um. Boot
FAT 1
FAT 2
Data blocks
Obr´ azek 4 Struktura souborov´eho syst´emu FAT Souborov´ y syst´em FAT zaˇc´ınal zav´ adˇec´ım sektorem, d´ale byly dvˇe kopie alokaˇcn´ı tabulky soubor˚ u a pak m´ısto na datov´e bloky. V prvn´ım datov´em bloku zaˇc´ınal koˇrenov´ y adres´ aˇr. Alokaˇcn´ı tabulka byla ve dvou kopi´ıch z d˚ uvodu vyˇsˇs´ı tolerance k v´ ypadku. Alokaˇcn´ı tabulka obsahovala jeden z´aznam (12-, 16- nebo 32-bitov´ y) pro kaˇzd´ y blok souborov´eho syst´emu (cluster v terminologii FAT). Tento z´ aznam ˇr´ıkal, jestli je dan´ y blok voln´ y, vadn´ y, nebo alokovan´ y v souboru nebo adres´ aˇri. V posledn´ım jmenovan´em pˇr´ıpadˇe pak z´aznam obsahoval ˇc´ıslo bloku, kter´ y po tomto bloku v dan´em souboru n´asleduje (nebo informaci, ˇze tento blok je posledn´ım blokem dan´eho souboru). Adres´ aˇr ve FAT obsahoval z´ aznamy pevn´e d´elky (16 bajt˚ u) se vˇsemi potˇrebn´ ymi metadaty o souborech: 11 bajt˚ u jm´ena souboru interpretovan´ ych jako osm znak˚ u jm´ena a tˇri znaky pˇr´ıpony bez ohledu na velikost p´ısmen, ˇcas modifikace souboru s pˇresnost´ı na dvˇe sekundy, odkaz na prvn´ı datov´ y blok souboru (dalˇs´ı bloky se vyhled´ avaly pomoc´ı alokaˇcn´ı tabulky), atributy souboru (soubor nebo adres´ aˇr, skryt´ y soubor, soubor jen pro ˇcten´ı, atd.).
6
Jan Kasprzak
Pro k´ odov´ an´ı jmen soubor˚ u se v naˇsich kraj´ıch pouˇz´ıvala k´odov´a str´anka IBM CP852 (i v syst´emu Windows, kter´ y jinak data v souborech ukl´adal ve znakov´e sadˇe Windows-1250).
2.3
UFS
Souborov´ y syst´em UFS (na nˇekter´ ych syst´emech t´eˇz FFS nebo EFS) poch´az´ı z BSD UNIXu. Autoˇri se snaˇzili odstranit nˇekter´e nedostatky S5FS. Cel´ y souborov´ y syst´em je rozdˇelen na nˇekolik u ´sek˚ u – cylinder group, CG (podle geometrie disku) – kter´e obsahuj´ı kopii superbloku pro pˇr´ıpad poˇskozen´ı prim´arn´ıho superbloku, ˇc´ ast tabulky i-uzl˚ u, novˇe bitmapu voln´ ych datov´ ych blok˚ u a ˇc´ast datov´ ych blok˚ u samotn´ ych. Boot FS Info Cyl Grp 1 Cyl Grp 2
Super
I−nodes
D−bitmap
CG n
Data blocks
Obr´ azek 5 Struktura souborov´eho syst´emu UFS Alokaˇcn´ı strategi´ı je zajiˇstˇeno, ˇze v pˇr´ıpadˇe voln´eho m´ısta nevznik´a fragmentace ani v pˇr´ıpadˇe, ˇze se paralelnˇe vytv´ aˇr´ı v´ıce soubor˚ u (kaˇzd´ y je pak vytv´aˇren uvnitˇr jedn´e CG). Pro zv´ yˇsen´ı v´ ykonu se UFS typicky vytv´aˇr´ı s vˇetˇs´ımi bloky (4 nebo 8 KB). Aby se pak nepl´ ytvalo m´ıstem na mal´ ych souborech, umoˇzn ˇuje UFS uloˇzit mal´ y soubor do ne zcela vyuˇzit´eho bloku na konci vˇetˇs´ıho souboru (v terminologii UFS se tomuto ˇr´ık´ a fragmenty). UFS p˚ uvodnˇe pouˇz´ıval synchronn´ı z´ apis metadat, coˇz v pˇr´ıpadˇe hav´arie poˇc´ıtaˇce umoˇznilo programu fsck pro kontrolu disk˚ u hledat jen nˇekter´e typy nekonzistenc´ı a t´ım b´ yt rychlejˇs´ı. Na druh´e stranˇe se v pˇr´ıpadˇe hav´arie v okamˇziku zvˇetˇsov´ an´ı souboru mohlo st´ at, ˇze informace o zvˇetˇsen´ı je zanesena v metadatech, ale jeˇstˇe ne v datech souboru, a ˇze tedy soubor obsahuje nepˇremazan´e bloky p˚ uvodnˇe pˇridˇelen´e v jin´ ych souborech (bezpeˇcnostn´ı probl´em). Novˇejˇs´ı implementace UFS umoˇzn ˇuj´ı asynchronn´ı z´ apis metadat nebo asynchronn´ı z´apis metadat se zachov´ an´ım poˇrad´ı operac´ı (soft updates).
2.4
Ext2FS
Ext2FS (second extended filesystem) je souborov´ y syst´em v Linuxu. Strukturou je podobn´ y UFS – jen jednotliv´e ˇc´ asti se zde jmenuj´ı block groups a nejsou zarovn´ any podle fyzick´e geometrie disku jako u UFS (ostatnˇe u dneˇsn´ıch disk˚ u se
7
XXIX. konference EurOpen.CZ
z´ onov´ ym z´ apisem ani informaci o fyzick´e geometrii nem´ame), ale tak, aby pokud moˇzno jednotliv´e datov´e struktury pˇresnˇe zaplnily celoˇc´ıseln´ y poˇcet diskov´ ych blok˚ u. Oproti UFS je zde nav´ıc bitmapa voln´ ych i-uzl˚ u, kter´a slouˇz´ı k rychlejˇs´ımu nalezen´ı voln´eho i-uzlu pˇri vytv´ aˇren´ı nov´eho souboru. Boot
Blk Grp 1
Blk Grp 2
Super FS Info D−bitmap I−bitmap
Blk Grp n
I−nodes
Data
Obr´ azek 6 Struktura souborov´eho syst´emu Ext2FS Ext2FS neimplementuje fragmenty a tento probl´em ˇreˇs´ı opaˇcn´ ym smˇerem: vytv´ aˇr´ı se s menˇs´ı velikost´ı bloku (dˇr´ıve 1 KB, dnes obvykle 4 KB) s t´ım, ˇze pˇri z´ apisu do souboru se bloky alokuj´ı po osmi (jsou-li k dispozici) a pˇri uzavˇren´ı souboru se nevyuˇzit´e bloky uvoln´ı. T´ım se dosahuje podobn´e fragmentace jako u UFS s osmin´ asobnˇe vˇetˇs´ımi bloky. Mezi zaj´ımav´e vlastnosti Ext2FS patˇr´ı tzv. rychl´e symbolick´e linky – text symbolick´eho linku, je-li kratˇs´ı neˇz 64 bajt˚ u, je uloˇzen pˇr´ımo v i-uzlu na m´ıstˇe odkaz˚ u na datov´e bloky a dalˇs´ıch poloˇzek, kter´e se u symbolick´ ych link˚ u nevyuˇz´ıvaj´ı. D´ ale pak nov´e atributy soubor˚ u: nezmˇeniteln´ y soubor, soubor pouze pro pˇripojov´ an´ı dat na konec a bezpeˇcn´e smaz´an´ı souboru. Svazek m˚ uˇze b´ yt pˇripojen s asynchronn´ım nebo synchronn´ım z´ apisem metadat. Je moˇzno zapnout nebo vypnout aktualizaci ˇcas˚ u pˇr´ıstupu k soubor˚ um (ˇcasy modifikace se aktualizuj´ı i nad´ ale).
3
Souborov´ e syst´ emy v Linuxu v souˇ casnosti
Vˇetˇsina souˇcasn´ ych souborov´ ych syst´em˚ u pˇrid´av´a dalˇs´ı vlastnosti: ˇzurn´alov´an´ı (viz d´ ale), access control lists (ACL), rozˇs´ıˇren´e atributy (napˇr´ıklad pro uloˇzen´ı bezpeˇcnostn´ıho kontextu pro SELinux), ˇcasto i on-line zvˇetˇsen´ı svazku, napˇr´ıklad existuje-li nad LVM3 .
3.1
Tolerance k v´ ypadku
Jedn´ım z hlavn´ıch probl´em˚ u starˇs´ıch souborov´ ych syst´emu byla ˇspatn´a tolerance k v´ ypadku. I kdyˇz program fsck je schopen nekonzistence opravit, jeho spuˇstˇen´ı stoj´ı ˇcas a prodluˇzuje dobu v´ ypadku. Souborov´e syst´emy se snaˇz´ı podobn´ ym 3
Logical Volume Manager
8
Jan Kasprzak
probl´em˚ um pˇredch´ azet podobn´ ym zp˚ usobem jako datab´aze – transakˇcn´ım zpracov´ an´ım. Uvaˇzovan´e zmˇeny jsou nejprve zaps´ any do logu (ˇzurn´alu) a teprve aˇz je cel´ a operace zaps´ ana na disku v ˇzurn´ alu, doch´az´ı ke zmˇen´am vlastn´ıch dat. V pˇr´ıpadˇe v´ ypadku staˇc´ı jen pˇrehr´ at ty transakce v ˇzurn´alu, kter´e jsou zde zaps´ any jako kompletn´ı. Ani ˇzurn´ alov´ an´ı ovˇsem neˇcin´ı program fsck zbyteˇcn´ ym. V pˇr´ıpadech jako jsou hardwarov´e probl´emy a chyby operaˇcn´ıho syst´emu mohou i nad´ale vznikat nekonzistence souborov´eho syst´emu. Dostateˇcnˇe robustn´ı program pro kontrolu souborov´eho syst´emu je tedy i nad´ ale podstatn´ ym krit´eriem v´ ybˇeru souborov´eho syst´emu. ˇ Zurn´ alovan´e souborov´e syst´emy obvykle transakˇcnˇe zpracov´avaj´ı jen operace nad metadaty. D˚ usledkem toho m˚ uˇze b´ yt bezpeˇcnostn´ı probl´em podobn´eho stylu, jako byl pops´ an u souborov´eho syst´emu UFS. Nˇekter´e souborov´e syst´emy umoˇzn ˇuj´ı ˇzurn´ alovat i operace nad daty, coˇz ovˇsem s sebou nese vˇetˇs´ı reˇzii. Jen velmi m´ alo souborov´ ych syst´em˚ u podporuje zlatou stˇredn´ı cestu – uspoˇr´ adan´e (ordered) operace. V tomto reˇzimu jsou z´ apisov´e operace nad daty vyˇrizov´any asynchronnˇe, ale teprve po jejich dokonˇcen´ı je do ˇzurn´alu ukonˇcena transakce nad metadaty. Data samotn´ a se tedy zapisuj´ı jen jednou (takˇze nedoch´az´ı k v´ yznamn´emu zpomalen´ı proti pouh´emu ˇzurn´ alov´ an´ı metadat), ale nem´ame zm´ınˇen´ y bezpeˇcnostn´ı probl´em.
3.2
Ext3FS
Souborov´ y syst´em Ext3FS je zpˇetnˇe kompatibiln´ım rozˇs´ıˇren´ım Ext2FS. Nejv´ yznamnˇejˇs´ı zmˇenou je ˇzurn´ alov´ an´ı. V´ yvoj Ext3FS trval pomˇernˇe dlouho, nicm´enˇe jeho v´ ysledkem je i obecn´ a vrstva JBD (journalled block device), kterou pouˇz´ıvaj´ı ˇ i nˇekter´e dalˇs´ı souborov´e syst´emy a komponenty j´adra. Zurn´ al m˚ uˇze b´ yt um´ıstˇen i mimo vlastn´ı blokov´e zaˇr´ızen´ı (napˇr´ıklad v bateri´ı z´alohovan´e pamˇeti RAM). Pˇri korektn´ım odpojen´ı svazku (bez nedokonˇcen´ ych transakc´ı v ˇzurn´alu) m˚ uˇze b´ yt Ext3 svazek pˇripojen jako Ext2. Mezi dalˇs´ı vlastnosti patˇr´ı tzv. sparse superblocks – superblok nen´ı v kaˇzd´e block group, ale jen v exponenci´ alnˇe nar˚ ustaj´ıc´ım intervalu BG, coˇz sn´ıˇz´ı poˇcet kopi´ı superbloku na velk´ ych svazc´ıch a t´ım sn´ıˇz´ı dobu potˇrebnou pro pˇripojen´ı svazku i pro kontrolu svazku. Adres´ aˇre v Ext3 mohou b´ yt uloˇzeny jako line´arn´ı seznam nebo jako B-strom (coˇz je efektivnˇejˇs´ı pro extr´emnˇe velk´e adres´ aˇre). Ext3 implementuje vˇsechny tˇri v´ yˇse popsan´e reˇzimy ˇzurn´alov´an´ı s t´ım, ˇze implicitn´ı je ordered reˇzim.
XXIX. konference EurOpen.CZ
3.3
9
XFS
Do Linuxu se dostala implementace souborov´eho syst´emu XFS od SGI. Jedn´a se o plnˇe 64-bitov´ y ˇzurn´ alovan´ y souborov´ y syst´em. Svazek je rozdˇelen na oblasti velk´e obvykle 0,5 GB aˇz 4 GB, naz´ yvan´e allocation groups (AG). Informace v r´ amci AG jsou ukl´ ad´ any ve formˇe B+ stromu. Pˇri vytv´ aˇren´ı svazku lze uv´est (pˇr´ıpadnˇe mkfs zjiˇst’uje s´am), z kolika fyzick´ ych disk˚ u se skl´ ad´ a blokov´e zaˇr´ızen´ı a tuto informaci uloˇz´ı do superbloku. Pomoc´ı n´ı se pak v j´ adˇre poˇc´ıt´ a moˇzn´ a paralelizace diskov´ ych operac´ı. Asi nejzaj´ımavˇejˇs´ı vlastnost´ı XFS je odloˇzen´a alokace: vˇetˇsina souborov´ ych syst´em˚ u pouˇz´ıv´ a odloˇzen´ y z´ apis dat (write-back). XFS toto posunuje jeˇstˇe d´ale: u zapisovan´ ych dat se i jejich um´ıstˇen´ı urˇcuje aˇz v okamˇziku z´apisu na disk. To umoˇzn´ı souborov´emu syst´emu spojit v´ıce z´ apisov´ ych operac´ı do jedn´e a d´ale tak sniˇzovat fragmentaci. Na druh´e stranˇe toto komplikuje pˇr´ıpadnou implementaci ordered reˇzimu pro ˇzurn´ alov´ an´ı, takˇze XFS podporuje jen ostatn´ı dva reˇzimy. I zde je moˇzno ˇzurn´ alovat na extern´ı zaˇr´ızen´ı. XFS nepouˇz´ıv´ a strukturu i-uzlu z obr´ azku 1. Jedn´a se o tzv. extent-based souborov´ y syst´em: i-uzel obsahuje informace o jednotliv´ ych u ´sec´ıch (extents) souboru ve formˇe B-stromu. Toto umoˇzn ˇuje niˇzˇs´ı reˇzii u extr´emnˇe velk´ ych soubor˚ u (nejsou-li pˇr´ıliˇs fragmentov´ any).
3.4
ReiserFS
Jedn´ a se o souborov´ y syst´em, kter´ y je cel´ y organizovan´ y ve formˇe B+ stromu. Byl to v˚ ubec prvn´ı ˇzurn´ alovan´ y souborov´ y syst´em v Linuxu. Jeho nejzaj´ımavˇejˇs´ı ˇ mal´e vlastnost´ı je, ˇze alokaˇcn´ı jednotkou je jeden bajt, nikoliv jeden sektor. Cili soubory zab´ıraj´ı jen nejnutnˇejˇs´ı m´ısto, bez zarovn´av´an´ı na velikost sektoru nebo dokonce nˇejak´eho vˇetˇs´ıho bloku. V pˇr´ıpadˇe probl´emu proch´ az´ı reiserfsck cel´e blokov´e zaˇr´ızen´ı a hled´a na nˇem signatury uzl˚ u B+ stromu. Coˇz zp˚ usob´ı probl´emy, pokud napˇr´ıklad na ReiserFS uloˇz´ıme soubor, ve kter´em je obraz nˇejak´eho ReiserFS. ReiserFS se nicm´enˇe jiˇz d´ ale nevyv´ıj´ı (autoˇri pracuj´ı na v´ yvoji Reiser4) a mimo jin´e nepodporuje rozˇs´ıˇren´e atributy, vˇcetnˇe bezpeˇcnostn´ıch kontext˚ u pro SELinux. Nicm´enˇe pro netypick´e z´ atˇeˇze (mal´e soubory, velk´e mnoˇzstv´ı soubor˚ u v jednom adres´ aˇri) je i nad´ ale pouˇziteln´ y.
3.5
JFS
Od firmy IBM poch´ az´ı souborov´ y syst´em JFS (Journalled File System), p˚ uvodnˇe implementovan´ y pro operaˇcn´ı syst´em AIX. Jedn´a se opˇet o extent-based souborov´ y syst´em se vˇsemi z´ akladn´ımi vlastnostmi, kter´e jsou pro Linux potˇreba. Nˇekter´e uˇzivatele moˇzn´ a zaraz´ı, ˇze se ˇzurn´ al vytv´aˇr´ı s velikost´ı danou pevn´ ym
10
Jan Kasprzak
pod´ılem z celkov´e velikosti svazku a tedy na extr´emnˇe velk´ ych svazc´ıch m˚ uˇze opˇetovn´e pˇripojen´ı svazku s JFS (a pˇrehr´ an´ı transakc´ı v ˇzurn´alu) trvat pomˇernˇe dlouho.
3.6
JFFS2
Samostatnou tˇr´ıdou souborov´ ych syst´em˚ u jsou syst´emy pro solid-state pamˇeti, jako je tˇreba NAND flash pamˇet’. Z´ akladn´ı vlastnost´ı flash pamˇeti je, ˇze nen´ı tˇreba (na rozd´ıl od disk˚ u) optimalizovat na sekvenˇcn´ı pˇr´ıstup. D´ale pak pˇrepisovatelnost je omezen´ a (pr˚ umˇern´ a ˇzivotnost pamˇet’ov´eho bloku je 104 aˇz 106 pˇreps´ an´ı). Velikost bloku je vˇetˇs´ı neˇz u disk˚ u (i 32 KB). Na rozd´ıl od disku, kter´ y poskytuje dvˇe z´ akladn´ı operace – ˇcten´ı bloku a z´apis do nˇej – m´a flash pamˇet’ operace tˇri: ˇcten´ı, z´ apis a vymaz´ an´ı bloku. Pˇred dalˇs´ım z´apisem je tˇreba blok ˇ vymazat. Casto maj´ı pamˇet’ov´e bloky k sobˇe jeˇstˇe nˇekolik bajt˚ u tzv. out-of-band dat nav´ıc. Sem lze ukl´ adat dalˇs´ı informace o stavu konkr´etn´ıho bloku. Tˇechto zaˇr´ızen´ı je nˇekolik typ˚ u: vˇetˇsina USB pamˇet’ov´ ych karet m´a v sobˇe integrovan´ y pamˇet’ov´ y ˇradiˇc, kter´ y internˇe ˇreˇs´ı pˇreklad adres blok˚ u tak, aby bylo zajiˇstˇeno rovnomˇern´e opotˇreben´ı i pˇri ˇcast´em z´apisu na jedno m´ısto (wear levelling). Tyto pamˇet’ov´e karty pak mohou b´ yt pouˇzity i se souborov´ ym syst´emem urˇcen´ ym pro disky. Pamˇet’ov´ a zaˇr´ızen´ı kter´ a nemaj´ı integrovan´ y ˇradiˇc s pˇrekladem adres (FTL, Flash Translation Layer) vyˇzaduj´ı speci´aln´ı souborov´ y syst´em. Bˇeˇzn´e souborov´e syst´emy by totiˇz takovouto pamˇet’ ˇcast´ ym pˇrepisov´an´ım t´ehoˇz m´ısta (tabulka FAT, tabulka i-uzl˚ u, ˇzurn´ al apod.) zniˇcily. Souborov´e syst´emy pro flash pamˇeti obvykle nepˇrepisuj´ı datov´e bloky na m´ıstˇe, ale vytvoˇr´ı novou verzi“ datov´eho bloku. Pˇri opˇetovn´em pˇripojen´ı svazku ” je pak tˇreba zkoumat, kter´ y fyzick´ y blok obsahuje nejnovˇejˇs´ı verzi pˇr´ısluˇsn´eho datov´eho bloku. Jedn´ım z aktu´ alnˇe pouˇz´ıvan´ ych souborov´ ych syst´em˚ u pro flash pamˇeti je JFFS2 (Journalled Flash File System, verze 2). Jde o ˇzurn´alovan´ y souborov´ y syst´em se stromovou strukturou, pouˇz´ıvaj´ıc´ı mechanismus garbage collection pro opoˇzdˇenou recyklaci blok˚ u, k nimˇz existuje novˇejˇs´ı verze. Jeho nev´ yhodou je, ˇze pˇri pˇripojen´ı mus´ı proj´ıt celou flash pamˇet’, protoˇze metadata souborov´eho syst´emu si drˇz´ı v pamˇeti RAM poˇc´ıtaˇce. Jak roste kapacita dostupn´ ych flash pamˇet´ı, zaˇc´ın´ a tato vlastnost JFFS2 v´ıce vadit.
3.7
OCFS2
Souborov´ y syst´em OCFS2 (Oracle Cluster File System) byl p˚ uvodnˇe vyvinut firmou Oracle pro jejich distribuovan´ y datab´ azov´ y stroj (RAC, Real Application Cluster). OCFS2 je pouˇz´ıv´ an ponˇekud jinak neˇz ostatn´ı souborov´e syst´emy: nepˇredpokl´ ad´ a se zde v´ yluˇcn´ y pˇr´ıstup poˇc´ıtaˇce k pˇr´ısluˇsn´emu blokov´emu zaˇr´ızen´ı. Lze tedy jeden diskov´ y prostor (napˇr´ıklad diskov´e pole pˇres s´ıt’ SAN – storage
XXIX. konference EurOpen.CZ
11
area network) pˇripojit jako lok´ aln´ı souborov´ y syst´em na v´ıce poˇc´ıtaˇc´ıch spojen´ ych do clusteru. OCFS2 si pak s´ am ˇr´ıd´ı komunikaci pˇres s´ıt’ i pˇres toto blokov´e zaˇr´ızen´ı, aby pohled v´ıce stroj˚ u na tent´ yˇz svazek byl konzistentn´ı. Poznamenejme, ˇze pro vyzkouˇsen´ı OCFS2 nepotˇrebujeme m´ıt drah´e diskov´e pole a SAN – existuj´ı napˇr´ıklad v´ıceportov´e disky s rozhranim IEEE 1394, pˇr´ıpadnˇe m˚ uˇzeme vytvoˇrit distribuovan´ y syst´em tolerantn´ı k v´ ypadku pomoc´ı s´ıt’ov´eho RAIDu“ zvan´eho DRBD.4 ”
3.8
GFS2
Global File System je projekt zamˇeˇren´ y podobnˇe jako OCFS2, to jest jako souborov´ y syst´em cluster˚ u se sd´ılen´ ym diskov´ ym polem. Z projektu GFS2 mimo jin´e poch´ az´ı zamykac´ı n´ astroj DLM (distributed lock manager), kter´ y internˇe pouˇz´ıv´ a nejen GFS2, ale i OCFS2 a dalˇs´ı subsyst´emy. Pˇr´ıbuzn´ ym projektem GFS2 je tak´e CLVM – cluster LVM, tedy n´astroj pro koherentn´ı operace nad volume managerem, kter´ y pracuje nad blokov´ ym zaˇr´ızen´ım sd´ılen´ ym z v´ıce poˇc´ıtaˇc˚ u.
4
Kam smˇ eˇ ruje v´ yvoj?
V´ yvoj v oblasti souborov´ ych syst´em˚ u ale nekonˇc´ı. V souˇcasn´e dobˇe ve svˇetˇe Linuxu prob´ıhaj´ı pr´ ace na nˇekolika nov´ ych souborov´ ych syst´emech. Nˇekter´e z nich jsou uˇz v relativnˇe pouˇziteln´em stavu a je moˇzn´e je testovat. U jin´ ych zat´ım nen´ı jasn´e, kde aˇz se v´ yvoj zastav´ı.
4.1
Ext4FS
Souborov´ y syst´em ext45 je n´ asledn´ıkem osvˇedˇcen´eho a robustn´ıho ext3. Zachov´ av´ a diskov´ y form´ at, i kdyˇz kompatibiln´ı je jen dopˇrednˇe, nikoli zpˇetnˇe: svazek ext3 lze pˇripojit jako ext4dev, ale v pˇr´ıpadˇe pouˇzit´ı nov´ ych vlastnost´ı ext4dev uˇz nen´ı jednoduch´ a cesta zpˇet. V´ yhodou diskov´eho form´atu tˇechto souborov´ ych syst´em˚ u (i vˇcetnˇe UFS, kter´ y je na tom podobnˇe) je, ˇze metadata souborov´eho syst´emu jsou v´ıcem´enˇe na pevnˇe definovan´ ych m´ıstech. Tedy i v pˇr´ıpadˇe vˇetˇs´ıho poˇskozen´ı souborov´eho syst´emu je ˇsance na dohled´an´ı aspoˇ n nˇejak´ ych dat. U souborov´ ych syst´em˚ u organizovan´ ych jako B-stromy tuto moˇznost nem´ame – metadata m˚ uˇzou b´ yt v podstatˇe kdekoli a jejich pozice na disku se i v ˇcase mˇen´ı. 4 Distributed Replicated Block Device, www.drbd.org. Pomoc´ı DRBD lze dvˇ e diskov´ e oblasti na dvou r˚ uzn´ ych poˇ c´ıtaˇ c´ıch zrcadlit a na obou zpˇr´ıstupnit jako blokov´ e zaˇr´ızen´ı. S pouˇ zit´ım OCFS2 pak m˚ uˇ ze toto zaˇr´ızen´ı b´ yt na obou poˇ c´ıtaˇ c´ıch i pouˇ z´ıv´ ano z´ aroveˇ n ve formˇ e souborov´ eho syst´ emu. 5 V souˇ casn´ e dobˇ e jiˇ z dostupn´ y v ofici´ aln´ım j´ adˇre Linuxu pod jm´ enem ext4dev.
12
Jan Kasprzak
Hlavn´ım rozˇs´ıˇren´ım ext4dev je voliteln´e zaveden´ı extent-based struktury v iuzlu nam´ısto struktury z obr´ azku 1. Toto umoˇzn´ı efektivn´ı ukl´ad´an´ı velk´ ych m´ alo fragmentovan´ ych soubor˚ u a pˇrinese celkov´e zrychlen´ı pro tyto soubory. D´ ale implementuje opoˇzdˇenou alokaci m´ısta pro z´apis aˇz v okamˇziku z´apisu na disk (podobnˇe jako m´ a XFS), ˇcasov´ a raz´ıtka s rozliˇsen´ım nanosekund (ext3 a vˇetˇsina dalˇs´ıch souborov´ ych syst´em˚ u m´ a rozliˇsen´ı sekundov´e). Odstraˇ nuje limit 32000 podadres´ aˇr˚ u v jednom adres´ aˇri, zav´ ad´ı kontroln´ı souˇcet ˇzurn´alu pro pˇr´ıpad datov´e chyby. Pomˇernˇe zaj´ımavou vlastnost´ı jsou neinicializovan´e block groups: v pr˚ ubˇehu kontroly svazku programem e2fsck se totiˇz za norm´aln´ıch okolnost´ı mus´ı proj´ıt tabulky i-uzl˚ u a dalˇs´ı struktury v kaˇzd´e BG. Pokud ale nejsou vˇsechny i-uzly vyuˇz´ıv´ any, je to zbyteˇcn´e zdrˇzen´ı. Ext4 si tedy pamatuje, aˇz pokud byla dan´a struktura uvnitˇr BG nejd´ ale pouˇzita, a t´ım p´adem tato struktura (tabulka iuzl˚ u, bitmapa voln´ ych datov´ ych blok˚ u, atd.) nemus´ı b´ yt ani cel´a inicializov´ana pˇri vytv´ aˇren´ı svazku programem mke2fs, ani cel´a kontrolov´ana uvnitˇr e2fsck. Pracuje se i na dalˇs´ıch rozˇs´ıˇren´ıch jako je on-line defragmentace nebo podpora soubor˚ u vˇetˇs´ıch neˇz 2 TB. Souborov´ y syst´em Ext4 bude dostupn´ y napˇr´ıklad v distribuci Fedora 9, kter´a bude zveˇrejnˇena v kvˇetnu 2008.
4.2
Reiser4
N´ asledn´ıkem ReiserFS je souborov´ y syst´em Reiser4. Jeho architektura je velmi podobn´ a jako ReiserFS (vˇcetnˇe alokace m´ısta aˇz na u ´roveˇ n bajt˚ u), ale pˇrin´aˇs´ı nˇekter´e revoluˇcn´ı vlastnosti. Nˇekter´e z nich ale zp˚ usobuj´ı nekompatibilitu s normou POSIX, coˇz vzbuzuje pochybnosti o zaˇrazen´ı Reiser4 do ofici´aln´ıho j´adra. Z´ akladn´ı vlastnost´ı Reiser4 je modularita. Souborov´ y syst´em s´am je v podstatˇe jen varianta B+ stromu na disku s t´ım, ˇze r˚ uzn´e ˇcinnosti jsou realizov´any pomoc´ı plugin˚ u. M˚ uˇzeme tak m´ıt napˇr´ıklad plugin, kter´ y pro novˇe uloˇzen´e soubory automaticky zajist´ı jejich indexov´ an´ı vyhled´avac´ım softwarem, plugin pro kompresi a podobnˇe. Soubor m˚ uˇze m´ıt v´ıce proud˚ u dat (stream). Kromˇe hlavn´ıho proudu tˇreba proud s rozˇs´ıˇren´ ymi atributy. Kaˇzd´ y soubor je pak vlastnˇe i adres´aˇr (sv´ ych vlastn´ıch proud˚ u), coˇz je pr´ avˇe nepˇr´ıliˇs konzistentn´ı s POSIXem. Reiser4 zpˇr´ıstupˇ nuje sv´e transakˇcn´ı vlastnosti i plugin˚ um a pl´anuje se i zpˇr´ıstupnˇen´ı aplikac´ım, takˇze uˇzivatelsk´ y proces bude moci napˇr´ıklad udˇelat nˇekolik nez´ avisl´ ych operac´ı nad soubory a jejich daty a pak bud’to celou tuto sadu zmˇen najednou prov´est (commit) nebo vr´atit zpˇet (rollback). Bohuˇzel v´ yvoj tohoto souborov´eho syst´emu v posledn´ı dobˇe pˇr´ıliˇs nepokraˇcuje6 a tak nen´ı jist´e, jestli se v˚ ubec tohoto souborov´eho syst´emu v ofici´aln´ım j´ adˇre doˇck´ ame. 6
Hans Reiser byl v dubnu 2008 odsouzen za vraˇ zdu.
XXIX. konference EurOpen.CZ
4.3
13
BTRFS a CRFS
BTRFS je dalˇs´ım projektem firmy Oracle v oblasti souborov´ ych syst´em˚ u Linuxu. Jde o souborov´ y syst´em s kontroln´ımi souˇcty (podobnˇe jako tˇreba Sun ZFS) a copy-on-write sd´ılen´ım dat. Pouˇz´ıv´ a extent-based strukturu i-uzlu, nem´a pevnˇe alokovanou tabulku i-uzl˚ u (alokace je aˇz pˇri vytvoˇren´ı souboru). Je integrov´an s device mapperem v j´ adˇre pro zajiˇstˇen´ı funkce nad v´ıce zaˇr´ızen´ımi. Umoˇzn ˇuje m´ıt v r´ amci jednoho svazku v´ıce koˇrenov´ ych adres´aˇr˚ u (napˇr´ıklad pro atomick´e sn´ımky – snapshots – svazku v urˇcit´em ˇcase). Zaj´ımavou vlastnost´ı BTRFS a jeho sn´ımk˚ u je, ˇze d´ıky copy-on-write m˚ uˇze b´ yt kter´ ykoli sn´ımek i zapisovateln´ y. BTRFS je moˇzno zaˇc´ıt pouˇz´ıvat bez reinstalace nad ext3fs – podporuje reˇzim, kdy se ext3 svazek pˇripoj´ı jako BTRFS a teprve postupnˇe dojde k migraci form´ atu metadat. Paralelnˇe s BTRFS je vyv´ıjen projekt CRFS – cache-koherentn´ı s´ıt’ov´ y souborov´ y syst´em. Jeho snahou je dos´ ahnout plnˇe POSIXov´e s´emantiky (na rozd´ıl od ˇsiroce pouˇz´ıvan´eho NFS) pˇri intentizvn´ım cachov´an´ı dat na stranˇe klienta. CRFS vyˇz´ıv´ a vlastnost´ı BTRFS – pˇredpokl´ ad´a se, ˇze CRFS bude pouˇzit´ y jako server a s´ıt’ov´ y protokol pro zpˇr´ıstupˇ nov´ an´ı BTRFS svazk˚ u po s´ıti.
4.4
POHMELFS
Alternativn´ım projektem k CRFS je POHMELFS7 Jevgenije Pojlakova. Podobnˇe jako CRFS je v zaˇc´ atc´ıch sv´eho v´ yvoje, i kdyˇz je podle vˇseho o nˇeco d´ ale neˇz CRFS. Snahou autora je m´ıt s´ıt’ov´ y souborov´ y syst´em s v´ıce servery a moˇznost´ı odpojen´eho pouˇz´ıv´ an´ı, jen nad lok´ aln´ı cache.
4.5
UBIFS
Pokraˇcov´ an´ım v´ yvoje v oblasti specializovan´ ych souborov´ ych syst´em˚ u pro solidstate pamˇeti je UBIFS. Pouˇz´ıv´ a pˇrekladovou (FTL) vrstvu UBI, kter´a jiˇz je v j´ adˇre v subsyst´emu Memory Technology Devices zahrnuta. UBIFS nad touto vrstvou stav´ı bˇeˇzn´ y UNIXov´ y souborov´ y syst´em. Na rozd´ıl od JFFS2 m´a strukturu plnˇe uloˇzenou na disku, takˇze jeho pˇripojen´ı nevyˇzaduje proch´azen´ı cel´e pamˇeti. Mezi dalˇs´ı vlastnosti patˇr´ı opoˇzdˇen´ y z´ apis (write-back), komprese pˇri ukl´ad´an´ı dat, ˇzurn´ alov´ an´ı, moˇznost synchronn´ıch operac´ı. M´a dva reˇzimy odpojen´ı svazku: rychl´e odpojen´ı, kdy je po pˇripojen´ı potˇreba pˇrehr´at transakce v ˇzurn´alu a norm´ aln´ı odpojen´ı, kter´e je pomalejˇs´ı, ale n´ asledn´e pˇripojen´ı je pak rychlejˇs´ı, protoˇze seznam neproveden´ ych transakc´ı je jiˇz pr´azdn´ y. 7 Ofici´ aln´ı v´ yklad t´ eto zkratky je Parallel Optimized Host Message Exchange Layered File System.
14
Jan Kasprzak UBIFS je jiˇz t´emˇeˇr ve stavu, kdy je nasaditeln´ y v produˇcn´ım prostˇred´ı.
5
Z´ avˇ er
Je tedy vidˇet, ˇze v´ yvoj´ aˇri souborov´ ych syst´em˚ u v Linuxu jsou st´ale aktivn´ı a v brzk´e dobˇe m˚ uˇzeme oˇcek´ avat zaj´ımav´e v´ ystupy z nˇekolika prob´ıhaj´ıc´ıch projekt˚ u v t´eto oblasti.