
Estoy instalando un servidor Ubuntu en una máquina virtual KVM/libvirt con el instalador de texto/consola.
Tengo la intención de entregar dos volúmenes LVM como raíz y cambiarlos a la VM como discos virtuales.
Se detectan correctamente como vda
y vdb
, sin embargo, el instalador parece obligarme a particionarlos como discos, lo que anularía la flexibilidad de LVM.
¿Cómo puedo instalar Ubuntu formateando los discos virtuales directamente en lugar de usar particiones, o es una mala idea?
Motivación:
El objetivo es reducir la complejidad eliminando un nivel innecesario de abstracción de la jerarquía de almacenamiento.
- unidades físicas:
host:/dev/sd{a,b}
- particionamiento:
host:/dev/sd{a,b}1
- incursión SW:
host:/dev/md1
- lvm:
host:/dev/vg0/mylv_root
- Disco VirtIO
guest:/dev/vda
- fraccionamiento:
guest:/dev/vda1
- sistema de archivos:
guest:/
En este diseño, al asignar espacio adicional a una única máquina virtual, debo seguir estos pasos:
lvresize
parted
, que es especialmente feoresize2fs
Para reducir el espacio asignado al revés (que es aún más feo).
Para las copias de seguridad (por ejemplo, con lvcreate --snapshot
), hay un paso adicional kpartex
como lo explica psusi.
Quiero eliminar 6. de la ecuación porque no veo qué valor proporciona esta abstracción. Pero tiene un costo por la complejidad adicional, el posible impacto en el rendimiento y el pequeño desperdicio de espacio.
Solución hacky:
Al usarlo, kpartx
pude mover el sistema de archivos raíz desde una "partición de arranque" (dentro de otro volumen lógico temporal) al volumen lógico de destino y luego iniciar mediante el inicio directo del 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
Sin embargo:
- Esto parece extrañamente complicado.
- Realmente no me gusta la idea del arranque directo del kernel, ya que tendría que actualizar manualmente la versión del kernel del invitado en el host cada vez que se actualiza el kernel.
Respuesta1
Bueno, tienes que particionar/formatear el espacio independientemente de si es LVM o no.
Sí, KVM verá los dispositivos como "vda" y "vdb".
En general, aunque KVM usa particiones sin formato/LVM, en mi opinión, es mucho más confiable usar simplemente un disco virtual. Ocupa el mismo espacio y siempre puedes usar LVM en el disco virtual y/o cambiar el tamaño del disco virtual.
Respuesta2
En realidad, descubrí que hay una respuesta trivial: si los volúmenes lógicos están formateados (por ejemplo host# mkfs.ext4 /dev/vg0/mylv_root
), el instalador los detectará y permitirá usarlos como "partición 1 del disco virtual". Luego puede incluso reformatear las particiones.
Sin embargo, Grub no podrá instalarse; en su lugar, se puede utilizar el arranque directo del kernel.