Žurnálovací systém souborů: Porovnání verzí

Smazaný obsah Přidaný obsah
m link fix
mBez shrnutí editace
Řádek 5:
V obecném smyslu označujeme žurnálováním vytváření libovolných podrobných záznamů o prováděné činnosti ([[log (počítač)|logů]]).
 
== Popis funkce ==
 
Souborové systémy jsou velmi komplexními [[Abstraktní datový typ|datovými strukturami]]. Při změně v [[soubor]]ech nebo [[adresář]]ích je nutné vykonat řadu jednotlivých ([[Atomicita|atomických]]) [[Operace (počítače)|operací]], což může vést k problému se [[Race condition|souběhem]] (anglicky ''race condition''). Sérii jednotlivých operací, které je potřeba provést, nazýváme [[Transakční zpracování|transakce]].
 
Při přerušení transakce může dojít k tomu, že data na disku ztratí integritu (jsou narušeny vazby, které data spojují ve smysluplný celek). Uvedení dat do opětovné integrity znamená naplánovanou transakci dokončit nebo se vrátit k původnímu stavu před započetím transakce. Žurnálování umožňuje velmi rychle a bezpečně uvést souborový systém do konzistentního stavu.
 
Souborové systémy, které žurnálování nepodporují, je nutné kompletně zkrontrolovatzkontrolovat speciálním programem (např. [[scandisk]], [[fsck]]), což je časově velmi náročná operace a může to navíc způsobit ztrátu dostupnosti dat, které nebyly havárií postiženy přímo.
 
== Princip žurnálu ==
 
== Princip žurnálu ==
Žurnál je pro ochranu prováděné transakce využíván následujícím způsobem:
 
Řádek 24 ⟶ 22:
Pokud dojde v kterémkoliv okamžiku k přerušení, je možné pomocí dat uvedených v žurnálu uvést systém souborů do konzistentního stavu buď návratem zpět ke stavu před započetím transakce nebo dokončením přerušené transakce.
 
== Optimalizace ==
 
Žurnál je obvykle umístěn na speciálním místě souborového systému a je umístěn tak, aby zabíral souvislý prostor (srovnej s [[Fragmentace (informatika)|fragmentací]]). Může to být i obyčejný soubor ([[ext3]]), avšak obvykle je označen jako systémový a je běžnému uživateli skryt, aby nemohl být snadno poškozen.
 
Pro zvýšení výkonu je někdy možné umístit žurnál na jiný disk. Speciálním případem jsou systémy souborů, které jsou navrženy tak, že žurnál nepotřebují a odstraňují tak problém dvojitého zápisu na disk. Jsou to například tzv. soft updates v [[UFS]] nebo souborové systémy založené na principu zápisu do logu.
 
=== Žurnálování metadat ===
 
Žurnálování snižuje výkonnost souborového systému při zápisu dat, protože všechna data musí být zapsána dvakrát (nejprve do žurnálu, pak do souborového systému). Podstatné zvýšení výkonu je možné dosáhnout žurnálováním pouze [[Metadata|metadat]] (tj. informací, které popisují umístění dat na disku), které umožní velmi rychlou opravu souborového systému po pádu systému, avšak neřeší problém pádu samotných programů. Navíc může dojít k nekonzistenci mezi daty a metadaty.
 
Je-li použito žurnálování pouze metadat (např. u NTFS, nebo implicitní stav u ext3), může se stát, že při prodlužování souboru je při pádu systému ochráněno zvětšení délky souboru a alokace potřebných datových bloků na disku, avšak samotný zápis není dokončen. V takovém případě by v souboru byla v místě prodloužení pouze náhodná data. Proto [[operační systém]] v tomto případě zajišťuje, že zápis dat na disk proběhne před zápisem metadat. Některá zařízení však mohou pro zvýšení výkonu pořadí zapisovaných dat měnit (technologie NCQ u pevných disků), což opět přináší výše zmíněné riziko, které musí operační systém ošetřit (např. čekáním na potvrzení zápisu od pevného disku nebo nuceným vylitím cache pevného disku).
 
== Souborové systémy se žurnálováním ==
 
Mezi souborové systémy podporující žurnálování patří např. [[NTFS]], [[XFS]], [[HFS+]], [[ext3]], [[ReiserFS]] nebo [[ZFS]].