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.