Written by: Helio Loureiro
Category: Linux
Hits: 1810

E minhas aventuras com LVM continuam.  Um dos HDDs começou a chiar.  Mas chiar mesmo, fazendo barulho de marteladas e resets.   Olhando nos logs eu vi que já tinha dado o que tinha que dar.  E justamente o HDD que fazia parte do mirroring em que estão os jogos da steam.

Então procedi com o comando pra terminar a montagem em mirroring.

lvconvert -m 0 diskspace/steam /dev/sdb3

Infelizmente eu dei um reboot em seguida e não salvei nada pra poder postar aqui.  Mas o mais importante foi depois de removido HDD e instalado um novo (também de 2 TB) que tinha parado aqui.  Como eu esqueci de remover o /dev/sdb3 do LVM, claro que subiu com vários erros. Particionei o novo HDD (/dev/sdb) com uma só partição LVM. E fui adicionar quando...

root@goosfraba ~# pvcreate /dev/sdb1
  WARNING: Couldn't find device with uuid CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa.
  WARNING: VG diskspace is missing PV CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa (last written to /dev/sdb3).
  Physical volume "/dev/sdb1" successfully created.

Epa!  Que catzo de CvlXC4-não-sei-lá-o-que é esse?  Sim, o disco que removi fisicamente e não tirei logicamente do LVM.  Com "vgdisplay" pude ver que realmente o problema estava lá.

root@goosfraba ~# vgdisplay 
  WARNING: Couldn't find device with uuid CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa.
  WARNING: VG diskspace is missing PV CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa (last written to /dev/sdb3).
  --- Volume group ---
  VG Name               diskspace
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  230
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                9
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                1
  VG Size               5.45 TiB
  PE Size               4.00 MiB
  Total PE              1429493
  Alloc PE / Size       518912 /

Resolver não foi nada complicado.  Bastou o seguinte comando:

root@goosfraba ~# vgreduce  --removemissing diskspace
  WARNING: Couldn't find device with uuid CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa.
  WARNING: VG diskspace is missing PV CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa (last written to /dev/sdb3).
  WARNING: Couldn't find device with uuid CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa.
  Wrote out consistent volume group diskspace.

Pronto!  Metadados do disco antigo removidos.

root@goosfraba ~# vgdisplay 
  --- Volume group ---
  VG Name               diskspace
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  231
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                9
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size

Agora o trabalho seguinte foi adicionar o espaço novo dentro do VG (diskspace é o nome):

root@goosfraba ~# vgextend diskspace /dev/sdb1
  Volume group "diskspace" successfully extended
root@goosfraba ~# vgdisplay 
  --- Volume group ---
  VG Name               diskspace
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  232
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                9
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               

Em seguida colocar o disco novo como mirroring novamente:

root@goosfraba ~# lvconvert -m 1 /dev/diskspace/steam /dev/sdb1
Are you sure you want to convert linear LV diskspace/steam to raid1 with 2 images enhancing resilience? [y/n]: y
  Logical volume diskspace/steam successfully converted.

E pronto.  Acabou.  Isso mesmo.  Foi fácil assim.  Agora é só ir monitorando o progresso da cópia no disco novo.

root@goosfraba ~# lvs
  LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home     diskspace -wi-a----- 500.00g                                                    
  opt      diskspace -wi-a-----   2.00g                                                    
  root     diskspace -wi-ao----  10.00g                                                    
  steam    diskspace rwi-a-r--- 750.00g                                    0.88            
  swap     diskspace -wi-a-----  15.00g                                                    
  tmp      diskspace -wi-a-----   5.00g                                                    
  usr      diskspace -wi-ao----  95.00g                                                    
  usrlocal diskspace -wi-a----- 600.00g                                                    
  var      diskspace -wi-a-----  50.00g                                                    
root@goosfraba ~# lvs
  LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home     diskspace -wi-a----- 500.00g                                                    
  opt      diskspace -wi-a-----   2.00g                                                    
  root     diskspace -wi-ao----  10.00g                                                    
  steam    diskspace rwi-a-r--- 750.00g                                    1.10            
  swap     diskspace -wi-a-----  15.00g                                                    
  tmp      diskspace -wi-a-----   5.00g                                                    
  usr      diskspace -wi-ao----  95.00g                                                    
  usrlocal diskspace -wi-a----- 600.00g                                                    
  var      diskspace -wi-a-----  50.00g                                                    

Como são 750 GB a coisa demora um pouco.  Mas com LVM, tudo é muito fácil.

Happy hacking :)