UNIX systém souborů (file system) 1 Systém souborů (file system, FS)! slouží k uchování dat na vnějším paměťovém médiu a zajišťuje přístup ke struktuře dat! pro uživatele možnost ukládat data a opět je číst, dále zpracovávat! disková paměťová média je možno rozdělit na několik partition, obsah každé partition popisuje jeden systém souborů! každý disk obsahuje minimálně jednu partition, jeden systém souborů tzv. kořenový (root) systém ze kterého se systém bootuje (zavádí) při spuštění počítače Systém souborů UNIX je charakterizován:! hierarchickou strukturou! konzistentním přístupem k datům souboru! schopností vytvářet a rušit soubory! dynamickým zvětšováním souborů! ochranou dat v souborech! přístupem k periferním zařízením jako k souborům! možnost připojení/odpojení dalších systémů souborů ke kořenovému systému (mounted, unmounted)
UNIX systém souborů (file system) 2 POZOR!! kořenový systém soborů nelze nikdy odpojit! systém souborů nelze odpojit, je-li požíván nějakým programem! nelze připojit poškozený systém souborů Systém souborů se skládá z:! posloupnosti logických bloků! blok = 512, 1024, 2048 (vždy násobek 512) bytů (slabik) v závislosti na implementaci systému Tři hlavní skupiny souborů v Unixu:! obyčejné (běžné) soubory! adresáře! speciální soubory Adresáře: 1. kořenový adresář 2. domácí adresář 3. pracovní adresář 4. rodičovský adresář Kořenový adresář (root)! je první úrovní systému souborů! označuje se znakem lomítko (/)! větví se od něj všechny další adresáře
UNIX systém souborů (file system) 3 Domácí adresář (home)! po přihlášení je nastaven jako pracovní! každý uživatel by měl mít vlastní domácí adresář! adresáře určuje správce systému Pracovní adresář (work)! ten, ve kterém momentálně uživatel pracuje! při práci se soubory je možno se na něj odvolávat pomocí metaznaku tečka (.) Rodičovský adresář (parent)! vzhledem ke kterémukoliv adresáři je to adresář o úroveň výše v systému souborů! při práci se soubory je možno se na něj odvolávat pomocí metaznaku tečka-tečka (..) Speciální soubory: 1. soubory znakových zařízení - čtou a zapisují po jednom znaku (klávesnice, terminál, modem...) 2. soubory blokových zařízení - čtou a zapisují najednou celý blok dat, jehož velikost může být 512, 1024, 2048 a více (disková zařízení) 3. symbolické linky (odkazy) - umožňují, aby jeden fyzický soubor měl více jmen 4. pojmenované roury (FIFO) - liší se od souboru tím, že jejích data jsou přechodná a jsou čtena ve stejném pořadí jako jsou zapisována
UNIX systém souborů (file system) 4 Absolutní a relativní jméno souboru absolutní jméno souboru! začíná znakem lomítko (/)! vyjadřuje absolutní cestu k souboru od kořenového adresáře relativní jméno souboru! začíná znakem lomítko! vyjadřuje relativní cestu k souboru vzhledem k pracovnímu adresáři Základní komponenty všech typů systémů souborů:! zaváděcí blok pro natažení systému! superblok popisující stav systému souborů! oblast i-uzlů (i-node) i-uzel obsahuje všechny atributy souboru a odkaz na datovou část souboru.! datové bloky začínající na konci seznamu i-uzlů Zaváděcí blok! zabírá první sektor systému souborů! může obsahovat zaváděcí kód pro inicializaci operačního systému! je součástí každého systému souborů
UNIX systém souborů (file system) 5 Superblok! popisuje stav systému souborů! údaje v superbloku využívá jádro pro přiřazování i-uzlů a diskových bloků! skládá se z těchto polí:! velikost systému souborů! počet volných bloků v systému souborů! seznam volných bloků, které jsou v systému souborů k dispozici! index následujícího volného bloku v seznamu volných bloků! velikost seznamu i-uzlů! počet volných i-uzlů v systému souborů! seznam volných i-uzlů v systému souborů! index následujícího volného i-uzlu v seznamu volných bloků! pole zámků pro seznam volných bloků a seznam volných i-uzlů! příznak indikující, že superblok byl modifikován (jádro zapisuje superblok na disk, jestli-že byl modifikován)
UNIX systém souborů (file system) 6 i-uzel Na každém fyzickém médiu jsou informace o souborech uloženy do jednoho místa do tzv. seznamu i-uzlů. i-uzly se číslují na všech médiích připojených k systému v rámci celého systému nelze jednoznačně identifikovat soubor pomocí i-uzlu. i-uzel obsahuje:! diskovou adresu uložení dat! velikost souboru na disku i-uzel neobsahuje:! jméno souboru (to je uloženo v adresáři) Každý soubor je ve vnitřní struktuře representován i-uzlem.! každý soubor má jeden i-uzel! jeden soubor může mít několik jmen, všechna odkazují na jeden i-uzel! každé jméno se nazývá odkaz! soubor je specifikován znakovým řetězcem představujícím jméno cesty! jádro převádí jméno cesty na i-uzel souboru
UNIX systém souborů (file system) 7 Formát i-uzlu v systému existují i-uzly na disku, jádrem jsou kopírovány do paměti počítače paměťové i-uzly 1. Položky i-uzlu na disku číslo i-uzlu ( 0,1 pro speciální účely, 2 má kořenový) typ souboru dvojciferné číslo! 01 named pipe! 02 soubor znakového zařízení! 04 adresář! 06 soubor blokového zařízení! 10 běžný soubor! 12 symbolický link! 14 socket přístupová práva k souboru! jsou uložena jako čtyřciferné číslo:! první číslice indikuje nastavení speciálního režimu (1=sticky bit, 2=SGID, 4=SUID)! další tři číslice popisují přidělení přístupových práv (čtení, zápis, provádění X vlastník, skupina, ostatní) aktuální fyzická velikost souboru počet linků k souboru představuje počet jmen, která má soubor v adresářové hierarchii
UNIX systém souborů (file system) 8 vlastník souboru jeho jednoznačná identifikace UID skupina vlastníka souboru jednoznačná identifikace skupiny - GID datum a čas poslední modifikace tabulka obsahu jsou v ní uloženy diskové adresy dat souboru (jádro ukládá data souboru v nespojitých diskových blocích) Pořadí těchto položek je různé podle verze Unixu ( /usr/include/sys/inode.h) Položky i-uzlu v paměti obsahuje navíc tyto položky:! identifikace uzamknutí! počet odvolávek! indikace, že soubor je místem připojení dalšího systému souborů Datové bloky obsahují data souboru, alokovaný datový blok patří jen jednomu souboru v systému souborů.
UNIX systém souborů (file system) 9 Typy systémů souborů! dva základní typy podle instalace verze Unixu (AT&T, BSD)! systém souborů AT&T se označuje jako S5 - System 5! BSD verze jako FFS (UFS) Fast File System! další typy systémů souborů: BSF (Boot File System), DTFS ( Desk Top File System- firma SCO), VFS (Virtual File System firma Sun Microsystem) Všechny dnešní Unixové systémy souborů využívají pro zvýšení efektivnosti koncept Read-Ahead a Write-Behind. Unix nezapisuje data na disk v okamžiku vydání požadavku k zápisu. Data se zapisují do vyrovnávací paměti (bufferů) a démon je zapíše na disk v určitých intervalech. Read-Ahead: při každém přístupu na disk se do bufferů načte více bloků než je požadováno. Write-Behind: změny jsou realizovány v paměťových bufferech a nikoli na disku, zápis na disk je uskutečněn v okamžiku snížení požadavků na zdroje nebo při zaplnění bufferů.
UNIX systém souborů (file system) 10 Struktura seznamu i-uzlů jméno1 jméno2 jméno3 jméno4 1 2 3 4 5 6 i-uzly data data data Reprezentace adresáře na disku! Adresář obsahuje jména souborů a jejich i-uzly.! Adresář musí ukazovat pouze na soubory na aktuálním disku. Čísla přiřazená jménům v adresáři se vypíší příkazem: ls i
UNIX systém souborů (file system) 11 Kořenový adresář a jeho podadresář: jméno i-uzel. 2.. 2 jméno1 3 jméno2 7 jméno3 6 adr1 2 0 jméno i-uzel. 2.. 2 jméno5 5 jméno6 6 0 0 0! Na soubor obsahující položky kořenového adresáře ukazuje vždy i-uzel číslo 2.! Prázdná položka má nulové číslo i-uzlu. Struktura typického adresářového stromu