LVM: Logical Volume Manager: differenze tra le versioni
Wtf (discussione | contributi) |
Wtf (discussione | contributi) m (ha spostato Guida all'LVM a LVM: Logical Volume Manager) |
(Nessuna differenza)
|
Versione delle 11:25, 21 mar 2012
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Il Logical Volume Manager è un software a livello kernel Linux che permette una gestione ed allocazione della memoria sui supporti di memoria in modo flessibile e dinamico, ma soprattutto non limitata allo schema rigido delle partizioni.
La brillante idea da cui derivano tutte le potenzialità di questo strumento è quella di non utilizzare più le partizioni in maniera classica come definite nell'MBR ma di adoperare al posto di queste dei volumi logici virtuali creati e gestiti dall'LVM sui dispositivi assegnategli. In questa maniera, non essendo più vincolati alle partizioni, ne consegue una gestione molto più fluida dei dispositivi di memorizzazione il cui unico limite è l'immaginazione.
ATTENZIONE È buona cosa di norma avere un backup dei propri dati, questo monito vale specialmente per quando si lavora con i filesystem e le partizioni. A buon intenditore poche parole. |
Vantaggi
Tra i principali vantaggi troviamo:
- Libertà di ampliare/ridurre "le partizioni" (il termina corrretto è Logical Volume);
- Possibilità di eseguire snapshot a caldo (senza dover spegnere il computer);
- Possibilità di estendere una partizione su altri supporti di memoria (modalità striped);
- Possibilità di implementare una ridondanza delle partizioni (modalità mirrored);
- Possibilità di trasferire a caldo "le partizioni" (il termina corrretto è Logical Volume) da un supporto fisico ad un altro.
Svantaggi
Si ravvisa un possibilerallentamento della velocità I/O dei supporti di archiviazione seppure molto trascurabile, una maggiore difficoltà in caso di dover recuperare dati dal disco, possibili problemi in fase di boot con alcuni boot loader.
LVM-1 o LVM-2?
Da Lenny in avanti è disponibile la versione LVM2 facilmente installabile con l'omonimo pacchetto. La compatibilità tra la versione 1 e 2 è stata mantenuta ed infatti non dovrebbero esservici problemi per una eventuale migrazione.
In questa guida si è fatto esplicito riferimento a LVM2 ma quasi tutto è replicabile in LVM1.
Ad esempio, una delle possibili differenze tra le due versioni, è il fatto che l'LVM1 permetta snapshot solo in lettura, invece nella 2 sono utilizzabili sia in lettura che scrittura.
Cenni teorici
In questa sezione sono introdotti i principi elementi che compongo l'LVM ed è introdotto il funzionamento dello stesso.
La struttura base dell'LVM
Il LVM basa il proprio funzionamento sulla seguente struttura:
- Volume Group (VG)
- trattasi del più alto livello di astrazione che raggruppa in sé una collezione di Logical Volume e di Physical Device.
- Physical Device (PD)
- sono i nostri supporti di memorizzazione e possono essere di qualsiasi tipo, sia Hard Disk, sia nastri, sia memorie solide ma anche ambienti RAID, etc.
- Logical Volume (LV)
- l'equivalente nel nostro LVM in tutto e per tutto di quella che è una partizione su un Hard Disk. L'unica piccola differenza subito evidente è l'etichetta/label (ad es. /dev/nome-VG/nome-LV invece del canonico /dev/sda1). Come ogni normale partizione il LV può contenere un file system a nostro piacimento.
- Logical Extend (LE)
- seppure difficilmente avremo a che farci direttamente, i LE sono i pezzetti in cui viene suddiviso il LV in modo di poterlo allocare tra i vari PE disponibili al VG.
- Physycal Extent (PE)
- ad esempio, quando vogliamo aggiungere un PD al nostro VG, dobbiamo per prima cosa iniziarlo con il comando pvcreate. Questo comando altro non fa che dividere il supporto in tanti spazi in modo da poter poi creare una corrispondenza tra i LE ed i PE e così allocare lo spazio necessario per i LV.
In modo un po' stilizzato, possiamo descrivere il passaggio dal concetto di partizioni a quello di LV nel seguente modo:
hd1 sda2 (Physical Device - partizioni) \ / \ / server1 (Volume Group) / | \ / | \ / | \ Home Root Dati (Logical Volume)
La spiegazione di come si comporta e funziona l'LVM è già stata tratta nell'e-zine numero 5 di debianizzati.org nello sviluppo dell'articolo LVM mirror. Ecco a seguire il riporto dell'Introduzione teorica all'LVM:
LVM è l'acronimo di Logical Volume Manager, ovvero di Gestore dei Volumi Logici di Linux. Ma quindi cosa sono questi volumi logici? L'idea di fondo è di sostituire al concetto di partizione un diverso contenitore (il Logical Volume) il quale non dipende più dalle limitate informazioni contenibili nell'MBR ma, tramite le gestione del kernel Linux, si può liberamente spostare/raggruppare/estendere da un settore all'altro di ogni disco, quasi come se fosse un file o una cartella all'interno del file system. |
Gestire i Volume Group
Creare
pvcreate /dev/nome_device-nome_partizione
- Inizializza il disco/partizione per essere utilizzato come Volume Group (crea una specie di tabella di partizioni). Se si utilizza il device anche con altri OS si sconsiglia l'uso dell'intero supporto consigliando di utilizzare una partizione, ampia anche come tutto il supporto stesso. Altrimenti altri OS potrebbero non riconoscere il LVM e sovrascriverlo. Tradotto questo significa non usare un comando del tipo pvcreate /dev/sdX, ma piuttosto pvcreate /dev/sdX1, dove sdX1 è l'unica partizione (cui viene riservato l'intero spazio disponibile) presente sul disco sdX.
vgcreate nome_Volume_Group /dev/supporto1 /dev/supporto2 ...
- Crea un Volume Group con un dato nome utilizzando la lista di supporti fisici. Questi devono essere stati prima opportunamente inizializzati con
pvcreate
.
Rimuovere
vgremove nome_Volume_Group
- Rimuovi il Volume Group indicato.
Modificare
vgchange -a y nome_Volume_Group
- Attiva il Volume Group indicato permettendone l'accesso. Per disattivare il VG usare l'opzione -a n (Avaible No).Con questo comando è possibile anche modificare altre opzioni più specifiche.
vgextend nome_Volume_Group percorso_Physical_Device
- Aggiunge al VG il desiderato PD. Ricordarsi di inizializzare prima il PD con
pvcreate
. Si consigliapvdisplay percorso_Physical_Device
per verificare prima che la partizione/PD sia libera.
vgreduce nome_Volume_Group percorso_Physical_Device
- Toglie il PD dal VG.
Gestire i Logical Volume
Creare
lvcreate -L 1500 -n dati server1
Lvcreate permette di creare i LV. Le opzioni disponibili sono numerose, nell'esempio posto è stato creato un LV di 1.500 Mb, di nome dati ed all'interno del VG server1.
Inoltre è possibile specificare anche su quale PD creare il LV. Basta aggiungere il PATH corrispondente alla fine del comando. Questo può risultare utile in una logica di riduzione dei rischi di perdita di dati.
Creato il LV sarà necessario formattarlo in modo opportuno affinché diventi fruibile.
Rimuovere
umount LogicalVolume_da_rimuovere lvremove LogicalVolume_da_rimuovere
Si noti che, prima di poterlo eliminare, sia necessario smontarlo.
Modificare
lvextend -L +1G LogicalVolumePath
Aumenta di un Giga il LV. In alternativa è possibile indicare con -L 10G
per ampliare fino a 10G totali.
Per terminare la procedura si consiglia se si adotta l'ext2 di smontare prima le partizioni, con l'ext3 non dovrebbero esserci problemi per l'aumento online ma pare che i rischi siano elevati. Premesso ciò, dopo aver ampliato il LV, si può procedere ad adattare anche il filesystem tramite
resize2fs LogicalVolumePath
Ovviamente quest'ultimo comando dipende dal filesystem, ad esempio con xfs si dovrà utilizzare xfs_growfs
lvreduce -L -1G LogicalVolumePath
Riduce di un Giga il LV. Ovviamente, se non si vogliono perdere dati, sarà necessario prima di dare il comando per ridurre il LV:
umount LogicalVolumePath e2fsck LogicalVolumePath (valido solo per i filesystem ext2/ext3/ext4) reduce2fs LogicalVolumePath -1G (valido solo per i filesystem ext2/ext3/ext4)
Spostare i LV da un PD ad un altro
Per spostare i dati usate il comando:
pvmove [--alloc AllocationPolicy] [-i|--interval Seconds] [-v|--verbose] [-n|--name LogicalVolume] [SourcePhysicalVolume[:PE[-PE]...] [DestinationPhysicalVolume[:PE[-PE]...]...]]
Il comando è abbastanza lento nell'esecuzione, a seconda inoltre delle velocità dei device.
Se volete annullare il comando:
pvmove --abort
Se c'è un errore e volete portare a termine l'operazione (proprio senza opzioni):
pvmove
note: pvmove funziona passando in consegna i LV da spostere al device pvmove fino a compimento del lavoro. Potete verificare ciò con il comando pvs oppure lvs -o +deviecs.
Comandi utili per una completa gestione dei file system
In questa sezione sono elencati i comandi non facenti capo a lvm2 ma che sono necessari ai fini di compiere le operazioni specificate nel presente HOWTO.
Lavorare con ext? (ext2, ext3, ext4)
mkfs.ext3 $PATH_LV
Per creare il file system è sufficiente il comando dato. Per altri file system: mkfs.ext2, mkfs.ext4...
Analisi dei supporti di memoria
df $PATH_disco
Disk Free: ndica la quantità di spazio libero.
Casi speciali
Boot Loader e LVM
Al momento Lilo e Grub hanno difficoltà ad accedere al LVM per effettuare il boot. Con Grub2 è possibile risolvere la situazione ed eseguire il boot da LVM. Però considerata l'esiguità della dimensione della cartella /boot consiglio, sia per semplificarsi la vita, sia per una maggiore sicurezza, di posizionare la cartella /boot su una partizione al di fuori del LVM. Questa procedura permette anche di semplificare notevolmente le eventuali operazioni di recupero in caso di MBR danneggiato.
Esempi
Esempio 1
Elenco partizioni sistema
- sda1, swap.
- sda2, "/".
- sda3, "/var".
- sda5, "/home"
- sda6, non specificato.
- sdb1, non specificato; tutto lo spazio del disco sdb è allocato in questa partizione.
Il volume logico comprenderà le sole partizioni sda6 ed sdb1. Si noti che anche qualora fossero stati specificati dei punti di mount per le partizioni sda6 ed sdb1 non sarebbe cambiato nulla, infatti la procedura qui descritta sovrascrive le impostazioni preesistenti (quindi occhio a non includere le partizioni sbagliate).
Inizializzazione
# pvcreate /dev/sda6 /dev/sdb1
Per avere maggiori informazioni:
# pvdisplay
Che restituirà in output qualcosa del tipo:
--- Physical volume --- PV Name /dev/sda6 VG Name discolvm PV Size 93,16 GiB / not usable 2,00 MiB Allocatable yes (but full) PE Size 4,00 MiB Total PE 23848 Free PE 0 Allocated PE 23848 PV UUID ''omesso perché variabile da computer a computer'' --- Physical volume --- PV Name /dev/sdb1 VG Name discolvm PV Size 232,88 GiB / not usable 2,00 MiB Allocatable yes (but full) PE Size 4,00 MiB Total PE 59618 Free PE 0 Allocated PE 59618 PV UUID ''omesso perché variabile da computer a computer''
Creazione Gruppo
Creazione di un gruppo di nome discolvm:
# vgcreate discolvm /dev/sda6 /dev/sdb1
Per avere maggiori informazioni (serviranno nel prossimo paragrafo):
# vgdisplay discolvm
Che restituirà in output qualcosa del tipo:
--- Volume group --- VG Name discolvm System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 326,04 GiB PE Size 4,00 MiB Total PE 83466 Alloc PE / Size 83466 / 326,04 GiB Free PE / Size 0 / 0 VG UUID ''omesso perché variabile da computer a computer''
A questo punto dovrebbe essere visibile un dispositivo di nome discolvm sotto /dev.
Creazione Volumi
Per creare un volume di nome logico che consumi l'intero spazio del gruppo precedentemente creato:
# lvcreate -l 83466 discolvm -n logico
L'opzione -l permette di specificare il quantitativo di spazio da allocare in PE (si veda la voce Total PE per consocere il totale disponibile) invece che in GB, MB, ecc. Questa scelta è dovuta al fatto che personalmente ho riscontrato problemi ad allocare il corretto quantitativo di spazio esprimendolo in GB. Per allocare lo spazio in GB è sufficiente usare l'opzione --size, ad esempio per creare un volume logico1 da 250 GB sarebbe stato sufficiente digitare:
# lvcreate -size 250G discolvm -n logico1
Tutti i volumi creati compaiono sotto /dev/discolvm. A questo punto è sufficiente formattare il o i volumi creati in modo del tutto standard, per esempio volendo usare un file system ext4:
# mkfs.ext4 /dev/discolvm/logico
Montare i Volumi
Si tratta di un operazione anch'essa assolutamente standard, basta creare un punto di mount per ogni volume e quindi montarli. Es.:
# mkdir /home/lvm # mount /dev/discolvm/logico /home/lvm
Per montare i volumi automaticamente all'avvio come sempre è sufficiente editare il file /etc/fstab ed aggiungere una riga del tipo:
UUID=''omesso perché variabile da computer a computer'' /home/lvm ext4 defaults 0 2
Per ottenere l'UUID di un volume è sufficiente usare il comando blkid /dev/, ad esempio:
blkid /dev/discolvm/logico
Approfondimenti
Debianizzati
- LVM Mirrored, come ottenere i medesimi vantaggi di un sistema RAID (Redundant Array of Independent Disks). La guida illustra come eseguire semplici esperimenti su una macchina virtuale per testare le funzionalità di LVM, procedendo dapprima all'installazione su LVM, all'attivazione della modalità mirrored e quindi all'intervento in caso di guasto di un disco fisso mostrando come sostituire l'Hard Disk danneggiato e ripristinare la situazione iniziale di sicurezza.
- Installazione in LVM
- Mirror
Sitografia
Guida scritta da: Risca86 21:04, 29 mar 2010 (CEST) | Debianized 40% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |