• Come garantire l’affidabilità del file system?

Le minacce alla affidabilità del file system sono diverse :

  • problemi fisici :
    • guasti del disco : alcuni blocchi possono danneggiarsi e non essere più leggibili, o peggio si rompe il disco e diventa inutilizzabile
    • interruzioni energia : possono causare incongruenze dei dati
  • bug software : errori di programmazione possono portare alla sovrascrittura di altri dati
  • errori umani : es. rm *.o vs rm * .o (cancella qualsiasi cosa in questa cartella e il file .o)
  • perdita o furto
  • malware/ransomware : virus o altri software dannosi che possono cancellare e criptare dati

File system backup

La necessità di un backup è data da due motivi :

  • recupero da un disastro
  • recupero dalla stupidità

Fare una copia di Terabyte ogni giorno richiede troppo tempo, per questo si usano due modalità combinate :

  • backup completo : si prende tutto e si copia, solitamente su base settimanale o mensile
  • backup incrementale : copia soli i file modificati o creati dall’ultimo backup completo, riducendo il tempo e lo spazio richiesti

Backup fisico vs logico

Quando il software deve fare il backup ci sono due filosofie di base :

  • backup fisico
  • backup logico
Backup fisico

Nel backup fisico si prende il disco e si copia blocco per blocco, partendo dal blocco 0 fino all’ultimo (copia sequenziale).

Il vantaggio principale è l’efficienza, infatti si tratta di un programma facile e veloce (velocità del disco).

Svantaggi :

  • blocchi danneggiati : necessità di evitare la copia di blocchi danneggiati (ci sono sempre) per prevenire errori in lettura
  • file non necessari : necessità di evitare di copiare file non necessari (es. file paginazione)
  • mancanza flessibilità : non può effettuare backup incrementali e quindi non è possibile ripristinare file individuali senza un intero ripristino del sistema
Backup logico

Questo approccio naviga all’interno del disco, partendo da una directory specifica ed effettua la copia di tutti i file e le directory che sono stati modificati a partire da una data specifica.

Vantaggi :

  • permette di ignorare file di sistema e blocchi danneggiati
  • metodo ideale per il backup incrementale (o completi)
  • consente il recupero di singoli file o directory, grazie alla precisa identificazione dei dati salvati

L’algoritmo di backup logico in UNIX :

  • identifica file e/o directory modificate dall’ultimo backup
  • salva prima la struttura delle directory e poi il contenuto (dati dei file)

Comando rsync

Il comando rsync è utilizzato nei sistemi basati su UNIX per la sincronizzazione di file e directory tra due location diverse :

  • sia su stessa macchina
  • sia tra macchine diverse

È un comando fantastico, perché sincronizza trasferendo solo le parti di file che sono state modificate (o aggiunte) (trasferisce esclusivamente le “differenze”).

Il vantaggio principale è a livello di sicurezza, siccome si appoggia al protocollo SSH per fare in modo che il trasferimento dati tra macchine è criptato.

Per esempio :

  • per sincronizzazione locale (sulla stessa macchina): rsync -av /sorgente/cartella /destinazione/cartella
  • per sincronizzazione remota (verso un altro computer in rete): rsync -av /sorgente/cartella utente@remoto:/destinazione/cartella

rclone.

Per sync su cloud (es. Google Drive) esiste

Coerenza del file system

Mantenere la coerenza del file system è importante per garantire l’integrità dei dati. Di solito i problemi di incoerenza possono sorgere dopo un crash del sistema durante la scrittura dei blocchi.

Per risolvere questi problemi molti OS hanno dei programmi di utilità per verificare e riparare la coerenza, come su UNIX abbiamo fsck e su Windows sfc. Questi programmi sono eseguiti in automatico all’avvio del sistema, sopratutto dopo un arresto anomalo.

File system journaling

L’idea di base è quella di registrare anticipatamente le operazioni che il fs intende eseguire, in un log (il journal), per risolvere il problema dell’incoerenza dei dati che si può verificare a seguito di un crash del sistema.

Il funzionamento si articola in 3 fasi :

  1. fase di registrazione : prima di eseguire una modifica, il fs scrive un record nel journal
  2. fase di esecuzione : fs procede con la modifica effettiva sul disco
  3. fase di conferma : completata la modifica, il fs aggiorna il record nel journal per indicare il successo dell’operazione Se succede un crash prima che la modifica è stata completata, al riavvio il fs troverà l’operazione registrata ma non confermata, e quindi procede a completarla.

Vantaggi :

  • integrità dei dati : riduce la possibilità di corruzione del file system in caso di crash
  • recupero rapido : riduce di molto il tempo di recupero dopo un crash, siccome il fs sa bene cosa deve fare

Esempi di fs journaling sono :

  • NTFS (Windows)
  • ext3/ext4 (Linux)
  • ReiserFS (Linux)

Sicurezza dati

Eliminazione sicura

Nell’eliminazione di un file, in verità non viene eliminato proprio da disco. Per eliminarlo completamente serve distruggere il disco oppure sovrascrivere i dati.

Procedure :

  • dischi : sovrascrivere con sequenze di 0 e numeri casuali, ripetendolo per 3-7 volte
  • SSD : diventa più difficile sovrascrivere (sconsigliato metodo dei dischi)

Cifratura del disco

Per proteggere i dati è meglio cifrare l’intero disco con algoritmi robusti come AES.

Infatti OS come Windows, offrono la cifratura del disco in background (utente non sa).

Implementazione della cifratura :

  • SED (Self-Encrypting Drives) : drives con cifratura integrata
  • AES (Advanced Encryption Standard) : chiave master del volume decifrata con pwd dell’utente

VFS