Backup LVM · 8 min read · Nov 05, 2025

Eseguire il backup (e ripristinare) le partizioni LVM con gli snapshot LVM

Eseguire il backup (e ripristinare) le partizioni LVM con gli snapshot LVM

Versione 1.1
Autore: Falko Timme

Questo tutorial mostra come è possibile creare backup delle partizioni LVM con una funzionalità LVM chiamata snapshot LVM. Uno snapshot LVM è una copia esatta di una partizione LVM che contiene tutti i dati dal volume LVM al momento in cui è stato creato lo snapshot. Il grande vantaggio degli snapshot LVM è che possono essere utilizzati per ridurre notevolmente il tempo in cui i tuoi servizi/database sono inattivi durante i backup, poiché uno snapshot viene solitamente creato in frazioni di secondo. Dopo che lo snapshot è stato creato, puoi eseguire il backup dello snapshot mentre i tuoi servizi e database sono in normale funzionamento.

Mostrerò anche come ripristinare una partizione LVM da un backup in un capitolo extra alla fine di questo tutorial.

Questo documento viene fornito senza alcuna garanzia! Non rilascio alcuna garanzia che questo funzionerà per te!

1 Nota preliminare

Ho testato questo su un server Debian Etch con l’indirizzo IP 192.168.0.100 e il nome host server1.example.com. Ha due dischi rigidi:

  • /dev/sda (10GB) che contiene una piccola partizione /boot (non-LVM), una partizione / (LVM, poco meno di 10GB) e una partizione di swap (LVM)
  • /dev/sdb (60GB), non utilizzato al momento; sarà utilizzato per creare una partizione /backups di 30GB (LVM) e per gli snapshot della partizione / (10GB - è sufficiente perché la partizione / è poco meno di 10GB).

Ho creato un’immagine VMware di Debian Etch che puoi scaricare ed eseguire in VMware Server o VMware Player (vedi https://www.howtoforge.com/import_vmware_images per imparare come fare). Ha le stesse specifiche del mio sistema di test sopra. La password di root è howtoforge. Utilizzando quell’immagine VMware, puoi eseguire gli stessi passaggi che ho fatto io in questo tutorial per abituarti all’uso degli snapshot LVM.

Per ripristinare la partizione / dal tuo backup (trattato nell’ultimo capitolo di questo tutorial) hai bisogno di un Linux Live-CD che supporti LVM, come Knoppix o il CD di installazione di Debian Etch Netinstall che puoi utilizzare come CD di recupero se specifichi rescue al prompt di avvio. Userò il CD di installazione di Debian Etch Netinstall in questo esempio (l’elenco dei mirror è disponibile qui: http://www.debian.org/CD/http-ftp/ - ho scaricato questo: http://ftp.de.debian.org/debian-cd/4.0_r0/i386/iso-cd/debian-40r0-i386-netinst.iso).

Per creare un backup della partizione / procederò come segue: creerò uno snapshot della partizione / e successivamente creerò un backup dello snapshot (invece della reale partizione /!) sulla partizione /backups (ovviamente, puoi memorizzare quel backup dove vuoi - invece di creare una partizione LVM /backups extra, potresti anche utilizzare un’unità USB esterna). Il backup può essere effettuato utilizzando la tua soluzione di backup preferita, ad esempio con tar o dd. Successivamente, distruggerò lo snapshot perché non è più necessario e utilizzerebbe risorse di sistema.

Non hai necessariamente bisogno di un secondo HDD per gli snapshot - puoi utilizzare il primo a condizione di avere spazio libero (non partizionato) sufficiente su di esso per creare snapshot (dovresti utilizzare lo stesso spazio per gli snapshot che utilizzi per la partizione che desideri eseguire il backup). E come accennato in precedenza, puoi utilizzare un’unità USB per eseguire il backup degli snapshot.

Per saperne di più su LVM, dovresti leggere questo tutorial: https://www.howtoforge.com/linux_lvm

2 Creare la partizione LVM /backups

(Se desideri memorizzare i tuoi backup altrove, ad esempio su un’unità USB esterna, non è necessario farlo.)

La nostra situazione attuale è la seguente:

pvdisplay

server1:~# pvdisplay
— Volume fisico —
PV Name /dev/sda5
VG Name server1
PV Size 9.76 GB / non utilizzabile 0
Allocatable yes (ma pieno)
PE Size (KByte) 4096
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM

vgdisplay

server1:~# vgdisplay
— Gruppo di volumi —
VG Name server1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status ridimensionabile
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 9.76 GB
PE Size 4.00 MB
Total PE 2498
Alloc PE / Size 2498 / 9.76 GB
Free PE / Size 0 / 0
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC

lvdisplay

server1:~# lvdisplay
— Volume logico —
LV Name /dev/server1/root
VG Name server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Write Access read/write
LV Status disponibile

LV Size 9.30 GB
Current LE 2382
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0

— Volume logico —
LV Name /dev/server1/swap_1
VG Name server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Write Access read/write
LV Status disponibile

LV Size 464.00 MB
Current LE 116
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1

fdisk -l

server1:~# fdisk -l

Disco /dev/sda: 10.7 GB, 10737418240 byte
255 teste, 63 settori/traccia, 1305 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte

Dispositivo Boot Inizio Fine Blocchi Id Sistema
/dev/sda1 * 1 31 248976 83 Linux
/dev/sda2 32 1305 10233405 5 Esteso
/dev/sda5 32 1305 10233373+ 8e Linux LVM

Disco /dev/sdb: 64.4 GB, 64424509440 byte
255 teste, 63 settori/traccia, 7832 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte

Il disco /dev/sdb non contiene una tabella di partizione valida

Disco /dev/dm-0: 9990 MB, 9990832128 byte
255 teste, 63 settori/traccia, 1214 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte

Il disco /dev/dm-0 non contiene una tabella di partizione valida

Disco /dev/dm-1: 486 MB, 486539264 byte
255 teste, 63 settori/traccia, 59 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte

Il disco /dev/dm-1 non contiene una tabella di partizione valida

Quindi /dev/sda contiene i volumi logici /dev/server1/root (partizione /) e /dev/server1/swap_1 (partizione di swap) più una piccola partizione /boot (non-LVM).

(Per inciso, /dev/server1/root è lo stesso di /dev/mapper/server1-root su Debian Etch. Il primo è un symlink al secondo; utilizzerò entrambe le notazioni in questo tutorial. Lo stesso vale per /dev/server1/swap_1 e /dev/mapper/server1-swap_1.)

Ora creerò la partizione /dev/sdb1 e la aggiungerò al gruppo di volumi server1, e successivamente creerò il volume /dev/server1/backups (che sarà di 30GB invece dei 60GB completi di /dev/sdb in modo da avere spazio sufficiente per gli snapshot) che monterò su /backups:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
Il dispositivo non contiene né una tabella di partizione DOS valida, né un’etichetta disco Sun, SGI o OSF
Costruendo una nuova etichetta disco DOS. Le modifiche rimarranno in memoria solo
fino a quando non decidi di scriverle. Dopo di che, ovviamente, il contenuto precedente non sarà recuperabile.

Il numero di cilindri per questo disco è impostato su 7832.
Non c’è nulla di sbagliato in questo, ma
questo è più grande di 1024,
e potrebbe in alcune configurazioni causare problemi con:

  1. software che viene eseguito all’avvio (ad es., vecchie versioni di LILO)
  2. software di avvio e partizionamento di altri OS
    (ad es., DOS FDISK, OS/2 FDISK)
    Attenzione: il flag non valido 0x0000 della tabella di partizione 4 sarà corretto da w(rite)

Comando (m per aiuto): <– n
Azione del comando
e esteso
p partizione primaria (1-4)
<– p
Numero della partizione (1-4): <– 1
Primo cilindro (1-7832, valore predefinito 1): <– [ENTER]
Utilizzando il valore predefinito 1
Ultimo cilindro o +dimensione o +dimensioneM o +dimensioneK (1-7832, valore predefinito 7832): <– [ENTER]
Utilizzando il valore predefinito 7832

Comando (m per aiuto): <– t
Partizione selezionata 1
Codice esadecimale (tipo L per elencare i codici): <– 8e
Cambiato il tipo di sistema della partizione 1 in 8e (Linux LVM)

Comando (m per aiuto): <– w
La tabella delle partizioni è stata modificata!

Chiamando ioctl() per rileggere la tabella delle partizioni.
Sincronizzazione dischi.

pvcreate /dev/sdb1
vgextend server1 /dev/sdb1
lvcreate –name backups –size 30G server1
mkfs.ext3 /dev/mapper/server1-backups
mkdir /backups

Ora montiamo il nostro volume /dev/server1/backups su /backups:

mount /dev/mapper/server1-backups /backups

Per avere quel volume montato automaticamente ogni volta che avvii il sistema, devi modificare /etc/fstab e aggiungere una riga come questa:

vi /etc/fstab

| [...] /dev/mapper/server1-backups /backups ext3 defaults,errors=remount-ro 0 1 |

Ora la nostra nuova situazione appare così:

pvdisplay

server1:~# pvdisplay
— Volume fisico —
PV Name /dev/sda5
VG Name server1
PV Size 9.76 GB / non utilizzabile 0
Allocatable yes (ma pieno)
PE Size (KByte) 4096
Total PE 2498
Free PE 0
Allocated PE 2498
PV UUID vQIUga-221O-GIKj-81Ct-2ITT-bKPw-kKElpM

— Volume fisico —
PV Name /dev/sdb1
VG Name server1
PV Size 59.99 GB / non utilizzabile 0
Allocatable yes
PE Size (KByte) 4096
Total PE 15358
Free PE 7678
Allocated PE 7680
PV UUID cvl1H5-cxRe-iyNg-m2mM-tjxM-AvER-rjqycO

vgdisplay

server1:~# vgdisplay
— Gruppo di volumi —
VG Name server1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status ridimensionabile
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 69.75 GB
PE Size 4.00 MB
Total PE 17856
Alloc PE / Size 10178 / 39.76 GB
Free PE / Size 7678 / 29.99 GB
VG UUID jkWyez-c0nT-LCaE-Bzvi-Q4oD-eD3Q-BKIOFC

lvdisplay

server1:~# lvdisplay
— Volume logico —
LV Name /dev/server1/root
VG Name server1
LV UUID UK1rjH-LS3l-f7aO-240S-EwGw-0Uws-5ldhlW
LV Write Access read/write
LV Status disponibile

LV Size 9.30 GB
Current LE 2382
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0

— Volume logico —
LV Name /dev/server1/swap_1
VG Name server1
LV UUID 2PASi6-fQV4-I8sJ-J0yq-Y9lH-SJ32-F9jHaj
LV Write Access read/write
LV Status disponibile

LV Size 464.00 MB
Current LE 116
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1

— Volume logico —
LV Name /dev/server1/backups
VG Name server1
LV UUID sXq2Xe-y2CE-Ycko-rCoE-M5kl-E1vH-KQRoP6
LV Write Access read/write
LV Status disponibile

LV Size 30.00 GB
Current LE 7680
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:2

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.