1. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
The Design and Implementation of a
Log-Structured File System
Gioele Ciaparrone, Luca Vitale
Sistemi Operativi Avanzati A.A. 2015/2016
Corso di Laurea Magistrale in Informatica
Prof. Giuseppe Cattaneo
29 Aprile 2016
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 1 / 51
2. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Overview
1 Introduzione
Autori
Contesto storico
Definizione del problema
2 Log-structured file system
Introduzione
Gestione dello spazio libero
Crash recovery
3 Analisi delle prestazioni
Sistema utilizzato per i benchmark
Risultati
4 Conclusioni
5 Riferimenti
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 2 / 51
3. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Autori
Mendel Rosenblum
1992: Ph.D. in CS all’University of
California, Berkeley
1998: Cofondatore di VMware
Attualmente professore a Stanford nei
dipartimenti di Computer Science ed
Electrical Engineering
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 3 / 51
4. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Autori
John Ousterhout
1980: Ph.D. in CS alla Carnagie Mellon
University
1994-1998: sviluppatore del linguaggio
Tcl alla Sun Mycrosystems
Attualmente professore di CS alla
Stanford University e chairman di
Electric Cloud Inc.
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 4 / 51
5. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Contesto storico
Breve storia dei file system
1968 – George 3 [6]
1980 – FAT12 [4]
1984 – FAT16 [4], Berkeley Fast File System [9]
1992 – Sprite Log-structured File System (LFS) [10]
1993 – NTFS [8], ext2 [1]
1996 – FAT32 [4]
2001 – ext3 [2]
2006 – ext4 [3]
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 5 / 51
6. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Definizione del problema
Cos’è un file system
File system
Un file system è l’insieme delle strutture dati necessarie per la
memorizzazione, l’organizzazione gerarchica, la
manipolazione, la navigazione, l’accesso e la lettura dei dati.
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 6 / 51
7. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Definizione del problema
Problema
Miglioramento velocità CPU vs. latenza accesso al disco
Le applicazioni tenderanno ad essere più I/O bound
Fondamentale ottimizzare l’utilizzo del disco
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 7 / 51
8. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Definizione del problema
Design di un file system
Il design di un file system è guidato da due forze fondamentali:
Tecnologia
Workload
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 8 / 51
9. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Definizione del problema
Tecnologia
Tre componenti tecnologiche determinano l’efficienza di un file
system:
Velocità della CPU
Capacità e latenza della RAM
Bandwidth e tempo di accesso al disco
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 9 / 51
10. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Definizione del problema
Workload
Due tipologie di workload:
Ufficio: accessi casuali a tanti piccoli file
Supercomputing: accesso sequenziale a grandi file
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 10 / 51
11. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Definizione del problema
Problemi dei file system tradizionali
Dati sparsi sul disco
In UNIX FFS 5 seek per creare un file
Utilizzato solo 5% della bandwidth
Operazione di write sincrona
Scrittura di tanti piccoli file rallentata
Soluzione: Sprite LFS
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 11 / 51
12. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Introduzione
Sprite LFS
Log-structured file system
È un file system in cui dati e metadati vengono scritti
sequenzialmente in un buffer circolare, chiamato log.
Ogni sequenza di cambiamenti viene bufferizzata in cache
e poi scritta sequenzialmente sul log (disco)
Miglioramento delle performance in scrittura
Si evitano sincronizzazioni
Una sola seek per ogni svuotamento della cache
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 12 / 51
13. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Introduzione
Lettura di un file I
La lettura di un file non richiede accesso sequenziale al log
Per individuare i blocchi di un file si usa l’inode
inode
È una struttura dati sul file system che archivia e descrive
attributi base di file e directory, tra cui anche la posizione dei
blocchi di dati che li compongono.
L’inode utilizzato da Sprite LFS ha la stessa struttura di
quello di Unix FFS
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 13 / 51
14. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Introduzione
Lettura di un file II
Ad ogni file (o directory) è associato un inode
A differenza di Unix, gli inode non sono in posizioni fisse
Si usa quindi un’inode map, che mantiene gli indirizzi fisici
degli inode per ogni file
I blocchi dell’inode map sono scritti nel log e il loro indirizzo
è salvato in una regione fissa del disco
L’inode map viene mantenuta in cache, evitando frequenti
accessi al disco
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 14 / 51
15. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Introduzione
Esempio: creazione di due file
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 15 / 51
16. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Problema dello spazio libero
Il problema principale di un log-structured file system è
quello di mantenere grandi sezioni contigue di spazio
libero su disco
Esistono due opzioni per gestire la frammentazione dello
spazio libero:
Threading
Copying
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 16 / 51
17. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Threading e copying I
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 17 / 51
18. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Threading e copying II
Lo svantaggio del threading è che serve più di una seek
per scrivere dati nel log
Non è più veloce di un file system tradizionale
Lo svantaggio del copying è che la copiatura dei blocchi di
dati può richiedere molto tempo
Sprite LFS sceglie quindi una combinazione di threading e
copying
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 18 / 51
19. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Threading e copying III
Il disco viene diviso in grandi sezioni di grandezza fissa
chiamate segmenti
I dati vengono scritti sequenzialmente dall’inizio alla fine di
ogni segmento
Prima di poter riscrivere dati in un segmento, i dati live
devono essere ricopiati fuori da esso
Il threading viene effettuato a livello dei segmenti
Segmenti abbastanza grandi da sfruttare la larghezza di
banda del disco
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 19 / 51
20. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Meccanismo di pulitura dei segmenti I
Pulitura dei segmenti
È il processo di copia di blocchi di dati live all’esterno di un
segmento.
L’obiettivo è quello di aumentare il numero di segmenti
vuoti
Sprite LFS non utilizza bitmap o liste per tener traccia dei
blocchi liberi
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 20 / 51
21. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Meccanismo di pulitura dei segmenti II
Processo composto da tre fasi:
Lettura di un certo numero di segmenti
Identificazione dei blocchi di dati live
Riscrittura dei dati live in un numero minore di segmenti
I segmenti letti vengono quindi marcati come puliti e
possono essere utilizzati per la scrittura di nuovi dati
Per identificare i dati live in ogni segmento viene scritto un
segment summary block, che indica per ogni blocco del
segmento l’id del file a cui appartiene, il numero del blocco
e la versione del file
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 21 / 51
22. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Politiche di pulitura I
1 Quando eseguire la pulitura dei segmenti?
2 Quanti segmenti pulire ogni volta?
3 Quali segmenti pulire?
4 Come raggruppare i blocchi di dati live quando vengono
ricopiati?
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 22 / 51
23. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Politiche di pulitura II
Le scelte 1 e 2 non hanno influenzato particolarmente le
prestazioni del sistema
Le scelte 3 e 4 si sono rivelate fondamentali
Per confrontare le prestazioni è stato introdotto il concetto
di write cost, che ci dà un’informazione sulla bandwidth
del disco effettivamente utilizzata per scrivere nuovi dati
write cost =
total bytes read and written
new data written
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 23 / 51
24. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Politiche di pulitura III
Se per ogni scrittura si effettuasse una pulitura dei
segmenti, avremmo un write cost pari a 2/(1 − u)
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 24 / 51
25. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Obiettivo
Per migliorare le performance del sistema è necessario
ottenere una distribuzione bimodale della frazione di dati
live dei segmenti
Molti segmenti quasi pieni e molti segmenti quasi vuoti
Per ottenere questa distribuzione vediamo come scegliere
i segmenti da pulire e come raggruppare i dati live ricopiati
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 25 / 51
26. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Simulazione del sistema I
Sono state simulate le prestazioni del sistema modellando
un file system con tanti file da 4KB ciascuno
Sono stati modificati i file seguendo due pattern diversi:
Uniforme – stessa probabilità di modifica di ogni file
Hot-and-cold – 90% dei file modificati il 10% delle volte e il
restante 10% modificato il 90% delle volte (località)
Scelta greedy dei segmenti da pulire: i più vuoti
I dati live sono stati ricopiati nello stesso ordine nel caso
uniforme e ordinati per età nel caso hot-and-cold
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 26 / 51
27. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Simulazione del sistema II
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 27 / 51
28. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Problema della scelta greedy
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 28 / 51
29. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Soluzione: cost-benefit policy
I segmenti con dati modificati raramente (cold) tendono a
mantenere molto spazio libero per molto tempo
La soluzione è dare più peso allo spazio libero dei
segmenti cold
Politica cost-benefit:
benefit
cost
=
free space generated ∗ age of data
cost
=
(1 − u) ∗ age
1 + u
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 29 / 51
30. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Effetti della cost-benefit policy I
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 30 / 51
31. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Gestione dello spazio libero
Effetti della cost-benefit policy II
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 31 / 51
32. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Crash recovery
Crash recovery
Nei file system tradizionali in caso di crash del sistema è
necessario effettuare una scansione di tutto il file system
per risolvere le inconsistenze
Nei LFS è facile determinare la posizione delle ultime
operazioni effettuate sul disco: recovery più veloce
Sprite LFS utilizza due strumenti per la recovery:
Checkpoint
Roll-forward
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 32 / 51
33. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Crash recovery
Checkpoint I
Checkpoint
È la posizione nel log fino alla quale tutte le strutture dati del file
system sono consistenti e complete.
Dopo aver scritto i dati sul disco, viene aggiornata la
checkpoint region, salvata in una posizione fissa del
disco
La checkpoint region contiene i dati che permettono di
verificare la consistenza del sistema (tra cui data e
posizione dell’ultima operazione effettuata)
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 33 / 51
34. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Crash recovery
Checkpoint II
Sprite LFS effettua checkpoint a intervalli periodici e
quando il file system viene smontato
La lunghezza degli intervalli influenza l’overhead di
scrittura e la quantità di dati da recuperare in caso di crash
Lunghi intervalli: meno overhead, ma più tempo per la
recovery
Brevi intervalli: più overhead, ma minor costo di recovery
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 34 / 51
35. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Crash recovery
Roll-forward
Invece di scartare tutte le modifiche effettuate dopo l’ultimo
checkpoint, possiamo cercare di recuperare i dati
Sprite LFS scansiona quindi i dati dopo l’ultimo checkpoint
(roll-forward)
Utilizza quindi i dati presenti nei segment summary block
per tentare di ripristinare quante più informazioni possibili
Per garantire la consistenza delle directory, utilizza un
directory operation log, che salva le modifiche effettuate
alle directory prima di riscrivere gli inode
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 35 / 51
36. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Sistema utilizzato per i benchmark
Implementazione di Sprite LFS
L’implementazione di Sprite LFS non è risultata più
complicata dei file system tradizionali come Unix FFS
La versione utilizzata per i test non implementava il
roll-forward
Intervallo tra i checkpoint di 30 secondi
Nell’uso di tutti i giorni gli utenti non hanno percepito
differenze con Unix FFS, probabilmente perché le
macchine non erano abbastanza veloci da essere
I/O-bound
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 36 / 51
37. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Sistema utilizzato per i benchmark
Sistema utilizzato I
Benchmark eseguiti su Sun 4/260
CPU con IU Fujitsu SF9010 e FPU
Weitek 1164/1165, 16.67 MHz
32 MB RAM
HDD: Wren IV, bandwidth 1.3 MB/s,
latenza 17.5 ms, 300 MB
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 37 / 51
38. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Sistema utilizzato per i benchmark
Sistema utilizzato II
Confronto tra Sprite LFS e SunOS 4.0.3
Blocchi da 8 KB su SunOS, da 4 KB su Sprite LFS con
segmenti da 1 MB
Multiutente
Caso ottimo: nessuna pulitura dei segmenti durante i
benchmark
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 38 / 51
39. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Risultati
Performance su file piccoli
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 39 / 51
40. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Risultati
Performance su file grandi
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 40 / 51
41. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Risultati
Simulazione con overhead di pulitura I
Per valutare l’overhead causato dalla pulitura dei segmenti,
è stato effettuato un test su un sistema reale per un
periodo di 4 mesi
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 41 / 51
42. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Risultati
Simulazione con overhead di pulitura II
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 42 / 51
43. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Risultati
Performance di crash recovery
Usato un sistema con intervallo di checkpoint infinito e che
non salvava le modifiche alle directory
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 43 / 51
44. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Conclusioni I
Il principio fondamentale di un log-structured file system è
quello di scrivere i nuovi dati in cache, per poi scriverli su
disco in un’unica grande operazione di I/O
Massimizzazione della bandwidth usata per scrivere dati
nuovi
È possibile ottenere bassi costi di overhead di pulitura con
la cost-benefit policy
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 44 / 51
45. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Conclusioni II
Performance migliori dei file system esistenti su piccoli file
Performance simili o migliori su grandi file tranne in pochi
casi (lettura sequenziale di file scritti random)
Sistema più CPU-bound: miglioramento delle performance
con l’aumento delle prestazioni delle CPU
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 45 / 51
46. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
I log-structured file system oggi I
L’idea del log viene sfruttata attualmente nei journaling
file system [5]
NTFS, ext3+, UFS dal 2004
Tuttavia il log mantiene solo le modifiche al file system, ma
non include i blocchi di dati
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 46 / 51
47. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
I log-structured file system oggi II
I log-structured file system sono utili su device che hanno
un numero limitato di scritture in ogni locazione perché
diminuiscono il numero di scritture eseguite nella stessa
locazione [7]
UDF (dischi ottici)
LogFS, YAFFS, F2FS (memorie flash)
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 47 / 51
48. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Riferimenti I
Ext2.
https://en.wikipedia.org/wiki/Ext2.
Accessed: 2016-04-22.
Ext3.
https://en.wikipedia.org/wiki/Ext3.
Accessed: 2016-04-22.
Ext4.
https://en.wikipedia.org/wiki/Ext4.
Accessed: 2016-04-22.
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 48 / 51
49. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Riferimenti II
File Allocation Table.
https:
//en.wikipedia.org/wiki/File_Allocation_Table.
Accessed: 2016-04-22.
Journaling.
https://it.wikipedia.org/wiki/Journaling.
Accessed: 2016-04-27.
List of default file systems.
https://en.wikipedia.org/wiki/List_of_default_
file_systems.
Accessed: 2016-04-22.
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 49 / 51
50. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Riferimenti III
List of log-structured file systems.
https://en.wikipedia.org/wiki/List_of_
log-structured_file_systems.
Accessed: 2016-04-27.
NTFS.
https://en.wikipedia.org/wiki/NTFS.
Accessed: 2016-04-22.
M. K. McCusick, W. N. Joy, S. J. Leffler, and R. S. Fabry.
A Fast File System for UNIX.
1984.
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 50 / 51
51. Introduzione Log-structured file system Analisi delle prestazioni Conclusioni Riferimenti
Riferimenti IV
Mendel Rosenblum and John Ousterhout.
The design and implementation of a log-structured file
system.
1992.
Università degli Studi di Salerno Log-Structured File System 29 Aprile 2016 51 / 51