Nicola D'Agostino (.net) - Articoli, traduzioni, grafica, web

Hacking through OS X IV – Filesystem Journaled su Mac

Journaling: un diario di sicurezza per il disco fisso. Scopriamo la recente funzione del filesystem di OS X, pensata per i server, ma interessante anche per l’utente comune.

di Nicola D’Agostino

Journaling: cosa è, a cosa (e a chi) serve.

Dalla versione 10.2.2 Mac OS X ha visto l’introduzione ufficiale di una funzione di journaling per i dischi e le partizioni nel formato HFS+ (Extended Mac OS, in Italia Mac OS esteso).

Il journaling (nome in codice "Elvis") è una funzione già disponibile su alcuni sistemi operativi come Linux, OS/2 e lo sfortunato BeOS ed è una funzione con cui il computer mantiene un log, o un "journal" (letteralmente un diario), da cui il nome, cioé "tiene traccia" di tutte le operazioni che compie sul disco fisso. Lo scopo è quello di facilitare il ripristino dei dati, ad esempio dopo un crash o dopo una interruzione di corrente. Con un filesystem di tipo "journaled" è molto facile quindi riportare la macchina allo stato in cui era prima del malfunzionamento senza la necessità di usare (ed aspettare l’esito di) strumenti per controllare e riparare problemi alla struttura software dei dischi.

La Apple ha introdotto e raccomanda (e fornisce l’assistenza) del journaling sulle versioni Server di OSX e più avanti vedremo anche come gestire questa funzionalità. Il journaling viene consigliato come misura addizionale (possibilmente in congiunzione a un sistema di dischi RAID ridondante, gruppi di continuità e frequenti backup) su macchine server che hanno esigenze e caratteristiche particolari. Queste inoltre sono meglio attrezzate come hardware e software (più memoria, dischi più veloci e con cache ottimizzata) a sopportare lo stress maggiorato che il journaling impone all’hard disk e processore.

Ciò non vuol dire che non sia possibile farne uso anche sulle "semplici" macchine con la versione client di OS X, anzi. A patto di avere montata parecchia RAM (pena l’entrata in conflitto con la funzione di memoria virtuale) e di accettare una lieve diminuzione delle prestazioni generali, anche le macchine "casalinghe" possono trarre giovamento da un livello di sicurezza e tranquillità maggiori che il journaling offre. E’ il caso ad esempio per chi ha un portatile e espelle per errore la batteria mentre non è collegato all’alimentazione, o abita in una zona suscettibile a black-out o ancora si "dimentica" di smontare uno share SMB.

Filesystems journaled: verso il futuro.

Il journaling fa in realtà parte di una serie di miglioramenti incrementali delle caratteristiche del filesystem HFS+ (nome in codice "Sequoia") del Mac OS e, garantendo la piena compatibilità all’indietro, si inquadra in una precisa strategia tecnologica della Apple.

Questa strategia si basa sul concetto di trattare l’intero filesystem come un database ed è comune all’implementazione del journaling in altre piattaforme, come l’Ext3 di Linux, il JFS di HP-UX, AIX e OS/2 5 e sopratutto il BeFS, il filesystem del BeOS. Chi ha avuto modo di provare lo sfortunato sistema fondato dall’ex capo ingegnere Apple Jean Louis Gasseé forse avrà notato che in BeOS la gestione, ricerca e reperimento di documenti di vari tipi è efficace e rapida. questo succede perché il sistema in realtà organizza il contenuto dell’hard disk sotto forma di base di dati, interrogabile in qualsiasi momento secondo criteri definiti dall’utente.
Un concetto molto valido, tant’è che qualcosa del genere è in preparazione anche a Redmond: il prossimo Windows, chiamato Longhorn, avrà un filesystem di questo tipo, basato sul database Microsoft SQL.
Ma la Apple non sta a guardare e ha assunto Dominic Giampaolo, autore del filesystem del BeOS, ora parte del team di sviluppo Mac OS X, e i bene informati assicurano che il futuro del filesystem dei Macintosh ci riserverà (piacevoli) sorprese.

Journaling in pratica: attivazione, disattivazione e impressioni d’uso.

Il journaling può essere implementato senza bisogno di formattare il disco rigido, a patto che questo sia in formato HFS+ (e non HFS o UFS). Allo stesso modo non è necessario intraprendere complicate installazioni o aggiornamenti del sistema operativo: in OS X Server è disponibile una comoda interfaccia grafica per la gestione del Journaling.

attivare journaling

E’ sufficiente usare il programma della Apple per la gestione di dischi (allegato in ogni installazione di sistema) "Disk Utility" e selezionare (nella versione inglese) il pulsante in basso "Make journaled".

HFS+ con journaling

Nel caso che il disco o la partizione non siano nel formato giusto, nel terzo tab in alto, dal titolo "Erase" si può provvedere a riformattare e scegliere da subito un formato journaled.

Nel caso che non ci si trovi sulla versione server, possiamo usare il già citato tool multiuso Cocktail, che, tra le ultime funzioni, ha implementato anche l’attivazione (e disattivazione) del journaling per le versioni client.

Cocktail attiva journaling

Naturalmente, trattandosi di OS X, è possibile usare anche metodi più diretti e tipici di UNIX. Il journaling infatti è attivabile anche da linea di comando e può essere gestito anche in remoto tramite una collegamento SSH (Secure Shell).
Il programma nella shell che fa al caso nostro è "diskutil". Digitando nel Terminale:

/usr/sbin/diskutil

ci apparirà la schermata informativa del Disk Utility Tool con i comandi e le varie opzioni, tra cui

diskutil info /percorsodeldiscoopartizionescelta

che ci fornisce informazioni su dischi e partizioni ma sopratutto le due opzioni:

enableJournal (Enable HFS+ journaling on a mounted HFS+ volume)

disableJournal (Disable HFS+ journaling on a mounted HFS+ volume)

Per abilitare il journaling bisogna digitare

sudo diskutil enableJournal /percorsodeldiscoopartizionescelta

Un esempio di attivazione sul disco principale può essere:

[ndas-Computer:~] nda% sudo diskutil enableJournal /

Una volta dato invio e fornita la password di amministratore il computer si metterà al lavoro per qualche istante e, seguito da alcune informazioni sullo spazio occupato genererà il messaggio di conferma:

Journaling has been enabled on /

Per disattivare nulla di più semplice che digitare:

sudo diskutil disableJournal /

nel caso di un crash il sistema al riavvio comunicherà di aver fatto un "replay" del journal, cioé di essere tornato indietro nel log, il diario delle azioni, che l’OS tiene del disco. Questo non vuol dire che l’integrità del filesystem sia garantita sempre e comunque. In alcuni rari casi può essere comunque necessario riavviare in single-user mode e usare utility di terze parti o impostare da Terminale il comando

fsck_hfs -f /dev/nomedeldisco

Considerazioni sull’uso.

Come già detto il journaling ha un costo in termini di prestazioni.

Quantificare questo costo è difficile in quanto dipende da una serie di fattori: alcune fonti parlano di un rallentamento fino al 20% nel caso di MacOS X client.
Altre fonti parlano di un calo di performance nullo o comunque trascurabile, intorno al 5%, sopratutto in presenza di forti quantità di memoria RAM (un giga circa), il che previene sopratutto l’uso della memoria virtuale, un’opzione meno che ottimale in quanto questa si "litiga" l’accesso al disco con il journaling.

In ultima analisi la valutazione è soggettiva: per qualcuno i vantaggi possono valere il "performance hit" mentre per altri, più attenti in fatto di backup, una macchina meno reattiva è inaccettabile. A questo punto non resta che provare ad attivare il journaling e valutare pro e contro, sul campo, nell’uso quotidiano.

Approfondimenti (aggiornati ad aprile 2005):

Filesystems-HOWTO
penguin.cz/~mhi/fs/

Mac OS X Server 10.2: About File System Journaling
docs.info.apple.com/article.html?artnum=107249

Mac OS X Server 10.2: How To Journal a Volume or Repair a Journaled Volume
http://docs.info.apple.com/article.html?artnum=107248

Mac OS X Server Technologies – File System Journaling
www.apple.com/server/macosx/pdfs/L24481A_Journaling_TB.pdf

Technical Note TN1150 – HFS Plus Volume Format: Journal

http://developer.apple.com/technotes/tn/tn1150.html#Journal

Una versione di questo articolo è stata pubblicata su "Hacker Journal" n. 31 del 31/07/2003