
Estou instalando um servidor Ubuntu em um KVM/libvirt vm com o instalador de texto/console.
Pretendo entregar dois volumes LVM como root e trocar para a VM como discos virtuais.
Eles são detectados corretamente como vda
e vdb
, porém o instalador parece me forçar a particioná-los como discos, o que prejudicaria a flexibilidade do LVM.
Como posso instalar o Ubuntu formatando os discos virtuais diretamente em vez de usar partições, ou isso é uma má ideia?
Motivação:
O objetivo principal é reduzir a complexidade removendo um nível desnecessário de abstração da hierarquia de armazenamento.
- unidades físicas:
host:/dev/sd{a,b}
- particionamento:
host:/dev/sd{a,b}1
- sw-raid:
host:/dev/md1
- lvm:
host:/dev/vg0/mylv_root
- Disco VirtIO
guest:/dev/vda
- particionamento:
guest:/dev/vda1
- sistema de arquivo:
guest:/
Neste layout, ao alocar espaço adicional para uma única VM, preciso seguir estas etapas:
lvresize
parted
, o que é especialmente feioresize2fs
Para reduzir o espaço alocado ao contrário (o que é ainda mais feio).
Para backups (por exemplo, com lvcreate --snapshot
), há uma etapa adicional kpartex
explicada por psusi.
Quero remover 6. da equação porque não vejo qual valor essa abstração fornece. Mas isso custa pela complexidade adicional, possível impacto no desempenho e pequeno desperdício de espaço.
Solução hackeada:
Usando kpartx
, consegui mover o sistema de arquivos raiz de uma "partição bootstrap" (dentro de outro volume lógico temporário) para o volume lógico de destino e depois inicializar via inicialização direta do kernel.
kpartx -a /dev/vg0/mylv_bootstrapper
dd if=/dev/mapper/vg0-mylv_bootstrapper1 of=/dev/vg0/mylv_root bs=4M
e2fsck -f /dev/vg0/mylv_root
# Edit fstab inside /dev/vg0/mylv_root accordingly
resize2fs /dev/vg0/mylv_root
kpartx -d /dev/vg0/mylv_bootstrapper
No entanto:
- Isso parece estranhamente hacky.
- Eu realmente não gosto da ideia de inicialização direta do kernel, pois teria que atualizar manualmente a versão do kernel do convidado no host cada vez que o kernel fosse atualizado.
Responder1
Bem, você tem que particionar/formatar o espaço independentemente de ser LVM ou não.
Sim, o KVM verá os dispositivos como "vda" e "vdb".
Em geral, embora o KVM use partições brutas/LVM, IMO, é muito mais confiável usar apenas um disco virtual. Ocupa o mesmo espaço e você sempre pode usar o LVM no disco virtual e/ou redimensionar o disco virtual.
Responder2
Na verdade, descobri que existe uma resposta trivial: se os volumes lógicos estiverem formatados (por exemplo host# mkfs.ext4 /dev/vg0/mylv_root
), o instalador irá detectá-los e permitir seu uso como "parição 1 do disco virtual". Ele pode até reformatar as partições.
No entanto, o Grub não será instalado; a inicialização direta do kernel pode ser usada.