filesystems
Alles uber FS
obecne
FS je predpis, jak sú data na disku organizované – zápis na disku je rad bajtů, takže ja sa v tom vyznať (kde začína súbor, do akého adresára patrí a pod.). Viz termín FAT – file allocation system, t.j. ukáž človeku v čiteľnej podobe, kde má fajly.
Moderný FS definuje a storuje metadáta:
- hierarchiu adresárov a súborov (adresár ako súbor…)
- ich vlastníkov a oprávnenia (rwx, acl)
- časy vytvorenia a zmeny (ctime…)
- údaje pre opravný mechanizmus (fsck, žurnál). Zatiaľčo žurnál pracuje na základe delty stavu (zápis zmien), fsck približne na princípe – ak súbor otvorený, oznařč ho za nekonzistetntný, ak štandardne zavretý, tak označ za konzistentný.
- kvóty a pod.
UNIXy ukaldajú metadáta v inodoch. Master inode obsahuje metadáta a zoznam blokov, kde sú data. Pre malé súbory OK, ale ak by bol súbor veľký, tak nevýhodné – OS sa musí stále pozerať do indexu na inode a teda veľa seekov. rieši sa to tzv. indirect blokmi – blok na inode ukazuje na ďalšie bloky, viď obr.
Jenotlivé FS sú limitované roznymi veľkosťami súborov a pod. Dnes nepodstatné, veľké rezervy. FS je viazaný na partíciu, nie na disk, takže na disku možno viacero partícií s roznymi FS. Konečným cieľom FS je efektívne storovať dáta a zabezpečiť ich konzistenciu. Základný prehľad schopností jednotlivých FS na wikipedii.
Bloky a superbloky
Extenty
Fragmentácia
Riedke súbory (sparse files)
linux FS 2 vrstvy – VFS, na ktorý kernel posiela syscally a VFS potom zavolá driver pre konkrétny FS. Linuxový FS je logicky organizovaný podľa LFHS a hierarchizovaný na jeden strom (root) – pokiaľ sa pripája iný FS, tak niekam do mountpointu v tomto strome.
oddychové čítanie – ako funguje google FS – gfs-sosp2003
file deskriptory
FD sú handlery pr e súbory – tabuľka čísel, ktoré sa mapujú na tabuľku oprávnení a inodov. V praxi do nich človek najčastejěie zabŕdne, keď narazí na chybovú hlášku, že bol vyčerpaný ich limit a FS stojí.
cat /proc/sys/fs/file-max – konfig, ktorý udáva maximálny počet deskriptorov
cat /proc/sys/fs/file-nr – číslo, ktoré udába počet otvorených deskriptorov
ls /proc/PID/fd/ – symlikny na súbory, ktoré má otvorený konkrétny proces
lsof | wc -l – často doporučované pr eprehľad otvorených súborov, nie je to celkom korektné, tu o tom vynikajúci článok