Expandir o volume lógico do LVM na máquina virtual

2

Eu tive um problema muito específico. Eu tenho um LVM em execução em um único volume físico em uma máquina virtual. O tamanho do volume lógico é ~ 150GB e eu desejo expandi-lo para ~ 250GB.

Consegui expandir o volume físico do meu gerenciador de máquina virtual, mas a alteração no tamanho físico não é refletida no meu volume lógico do LVM.

Não encontrei nenhuma resposta diretamente e, através de algumas experiências, encontrei uma solução. Eu pensei em compartilhar na minha resposta abaixo.

    
por Kevin Chen 25.09.2016 / 13:47

1 resposta

2

Um exemplo de diagrama LVM:

A idéia do LVM é abstrair o volume lógico do volume físico, de tal forma que vários volumes físicos irão aparecer para o usuário um único volume lógico contínuo.

O sistema de arquivos raiz está em /dev/file-server-vg/root e o swap está em /dev/file-server-vg/swap . A idéia é que podemos ter vários discos rígidos reais na camada PV, e eles podem ser todos adicionados a um grupo de volume, o que permitirá que eles apareçam como um único sistema de arquivos contínuo no sistema em /dev/file-server-vg/root .

Neste problema eu tenho usado /dev/file-server-vg/root como um servidor de arquivos e está ficando sem espaço. Felizmente, este sistema está em uma máquina virtual e eu consegui expandir o volume físico /dev/sda usando o gerenciador de máquinas virtuais. No entanto, o aumento no tamanho não é passado automaticamente para o sistema de arquivos /dev/file-server-vg/root . Precisamos fazer um comando simples para que isso funcione.

Antes de começar, use pvdisplay para ver quais volumes físicos estão presentes. Isso listará todos os volumes físicos e o grupo de volumes ao qual ele pertence. Nesse caso, temos apenas um volume físico que é /dev/sda3 .

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               file-server-vg
  PV Size               155.26 GiB / not usable 0   
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              65346
  Free PE               0
  Allocated PE          65346
  PV UUID               0EXhc4-EoHZ-b79R-ncSe-SWXI-ztPe-Fsc7zk

A tabela de partição atual pode ser listada usando sudo parted e, em seguida, print .

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot
 2      538MB   794MB  256MB  ext2
 3      794MB   167GB  166GB                     lvm

Neste exemplo, queremos expandir a capacidade de 155,56GiB para 255,56GiB. Usando o gerenciador de máquinas virtuais, normalmente podemos estender o espaço em disco e, nesse caso, vamos expandi-lo em 100GiB.

Após a expansão ser bem-sucedida, a tabela de partição resultante (use print free ) será semelhante à seguinte. Por favor, note o "espaço livre" mostra 108GB (~ 100GiB).

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot
 2      538MB   794MB  256MB  ext2
 3      794MB   275GB  166GB                     lvm
      167GB   275GB  108GB  Free Space

Existem duas maneiras de expandir o volume lógico: Crie uma nova partição e adicione isso ao Grupo de volume ou Aumente a mesma partição.

Na minha opinião, sempre que possível, o segundo método é mais puro. É claro que se /dev/sda3 for um disco rígido físico e você comprou outro disco rígido para expandir o espaço, então será lógico usar o primeiro método.

No tipo parted resize 3 794MB 275GB redimensionará a partição 3 para ocupar todo o espaço livre, bem quase:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  538MB   537MB   fat32              boot
 2      538MB   794MB   256MB   ext2
 3      794MB   275GB   274GB                      lvm
        275GB   275GB   1032kB  Free Space

Isso é bom o suficiente, apenas 1 MB não está sendo usado.

Em seguida, vamos reiniciar a máquina. Isso é necessário para atualizar a tabela de partições.

O que você verá agora é que o volume físico aumentou em tamanho com pvdisplay

--- Physical volume ---
  PV Name               /dev/sda3
  VG Name               file-server-vg
  PV Size               255.26 GiB / not usable 0   
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              65346
  Free PE               0
  Allocated PE          65346
  PV UUID               0EXhc4-EoHZ-b79R-ncSe-SWXI-ztPe-Fsc7zk

Esse aumento no tamanho será passado automaticamente para o grupo de volumes, usando vgdisplay para você obter o seguinte. Observe que vgextend não faz realmente o que você acha que faz. Ele não ocupa o espaço livre, mas é usado para adicionar novos volumes físicos a um determinado grupo de volumes.

--- Volume group ---
  VG Name               file-server-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               255.26 GiB
  PE Size               4.00 MiB
  Total PE              65346
  Alloc PE / Size       65346 / 255.26 GiB
  Free  PE / Size       0 / 0   
  VG UUID               NwwIgT-W0SH-aeTe-d078-hcxx-XZ6W-QfnSA0

O volume lógico não aumenta de tamanho automaticamente. Isso realmente faz sentido porque o computador não tem ideia de qual volume lógico você deseja aumentar em tamanho ou talvez você queira criar um novo volume lógico com o espaço extra no grupo de volumes. Assim, com lvdisplay , você verá a tabela a seguir, mostrando que o /dev/file-server-vg/root tem 153,26GiB, mas não se preocupe, pois estamos muito próximos.

--- Logical volume ---
  LV Path                /dev/file-server-vg/root
  LV Name                root
  VG Name                file-server-vg
  LV UUID                l6qvYZ-AmYw-tdgi-2jUu-XNB2-gecQ-6fDPt8
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 1
  LV Size                153.26 GiB
  Current LE             64834
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/file-server-vg/swap_1
  LV Name                swap_1
  VG Name                file-server-vg
  LV UUID                OohMkN-rGLa-fM4M-6he2-MbM9-BBc3-Ck2Hs5
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

A maneira de aumentar o volume lógico é usar lvextend -L +100GB /dev/file-server-vg/root

Depois disso, expanda o sistema de arquivos com resize2fs /dev/file-server-vg/root

E você está feito. Você pode fazer lvdisplay para verificar se o volume /dev/file-server-vg/root estendeu para 253.26GiB

  --- Logical volume ---
  LV Path                /dev/file-server-vg/root
  LV Name                root
  VG Name                file-server-vg
  LV UUID                l6qvYZ-AmYw-tdgi-2jUu-XNB2-gecQ-6fDPt8
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 1
  LV Size                253.26 GiB
  Current LE             64834
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/file-server-vg/swap_1
  LV Name                swap_1
  VG Name                file-server-vg
  LV UUID                OohMkN-rGLa-fM4M-6he2-MbM9-BBc3-Ck2Hs5
  LV Write Access        read/write
  LV Creation host, time file-server, 2014-07-10 14:54:58 +1000
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
    
por Kevin Chen 25.09.2016 / 15:03