Journaling
# Journaling

In informatica il journaling è una tecnica utilizzata da molti file system moderni per preservare l'integrità dei dati da eventuali cadute di tensione. Derivata dal mondo dei database, il journaling si basa infatti sul concetto di transazione dove ogni scrittura su disco è interpretata dal file system come tale.

## Descrizione

Quando un applicativo invia dei dati al file system per memorizzarli su disco, questo prima memorizza le operazioni che intende fare su un file di log e in seguito provvede a effettuare le scritture sul disco rigido, quindi registra sul file di log le operazioni che sono state effettuate.

In caso di caduta di tensione durante la scrittura del disco rigido, al riavvio del sistema operativo il file system non dovrà far altro che analizzare il file di log per determinare quali sono le operazioni che non sono state terminate e quindi sarà in grado di correggere gli errori presenti nella struttura del file system. Poiché nel file di log vengono memorizzate solo le informazioni che riguardano la struttura del disco (metadati), un'eventuale caduta di tensione elimina i dati che si stavano salvando, ma non rende incoerente il file system.

I più diffusi file system dotati di journaling sono: NTFS, ext3, ext4, ReiserFS, XFS, Journaled File System (JFS), VxFS, HFS+, ZFS.

## Lista dei filesystem con journaling

* AIX:
   * JFS
   * VxFS (di terze parti da: Veritas Software)
* Apple Mac OS:
   * HFS+ (Il journaling è stato implementato a partire da Mac OS X 10.2.2.)
* HP-UX:
   * VxFS (Conosciuto nei sistemi HP come "JFS", ma differisce dal JFS di IBM)
* IRIX:
   * XFS
* Supportati da Linux:
   * ext3
   * ext4
   * JFS
   * NSS (Porting di Novell su SuSE Linux nel 2005)
   * NTFS (Linux 2.6.10-r1 ha limitate capacità di lettura scrittura del filesystem NTFS. Esistono soluzioni commerciali, si sta inoltre affermando il programma GNU/GPL Captive).
   * ReiserFS
   * Reiser4
   * VxFS (di terze parti da: Veritas Software)
   * XFS
* Microsoft Windows NT e OS successivi:
   * NTFS
* Novell NetWare 5.0 e versioni successive:
   * NSS
* OpenVMS:
   * ODS-5
* OS/2:
   * JFS
* Supportati da Sun Microsystems Solaris:
   * UFS Logging
   * VxFS (di terze parti da: Veritas Software)
   * ZFS
* Supportati da Amiga e MorphOS:
   * SFS
* Supportati da BeOS e ZetaOS
   * BFS (File system Journaled a 64 bit)
