No estoy muy seguro de cómo formular esta pregunta (de ahí el título pobre), así que permítanme dar un ejemplo de lo que estoy tratando de hacer.
En mi (antiguo) host Xen, puedo presentar sistemas de archivos LVM directamente a cada invitado. Estos sistemas de archivos se crean y formatean en el host, y se pasan directamente a través de ellos. Por ejemplo, para uno de mis hosts que usa particiones tmp e swap separadas, defino el almacenamiento de esta manera:
disk = [
'phy: / dev / vg1 / guest1-swap, sda1, w',
'phy: / dev / vg1 / guest1-disk, sda2, w',
'phy: / dev / vg1 / guest1-tmp, sda3 , w ',
]
Entonces, guest1-swap está formateado como una partición de intercambio, guest1-disk y guest1-tmp están formateados con ext4, y desde la perspectiva del invitado simplemente los ve como tres particiones formateadas en / dev / sda.
(Esto puede parecer mucho trabajo, pero hay scripts de aprovisionamiento, como las increíbles herramientas xen , que automatizan casi todo).
Esto proporciona algunas capacidades realmente útiles, dos de las cuales estoy especialmente interesado en descubrir para KVM:
Monte los sistemas de archivos invitados desde el sistema operativo host . Puedo hacer un montaje de solo lectura de cualquier sistema de archivos invitado en cualquier momento, incluso mientras el invitado se está ejecutando. Esto tiene el beneficio adicional de permitirme crear instantáneas LVM de cualquier volumen existente mientras el invitado se está ejecutando. De esta manera, puedo hacer una copia de seguridad centralizada de todos mis invitados, mientras se ejecuta, desde el host.
Volumen en línea de cambio de tamaño . Debido a que los volúmenes contienen sistemas de archivos Linux estándar, puedo usar una combinación de lvextend y resize2fs para hacer crecer mis sistemas de archivos invitados, nuevamente mientras están en línea.
Actualmente estoy configurando un host KVM que reemplazará al host Xen. Similar a la configuración de Xen, estoy aprovechando LVM para proporcionar acceso directo al sistema de archivos, pero KVM / qemu se comporta de manera diferente, ya que siempre crea un archivo de imagen para los invitados, incluso en el volumen LVM. Desde la perspectiva del invitado, ve esto como un disco sin particiones, y depende del invitado aplicar una etiqueta de partición y luego crear las particiones y los sistemas de archivos.
Desde la perspectiva del huésped, está bien, pero desde la perspectiva del servidor / administración parece ser mucho menos flexible que la configuración de Xen que describí. Todavía soy nuevo en KVM, por lo que es posible que (con suerte) me falte algo.
Me encontré con este problema al intentar volver a implementar mi solución de copia de seguridad anterior en el host KVM y el comando de montaje se bloqueó cuando intenté montar uno de los sistemas de archivos del invitado. Entonces, abordar esa es mi preocupación actual, pero también me hizo preocuparme por el cambio de tamaño, porque estoy seguro de que ese problema también surgirá en algún momento.
Asi que aqui están mis preguntas:
¿Hay alguna forma de hacer que kvm / qemu use los sistemas de archivos de volumen LVM directamente como lo describí para mi configuración de Xen? Uso libvirt para la administración si eso hace la diferencia.
Si no, ¿qué puedo hacer para obtener una funcionalidad de montaje / copia de seguridad similar en KVM? He visto discusiones sobre el uso de libguestfs con FUSE para hacer esto, pero ¿es realmente la mejor opción? Prefiero seguir con un montaje de sistema de archivos nativo si es posible.
Además, si no, ¿es posible cambiar el tamaño de un sistema de archivos en línea con KVM? Encontré varias discusiones / procedimientos sobre esto, pero las respuestas parecen estar por todas partes sin soluciones claras y definitivamente claras.
Perdón por la larga publicación, solo quería asegurarme de que estaba clara. Avíseme si puedo proporcionar otra información que pueda ser útil. Esperamos con interés la discusión. :-)
fuente
Respuestas:
virt-*
herramientas) puede proporcionar acceso a los sistemas de archivos invitados de una manera más limpia que cualquier cosa que vuelva a montar directamente en el host, aunque ambos son posibles.resize2fs
funcionará tanto en una máquina virtual como en el hardware físico, el único problema es que el invitado vuelve a detectar los cambios de tamaño. Tratevirt-resize
como la herramienta estándar, perolvresize
yqemu-img
también puede ser fácilmente utilizado (aunque en modo fuera de línea, lo que requiere un reinicio de invitados por lo general).Creo que
lvresize
conresize2fs
realmente funcionará sin un reinicio de invitado, pero aún no lo he probadofuente
virsh
pero lo suficientemente fácilvirt-manager
. Los sistemas más serios como RHEV / oVirt realmente usan LVM todo el tiempo para almacenamiento basado en FC / iSCSIattach-disk
para conectarlo dinámicamente, pero esto no es permanente y no puedo hacer que funcione para /. ¿Puede señalar alguna documentación para esto o proporcionar sugerencias específicas? ¡Gracias!Utilizo qemu-kvm + libvirt con exactamente la configuración que está preguntando, por las razones que enumeró, pero además porque obtengo un rendimiento mucho mejor sin la capa del sistema de archivos del host KVM en su alcance. Si agrega el VG como un 'grupo de almacenamiento' en virt-manager, puede crear tales máquinas virtuales utilizando su asistente fácil de usar. (Pero solo escribo el XML a mano en estos días usando una VM existente como plantilla).
Aquí está la salida desinfectada de 'virsh dumpxml' para uno de mis invitados:
Otro pensamiento (no relevante para su pregunta pero podría ayudar): si puede, asegúrese de estar utilizando los controladores de red, bloque, aleatorio, reloj, etc. paravirtualizados: son significativamente más rápidos que los completamente virtualizados. Este es el material "model = virtio" mencionado anteriormente. Debe cargar módulos de controlador en el núcleo del host, como virtio_net.
Aquí está la salida de 'virsh pool-dumpxml vg1':
fuente
virsh pool-dumpxml mypool
No conozco una forma de replicar exactamente el comportamiento Xen que usted describe. Sin embargo, puede usar
kpartx
para exponer las particiones dentro de un LV que contiene una imagen de disco completo como dispositivos de bloque en el host, que luego puede montar, etc.fuente
Vea mi respuesta a mi propia pregunta sobre este tema en KVM arrancando el kernel fuera de imagen y la partición existente . En resumen, obtener virt-install para crear una configuración para esto es bastante sencillo, dada una ligera modificación de guest / etc / fstab.
fuente