Spostare un logical volume da un disco in LVM

From RVM Wiki
Revision as of 09:21, 7 September 2017 by Gabriele.vivinetto (talk | contribs)
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

Procedura 1


  47  parted /dev/sdb
  48  pvcreate /dev/sdb1
  49  sfdisk -d /dev/sdb 
  50  sfdisk -d /dev/sdb | sfdisk /dev/sdc
  51  vgcreate -n prova /dev/sdb1
  52  vgcreate prova /dev/sdb1
  53  lvs
  54  lvcreate -n provavol -L 4G prova
  55  lvs
  56  mkfs.ext4 /dev/prova/provavol 
  57  mount /dev/prova/provavol /mnt/
  58  touch 1 2 3 4 /mnt
  59  cp -rv /usr/ /mnt/
  60  man lvconvert 
  61  pvs
  62  poweroff
  63  pvs
  64  parted /dev/sdc
  65  pvcreate /dev/sdc1
  66  pvs
  67  vgs
  68  lvs
  69  lvcreate -n rootvol -L 3G prova
  70  lvcreate -n swapvol -L 1G prova
  71  lvs
  72  lvconvert -m1 /dev/prova/provavol /dev/sdc1
  73  vgextend provavol /dev/sdc1
  74  vgextend prova /dev/sdc1
  75  pvs
  76  lvs
  77  vgs
  78  vgs -o+devices
  79  lvconvert -m1 /dev/prova/provavol /dev/sdc1
  80  lvs
  81  lvconvert -m1 /dev/prova/rootvol /dev/sdc1
  82  lvs
  83  man lvconvert
  84  lvs
  85  poweroff
  86  pvs
  87  lvs
  88  vgs
  89  mount /dev/prova/provavol /mnt
  90  ls /mnt/
  91  ls /mnt/usr/
  92  ls -laR /mnt/usr/
  93  pvs

Last step, the one where we have to be more careful, is removing mirror copy from old PV. We have to be more careful because the PV name in this case is the name of a PV we want to remove from mirroring, which is the opposite from what we had when establishing the mirror. If we use wrong PV name we will end up on the begining, with LV on a wrong PV and without mirroring.

[root@r2d2 ~]# lvconvert -m 0 sys/test /dev/sda5 Logical volume test converted.


  94  lvconvert -m0 /dev/prova/rootvol
  95  sudo vgreduce --removemissing prova
  96  pvs
  97  lvconvert -m0 /dev/prova/rootvol
  98  sudo vgreduce --removemissing --force prova
  99  pvs
 100  lvs
 101  vgs
 102  lvconvert -m0 /dev/prova/rootvol
 103  vgs
 104  lvs
 105  lvconvert -m0 /dev/prova/provavol 
 106  lvs
 107  mount /dev/prova/provavol /mnt
 108  umount /mnt 
 109  ls /mnt
 110  mount /dev/prova/provavol /mnt
 111  ls /mnt/
 112  ls -laR /mnt/
 113  reboot
 114  lvs
 115  vgs
 116  poweroff 
 117  lvs
 118  sudo vgreduce --removemissing --force prova
 119  lvs
 120  lvconvert -m0 /dev/prova/provavol 
 121  lvconvert -m0 /dev/prova/rootvol 
 122  lvs
 123  mount /dev/prova/provavol /mnt
 124  ls -laR /mnt/
 125  history 
 126  history | xclip


sudo parted /dev/sdb
sudo pvcreate /dev/sdb2
  51  vgcreate -n prova /dev/sdb1
  52  vgcreate prova /dev/sdb1
  53  lvs
  54  lvcreate -n provavol -L 4G prova
  55  lvs
  56  mkfs.ext4 /dev/prova/provavol 
  57  mount /dev/prova/provavol /mnt/
  59  cp -rv /usr/ /mnt/
  64  parted /dev/sdc
  65  pvcreate /dev/sdc1
  69  lvcreate -n rootvol -L 3G prova
  70  lvcreate -n swapvol -L 1G prova
  74  vgextend prova /dev/sdc1
  78  vgs -o+devices
  79  lvconvert -m1 /dev/prova/provavol /dev/sdc1
  81  lvconvert -m1 /dev/prova/rootvol /dev/sdc1
  82  lvs

watch -n 30 sudo lvs
 LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 home sys  rwi-aor--- 114.31g                                    0.05
 root sys  rwi-aor---  28.62g                                    2.42
 swap sys  rwi-aor---   3.72g                                    7.97
  84  lvs
  85  poweroff
  86  pvs
  87  lvs
  88  vgs
  89  mount /dev/prova/provavol /mnt
  90  ls /mnt/
  
  98  sudo vgreduce --removemissing --force prova
  02  lvconvert -m0 /dev/prova/rootvol
 104  lvs -o+devices
 105  lvconvert -m0 /dev/prova/provavol 
 113  reboot

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