Introduzione a Logical Volume Manager (LVM)

Un Logical Volume Manager permette ad un sistema operativo di utilizzare dei dispositivi logici virtuali per l'accesso al disco che mascherano la natura dei dispositivi fisici (hard disk) su cui risiedono i dati.
In pratica è possibile utilizzare un device virtuale di cui possono fare parte diversi hard disk fisici, anche di natura, velocità e dimensioni diverse.
I vantaggi di un simile approccio alla gestione del file systems sono maggiore scalabilità, alta disponibilità del servizio, ridondanza e in alcuni casi migliori prestazioni.
L'implementazione LVM su Linux (dalla version 2.4 è presente nel thread ufficiale del kernel) è stata sviluppata dalla software house Sistina e mette a disposizioni features quali:
- Possibilità di modificare i volumi logici online, senza interruzione del servizio (utile, ad esempio, per ampliare una partizione virtuale);
- Gestione di molteplici gruppi di volumi logici;
- Funzionalità di mirroring, striping o concatening;
- Possibilità di eseguire snapshot in tempo reale senza smontare la partizione (fondamentale per operazioni di backup);
- Strumenti di gestione in command line semplici da usare;
- Supporto per software di High availability.

I vantaggi di usare un sistema LVM esistono sia su sistemi piccoli che grandi:
- su sistemi di piccole dimensioni (workstation o server con pochi hard disk) LVM permette di gestire più agilmente lo spazio su disco: ridimensionare una partizione fisica troppo piena di dati è problematico e pericoloso, mentre è semplice ed immediato cambiare le dimensioni di un volume logico.
- su sistemi di grandi dimensioni, con numerosi dischi fissi da gestire, è possibile ottimizzare meglio lo storage, modificarne le dimensioni o sostituire dischi guasti senza interrompere il servizio.

Le componenti basilari di LVM sono:
- Volume Group (VG) I gruppi di volume, sono il livello di astrazione più alta, contengono volumi fisici e logici.
- Physical Volume (PV) Di fatto sono i singoli hard disk o le loro partizioni, ogni HD o partizione è un PV (ma anche un /dev/md0 lo può essere, in quanto si presenta come device autonomo e singolo)
- Logical Volume (LV) Si presenta come un device a blocchi standard, è paragonabile ad una partizione di un hard disk ed è quello che viene referenziato come mount device per una data directory e che va formattato con il filesystem che si desidera.
- Physical Extent (PE) Ogni volume fisico viene diviso in blocchi di dati di dimensione fisse, chiamati "physical extent". Questi sono associati (1 a 1) con i:
- Logical Extent (LE) I blocchi di dati, della stessa dimensione, con cui è diviso un volume logico. Diversi volumi logici possono avere LE di dimensioni diverse, ma sempre uguali all'interno dello stesso volume.

In termini pratici, per mettere in piedi un sistema basato su LVM:
- Si creano dei volumi fisici, definendoli sulla base di hard disk o partizioni esistenti con il comando pvcreate
- Si crea un volume group, con due o più volumi fisici, con il comando vgcreate. Se in tempi successivi si devono aggiungere nuovi volumi fisici al gruppo si può usare il comando vgextend
- In un volume group esistente si possono creare i volumi logici veri e propri, con il comando lvcreate
- Il volume logico creato si presenta come un device a blocchi con nome tipo /dev/nome_vg/nome_lv, che può essere normalmente formattato con il filesystem che si desidera (ext2, ext3, reiserfs...) e montato nella directory che si desidera (/home, /var ...) come una normale partizione.

In un Volume Group possono esistere svariati Logical Volume che possono essere facilmente ridimensionati, rimossi, creati, rinominati. Facendo un paragone con un normale hard disk e la logica con cui viene usato su un sistema Unix, i LV è come se fossero delle partizioni "flessibili" di un disco fisso (il VG) a "capienza variabile", in quanto composto da un numero modificabile di dischi fisici.

La mappatura fra Psysical Extent e Logical Extend, le unità di storage minime, può essere impostata in due diversi modi:
- Linear. I LE di un LV vengono mappati sequenzialmente ai PE di uno o più PV. In pratica un volume logico composto da due volumi fisici, avrà, ad esempio, i LE da 1 a 100 che coincidono con i PE da 1 a 100 (sempre di uguali dimensioni) sul primo volume fisico e i LE da 101 a 200 che coincidono con i PE da 1 a 100 sul secondo volume fisico.
- Striped. Analogamente ad un Raid 1, i LE verranno mappati alternativamente su PE di diversi volumi fisici. In questo modo le performance potrebbero migliorare (in particolare se si usano volumi fisici su bus diversi) ma una volta impostati inizialmente, con questo metodo non è più possibile aggiungere volumi fisici ad un volume logico.

Molte distribuzioni presentano LVM come un modulo del kernel: lvm-mod (Per caricarlo, nel caso non avvenga automaticamente: modprobe lvm.mod) e provvedono all'avvio, nel caso in cui sia configurato un volume group,  ad eseguire gli script di setup:
vgscan Esegue uno scan di tutti i dischi in cerca di volume groups e crea i database con le impostazioni di base per tutti gli altri comandi lvm: /etc/lvmtab e directroy /etc/lvmtab.d/
vgchange -ay Attiva i volume group conosciuti dal sistema.
Allo shutdown del sistema è opportuno dare il comando (già previsto nelle distribuzioni che supportano nativamente LVM):
vgchange -an Disattiva i volume group conosciuti dal sistema.

Per diagnosticare cosa succede è utile la directory /proc/lvm/ con i suoi contenuti che a loro volta forniscono dati simili a quelli che si possono ottenere con comandi come lvdisplay, vgdisplay e pvdisplay.

Privacy Policy