host KVM, adicione LV ao guest

1

Eu tenho um host KVM com um array RAID 10 de software. O software RAID 10 array é um PV no host e existe um único VG.

Eu tenho um par de LVs usados no nível do host (um datastore para os arquivos guest .img do KVM).

Normalmente, ao adicionar um novo disco a um convidado, eu crio o LV no host, depois adiciono isso à configuração do convidado. Em seguida, pvcreate diretamente no dispositivo de bloco (sem partição), vgcreate , lvcreate e mkfs no novo dispositivo de bloco no convidado.

Eu não me incomodo em particionar o dispositivo de bloco antes de pvcreate porque é uma etapa a menos ao redimensionar o LV no host. Eu percebo que a desvantagem é que, em teoria, alguns sistemas podem decidir particionar automaticamente o dispositivo de bloco não particionado porque eles não reconhecem os metadados do LVM, embora eu nunca tenha visto isso acontecer na prática.

Ao redimensionar o LV no host, o espaço livre no PV é captado e eu tenho que vgextend , lvextend e resize2fs no guest.
Eu não acho que haja uma maneira que eu possa pular com o LVM rodando no guest e só lvextend no host então resize2fs no guest?

    
por batfastad 06.08.2015 / 17:34

1 resposta

2

I don't suppose there's a way I can skip having LVM running in the guest and just lvextend on the host then resize2fs in the guest?

Não há absolutamente nenhum requisito para usar o LVM dentro de um convidado. Você pode apenas usar o dispositivo de bloco diretamente. Usando o LVM dentro , o convidado não recebe quase nada (já que você já está usando o LVM no host para gerenciar seu espaço).

Se por "KVM" você quer dizer "libvirt", você pode usar o comando virsh blockresize para fazer com que seu convidado reconheça o espaço adicional depois de redimensionar um dispositivo de bloco. Isto é, se eu tiver um convidado com um LV em anexo:

</disk><disk type="block" device="disk">
  <driver name="qemu" type="raw"/>
  <source dev="/dev/tank/foobar"/>
  <backingStore/>
  <target dev="vdb" bus="virtio"/>
  <alias name="virtio-disk1"/></disk>

Onde:

# lvs
  foobar                                      tank           -wi-ao----   4.00g                                                              

Eu posso adicionar espaço ao LV no host:

# lvresize -L +2G /dev/tank/foobar

Diga ao libvirt para atualizar o tamanho:

# virsh blockresize myguest /dev/tank/foobar --size 0

E, em seguida, dentro do convidado, redimensione o arquivo:

guest# resize2fs 1.42.12 (29-Aug-2014)
Resizing the filesystem on /dev/vdb to 1572864 (4k) blocks.
The filesystem on /dev/vdb is now 1572864 (4k) blocks long.
    
por 06.08.2015 / 22:49

Tags