Como aumentar o tamanho do disco convidado KVM usando LVM VG como pool de armazenamento?

Como aumentar o tamanho do disco convidado KVM usando LVM VG como pool de armazenamento?

O servidor host KVM está executando o CentOS 6.5 e um grupo de volumes LVM "storage_pool" é usado como o pool de armazenamento principal para KVM.

Um convidado Ubuntu é instalado usando um sistema de arquivos ext4 e monta todo o /dev/vda1 como /. Esta é a configuração do disco convidado:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native'/>
  <source dev='/dev/storage_pool/kvmguest.img'/>
  <target dev='vda' bus='virtio'/>
  <alias name='virtio-disk0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

Qual seria a melhor abordagem para aumentar o tamanho do disco convidado? O VG tem muito espaço livre.

Encontrei alguns exemplos, mas a maioria também usa LVM dentro dos convidados ou não eram totalmente aplicáveis. Pelo que entendi, o método comum é criar um LV maior no mesmo VG, desligar o convidado, transferir os dados, editar a configuração para usar o novo LV?

Agradecemos antecipadamente por quaisquer sugestões ou sugestões

Responder1

Não há necessidade de desligar o convidado (pelo menos não mais em 2019).

Simplesmente

lvextend -L+<size>G /dev/<group>/<volume>

então

virsh blockresize <domain> /dev/<group>/<volume> --size <newsize>

e finalmente entre no seu convidado e faça o que for necessário para ele aproveitar o espaço extra.

Em um convidado do Windows você pode fazer

diskpart

list volume

select volume <n>

extend

Estas são as etapas exatas que segui para expandir a unidade C: de um convidado do Windows 10 rodando como domínio KVM no Ubuntu 19.04 com qemu 3.1.0

Responder2

Este é o procedimento que segui:

  1. Estenda o volume lógico do convidado kvm

    # lvextend -L+50G /dev/storage_pool/guest.img
    
  2. Desligue o convidado kvm e desative o volume lógico

    # virsh shutdown guest
    # lvchange -a n /dev/storage_pool/guest.img
    
  3. Liste e anote as informações de partição do convidado kvm, principalmente o primeiro setor. Se não exibir setores, talvez seja necessário adicionar a opção '-u' ou '-u setores'

    # fdisk -l /dev/storage_pool/guest.img
    
  4. Exclua e recrie a partição para preencher todo o espaço estendido, certifique-se de usar setores como unidades e para selecionar o mesmo primeiro setor (geralmente 2048 se a partição estiver alinhada), você pode usar o comando 'u' fdisk para alternar entre as unidades

    # fdisk /dev/storage_pool/guest.img
    Command (m for help): d
    Partition number (1-4): 1
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First sector (...): 2048
    Last sector...: hit enter and use the default last sector
    Command (m for help): a
    Partition number (1-4): 1
    Command (m for help): w
    
  5. Exponha o sistema de arquivos ext3/4 e redimensione-o

    # kpartx -a -v /dev/storage_pool/guest.img
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # resize2fs /dev/mapper/storage_pool-guest.img1
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # kpartx -d -v /dev/storage_pool/guest.img
    
  6. Ative o volume lógico e inicie o convidado kvm

    # lvchange -a y /dev/storage_pool/guest.img
    # virsh start guest
    

Responder3

Procurando a mesma coisa, encontrei sua pergunta ainda sem resposta. Para mim, o seguinte funcionou:

  1. desligue o convidado (no meu caso, um debian 7.0) da maneira usual.

  2. estender o LV "original" (no VG do host, é claro), por exemplo, em 5G. Para isso, você precisa ser root/sudo no host:

    lvextend -L +5G /dev/YourStoragePoolVG/YourVirtualMachinesVGToExtend

  3. Abra o lv recém-estendido (ou seja, o “disco” da sua VM) no gparted:

    gparted /dev/mapper/YourStoragePoolVG-YourVirtualMachinesVGToExtend

  • Nota: vocêdeveuse o caminho "/dev/mapper/...", não"/dev/dm-77" ou "/dev/YourStoragePoolVG/..." ou outro (isso parece ser um bug/recurso do LVM)!
  1. Mexa nas partições no volume modificado (use a GUI normalmente)
  • Nota: Considere os avisos sobre perda de dados, tipos de fs etc.!
  • Nota: Tenha cuidado.
  • Emgparted, você pode redimensionar partições e movê-las na tabela de partições armazenada no disco virtio dentro do LV.
  • Estender uma ou mais partições não é um problema IMHO. Para redução de partição/fs, use o Google...
  • O gparted também adapta os sistemas de arquivos nas partições (não apenas as próprias partições.
  1. Reinicie sua VM. Agora vê as partições modificadas.

Como eu disse, funcionou para mim (eu poderia tentar em alguma instalação de brinquedo sem correr riscos). Alguém poderia revisar as instruções acima e comentar se isso funciona em geral? Obrigado.

Responder4

É fácil - após a inicialização do LVEXTEND | LVRESIZE do host na VM a partir de um LiveCD ISO com GPARTED integrado. Assim que a inicialização do CD for concluída, execute GPARTED com o nome da partição raiz usada DENTRO da VM:

$ gparted /dev/vda1" # for VirtIO /dev/vda

ou

$ gparted /dev/sda1" # for SATA emulated /dev/sda

e execute o redimensionamento da partição da maneira usual do GPARTED

informação relacionada