LVM ha una feature veramente interessante che permette di creare una fotografica, uno snapshot, di un volume logico;
questa fotografia è una copia di tutto il volume logico in uno specifico momento.
In questo modo si può sfruttare lo snapshot per fare un backup dato che garantisce la consistenza dei dati. Nessun dato verrà modificato sullo snapshot, anche se il volume group originale viene movimentato (modifica, aggiunta, cancellazione file).
Ingenuamente però quando ho creato la partizione /home ho dedicato un intero volume group.
Andando a creare lo snapshot con il seguente comando
# lvcreate --size 1G --snapshot --name snap /dev/h0me/lvol0
Volume group "h0me" has insufficient free space (0 extents): 25 required.
si ottiene un errore, che indica che non c'e' più spazio sul volume group per creare lo snapshot.
La creazione dello snapshot di 1 solo gigabyte non è un errore: questo infatti dovrà solo contenere le informazioni che varieranno da quando viene creato lo snapshot fino al termine del backup e relativa cancellazione dello snapshot.
Infatti lo snapshot conterrà solo i link alla partizione vera /home; nel caso di modifica di file la nuova versione sarà memorizzata nella reale /home, mentre la copia "vecchia" verrà spostata sul volume di snapshot creato.
Per visualizzare quanto spazio ho effettivamente libero sul volume group /home, nel mio caso si chiama "h0me", ho eseguito il comando:
# vgdisplay h0me
--- Volume group ---
VG Name h0me
Free PE / Size 0 / 0
Chiaramente 0 non è sufficiente per creare uno snapshot :(
Allora si deve procedere ad allargare il volume group aggiungendo un physical volume "vergine". Scrivo vergine in quanto se verrà aggiunto i dati in esso contenuti verranno distrutti. Quindi vergine o con dati, ma si sappia che il risultato sarà la distruzione dei dati precedentemente presenti.
Io per comodità ho aggiunto un supporto esterno riconosciuto come /dev/sdb.
Ora prima si deve creare il physical volume
# pvcreate /dev/sdb1
Writing physical volume data to disk "/dev/sdb1"
Physical volume "/dev/sdb1" successfully created
E questo si va ad aggiungerlo al vg h0me
# vgextend h0me /dev/sdb1
Volume group "h0me" successfully extended
Ora il vg che contiene i dati di /home ha ben 30 GB liberi e si può procedere alla creazione dello snapshot
# vgdisplay h0me
--- Volume group ---
VG Name h0me
Free PE / Size 7717 / 30.14 GiB
# lvcreate --size 1G --snapshot --name snap /dev/h0me/lvol0
Viene chiesta conferma e con il comando lvdisplay posso vedere come è stato creato lo snapshot
# lvdisplay
--- Logical volume ---
LV Path /dev/h0me/lvol0
LV Name lvol0
VG Name h0me
LV snapshot status source of
snap [active]
--- Logical volume ---
LV Path /dev/h0me/snap
LV Name snap
VG Name h0me
LV snapshot status active destination for lvol0
Per poterlo utilizzare si deve montare su una cartella
# mount /dev/mapper/h0me-snap /mnt/usb/
Ecco snap è una copia identica della /home
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/h0me-lvol0 187G 104G 74G 59% /home
/dev/mapper/h0me-snap 187G 104G 74G 59% /mnt/usb
ora è possibile effettuare il backup della partizione
il metodo di backup non è ora in ambito, comunque si sappia che effettuo backup sia con tar.gz che con rdiff.
Una volta terminato si dovrà smontare lo snapshot e rimuoverlo.
# umount /mnt/usb/
/# lvremove /dev/h0me/snap
Do you really want to remove active logical volume snap? [y/n]: y
/sbin/dmeventd: stat failed: No such file or directory
Logical volume "snap" successfully removed
Ed infine ridurre la /home togliendo il pv aggiunto in precedenza.
# vgreduce h0me /dev/sdb1
Removed "/dev/sdb1" from volume group "h0me"
Nessun commento:
Posta un commento