24 votos

KVM y Libvirt - ¿Cómo puedo hotplug un nuevo disco virtio?

Estoy tratando de caliente agregar un archivo de disco basado en una ejecución KVM virtual server. He creado un nuevo disco desde cero usando el comando

dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0

y yo tenía la esperanza de conseguir que se caliente añadido para el cliente por hacer esto en el comando virsh shell:

virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
        vdd --driver=file --subdriver=raw

La definición XML del dominio, a continuación, se convierte en:

<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/home/cloud/vps_59/root.img'/>
  <target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
  <driver name='file' type='raw'/>
  <source file='/home/cloud/vps_59/test.img'/>
  <target dev='vdd' bus='virtio'/>
</disk>

Como se puede ver, el nombre del controlador se convierte en mal, debería ser driver name='qemu' a la existente vda disco. He probado con --drive=qemu pero que ya no es compatible.

En segundo lugar, yo sólo "ver" el disco recién añadido una vez que reinicie la máquina virtual con Ubuntu 10.04.4 LTS. ¿Cómo puedo hacer que la unidad "hotplug"? Quiero que la máquina virtual para "ver" la nueva unidad inmediatamente sin necesidad de reiniciar.

31voto

gertvdijk Puntos 2040

Me gustaría empezar con una nota que usted debe evitar el uso de virsh attach-disk con su limitada cantidad de opciones. En lugar de eso, te sugiero que especificar la forma exacta de disco de formato que prefieras, en un aparte, temporales archivo XML o mediante el comando virt-manager, aplicación de interfaz de usuario (para el último, saltar el primer paso).

  1. Crear un archivo temporal con un disco definición como esta de abajo.

    ajustar las propiedades que se ajusten a tu situación

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/path/to/disk-image.img'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    

    Sugerencia: Peek a su actual XML de configuración de dominio y copia de una <disk> sección de allí.

    virsh dumpxml <domainname>
    
  2. Ahora, antes de añadir el disco a una corriente de dominio, asegúrese de que el requerido hotplug módulos del núcleo se carga en el huésped.

    Algunas distribuciones de Linux, como el reciente CentOS/RHEL/Fedora tiene esta integrado en el kernel. En este caso, compruebe CONFIG_HOTPLUG_PCI_ACPI. Si es y, entonces usted está todo listo y usted puede saltarse este paso.

    modprobe acpiphp
    modprobe pci_hotplug
    

    Considerar la adición de estos dos módulos a /etc/modules si desea que se pueden cargar en el arranque por defecto.

  3. Agregar el disco a la ejecución de VM usando

    virsh attach-device <domain name> /path/to/disk.xml
    

    Opcionalmente, añadir el --persistent opción para permitir que Libvirt actualizar el dominio de definición XML 'persistente'.

  4. Por último, revise el interior del huésped, si el disco se ha hecho hotplug-inserta. El núcleo debe ser activa, como puede comprobarse con la dmesg:

    [  321.946440] virtio-pci 0000:00:06.0: using default PCI settings
    [...]
    [  321.952782]  vdb: vdb1 vdb2
    

    En el ejemplo anterior he añadido un disco como vdb con dos particiones en la tabla de particiones.

Referencias

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: