LVM

LVM

  • Trocando HDD com LVM

    Já faz algum tempo que quero escrever sobre meu uso de LVM, mas até agora a procrastinação venceu.   No último artigo Trabalhando de home-office eu descrevei meu ambiente de home-office e um pouco do meu desktop.  Ao entrar no desktop é que percebi que um dos HDDs simplemente parou de funcionar, esse Seagate Firecuda de 2 TB.  Graças ao LVM eu não percebi nada, nem perdi dados.  E vou descrever aqui o cenário e como fiz a troca e re-sincronismo dos dados.

    Usando o comando lvm é possível ver o estado dos meu volumes:

    root@goosfraba:~# lvs 
     LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
     home     diskspace -wi-ao---- 450.00g                                                     
     root     diskspace -wi-ao----   5.00g                                                     
     steam    diskspace rwi-aor-r- 750.00g                                    100.00           
     swap     diskspace -wi-ao----  15.00g                                                     
     tmp      diskspace -wi-ao----   5.00g                                                     
     usr      diskspace -wi-ao----  95.00g                                                     
     usrlocal diskspace -wi-ao---- 600.00g                                                     
     var      diskspace -wi-ao----  40.00g                                                    

    Minhas partições eram todas XFS mas descobri que alguns jogos da Steam simplesmente só rodam com EXT4.  Então precisei criar uma partição EXT4 somente pros jogos.  É o volume com nome de "steam" e que mostra um "100.00".   Esse número representa a cópia no disco que falhou, que estava em RAID1.

    Primeiro eu adicionei outro disco de 2 TB que tinha aqui (no passado eu usava 2 HDDs de 2 TB cada com LVM, comprei o HDD novo de 4 TB e removi 1 dos HDDs que estava em bom estado ainda), e particionei da mesma forma que o HDD de 4 TB, com uma partição EFI e outra de boot do mesmo tamanho.  O restante pro LVM.

    root@goosfraba:~# fdisk -l /dev/sdb 
    Disco /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 setores
    Unidades: setor de 1 * 512 = 512 bytes
    Tamanho de setor (lógico/físico): 512 bytes / 512 bytes
    Tamanho E/S (mínimo/ótimo): 512 bytes / 512 bytes
    Tipo de rótulo do disco: dos
    Identificador do disco: 0x18a6e3b6

    Dispositivo Inicializar  Início        Fim    Setores Tamanho Id Tipo
    /dev/sdb1                  2048    1128447    1126400    550M ef EFI (FAT-12/16/32)
    /dev/sdb2               1128448    5322751    4194304      2G 83 Linux
    /dev/sdb3               5322752 3907029167 3901706416    1.8T 8e Linux LVM

    Tendo a partição sdb3 disponível pro LVM, então o que faltava era adicionar o grupo de volumes que uso.  Ao listar os discos físicos disponíveis, apareceu a informação ainda do disco antigo como "unknown".

    root@goosfraba:~# pvdisplay  
     WARNING: Device for PV N26Uhr-VM1o-ocfo-V7FR-26oS-BgFB-t1IA9t not found or rejected by a filter.
     --- Physical volume ---
     PV Name               /dev/sda3
     VG Name               diskspace
     PV Size               <3.64 TiB / not usable <4.82 MiB
     Allocatable           yes  
     PE Size               4.00 MiB
     Total PE              953211
     Free PE               451450
     Allocated PE          501761
     PV UUID               9wmB4t-RyQP-uDc2-2hNO-wn7c-7wq8-GcQV8S
       
     --- Physical volume ---
     PV Name               [unknown]
     VG Name               diskspace
     PV Size               <1.82 TiB / not usable <4.09 MiB
     Allocatable           yes  
     PE Size               4.00 MiB
     Total PE              476931
     Free PE               284930
     Allocated PE          192001
     PV UUID               N26Uhr-VM1o-ocfo-V7FR-26oS-BgFB-t1IA9t
       
     "/dev/sdb3" is a new physical volume of "<1.82 TiB"
     --- NEW Physical volume ---
     PV Name               /dev/sdb3
     VG Name                
     PV Size               <1.82 TiB
     Allocatable           NO
     PE Size               0    
     Total PE              0
     Free PE               0
     Allocated PE          0
     PV UUID               CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa

    Isso acontenceu porque o metadado ainda estava lá apesar do disco ter sido removido da máquina.   Enquanto isso a partição sdb3 aparece como "Allocatable NO" pois ainda não está disponível pra uso.

    A primeira coisa é remover os dados incosistes do vg (volume group).

    root@goosfraba:~# vgreduce diskspace --removemissing --force 
     WARNING: Device for PV N26Uhr-VM1o-ocfo-V7FR-26oS-BgFB-t1IA9t not found or rejected by a filter.
     Wrote out consistent volume group diskspace.

    E adicionar a nova partição ao vg.

    root@goosfraba:~# vgextend diskspace /dev/sdb3 
     Volume group "diskspace" successfully extended

    Com isso o a informação de pv mostra como usado.

    root@goosfraba:~# pvdisplay  
     --- Physical volume ---
     PV Name               /dev/sda3
     VG Name               diskspace
     PV Size               <3.64 TiB / not usable <4.82 MiB
     Allocatable           yes  
     PE Size               4.00 MiB
     Total PE              953211
     Free PE               451450
     Allocated PE          501761
     PV UUID               9wmB4t-RyQP-uDc2-2hNO-wn7c-7wq8-GcQV8S
          
     --- Physical volume ---
     PV Name               /dev/sdb3
     VG Name               diskspace
     PV Size               <1.82 TiB / not usable <2.09 MiB
     Allocatable           yes  
     PE Size               4.00 MiB
     Total PE              476282
     Free PE               476282
     Allocated PE          0
     PV UUID               CvlXC4-LiEI-mr0c-vSky-oryk-Khrl-J1dyBa

    E a informação de vg mostra com 6 TB disponíveis pra uso.

    root@goosfraba:~# vgdisplay  
     --- Volume group ---
     VG Name               diskspace
     System ID              
     Format                lvm2
     Metadata Areas        2
     Metadata Sequence No  217
     VG Access             read/write
     VG Status             resizable
     MAX LV                0
     Cur LV                8
     Open LV               8
     Max PV                0
     Cur PV                2
     Act PV                2
     VG Size               5.45 TiB
     PE Size               4.00 MiB
     Total PE              1429493
     Alloc PE / Size       501761 / 1.91 TiB
     Free  PE / Size       927732 / <3.54 TiB
     VG UUID               f2ufnI-c802-yt6f-2nMG-6BYl-8atu-wbR7vO

    Agora a partição já faz parte do lvm.  O que resta é a usar como RAID1 em mirror.  Ou mesmo como uma partição qualquer se eu quisesse.  Mas no caso uso como RAID1 pra ter um pouco mais de desempenho.

    Primeiramente removendo as informações de RAID1 que ainda existindo.

    root@goosfraba:~# lvconvert -m 0 /dev/diskspace/steam 
    Are you sure you want to convert raid1 LV diskspace/steam to type linear losing all resilience? [y/n]: y
     Logical volume diskspace/steam successfully converted.
    root@goosfraba:~# lvs
     LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
     home     diskspace -wi-ao---- 450.00g                                                     
     root     diskspace -wi-ao----   5.00g                                                     
     steam    diskspace -wi-ao---- 750.00g                                                     
     swap     diskspace -wi-ao----  15.00g                                                     
     tmp      diskspace -wi-ao----   5.00g                                                     
     usr      diskspace -wi-ao----  95.00g                                                     
     usrlocal diskspace -wi-ao---- 600.00g                                                     
     var      diskspace -wi-ao----  40.00g                                                    

    O parâmetro "-m 0" diz que a partição será em RAID0.

    Em seguida basta mudar a partição novamente pra RAID1 e o sincronismo iniciará.

    root@goosfraba:~# lvconvert -m 1 /dev/diskspace/steam /dev/sdb3 
    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.
    root@goosfraba:~# lvs
     LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
     home     diskspace -wi-ao---- 450.00g                                                     
     root     diskspace -wi-ao----   5.00g                                                     
     steam    diskspace rwi-aor--- 750.00g                                    0.00             
     swap     diskspace -wi-ao----  15.00g                                                     
     tmp      diskspace -wi-ao----   5.00g                                                     
     usr      diskspace -wi-ao----  95.00g                                                     
     usrlocal diskspace -wi-ao---- 600.00g                                                     
     var      diskspace -wi-ao----  40.00g                                                     
    root@goosfraba:~# lvs
     LV       VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
     home     diskspace -wi-ao---- 450.00g                                                     
     root     diskspace -wi-ao----   5.00g                                                     
     steam    diskspace rwi-aor--- 750.00g                                    34.56            
     swap     diskspace -wi-ao----  15.00g                                                     
     tmp      diskspace -wi-ao----   5.00g                                                     
     usr      diskspace -wi-ao----  95.00g                                                     
     usrlocal diskspace -wi-ao---- 600.00g                                                     
     var      diskspace -wi-ao----  40.00g                                                    

    E é isso.  Simples e rápido graças ao LVM.

     

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.