LVM: Logical Volume Group
LVM è un gestore di volumi che permette di organizzare in modo più logico le partizioni sulla nostra Linux Box.
Uno dei problemi che affligge il classico sistema di partizionamento è la difficolta di ridimensionare la dimensione delle partizioni create. In passato ci dovevamo affidare a tool di terze parti o spostare tutti i dati delle partizioni in un disco capiente, riorganizzare le partizioni e travasare nuovamente i dati. Con LVM si supera questa difficoltà in quanto al posto delle partizioni vengono creati dei volumi logici che possono essere ridimensionati facimente ed anche “a caldo”.
Con LVM è possibile creare un volume unendo uno o più dischi fisici in modo da avere un unico grande volume. Un'altra caratteristica degna di nota e che LVM offre anche la possibilità di creare degli “snapshot” in modo da ripristinare facilmente i nostri dati.
Con LVM abbiamo:
- Physical Volume: Uno o più dischi che vanno a creare il Volume Group
- Volume Group: Il contenitore dei Logical Volume
- Logical Volume: Volume che contiene i nostri dati, paragonabile alla vecchia partizione.
Schema di esempio
Physical volumes | ||||
---|---|---|---|---|
Disco 1 | Disco 2 | |||
/dev/sda (100GB) | /dev/sdb (100GB) | |||
/dev/sda1 (50GB) | /dev/sda2 (50GB) | /dev/sdb1 (50GB) | /dev/sdb2 (50GB) | |
Volume Group | ||||
/dev/storage (/dev/sda + /dev/sdb = 200GB) | ||||
Logical Volume | ||||
/dev/storage/root (20GB) | /dev/storage/home (80GB) | /dev/storage/log (10GB) | /dev/storage/backup (40GB) | /dev/storage/web (50GB) |
Nell'esempio qui sopra abbiamo due dischi da 100GB l'uno partizionati a sua volta con due volumi da 50GB. Da questi due dischi è stato creato un unico volume da 200GB. Successivamente sono stati creati diversi volumi logici.
Avvertenze
Utilizzate i comandi descritti in questo articolo con cautela in quanto stiamo lavorando con i dischi e se qualcosa va storto possiamo perdere i nostri dati. Se siamo in vena di esperimenti prendiamo una penna USB vuota!
Installare LVM
Prima di iniziare è necessario verificare che sul nostro sistema sia installato il pacchetto lvm2
.
La maggior parte delle distribuzioni inseriscono di default il pacchetto nell'installazione base.
Il pacchetto LVM mette a disposizione diversi comandi per amministrare i nostri volumi LVM.
Comando | Descrizione | |
---|---|---|
Physical Volume | pvcreate | Inizializza un disco per LVM |
pvscan | Elenca tutti i volumi fisici presenti nel nostro sitema | |
pvdisplay | Mostra le informazioni sui volumi fisici presenti nel nostro sitema | |
Volume Group | vgcreate | Crea un gruppo di volumi LVM |
vgscan | Elenca tutti i gruppi di volumi presenti nel nostro sitema | |
vgdisplay | Mostra le informazioni sui gruppi di volumi presenti nel nostro sitema | |
vgextend | Aggiunge uno o più volumi fisici ad un gruppo di volumi gia esistente | |
vgreduce | Rimuove uno o più volumi fisici da un gruppo di volumi | |
Logical Volume | lvcreate | Crea un volume logico |
lvscan | Elenca tutti i volumi logici presenti nel nostro sitema | |
lvdisplay | Mostra le informazioni sui volumi logici presenti nel nostro sitema |
Partizionare i dischi
Il prossimo passo è creare con fdisk
o cfdisk
una partizione di tipo Linux LVM
(identificativo 8E
o 0x08e
) sul disco che abbiamo intenzione di usare con LVM.
Creiamo il Physical Volume
Il prossimo passo è inizializzare il disco con il comando pvcreate
. Questo comando riserva un'area di dati sul disco per permettere ad LVM per scrivere le informazioni necessarie per gestire il volume.
# pvcreate /dev/sda
Se dobbiamo utilizzare più dischi con LVM è possibile indicare nello stesso comando più dispositivi:
# pvcreate /dev/sda /dev/sdb1
Creiamo il Volume Group
Adesso creiamo il gruppo di volumi ed assegnamogli un nome.
# vgcreate storage /dev/sda
Creiamo i Logical Volume
Prossimo passo è creare i singoli volumi logici dimensionandoli in base alle nostre necessità.
# lvcreate storage -L 10G -n root # lvcreate storage -L 5G -n swap # lvcreate storage -L 50G -n home
Nell'esempio abbiamo creato 3 volumi logici chiamati root (da 10G), swap (da 5G) e home (da 50G).
Per assegnare ad un volume tutto lo spazio rimasto sul VolumeGroup possiamo usare il comando con questa sintassi:
# lvcreate storage -l 100%FREE -n home
Formattiamo le partizioni
Ultimo importante passo è formattare le partizioni con il filesystem più adatto allo scopo del volume. Ad esempio:
# mkfs.ext4 /dev/storage/root # mkswap /dev/storage/swap # mkfs.ext4 /dev/storage/home
Ultimi ritocchi
Editiamo /etc/fstab
Se abbiamo creato dei volumi con LVM per installare la nostra distribuzione assicuriamoci che /etc/fstab
sia configurato correttamente.
LVM su dischi rimuovibili
Se al posto di un disco rigido abbiamo utilizzato un HD portatile o pennetta USB prima di rimuoverlo completamente è necessario disattivare il VolumeGroup altrimenti avremo una serie di errori:
# vgchange -an storage [...] /dev/storage/home: read failed after 0 of 4096 at 10737352704: Errore di input/output /dev/storage/home: read failed after 0 of 4096 at 10737410048: Errore di input/output /dev/storage/home: read failed after 0 of 4096 at 0: Errore di input/output /dev/storage/home: read failed after 0 of 4096 at 4096: Errore di input/output
Per disattivare il VolumeGroup:
# vgchange -an storage
Nel caso fosse necessario attivarlo:
# vgchange -ay storage