Dimensione Ottimale dei Data Block
Recap:
Un data block (blocco dati) è l'unità minima di spazio su disco utilizzata per memorizzare i dati di un file. Quando un file viene salvato, i suoi dati vengono suddivisi in blocchi, che rappresentano porzioni di spazio fisico sul disco.
La scelta della dimensione del data block è cruciale per bilanciare l’efficienza dello spazio e le prestazioni del sistema di I/O.
Problemi di Dimensione del Data Block
- Data-block troppo grandi:
- Vantaggi: Maggiore velocità di I/O (data rate elevato) (minor numero di blocchi a cui accedere)
- Svantaggi: Spreco di spazio (frammentazione interna).
- Data-block troppo piccoli:
- Vantaggi: Uso efficiente dello spazio disco
- Svantaggi: I/O più lento a causa di un maggior numero di accessi su disco (maggior numero di blocchi a cui accedere)
Trovare un Compromesso
- Grafico del Tanenbaum:
- Mostra 2 funzioni, per trovare un compromesso
- maggior velocità di accesso, dovuto al minor numero di blocchi
- numero di accessi su disco, da contenere (che riflette la dimensione del datablock)
- La dimensione ottimale si trova all’incrocio tra i due grafici e tipicamente è una potenza di 2.
- Dimensioni comuni:
- Per file system moderni, il valore tipico è 4 KB per garantire un buon compromesso tra velocità e utilizzo dello spazio
Gestione Consistenza nei File System (tipi di inconsistenze)
Quando un sistema riparte dopo un crash:
- se è journaled, riesce a correggere molti errori automaticamente.
- Se il sistema non riesce a risolvere gli errori, l’utente deve avviare manualmente il programma FSCK (File System Consistency Check).
Come FSCK Controlla il File System
Esamina i blocchi 1 ad 1
FSCK costruisce due liste per verificare lo stato dei blocchi:
- Lista dei blocchi occupati:
- Si scandiscono gli i-node per identificare quali blocchi sono utilizzati dai file.
- Ogni blocco referenziato aumenta un contatore in un array.
- Lista dei blocchi liberi:
- Derivata dalla bitmap o dalla free list memorizzata su disco.
Le due liste vengono confrontate:
ogni blocco deve essere libero o occupato una sola volta.
Tipi di Inconsistenze e Soluzioni
- Blocco né libero né occupato
- Soluzione: Il blocco è considerato libero e viene aggiunto alla free list.
- Blocco sia libero che occupato
- Soluzione: L’errore è attribuito alla free list, quindi il blocco viene marcato come occupato.
- Blocco duplicato nella free list:
- Soluzione: Si rimuove una delle copie dalla free list.
- Blocco referenziato da 2 i-node (2 file):
- Problema serio: I dati del blocco non possono appartenere a due file diversi (2 Inode).
- Soluzione:
- Si duplica il contenuto del blocco in un nuovo blocco libero.
- Una copia viene assegnata a ciascun file (I-NODE), così puntano a blocchi differenti
- Uno dei due file viene segnalato come sospetto e spostato nella directory Lost and Found, dove l’utente può ispezionarlo e decidere cosa fare.
Disk Caching: Gestione della Cache su Disco
Serve per migliorare le prestazioni di accesso ai dati.
Per gestire la cache su disco, puoi utilizzare diverse politiche di sostituzione dei dati nella cache. Una politica è la LRU, che tiene traccia dell'ordine di accesso ai datablock e rimuove quelli meno recentemente utilizzati quando la cache è piena.
Per velocizzare l'accesso ai datablock nella cache, puoi utilizzare una tabella hash per indicizzare i numeri di datablock.
Questo evita la necessità di scorrere l'intera lista linkata (LRU) per trovare il datablock desiderato.
Quindi, hai essenzialmente due strutture dati: la lista linkata per mantenere l'ordine di accesso e la tabella hash per un accesso rapido