- dostane bloky nad kterými pracuje
- musí reprezentovat, jako stromovou strukturu (adresáře, soubory, příst. práva)
- umí to udělat efektivně
- efektivita u hdd, při sekvečním zápisu, snaha zapisovat sekvečně na disk
- mají metadata
- nahoru prezentují stromovou strukturu (pro kernel)
- Super block
- co je to za souborvý systém
- metadata systému
- jestli svazek byl naposledy koretkně odpojený (jestli se jádro má snažit přehrávat journal)
- Tabulka i-uzlů
- některé systémy potřebují věděn počet i-uzlů před použitím
- některé vytváři i-uzly dynamicky
df -i - použité, volné i-uzly
- při chybě při zápisu může dojít ke změně na více míst
(zápis do tabulky i-uzlu, nalinkování do adresáře, zapsání dat, …)
- Jak zachovat pořadí operací bez synchronního zápisu.
- Omezení pořadí operací - které mohu být před kterou, atd.
- Zesložiťilo cache
- vznik cycklických závislostí
- Fungují podobně jako transakční databáze
- Commitnuté, ale neprovedené transakce se po havárii mohou přehrát
- Pomalejší = dvojí zaposování, do žurnálu a do metadat
- při čtení hledat na více místech - žurnál - neprovedené transakce
- metadata vs data
- (pouze metadata) při havárii můžeme mít správně velký soubor se špatnými daty
- transakce z jádra = user-space by si mohl držet otevřenou transakci velmi dlouho
- log structured filesystem = filesystem je pouze žurnál, načteme do paměti, přehrajeme transakce
- File Allocation Table
- množina bloků pevné délky
- struktura o každém bloku, jestli je volný a následující blok souboru / je-li koncový blok
- není optimalizované pro náhodný přístup
- při tvorbě 2 bloků zaráz -> fragmentace
- triky: 2 kopie tabulky pro použití při poškození
- Když máme 1 super blok, po přepsání máme smůlu
- disk rozsekán na menší díly - cylinder groups
- bitmapa volných bloků -
d-bitmap
- rozdělení na menší fs -> menší fragmentace
- v té době problém fragmentace = výkon -> snížení fragmentace pomocí zvětšení bloku
- do částečně obsazeného souboru se zapíše jiný malý soubor
- vychází z UFS
- block groups = cylinder groups (geometrie disku, už nebyla tak podstatná)
- zrychlení operace vytvoření nového souboru
- boj proti fragmentaci softwarově:
- když otevřu soubor pro zápis - chci zapisovat -> bude se zvětšovat
- najít 8 stejných bloků a přiřazení souboru
- při nenaplnění 8 bloků se volné bloky uvolní
- rychlé symbolické linky - spousta nevyužitého místa, přeskádání příst. práv, atd. nakonec souboru
- pokud méně než 64 bajtů -> link přímo uložen do i-uzlu
- zápis accesstime od kernelu je zbytečně moc použivaný na zápis ale není použivány v praxi
- zápis pouze pokud je starší než modification time
- konzistence
- vynucení
fsck při připojení po 64x
- při chybě
- v super bloku nastavit - panic (zastavení jádra), r-only (nechci poškozovat systém),
ignore - pouze se ignorují, ale zapisují
- přivádí žurnálování
- pouze metadata
- i data
- ordered - operace nad daty nejdou do žurnálu, ale operace musí proběhnout předtím
- adresáře - lineární struktura nebo strom (Hash tree - bezpečnost!)
- může fungovat i jako extend-based
- podrobnější časovaá razítka - 1 nanosekunda
ls -ltd --full-time
- všechno v jednom B+ stromu (i volné místo)
- zabrané místo souboru nebylo omezeno na násobek bloků
- dynamicky alkované i-uzly
- část fs jako plug-iny
- soubory s více proudy - např “fat binaries” - binary, které jsou pro více architektur
- jeden z prvních 64 bitových fs
- dělí na fs na allocation groups (kousky) mají až 4 GB - relativní odkazy v jedné group 32bitové
- nové operace pro videa jako vykusování/přidávání dat z prostředku souboru -> aktuálně nemá moc využití
- první co umožňoval zápis bez writeback cache - zápis videa na disk
- Allocate on flush - věci z writeback cache nevíme, kam půjdou, ale patří k danému i-uzlu
- až při zápisu se vybere, kam se zapíše - 1 velký zápis
- Zettabyte File System (2^128)
- fs imunní proti chybám implementace a chybám hw
- kotrolní součet dat u odkazu na data
- ghost writes - zápisy, které se zapíší jinam, než čekáme
- duplicitní bloky dat -> jsme schopni rozpoznat správnou kopii pomocí kontrolního součtu
- Copy-on-write: sjendocení duplicitních bloků
- Copy-on-write B-stromy - při zápisové operaci by se musel replikovat celý strom
- top-down B-tree - pointery na sousedy o vrstvu výš -> nemusí se kopírovat sousedi
- evidence volnéh místa - není v b-tree
- Zapisovatelné snímky FS
- subvolumes - různé adresáře se mohou chovat jako kořen fs
- deduplikace = kopie i-uzlu a odkazuje na stejné bloky, ale při zápisu se vytvoří nové
- komprese dat = značný problém -> zápis doprostřed souboru
- obnova smazatelných souborů -> nepoužívané, spíše se používají snapshoty
- nepřemístitelné soubory = použítí pro swap
- Transparentní šifrování = část FS zamčená pod klíčem
- Steganografie - souborové systémy, co umožňují popřít, že na FS nějaké soubory jsou
- nelze použít pro 1TB disk nebudeme mít tolik místa
- Buffer Cache
- hlídá si kolik dat může mít nacachované -> při naplnění spouští zápis na disk