Estou instalando um servidor Ubuntu em um KVM / libvirt vm com o instalador de texto / console.
Eu pretendo entregar dois volumes LVM como root e trocar para a VM como discos virtuais.
Eles são detectados corretamente como vda
e vdb
; no entanto, o instalador parece forçar-me a particioná-los como discos, o que poderia impedir a flexibilidade do LVM.
Como posso instalar o Ubuntu com a formatação dos discos virtuais diretamente em vez de usar partições, ou isso é uma má idéia?
Motivação:
O objetivo é reduzir a complexidade removendo um nível desnecessário de abstração da hierarquia de armazenamento.
- unidades físicas:
host:/dev/sd{a,b}
- paritioning:
host:/dev/sd{a,b}1
- sw-raid:
host:/dev/md1
- lvm:
host:/dev/vg0/mylv_root
- Disco do VirtIO
guest:/dev/vda
- particionamento:
guest:/dev/vda1
- sistema de arquivos:
guest:/
Neste layout, quando alocar espaço adicional para uma única vm, tenho que seguir estas etapas:
-
lvresize
-
parted
, que é especialmente feio
-
resize2fs
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 de kpartex
, conforme explicado por psusi.
Eu quero remover o 6. da equação porque não vejo qual valor essa abstração fornece. Mas custa pela complexidade de adição, possível impacto no desempenho e pequeno desperdício de espaço.
Solução Hacky:
Usando kpartx
, consegui mover o sistema de arquivos raiz de uma "partição de inicialização" (dentro de outro volume lógico temporário) para o volume lógico de destino e, em seguida, inicializar por meio da 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 idéia de inicialização direta do kernel, pois eu teria que atualizar manualmente a versão do kernel do guest no host toda vez que o kernel fosse atualizado.