Journalointi

Journalointi on tiedostojärjestelmän mekanismi, jossa tiedostojärjestelmä ylläpitää erikoistunutta tiedostoa (loki, journali), jolla voidaan korjata epäjohdonmukaisuudet tiedostojärjestelmässä. Tarve korjauksille johtuu yleensä tietokoneen epänormaalista sammuttamisesta virransyötön häiriön tai ohjelmistovian seurauksena.

Tiedostojärjestelmät vaativat useita vaiheita yksinkertaiseen kirjoitusoperaatioon:
 lohkojen varaaminen tiedolle
 lohko-osoittimien päivittäminen
 tiedoston koon päivittäminen
 itse tiedon kirjoittaminen

Järjestelmän keskeyttäminen ennen operaatioiden valmistumista johtaa levyjärjestelmän korruptoitumiseen (ei-eheään tilaan).

Journaloinnin tavoite on tehdä tiedostojärjestelmästä vikasietoisempi ja välttää korruptoitumista. Menetelmä toimii pitämällä journalissa tiedossa muutoksia, jotka ovat tulossa tiedostojärjestelmään, jolloin journalin tietoihin palaamalla vältetään järjestelmän korruptoituminen. Ennen muutoksia levyllä oleviin tietoihin journaliin kirjoitetaan tehtävät muutokset. Kun journaliin on tallennettu täydet tiedot (merkitään ”commit record” tiedolla) voi käyttöjärjestelmä tehdä päivitykset levylle omaan tahtiin. Koska kiintolevyillä on suuret välimuistit ja ne voivat järjestää operaatiota uudelleen on journalin päivityksestä oltava erityisen huolellinen.

Journalointia kutsutaan myös etukäteen kirjoitettavaksi logiksi (). Journalointi voidaan toteuttaa fyysisenä tai loogisena: fyysisessä kaikki kirjoitetaan kahdesti, joka voi olla hidasta, kun taas loogisessa journaloinnissa vain metadata kirjoitetaan journaliin.

Journalointia voidaan käyttää eri toimintatiloissa:
 writeback mode -tilassa vain metatieto journaloidaan ja varsinaiset datalohkot kirjoitetaan suoraan paikalleen levylle
 ordered mode -tilassa vain metatieto journaloidaan mutta datalohkot kirjoitetaan ennen metatiedon journalointia
 data mode -tilassa sekä metatieto että varsinainen data journaloidaan, jolloin kaikki tieto kirjoitetaan kahdesti

Ilman journalointia tiedostojärjestelmän eheyttäminen erilaisilla työkaluilla, kuten fsck Unixin kaltaisissa järjestelmissä, on hitaampaa eikä välttämättä yhtä tuloksellista.

Historia 
IBM esitteli JFS:n (nykyisin nimellä JFS1) vuonna 1990 AIX-käyttöjärjestelmään ja myöhemmin sen toinen versio JFS2 julkaistiin AIXille, OS/2:lle ja Linuxille. Silicon Graphics esitteli XFS:n vuonna 1994 IRIX:lle ja myöhemmin myös Linuxille. Amigalle julkaistiin Smart File System vuonna 1998, mutta julkaistiin myöhemmin myös Linuxille. Ext3 kehitettiin ext2:n laajennuksena ja on ollut tuettuna Linuxissa vuodesta 2001 lähtien. Ext4 on kehitetty taaksepäin- ja eteenpäinyhteensopivana.

BeOSille kehitettiin BFS vuonna 1997 ja julkaistiin myöhemmin Haiku-käyttöjärjestelmälle.

Journalointia pidetään neljännen sukupolven tiedostojärjestelmän ominaisuutena.

Tiedostojärjestelmät 
Journalointia tukevia tiedostojärjestelmiä on kehitetty lukuisia, eräitä esimerkkejä:
 AdvFS (Digital)
 Btrfs (Oracle)
 Ext3 ja Ext4
 JFS (IBM)
 NTFS (Microsoft)
 Smart File System
 Veritas File System
 XFS (SGI)
 ZFS (Sun)

Vaihtoehtoiset ratkaisut 
Menetelmälle on kehitetty myös vaihtoehtoja kuten ”pehmeät päivitykset” (Soft Updates).

Useat eri tahot ovat esitelleet konsepteja transaktiopohjaisista tiedostojärjestelmistä.

Haihtumattomaan muistiin tallennuksen yhteydessä tarve journaliin kirjoitukselle on vähäisempi ja on kehitetty useita vaihtoehtoja kirjoitusoperaatioiden vähentämiseen.

Katso myös 
 ACID
 Tietokanta

Lähteet 

Tiedostojärjestelmät