LVM
Un “Logical Volume Manager” è un sistema di virtualizzazione dello storage che prevede un unico punto di accumulo
dello storage tramite il raggruppamento di tan dischi fino al raggiungimento della dimensione adeguata alle proprie
necessità, che è ridimensionabile e ges bile flessibilmente a livello logico. Prevede 3 livelli:
Primo livello: lo strato basso dove sono i dischi fisici, un disco viene messo dentro il sistema di storage (che
può essere un server o un pc, non necessariamente parte di un MNAS) e viene forma ato dividendolo in
unità discrete, andando a definire quello che viene chiamato un “Physical Volume” con le unità date dalla
suddivisione in piccoli blocchi, di dimensione eguale nell’intero LVM, al suo interno che prendono invece il
nome di “Physical extent”.
Secondo livello: i PV, per poter essere u lizza , vanno aggrega , cioè presi e messi dentro ad un “Volume
Group” dedicato solitamente all’amministrazione di un qualcosa (es. un database), qui il sistema non vede
più dischi singoli (sda, sdb), ma un'unica risorsa di spazio per ges re lo storage. Non è ancora presente un file
system a questo livello. Anche il VG viene diviso in unità discrete che possono coincidere o no con le unità
discrete del PV (i PE), per esempio si potrebbero avere corrispondenze del po 2:1 (2 VE per 1 PE), e
prendono la dicitura di “Volume Extent” (in sostanza perme ono di ges re virtualmente i PE).
Terzo livello: lo strato alto dove si ha il file system, se si immagina il VG come una torta, se ne taglia una fe a
grande quanto serve de a “Logical Volume” con all’interno i “Logical Extent”, il LV è l’equivalente
virtualizzato di un disco con cui si può fare tu o quello che si fa con i dischi con file system (es. par zioni,
ecc.), non serve sapere com’è fa o lo storage fisico, quando si ha bisogno di più storage si “prende più torta”
e la si integra al resto della torta che si è già presa, se si raggiunge la capacità massima si comprano altri hard
disk al primo livello e di nuovo si “ha più torta”. Il LVM man ene delle tabelle durante le operazioni che
tengono delle corrispondenze tra LE e VE e tra VE e PE, un “doppio salto” che perme e di arrivare al dato
fisico sul disco.
RAID
È una metodologia per cui non ci si affida alla durabilità e sicurezza in generale dei dischi e si prende
dell’hardware (un controller) a cui si a acano due dischi che appaiono al SO come un unico disposi vo.
Ne esistono più pi:
-RAID-0: punta a migliorare le prestazioni. I da vengono divisi in blocchi (striping) e i blocchi vengono
distribui su due o più dischi. I dischi scrivono (o leggono) i rispe vi blocchi in parallelo e
contemporaneamente (A1 sul disco 1 e A2 sul disco 2 nello stesso istante), raddoppiando la velocità di
trasferimento. Si hanno però dei rischi importan nel caso in cui uno dei due dischi dovesse rompersi: si
perdono i da e si rimane solo con metà di essi, che è comunque inu lizzabile (A2 con ene parte dei da che
completano A1 e così via). Per risolvere si possono tenere due backup dei da presen nel RAID-0, una su
cloud e una su un disco locale. Tu avia, ques backup non cos tuiscono una ridondanza in tempo reale del
sistema, ma solo una possibilità di ripris no.
-RAID-1: non ci si concentra sulla velocità ma sulla ridondanza (immediata), infa un dato scri o finisce su
entrambi i dischi (mirroring).
-RAID-5: combina il principio dello striping (del RAID-0) per le prestazioni e come il mirroring (del RAID-1),
anche il RAID-5 protegge dal guasto di un disco, ma invece di duplicare tu o, usa un trucco matema co (XOR)
per essere più efficiente con lo spazio. I da e i codici di parità sono suddivisi (a livello di blocchi) e distribui
su tu i dischi. I codici di parità sono un meccanismo di controllo degli errori che perme e di rilevare la
perdita o la corruzione di da . I bit di parità (calcola tramite operazione XOR sui blocchi corrisponden degli
altri dischi) vengono scri a rotazione su ogni disco. I da sul disco guasto possono
essere ricostrui u lizzando l'operazione XOR sui da e sulla parità rimanen dai dischi supers . Una volta
sos tuito fisicamente il disco guasto, vengono ricostrui i da originali sul nuovo disco (può comunque
richiedere molto tempo), durante la quale il sistema è ancora opera vo. Il RAID-5 è intrinsecamente più
sicuro di un LVM in termini di protezione dai guas fisici dei dischi. Il LVM da solo non offre alcuna
protezione; i da risiedono "così come sono" sui dischi fisici so ostan , è necessario combinarlo con una
soluzione di ridondanza so ostante (ad es. questo po di RAID)
Es. di calcolo di parità
Blocco A1 su Disco 1: 0110
Blocco A2 su Disco 2: 1100
Blocco A3 su Disco 3: 1010
Blocco (dedicato allo stripe con i blocchi A1, A2, A3; con parità P(A)) su Disco 4: 0000
La parità è data dallo XOR del blocco A, con il B e il C:
A: 0110
XOR B: 1100 (ricordiamo che lo XOR tra due bit vale 1 solo quando i bit sono diversi)
= 1010
XOR C: 1010
= 0000
Supponendo che il Disco 2 si guas , perdendo il blocco A2, si calcola A2 = A1 XOR A3, cioè 1100, XOR P, cioè
1100, ed effe vamente A2 corrispondeva a 1100.
Il problema: i qua ro dischi devono essere tu iden ci per dimensione, numero di pia , ecc., se devo
scrivere un blocco e trovare il corrispondente sugli altri dischi, ques devono essere nella stessa posizione, se
compro un disco e il SO deve rimanere opera vo per anni, la probabilità di trovare quello stesso disco
disponibile per l’acquisto è pra camente zero, si deve cambiare tu o il RAID oppure farselo costruire
appositamente però entrambe le opzioni hanno cos esorbitan rispe o a comprare un disco qualunque.
Una soluzione più efficiente è data da quello che si è de o sull’u lizzo delle tabelle delle corrispondenze nel LVM, si
possono aggregare dischi anche con dimensioni e cara eris che diverse in base alle necessità e, tramite funzionalità
come lo striping e la concatenazione (cioè l’unione sequenziale dello spazio dei dischi), si possono realizzare
configurazioni equivalen a un “RAID basato su LVM”, senza le rigidità piche dei RAID tradizionali.
Ma c’è un altro problema: la strategia di backup. È essenziale mantenere mul pli backup dello stesso dato su
suppor di natura diversa, con almeno una copia conservata "fuori sede" (off-site), cioè fisicamente in un'altra
loca on. Il collo di bo glia in questo processo è il trasferimento dei da dallo storage primario ai suppor di backup,
che richiede molto tempo. Questo è un problema insostenibile per servizi che devono rimanere opera vi 24/7, come
ad es. Ne lix o server aziendali. Il LVM offre per queste ragioni la funzionalità di snapshot:
1. Congelamento dello Stato: si me e lo storage in uno stato di congelamento (freeze) tramite comandi del
sistema. Non si blocca l'esecuzione dei processi o la scri ura di nuovi da , ma si "fotografa" lo stato coerente
del file system in un istante preciso.
2. Creazione dello Snapshot: viene creato un volume snapshot speciale, che funge da area di differenza (delta).
Tu e le nuove operazioni di scri ura successive al congelamento vengono reindirizzate e “parcheggiate” in
quest'area, mentre i da originali rimangono inta .
3. Backup Trasparente: l'immagine che il sistema "vede" è composta dai da originali congela + tu
i delta accumula nell'area snapshot. In questo stato, si può avviare il backup sicuro dei da originali, senza
fermare il servizio.
4. Rilascio e Sincronizzazione: al termine del backup, si "scongela" il file system, si elimina lo snapshot e tu e le
operazioni parcheggiate nell'area delta vengono propagate (merged) nel file system principale. Il servizio ha
con nuato a funzionare senza disservizi.
Ges one e o mizzazione del file system
Per memorizzare file di n byte sono possibili due strategie:
-Allocazione di n byte consecu vi su spazio disco: se il file aumenta di dimensione dovrà probabilmente
essere spostato.
-Suddivisione del file in un numero di blocchi di dimensione fissa non necessariamente con gui: scegliamo
questa strada per il mo vo appena descri o.
Se il disco fosse una torta, il se ore è un singolo "pezzo" di uno degli anelli della torta. Una traccia è composta da
mol se ori (è un anello circolare su una faccia del pia o del disco su cui poggia la tes na di le ura/scri ura), il
cilindro è l'insieme di tracce alla stessa distanza dal centro su tu i pia del disco. I dischi hanno più pia impila
uno sull'altro, immaginando di prendere la traccia numero 10 sul pia o superiore, la traccia numero 10 sul pia o
centrale e la traccia numero 10 su quello inferiore, insieme, queste formano un cilindro. Tu e queste componen
sono candidate come unità di allocazione. Tu avia, scegliendo un’unità di allocazione troppo grande, si finisce per
sprecare spazio, dato che per file piccoli viene comunque riservata più memoria (la stessa per ogni file), mentre se è
troppo piccola si spreca tempo, dato che bisogna distribuire la maggior parte dei file su molteplici blocchi (quindi più
ricerche e ritardi di rotazione).
Esiste un confli o intrinseco tra velocità di trasferimento da ed u lizzo dello spazio del disco. Con blocchi piccoli si
ha un migliore u lizzo dello spazio, poiché viene minimizzata la frammentazione interna, ma aumentano i tempi di
ricerca e i ritardi di rotazione, viceversa, con blocchi grandi si ha più velocità di trasferimento da ma un u lizzo dello
spazio meno efficiente.
Considerazioni sui blocchi liberi
-Perché non usare sovrascrivere il blocco riempiendolo di zeri per marcarlo come libero?
Un blocco pieno di zeri non è necessariamente libero. Potrebbe contenere da validi di un file (ad
esempio, una matrice di zeri).
Cancellare un file sovrascrivendo i suoi blocchi con zeri è uno spreco di risorse (tempo e cicli di I/O).
Per tenere traccia dei blocchi liberi vi sono due metodi:
-Usare una lista collegata di blocchi del disco: ognuno di ques con ene tan numeri di blocchi di disco liberi
quanto possibile, es. con un blocco di 1KB (1024 byte) e indirizzi da 32 bit, cioè 4 byte, si hanno 1020 byte
disponibili per memorizzare i numeri dei blocchi liberi (1020 – 4 byte del puntatore al successivo), 1020 / 4 =
255 blocchi liberi che si possono memorizzare nella “free list”. Per non occupare ulteriore memoria si usano
blocchi liberi per memorizzare la lista dei blocchi liberi (ad es. nel superblock). Basta prendere il primo blocc
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.