UFS

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

UFS (Unix file system, někdy též zvaný Berkeley Fast File System, BSD FFS, FFS) je souborový systém používaný mnoha unixovými operačními systémy. UFS přímo vychází z původního unixového souborového systému (neměl název, označoval se prostě jako „souborový systém“ – filesystem, FS).

Struktura logického disku s UFS vychází ze struktury původního FS:

  • boot block – informace nutné pro nabootování
  • skupina
    • superblock – identifikace souborového systému, různé informace o logickém disku (počet i-nodů, volné místo, umístění kořenového adresáře, volné bloky, …)
    • množství bloků s i-nody – tabulka i-nodů
    • množství datových bloků
  • další skupiny

Od původního unixového FS se UFS liší hlavně existencí tzv. „skupin cylidrů“ (cylinder groups). Disk je rozdělen do částí – skupin cylindrů, každá tato část obsahuje vlastní skupinu i-nodů, datové bloky a množství dalších informací (záloha superbloku a tzv. „hlavička skupiny cylindrů“ obsahující různé pomocné a statistické informace o dané skupině cylindrů).

UFS se snaží mít i-node a data souboru umístěny v jedné skupině cylindrů (pokud to jde). Výhodou tohoto umístění je rychlejší přístup k datům souboru. UFS má oproti původnímu FS také větší velikost alokačního bloku (8 kB).

Z UFS vychází spousta dalších souborových systémů, např. MINIX file system, ext, …

Historie a vývoj[editovat | editovat zdroj]

U Původních verze unixových filesystémů byli známé pouze jako FS. FS obsahoval pouze boot block, superblock, pár i-nodů a datové bloky. Na discích s menší kapacitou, pro které to původně bylo navrženo, to fungovalo dobře. Postupem času, jak šla technologie kupředu a kapacita disků se zvětšovala, čtecí hlava se musela pohybovat častěji tam a zpět mezi jednotlivými i-nody a datovými bloky, což způsobovalo větší a větší hluk. Marshall Kirk McKusick absolvent univerzity v Berkeley optimalizoval BSD 4.2 FFS (Fast File System) tzv. skupinu válců, které rozdělí disk do na menší části, kde každá část má vlastní i-nody a datové bloky.

Záměrem BSD FFS je pokusit se přidělit sdružené datové bloky a metadata do jedné válcové skupiny; a pokud možno, celý obsah adresáře (obojí, data i metadata pro všechny soubory) do jedné nebo do přilehlé válcové skupiny. Tímto řešením dojde ke snížení fragmentace, která je jinak způsobená roztroušením obsahu jedné složky po celém disku.

Některé z výkonostních parametrů v superbloku obsahují číslo stopy a sektoru, rychlost hlavy a zarovnání sektorů mezi stopy. U plně optimalizovaných systémů, by se hlava měla pohybovat při čtení pouze mezi sousedními stopami.

Disky se zvětšovaly a zvětšovaly a i toto řešení se stalo zastaralé. U velkých disků a velkých souborů, bylo čtení fragmentovaných dat velký problémem. Aby tomu tak nebylo, tak se u BSD zvýšila velikost jednoho bloku filesystému z jednoho sektoru na tisíc ve verzi 4.0 BSD; a u FFS, se změnila velikost z jednoho tisíce sektorů na 8 tisíc. Díky tomuto opatření vzrostla pravděpodobnost, že data v sousedících sektorech na sebe budou navazovat a sníží se tak celková režie.

Další možností bylo zvětšit fyzickou velikost disku, protože počet bloků je omezen fixní bitovou šířkou jednoho bloku. Každý soubor musí mít přiřazen alespoň jeden datový block, čímž u disků obsahujících mnoho malých souborů dochází k plýtvání místem. Kvůli tomuto se přidala do BSD tzv. úroveň fragmentace bloku, díky tomu může být uložen poslední dílčí blok dat z několika souborů v jednom "fragmentu" namísto v soukromém skoro prázdném bloku.

Implementace[editovat | editovat zdroj]

Prodejci některých unixových operačních systémů jako jsou např. SunOS / Solaris, System V Release 4, HP-UX, a Tru64 UNIX, přijali UFS. Většina z nich si UFS přizpůsobila na vlastní použití, přidáním některých rozšíření které se nijak zvlášť neliší od rozšíření jiných prodejců. Mnoho z nich nadále používají stejné velikosti datových bloků a šířky datových polí jako původní UFS, takže je zde umožněna kompatibilita napříč platformami.

Do operačního systému Solaris 7 Sun Microsistems přidali UFS Logging, který přinesl do UFS žurnálování filesystému, které je dosud dostupné v aktuální verzi Solarisu. UFS v Solarisu má další rozšíření pro velké soubory, pro disky s větší kapacitou a ještě další featury.

U 4.4BSD a Unixových systémů které jsou z toho odvozeny jako je např. FreeBSD, NetBSD, OpenBSD, a DragonFlyBSD, je implementace UFS1 a UFS2 rozdělena do dvou vrstev. Vrchní vrstva zajišťuje adresářovou strukturu a správu metadat (přístupové oprávnění, vlastnictví atd.) v i-node struktuře a spodní vrstvu, která se stará o datové kontejnery implementované jako i-nody. Důvodem tohoto bylo zachovat podporu, jak tradičního FFS, tak i LFS a aby se mohl sdílet kód a běžné funkce. Horní vrstva se nazývá "UFS" a spodní vrstva se nazývá "FFS" a "LFS".

Kirk McKusick implementoval tzv. realokaci bloků, techniku, která přeuspořádá bloky v souborovém systému ještě předtím, než dojde k samotnému zápisu, čímž dojde k menší fragmentaci dat. Také implementoval některé mechanismy, které udržují systém v konzistentním stavu aniž by došlo k poklesu výkonu, což byla nevýhoda dosavadního způsobu synchronizace. To mělo za následek snížení kontroly souborového systému po pádu systému nebo při výpadku proudu. Aby se tomuto problému předešlo byla do systému zavedena utilita fsck.


Související články[editovat | editovat zdroj]