Lavorare con LVM

LVM è un sistema di gestione dello spazio su disco con un ulteriore grado di astrazione dal livello fisico. Consente una gestione flessibile ed efficiente dello spazio su disco, la tolleranza ai guasti dei dati e aiuta anche a risolvere vari compiti di backup dei dati, distribuzione di sistemi di archiviazione per ambienti di virtualizzazione e così via.

In questo articolo vedremo come installare e utilizzare LVM in Linux.

Installazione

LVM è solitamente installato con il sistema operativo Linux, ma se non lo è, è possibile installarlo utilizzando il gestore di pacchetti della distribuzione Linux. Per la maggior parte delle distribuzioni, il comando per installare LVM sarà simile a questo:

Per Debian o Ubuntu:

sudo apt-get install lvm2

Per CentOS, Fedora e RHEL:

sudo yum install lvm2

Creare volumi fisici

Prima di creare volumi logici, è necessario creare volumi fisici (pv). Un volume fisico è un dispositivo virtuale, come un disco rigido o una partizione del disco, che LVM usa per creare i volumi logici.

Nota: si consiglia di creare i volumi fisici sopra il disco rigido senza usare il partizionamento, perché altrimenti il processo di ridimensionamento dinamico di LVM diventa più complicato a lungo andare.

Per creare un volume fisico, procedere come segue:

Utilizzare il comando pvcreate per creare un volume fisico:

sudo pvcreate /dev/sdb

Dove /dev/sdb è il percorso del dispositivo fisico.

2. Controllare il volume fisico creato con il comando pvdisplay:

sudo pvdisplay

Nell'output vengono visualizzate le informazioni sul volume fisico creato.

Creazione di un gruppo di volumi fisici

Un gruppo di volumi fisici (vg) è un contenitore logico che può combinare diversi volumi fisici in un gruppo comune. Tuttavia, nulla impedisce di utilizzarlo all'interno di un singolo volume fisico. Per creare un gruppo di volumi fisici, procedere come segue:

1. utilizzare il comando vgcreate per creare un gruppo di volumi fisici:

sudo vgcreate vg0 /dev/sdb
# либо для нескольких pv
sudo vgcreate vg0 /dev/sdb /dev/sdc

Creare un volume logico

Ora è possibile creare volumi logici, che possono essere convenzionalmente rappresentati come partizioni su un disco rigido.

1. Create un volume logico nel gruppo di volumi fisici utilizzando il comando lvcreate :

sudo lvcreate -n lv0 -L 10G vg0 # Создание логического тома lv0 размером 10 ГБ в группе физических томов vg0

Dove -n è il nome del volume logico, -L è la dimensione del volume logico.

2. Controllare il volume logico creato con il comando lvdisplay:

sudo lvdisplay

Verranno visualizzate le informazioni sul volume logico creato.

3. Creare un file system sul volume logico con il comando mkfs:

sudo mkfs.ext4 /dev/vg0/lv0

4. Creare un punto di montaggio per il nuovo file system usando il comando mkdir:

sudo mkdir /mnt/lv0

5. Montare il nuovo file system sul punto di montaggio usando il comando mount:

sudo mount /dev/vg0/lv0 /mnt/lv0

Ora è possibile utilizzare il nuovo file system situato sul volume logico.

Uso di LVM

LVM fornisce molti comandi per la gestione dei volumi fisici, dei gruppi di volumi fisici e dei volumi logici. Di seguito sono elencati alcuni dei comandi più utilizzati:

  • pvcreate: Crea un nuovo volume fisico.
  • pvdisplay: Visualizza le informazioni sui volumi fisici.
  • vgcreate: Crea un nuovo gruppo di volumi fisici.
  • vgextend: Aggiunge un volume fisico a un gruppo di volumi fisici.
  • vgdisplay: Visualizza le informazioni sui gruppi di volumi fisici.
  • lvcreate: Crea un nuovo volume logico.
  • lvextend: Aumenta le dimensioni di un volume logico.
  • lvdisplay: Visualizza le informazioni sui volumi logici.

LVM consente anche di aumentare le dimensioni dei volumi fisici, dei gruppi di volumi fisici e dei volumi logici mentre il sistema è in funzione. Esistono comandi corrispondenti a questo scopo:

  • pvresize: Ridimensiona un volume fisico.
  • vgresize: Ridimensiona un gruppo di volumi fisici.
  • lvresize: Modifica le dimensioni di un volume logico.

Eseguendo uno qualsiasi dei comandi di cui sopra con il parametro --help sarà possibile familiarizzare con i parametri aggiuntivi degli argomenti del comando.

Controllare la dimensione di un volume logico:

Ad esempio, per aumentare di 5 GB le dimensioni del volume logico lv0 nel gruppo di volumi fisici vg0, utilizzate il comando:

sudo lvresize -L +5G /dev/vg0/lv0

o tutto lo spazio libero rimanente sul volume fisico:

sudo lvresize -l +100%FREE /dev/vg0/lv0
Si noti che l'ultimo esempio utilizza la lettera l maiuscola, mentre l'esempio precedente utilizza la lettera L maiuscola.
In questo formato, è possibile impostare una percentuale di spazio libero dallo spazio rimanente sul volume fisico da aggiungere al volume logico.

È quindi possibile ridimensionare il file system al volo utilizzando il comando resize2fs:

sudo resize2fs /dev/vg0/lv0

Istantanee LVM

LVM in Linux supporta un meccanismo di snapshot che consente di creare copie esatte dei volumi logici in un momento specifico. Si tratta di una funzione utile che consente di salvare lo stato dei dati in un determinato momento e di ripristinare quello stato se necessario.

La tecnologia delle istantanee LVM funziona come segue: un'istantanea viene creata salvando lo stato di un volume logico nel momento in cui viene creata l'istantanea. Dopo la creazione dell'istantanea, tutte le modifiche che si verificano nel volume logico originale vengono memorizzate nello spazio aggiuntivo del disco differenziale. Questo può essere utile per il backup e il ripristino dei dati al momento della creazione della snapshot.

Vediamo come creare e utilizzare il meccanismo delle istantanee LVM.

Creazione di un'istantanea LVM

Per creare un'istantanea LVM si utilizza il comando lvcreate. Ad esempio, per creare un'istantanea del volume logico myvolume nel gruppo di volumi myvg, utilizzare il seguente comando:

sudo lvcreate --snapshot --name myvolume_snap --size 1G /dev/myvg/myvolume

Questo comando creerà uno snapshot del volume logico myvolume chiamato myvolume_snap con una dimensione di 1 GB.

Si noti che per creare un'istantanea è necessario specificare la dimensione dello snapshot.

Utilizzo di un'istantanea LVM

Dopo aver creato una snapshot, è possibile utilizzarla per eseguire diverse operazioni. Ad esempio, è possibile utilizzare l'istantanea per ripristinare i dati o per creare un backup. Utilizzare il seguente comando per montare l'istantanea sul file system:

sudo mount /dev/myvg/myvolume_snap /mnt/snapshot

Qui /mnt/snapshot è il punto di montaggio in cui verrà montata l'istantanea. Una volta montata l'istantanea, è possibile copiare i dati da essa o utilizzarla per il recupero dei dati.

Eliminazione di un'istantanea LVM

Una volta utilizzata, una snapshot può essere eliminata. Per eliminare una snapshot, usare il comando lvremove. Ad esempio, per rimuovere l'istantanea myvolume_snapshot nel gruppo di volumi myvg, utilizzare il seguente comando:

sudo lvremove /dev/myvg/myvolume_snap

Si noti che se si elimina una snapshot, tutti i dati modificati dopo la creazione della snapshot andranno persi.

Pool sottili

Il thin pool è un meccanismo LVM che consente di creare un volume logico che utilizza solo la porzione dei dispositivi del disco fisico che contiene effettivamente i dati. Ciò consente di ridurre il consumo di spazio su disco e di gestire lo spazio su disco in modo più efficiente. Questa caratteristica di LVM è diventata molto comune nei sistemi di virtualizzazione come soluzione comoda ed economica per l'allocazione dello spazio su disco per le macchine virtuali e i container. Vediamo come creare un thin pool in LVM.

Creazione di un thin pool LVM

I thin pool vengono creati utilizzando il noto comando lvcreate. Ad esempio, per creare un thin pool mythinpool nel gruppo di volumi myvg sui volumi fisici /dev/sdb e /dev/sdc, utilizzare il seguente comando:

sudo lvcreate -L 50G -T myvg/mythinpool /dev/sdb /dev/sdc

Qui -L specifica la dimensione del thin pool in gigabyte e -T indica che stiamo creando un thin pool. Questo comando creerà un thin pool mythinpool di 50 GB.

Creazione di un volume thin LVM

Il volume thin è un volume logico creato all'interno di un thin pool. I volumi thin possono essere creati con il comando lvcreate. Ad esempio, per creare un volume thin mythinvolume di 10 GB nel thin pool mythinpool nel gruppo di volumi myvg, utilizzare il seguente comando:

sudo lvcreate -V 10G -T myvg/mythinpool -n mythinvolume

Qui -V specifica la dimensione del thin volume in gigabyte e -n specifica il nome del thin volume. Questo comando creerà un thin volume mythinvolume di 10 GB all'interno del thin pool mythinpool.

Uso del volume thin LVM

Il volume sottile può essere usato come un normale volume logico. Ad esempio, per creare un file system ext4 su un thin volume mythinvolume, utilizzare il seguente comando:

sudo mkfs.ext4 /dev/myvg/mythinvolume

Una volta creato il file system del thin volume, questo può essere montato e utilizzato come un normale volume logico.

Il thin pool consente di creare configurazioni di archiviazione più flessibili ed efficienti in Linux. Il thin pool viene utilizzato in combinazione con il thin volume per un utilizzo ottimale dello spazio su disco.