Cos'è un file system journaling?

Ogni sistema operativo utilizza il proprio file system per memorizzare i dati. Windows utilizza NTFS, macOS utilizza APFS e la maggior parte delle distribuzioni Linux utilizza Ext4. Sebbene questi file system siano fondamentalmente diversi tra loro, una caratteristica comune a tutti è il journaling.
Scopriamo di più sui file system journaling e su come influenzano l’informatica quotidiana.
Cos’è il journaling?
Immagina ogni file su un computer come un catalogo unico di giornali, periodici o documenti. Ogni nuovo numero aggiunto a un catalogo cambierebbe leggermente le sue informazioni. Invece di cercare in tutta la biblioteca un’entrata, devi solo controllare il catalogo pertinente.
Il journaling nei file system informatici funziona in modo molto simile. Il suo scopo è tenere traccia delle modifiche non ancora confermate nel file system. Anche dopo eventuali arresti anomali o spegnimenti imprevisti, puoi ancora accedere all’ultima versione del file con una minore probabilità che diventi corrotto.

Il termine “giornale” deriva dall’analogia con un diario. Qualsiasi modifica registrata in un’entrata del diario viene memorizzata con data e ora. In modo simile, il journaling consente che tutti gli aggiornamenti a un file vengano memorizzati in una porzione contigua del disco.
Questi aggiornamenti non devono trovarsi fisicamente vicini tra loro: in effetti, le voci del file di journal sono sparse in tutto il disco. Ma invece di accedervi in modo casuale, sono disponibili in una sequenza simile a un diario che è migliaia di volte più veloce.

Il journaling risparmia molto tempo nel recupero dei file grazie alle allocazioni di memoria contigue.
Definizioni
A seconda del sistema operativo, ci sono diversi tipi di voci di journaling che discuteremo di seguito. Prima di farlo, dobbiamo chiarire alcuni termini numerici.
Tebibyte (TiB): tutti sappiamo quanto è grande un gigabyte. Un tebibyte (TiB) è equivalente a 1024 (= 210) gigabyte. Il TiB è una delle unità predefinite per esprimere grandi valori nello storage dei file. Inoltre, 1 TiB = 1.09951 terabyte (TB).
Pebibyte (PiB): un pebibyte (PiB) è equivalente a 1024 TiB o circa un milione di gigabyte: un valore davvero grande.
Cluster: i cluster di dati sono la più piccola unità di spazio su disco che può essere utilizzata per memorizzare un file. Può variare da 512 byte per un singolo settore a 64 KB per 128 settori.
1. NTFS
Il New Technology File System (NTFS) è il sistema di journaling predefinito di Microsoft per Windows e Windows Server. Utilizza file di log e informazioni di checkpoint per ripristinare i valori stabili di un file system dopo un riavvio.
NTFS supporta grandi volumi di dati: per una dimensione di cluster di 4 KB, può contenere 16 TiB di dati. Per una dimensione massima di cluster di 64 KB, si tratta di 256 TiB di dati con 256 TiB come dimensione massima del file.
Ogni giorno, NTFS risolve eventuali corruzioni nei file online attraverso quella che è nota come “NTFS auto-guarente”. Gli utenti di Windows 10 potrebbero ricordare un’esperienza di inattività a causa di Chkdsk, che affliggeva le versioni precedenti di Windows. Nell’ultimo aggiornamento di NTFS auto-guarente, il problema è stato risolto online e non si verifica alcun periodo di inattività.
Leggi anche: FAT32 vs. exFAT vs. NTFS: Qual è la differenza?
2. Ext
Il Extended File System (ext) è il sistema di journaling di Linux sin dall’inizio. È stato ispirato dal Unix File System (UFS) e ha subito altre tre iterazioni dal suo arrivo all’inizio degli anni ‘90.
- ext2: originariamente utilizzato in Debian e Red Hat Linux, ext2 è ancora utilizzato in supporti flash come schede SD e unità USB. Può contenere da 2 a 32 TiB di dati con una dimensione massima del cluster di 8 KB.
- ext3: come terzo file system esteso, ext3 è stato utilizzato con Linux, BSD e ReactOS. I limiti di dimensione sono simili a quelli di ext2.
- ext4: l’ultima versione del file system esteso, è utilizzata dallo storage di file di Google, BSD, PowerPC e la maggior parte delle distribuzioni Linux attuali. I limiti di dimensione sono pari a 1024 PiB o circa un milione di TiB. La dimensione massima del cluster è di 64 KB.
ext4 utilizza checksum nel journal per migliorare l’affidabilità, in quanto può evitare in modo sicuro un’attesa I/O disco durante il journaling e migliorare leggermente le prestazioni del disco.
3. APFS
L’Apple File System (APFS) è utilizzato con macOS High Sierra, iOS 10.3 e versioni successive, e alcuni altri sistemi. Supporta fino a 8000 PiB (263 byte), che è circa otto volte maggiore di ext4.

Le capacità principali di APFS sono molte: includono la creazione di “istantanee”, che è come una fotocopia del sistema in un determinato momento. Come NTFS, utilizza checksum per garantire l’integrità dei dati e protegge dagli arresti di sistema utilizzando un approccio chiamato “copy on write”. APFS utilizza la crittografia completa del disco.
Conclusione
Il journaling nei file system è un’assicurazione di base contro arresti di sistema e spegnimenti imprevisti. Scrivendo rapidamente le modifiche in un journal, possiamo garantire che tutte le modifiche ai file siano registrate e non perse durante l’interruzione dell’alimentazione o gli arresti del computer.
Ci sono molti file system journaling oltre a quelli discussi qui. Oracle, VMware, BSD, Cisco, Solaris e molti altri hanno le proprie unità di journal proprietarie.