Spostare un logical volume da un disco in LVM

From RVM Wiki
Jump to navigation Jump to search
Attenzione questo articolo è ancora incompleto.
Sentiti libero di contribuire cliccando sul tasto edit.
  • Se si elimina un disco o una partizione, e si vuole spostare i volumi logici che ci sono su quel physical volume su un altro, procedere come segue.

Spostare un LV da un PV ad un altro PV in un nuovo VG

  • Si parte da
/dev/debian/root /dev/sda1
/dev/debian/home /dev/sda1
  • Si vuole
/dev/debian/root /dev/sda1
/dev/data/home   /dev/sdb1
  • Creare il nuovo pv
pvcreate /dev/sdb1
  • Aggiungere il PV al VG
vgextend debian /dev/sdb1
  • Creare il mirror del LV da spostare sul nuovo PV:
lvconvert -m1 /dev/debian/home /dev/sdb1
  • Rimuovere il mirror dal vecchio PV
lvconvert -m0 /dev/debian/home /dev/sda1
  • Controllare:
lvs -a -o+devices
  • Andare in single user mode:
init 1
  • Smontare e fermare l'LV da separare:
umount /home
lvchange -an /dev/debian/var
  • Separare l'LV spostandolo nel nuovo VG
vgsplit --verbose debian data /dev/sdb1
  • Attivare il nuovo VG
vgchange -ay data
  • Modificare fstab per montare il nuovo LV
/dev/mapper/data-var /var            ext4    defaults        0       2
  • Montarlo
mount -a
  • Eventualmente estendere il filesystem:
lvextend -L+50G -r /dev/mapper/data-var

Spostare un LV su un altro disco usando il mirroring

  • Il LV esistente è
/dev/prova/provavol
  • Ed è creato sul PV
/dev/sdb1
  • Creare la nuova partizione su cui mirrorare il LV esistente
parted /dev/sdc
  • Impostare la partizione com PV
pvcreate /dev/sdc1
  • Verificare che sia stato creato:
pvs
  • Aggiungere il PV al VG esistente
vgextend provavol /dev/sdc1
  • Creare il mirroring usando il nuovo PV
lvconvert -m1 /dev/prova/provavol /dev/sdc1
  • Se dovesse dare un errore riguardo ai log, ripetere l'operazione con:
lvconvert -m1 --type mirror --corelog dev/prova/provavol /dev/sdc1
  • Verificare che sia mirrorato:
vgs -o+devices
  • Attendere il completamento:
watch  lvs
  • Quando il mirroring è completato ( Cpy%Sync 100%), rimuovere il mirroring dal vecchio PV:
lvconvert -m 0 /dev/prova/provavol /dev/sdb1
  • Rimuovere il vecchio PV dal VG
vgreduce prova /dev/sdb1
  • Eliminare il PV
pvremove /dev/sdb1

Riferimenti

Procedura 2

È possibile seguire questa strada, oppure usare (man vgsplit):

vgsplit
  • Verificare quanti dati ci sono sul PV /dev/OLDDEVICE che si vuole eliminare
sudo pvdisplay -v /dev/OLDDEVICE | grep "Total PE"
   Using physical volume(s) on command line
 Total PE              117003
  • Verificare che ci sia abbastanza spazio sul PV di destinazione:
sudo pvdisplay -v /dev/md1 | grep "Free PE"
   Using physical volume(s) on command line
 Free PE               999836
  • Se il PV è NUOVO, avrà ZERO:
sudo pvdisplay -v /dev/sdb3
   Using physical volume(s) on command line
   Wiping cache of LVM-capable devices
 "/dev/sdb3" is a new physical volume of "474.23 GiB"
 --- NEW Physical volume ---
 PV Name               /dev/sdb3
 VG Name               
 PV Size               474.23 GiB
 Allocatable           NO
 PE Size               0   
 Total PE              0
 Free PE               0
 Allocated PE          0
 PV UUID               6Rp2Nt-5vPO-1NNa-LwE7-kvLN-S4Kw-w0t472
  • Se i PV appartengono a diversi Volume Group, occorre unire i due VG. Fermare il VG da spostare:
sudo vgchange -an OLDVG
  • Verificare che si disattivato:
sudo vgdisplay -v vgkvm1
  • Testare se è possibile unire i VG (in realtà si incorpora OLDVG che sparisce in NEWVG, che naturalmente deve avere sufficienti PE liberi)
sudo vgmerge -t -v NEWVG OLDVG
  • Se va tutto bene, unirli veramente:
sudo vgmerge -v NEWVG OLDVG
  • Spostare i dati che ci sono sul PV /dev/OLDDEVICE sul PV esistente /dev/NEWDEVICE
sudo pvmove /dev/OLDDEVICE /dev/NEWDEVICE
  • Se invece si vuole spostare SOLO un LV:
 sudo pvmove -n MYLOGICALVOLUME /dev/OLDDEVICE /dev/NEWDEVICE
  • Se il PV va eliminato, rimuoverlo dal Volume Group:
sudo vgreduce MYVOLUMEGROUP /dev/OLDDEVICE

Riferimenti