Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
Se aplica a SUSE Enterprise Storage 5

16 Uso de libvirt con Ceph

La biblioteca libvirt crea una capa de abstracción de máquina virtual entre las interfaces de hipervisor y las aplicaciones de software que las utilizan. Con libvirt, los desarrolladores y administradores del sistema pueden centrarse en un marco de gestión común, API comunes y una interfaz de shell también común (virsh) para muchos hipervisores distintos, incluidos QEMU/KVM, Xen, LXC y VirtualBox.

Los dispositivos de bloques de Ceph admiten QEMU/KVM. Es posible utilizar dispositivos de bloques de Ceph con software que se conecte con libvirt. La solución de nube utiliza libvirt para interactuar con QEMU/KVM, y QEMU/KVM interactúa con los dispositivos de bloques de Ceph a través de librbd.

Para crear máquinas virtuales que utilicen dispositivos de bloques de Ceph, utilice los procedimientos de las siguientes secciones. En los ejemplos, hemos utilizado libvirt-pool para el nombre del repositorio, client.libvirt para el nombre de usuario y new-libvirt-image para el nombre de la imagen. Puede utilizar cualquier nombre que desee, pero asegúrese de sustituirlos cuando ejecute los comandos en los procedimientos siguientes.

16.1 Configuración de Ceph

Para configurar Ceph para su uso con libvirt, realice los pasos siguientes:

  1. Cree un repositorio. En el ejemplo siguiente se utiliza el nombre de repositorio libvirt-pool con 128 grupos de colocación.

    ceph osd pool create libvirt-pool 128 128

    Compruebe que el repositorio existe.

    ceph osd lspools
  2. Cree un usuario de Ceph. El siguiente ejemplo utiliza el nombre de usuario de Ceph client.libvirt y hace referencia a libvirt-pool.

    ceph auth get-or-create client.libvirt mon 'allow r' osd \
     'allow class-read object_prefix rbd_children, allow rwx pool=libvirt-pool'

    Verifique que el nombre existe.

    ceph auth list
    Nota
    Nota

    libvirt accederá a Ceph utilizando el ID libvirt, no el nombre de Ceph client.libvirt. Consulte http://docs.ceph.com/docs/master/rados/operations/user-management/#user para obtener una explicación detallada de la diferencia entre el ID y el nombre.

  3. Utilice QEMU para crear una imagen en el repositorio RBD. El siguiente ejemplo utiliza el nombre de imagen new-libvirt-image y hace referencia a libvirt-pool.

    Sugerencia
    Sugerencia: ubicación del archivo de anillo de claves

    Asegúrese de que ha especificado la vía del anillo de claves del usuario "libvirt" en /etc/ceph/ceph.conf, por ejemplo:

    keyring = /etc/ceph/client.libvirt.keyring

    Si el anillo de claves no existe, créelo con:

    root # ceph auth get client.libvirt > /etc/ceph/client.libvirt.keyring
    qemu-img create -f raw rbd:libvirt-pool/new-libvirt-image:id=libvirt 2G

    Verifique que la imagen existe.

    rbd -p libvirt-pool ls

16.2 Preparación del gestor de la máquina virtual

Puede utilizar libvirt sin un gestor de máquina virtual, pero le resultará más fácil crear el primer dominio con virt-manager.

  1. Instale un gestor de máquina virtual.

    sudo zypper in virt-manager
  2. Prepare o descargue una imagen de sistema operativo del sistema que desea ejecutar de forma virtualizada.

  3. Lance el gestor de máquina virtual.

    virt-manager

16.3 Creación de una máquina virtual

Para crear una máquina virtual con virt-manager, realice los siguientes pasos:

  1. Elija la conexión en la lista, haga clic con el botón derecho en ella y seleccione New (Nuevo).

  2. Para importar la imagen de disco existente proporcione la vía al almacenamiento actual. Especifique el tipo de sistema operativo, los valores de memoria y el nombre de la máquina virtual, por ejemplo libvirt-virtual-machine.

  3. Finalice la configuración e inicie la máquina virtual.

  4. Verifique que el dominio recién creado existe con sudo virsh list. Si es necesario, especifique la cadena de conexión, como:

    virsh -c qemu+ssh://root@vm_host_hostname/system list
    Id    Name                           State
    -----------------------------------------------
    [...]
     9     libvirt-virtual-machine       running
  5. Entre en la máquina virtual y deténgala antes de configurarla para su uso con Ceph.

16.4 Configuración de la máquina virtual

En este capítulo nos centramos en la configuración de máquinas virtuales para su integración con Ceph mediante virsh. Los comandos de virsh suelen requerir privilegios de usuario root (sudo) y, si no se tienen esos privilegios, no proporcionan resultados adecuados ni notifican de que esos privilegios son necesarios. Para obtener datos sobre los comandos de virsh, consulte la Referencia de los comandos de virsh.

  1. Abra el archivo de configuración con virsh edit vm-domain-name.

    sudo virsh edit libvirt-virtual-machine
  2. En <devices> debe haber una entrada <disk>.

    <devices>
        <emulator>/usr/bin/qemu-system-x86_64</emulator>
        <disk type='file' device='disk'>
          <driver name='qemu' type='raw'/>
          <source file='/path/to/image/recent-linux.img'/>
          <target dev='vda' bus='virtio'/>
          <address type='drive' controller='0' bus='0' unit='0'/>
        </disk>

    Sustituya /path/to/image/recent-linux.img por la vía a la imagen del sistema operativo.

    Importante
    Importante

    Use sudo virsh edit en lugar de un editor de textos. Si edita el archivo de configuración en /etc/libvirt/qemu con un editor de textos, libvirt puede que no reconozca el cambio. Si hay discrepancias entre el contenido del archivo XML de /etc/libvirt/qemu y el resultado de sudo virsh dumpxml vm-domain-name, puede que la máquina virtual no funcione correctamente.

  3. Añada la imagen de Ceph RBD que ha creado anteriormente como una entrada <disk>.

    <disk type='network' device='disk'>
            <source protocol='rbd' name='libvirt-pool/new-libvirt-image'>
                    <host name='monitor-host' port='6789'/>
            </source>
            <target dev='vda' bus='virtio'/>
    </disk>

    Sustituya monitor-host por el nombre de host y sustituya el nombre del repositorio y el nombre de la imagen según sea necesario. Puede añadir varias entradas <host> para los monitores de Ceph. El atributo dev es el nombre del dispositivo lógico que aparecerá en el directorio /dev de la máquina virtual. El atributo de bus opcional indica el tipo de dispositivo de disco que se debe emular. Los valores válidos son específicos de cada controlador (por ejemplo ide, scsi, virtio, xen, usb o sata). Consulte Discos para obtener información sobre el elemento <disk> y sus elementos hijos y atributos.

  4. Guarde el archivo.

  5. Si el clúster de Ceph tiene la autenticación habilitada (lo está por defecto), debe generar un secreto. Abra el editor que quiera y cree un archivo denominado secret.xml con el contenido siguiente:

    <secret ephemeral='no' private='no'>
            <usage type='ceph'>
                    <name>client.libvirt secret</name>
            </usage>
    </secret>
  6. Defina el secreto.

    sudo virsh secret-define --file secret.xml
    <uuid of secret is output here>
  7. Obtenga la clave client.libvirt y guarde la cadena de clave en un archivo.

    ceph auth get-key client.libvirt | sudo tee client.libvirt.key
  8. Defina el UUID del secreto.

    sudo virsh secret-set-value --secret uuid of secret \
    --base64 $(cat client.libvirt.key) && rm client.libvirt.key secret.xml

    También debe definir el secreto manualmente añadiendo la siguiente entrada <auth> al elemento <disk> que introdujo antes (sustituya el valor de uuid con el resultado de la línea de comandos del ejemplo anterior).

    sudo virsh edit libvirt-virtual-machine

    A continuación, añada el elemento <auth></auth> al archivo de configuración de dominio:

    ...
    </source>
    <auth username='libvirt'>
            <secret type='ceph' uuid='9ec59067-fdbc-a6c0-03ff-df165c0587b8'/>
    </auth>
    <target ...
    Nota
    Nota

    El ID del ejemplo es libvirt, no el nombre de Ceph client.libvirt, como se generó en el paso 2 de la Sección 16.1, “Configuración de Ceph”. Asegúrese de utilizar el componente ID del nombre de Ceph que ha generado. Si por algún motivo necesita volver a generar el secreto, deberá ejecutar sudo virsh secret-undefine uuid antes de ejecutar sudo virsh secret-set-value de nuevo.

16.5 Resumen

Después de configurar la máquina virtual para usarla con Ceph, puede iniciarla. Para verificar que la máquina virtual y Ceph se comunican, puede llevar a cabo los procedimientos siguientes.

  1. Compruebe que se está ejecutando Ceph:

    ceph health
  2. Compruebe que se está ejecutando la máquina virtual:

    sudo virsh list
  3. Compruebe que la máquina virtual se comunica con Ceph. Sustituya vm-domain-name por el nombre de su dominio de máquina virtual:

    sudo virsh qemu-monitor-command --hmp vm-domain-name 'info block'
  4. Compruebe que el dispositivo de &target dev='hdb' bus='ide'/> aparece en /dev o en /proc/partitions:

    ls /dev
    cat /proc/partitions
Imprimir esta página