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)
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
2
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)
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ů
4
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)
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
7
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ů i-uzly
jméno1 jméno2 jméno3 jméno4
1 2 3 4 5 6
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
. .. jméno1 jméno2 jméno3 adr1
i-uzel
2 2 3 7 6 2 0
jméno
i-uzel
. .. jméno5 jméno6
2 2 5 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