- 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 *.ovsrm * .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 :
- fase di registrazione : prima di eseguire una modifica, il fs scrive un record nel journal
- fase di esecuzione : fs procede con la modifica effettiva sul disco
- 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
