Log-strukturovaný souborový systém (BSD) - Log-structured File System (BSD)
The Log-Structured File System (nebo LFS) je implementace a souborový systém strukturovaný do protokolu (koncepce původně navržená a implementovaná John Ousterhout ), původně vyvinutý pro BSD. Byl odstraněn z FreeBSD a OpenBSD; the NetBSD implementace byla nefunkční, dokud práce vedoucí k vydání 4.0 neudělaly životaschopnost jako produkční souborový systém.[1]
Design
Většina formátu LFS na disku je vypůjčena UFS. Nepřímý blok, inode a adresářové formáty jsou téměř totožné. To umožňuje opětovné použití osvědčeného kódu systému souborů UFS; současné implementace LFS sdílejí kód UFS vyšší úrovně s kódem nižší úrovně pro FFS, protože oba tyto souborové systémy sdílejí s UFS mnoho společného.
LFS rozdělí disk na segmenty, kdykoli je aktivní pouze jeden z nich. Každý segment má záhlaví zvané a souhrnný blok. Každý souhrnný blok obsahuje ukazatel na další souhrnný blok a spojuje segmenty do jednoho dlouhého řetězce, který LFS považuje za lineární protokol. Segmenty na disku nemusí nutně sousedit; z tohoto důvodu se doporučují větší velikosti segmentů (mezi 384 kB a 1 MB), protože amortizují náklady na vyhledávání mezi segmenty.[2]
Kdykoli se změní soubor nebo adresář, LFS zapíše do záhlaví tohoto protokolu:
- Jakékoli změněné nebo nové datové bloky.
- Nepřímé bloky aktualizovány tak, aby ukazovaly na (1).
- Inody aktualizovány tak, aby ukazovaly na (2).
- Bloky mapy Inode byly aktualizovány tak, aby ukazovaly na (3).[3]
Na rozdíl od UFS nemají inody v LFS pevné umístění. K jejich sledování se používá mapa inodů - plochý seznam umístění bloků inodů. Stejně jako u všech ostatních, bloky inode map jsou také zapsány do protokolu, když jsou změněny.
Když je segment vyplněn, LFS pokračuje vyplněním dalšího volného nebo čistý segment. O segmentech se říká, že jsou špinavý pokud obsahují žít bloky nebo bloky, pro které již v protokolu neexistují žádné novější kopie. LFS Popelář změní špinavé segmenty na čistý ty tak, že zkopírujete živé bloky ze špinavého segmentu do aktuálního segmentu a zbytek přeskočíte. Souhrnný blok v každém segmentu obsahuje mapu pro sledování živých bloků.
Obecně je uvolňování paměti zpožděno, dokud nezůstanou žádné čisté segmenty; lze jej také odložit, když je systém nečinný. Dokonce i poté jsou pro sběr vybrány pouze nejméně znečištěné segmenty. To je zamezeno trestu za čištění celých segmentů, když je nejvíce zapotřebí šířka pásma I / O.[2]
V a kontrolní bod (obvykle naplánováno přibližně jednou za 30 sekund), LFS zapíše poslední známá umístění bloků inode mapy a číslo aktuálního segmentu do oblast kontrolního bodu na pevném místě na disku. Existují dva takové regiony; LFS střídá mezi nimi každý kontrolní bod. Jakmile je napsáno, a kontrolní bod představuje poslední konzistentní snímek systému souborů. Obnova po havárii a normální montáž fungují stejným způsobem - souborový systém jednoduše rekonstruuje svůj stav od posledního kontrolního bodu a odtud obnoví protokolování.
Nevýhody
- Může to být vážné fragmentace systému souborů v LFS, zejména pro pomalu rostoucí soubory nebo více současných velkých zápisů. To způsobí přísný výkonnostní trest, i když zdůvodnění návrhu pro logické strukturované souborové systémy předpokládá, že čtení disku bude většinou uloženo do mezipaměti.
- LFS bude postupně méně efektivní, protože se blíží maximální kapacitě, když musí sběrač odpadků běžet téměř neustále, aby byly k dispozici čisté segmenty.
- LFS neumožňuje momentka nebo verzování, i když obě funkce jsou triviální, aby se obecně implementovaly v souborových systémech se strukturou protokolu.
Poznámky
- Seltzer, Margo; Bostic, Keith; McKusick, Marshall Kirk; Staelin, Carl (leden 1993), „Implementace systému souborů strukturovaných podle protokolů pro UNIX“ (PDF), Proceedings of the 1993 Winter Usenix
- Matthews, Jeanna Neefe; Roselli, Drew; Costello, Adam M .; Wang, Randolph Y .; Anderson, Thomas E. (říjen 1997), „Zlepšení výkonu souborových systémů se strukturou protokolu pomocí adaptivních metod“, SOSP '97 Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles: 238–251, doi:10.1145/268998.266700, ISBN 978-0897919166
Reference
- ^ Bouyer, Manuel (2007-12-15). „NetBSD 4.0 Release CHANGELOG“. Citováno 2019-02-04..
- ^ A b Rosenblum, Mendel; Ousterhout, John K (únor 1992), „Návrh a implementace souborového systému strukturovaného podle protokolu“ (PDF), Transakce ACM v počítačových systémech, 10 (1): 26–52, doi:10.1145/146941.146943.
- ^ Rosenblum, Mendel; Ousterhout, John K (červen 1990), „Správce úložiště LFS“ (PDF), Sborník z léta 1990 Usenix: 315–324.