Žurnálovací súborový systém

Žurnálovací súborový systém alebo Žurnálovací systém súborov zapisuje zmeny, ktoré majú byť v počítačovom systéme súborov prevedené, do špeciálneho záznamu nazývaného žurnál (). Žurnál je obvykle realizovaný ako cirkulárny buffer a jeho účelom je ochrániť dáta na pevnom disku pred stratou integrity v prípade neočakávaných havárií (výpadok napájania, neočakávané prerušenie vykonávaného programu, pád systému a pod.).
Vo všeobecnom zmysle označujeme žurnálovaním vytváranie ľubovoľných podrobných záznamov o prevádzanej činnosti (logov).
Opis funkcie.
Súborové systémy sú veľmi komplexnými dátovými štruktúrami. Pri zmene v súboroch alebo adresároch je nutné vykonať radu jednotlivých (atomických) operácií, čo môže viesť k problému so súbehom (po anglicky "race condition"). Sériu jednotlivých operácií, ktoré je potreba previesť, nazývame transakcia.
Pri prerušení transakcie môže dôjsť k tomu, že dáta na disku stratia integritu (sú narušené väzby, ktoré dáta spojujú v zmysluplný celok). Uvedenie dát do opätovnej integrity znamená naplánovanú transakciu dokončiť alebo sa vrátiť k pôvodnému stavu pred začatím transakcie. Žurnálovanie umožňuje veľmi rýchle a bezpečne uviesť súborový systém do konzistentného stavu.
Súborové systémy, ktoré žurnálovanie nepodporujú, je nutné kompletne skontrolovať špeciálnym programom (napr. scandisk, fsck), čo je časovo veľmi náročná operácia a môže to navyše spôsobiť stratu dostupnosti dát, ktoré neboli haváriou postihnuté priamo.
Princíp žurnálu.
Žurnál je pre ochranu prevádzanej transakcie využívaný nasledujúcim spôsobom:
Pokiaľ dôjde v ktoromkoľvek okamihu k prerušeniu, je možné pomocou dát uvedených v žurnále uviesť systém súborov do konzistentného stavu buď návratom späť k stavu pred začatím transakcie alebo dokončením prerušenej transakcie.
Optimalizácia.
Žurnál je obvykle umiestnený na špeciálnom mieste súborového systému a je umiestnený tak, aby zaberal súvislý priestor (porovnaj s fragmentáciou). Môže to byť aj obyčajný súbor (ext3), ale obvykle je označený ako systémový a je bežnému užívateľovi skrytý, aby nemohol byť ľahko poškodený.
Pre zvýšenie výkonu je niekedy možné umiestniť žurnál na iný disk. Špeciálnym prípadom sú systémy súborov, ktoré sú navrhnuté tak, že žurnál nepotrebujú a odstraňujú tak problém dvojitého zápisu na disk. Sú to napríklad tzv. soft updates v UFS alebo súborové systémy založené na princípe zápisu do logu.
Žurnálovanie metadát.
Žurnálovanie znižuje výkonnosť súborového systému pri zápise dát, pretože všetky dáta musia byť zapísané dvakrát (najprv do žurnálu, potom do súborového systému). Podstatné zvýšenie výkonu je možné dosiahnuť žurnálovaním len metadát (t. j. informácií, ktoré popisujú umiestnenie dát na disku), ktoré umožní veľmi rýchlu opravu súborového systému po páde systému, ale nerieši problém pádu samotných programov. Navyše môže dôjsť k nekonzistencii medzi dátami a metadátami.
Ak je použité žurnálovanie len metadát (napr. u NTFS, alebo implicitný stav u ext3), môže sa stať, že pri predlžovaní súboru je pri páde systému ochránené zväčšenie dĺžky súboru a alokácia potrebných dátových blokov na disku, ale samotný zápis nie je dokončený. V takom prípade by v súbore boli v mieste predĺženia len náhodné dáta. Preto operačný systém v tomto prípade zaisťuje, že zápis dát na disk prebehne pred zápisom metadát. Niektoré zariadenia však môžu pre zvýšenie výkonu poradie zapisovaných dát meniť (technológia NCQ pri pevných diskoch), čo opäť prináša vyššie zmienené riziko, ktoré musí operačný systém ošetriť (napr. čakaním na potvrdenie zápisu od pevného disku alebo núteným vyliatím cache pevného disku).
Súborové systémy so žurnálovaním.
Žurnálovanie podporuje v systémoch Windows NT súborový systém NTFS (FAT žurnálovanie nepodporuje), v systéme Mac OS X podporuje žurnálovanie súborový systém HFS+, v Linuxe potom ext3, ext4, ReiserFS, XFS (od firmy SGI), JFS (od firmy IBM), v systéme Solaris je to ZFS atď.