Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / Documentación de SUSE Enterprise Storage 7 / Guía de administración y operaciones / Integración con herramientas de virtualización / Ceph como procesador final para la instancia de QEMU KVM
Se aplica a SUSE Enterprise Storage 7

27 Ceph como procesador final para la instancia de QEMU KVM

El caso de uso más frecuente de Ceph implica proporcionar imágenes de dispositivo de bloques a máquinas virtuales. Por ejemplo, un usuario puede crear una imagen lista para usar con un sistema operativo y cualquier software relevante en una configuración ideal. A continuación, el usuario toma una instantánea de la imagen. Por último, el usuario clona la instantánea (normalmente muchas veces, consulte la Sección 20.3, “Instantáneas” para más información). La capacidad para crear clones de copia de escritura de una instantánea significa que Ceph puede provisionar imágenes de dispositivos de bloques a máquinas virtuales rápidamente, ya que el cliente no necesita descargar una imagen completa cada vez que invoca una máquina virtual nueva.

Los dispositivos de bloques de Ceph pueden integrarse con máquinas virtuales QEMU. Para obtener más información sobre QEMU KVM, consulte https://documentation.suse.com/sles/15-SP2/html/SLES-all/part-virt-qemu.html.

27.1 Instalación de qemu-block-rbd

Para poder utilizar dispositivos de bloques de Ceph, QEMU debe tener instalado el controlador adecuado. Compruebe si el paquete qemu-block-rbd está instalado e instálelo si fuera necesario:

root # zypper install qemu-block-rbd

27.2 Uso de QEMU

La línea de comandos de QEMU espera que se especifique el nombre de repositorio y el nombre de imagen. También puede especificar un nombre de instantánea.

qemu-img command options \
rbd:pool-name/image-name@snapshot-name:option1=value1:option2=value2...

Por ejemplo, si especifica las opciones id y conf, se puede obtener un resultado parecido al siguiente:

qemu-img command options \
rbd:pool_name/image_name:id=glance:conf=/etc/ceph/ceph.conf

27.3 Creación de imágenes con QEMU

Puede crear una imagen de dispositivo de bloques en QEMU. Debe especificar el rbd, el nombre del repositorio y el nombre de la imagen que desea crear. También debe especificar el tamaño de la imagen.

qemu-img create -f raw rbd:pool-name/image-name size

Por ejemplo:

qemu-img create -f raw rbd:pool1/image1 10G
Formatting 'rbd:pool1/image1', fmt=raw size=10737418240 nocow=off cluster_size=0
Importante
Importante

El formato de datos raw es en realidad la única opción que se puede usar con RBD. Técnicamente, se podrían utilizar otros formatos compatibles con QEMU, como qcow2, pero se requiere mucha más supervisión y haría que el volumen no fuera seguro para la migración en directo de la máquina virtual si el almacenamiento en caché está habilitado.

27.4 Cambio de tamaño de las imágenes con QEMU

Puede cambiar el tamaño de una imagen de dispositivo de bloques en QEMU. Debe especificar el rbd, el nombre del repositorio y el nombre de la imagen cuyo tamaño desea cambiar. También debe especificar el tamaño de la imagen.

qemu-img resize rbd:pool-name/image-name size

Por ejemplo:

qemu-img resize rbd:pool1/image1 9G
Image resized.

27.5 Recuperación de información de la imagen con QEMU

Puede recuperar información de la imagen del dispositivo de bloques en QEMU. Debe especificar el rbd, el nombre del repositorio y el nombre de la imagen.

qemu-img info rbd:pool-name/image-name

Por ejemplo:

qemu-img info rbd:pool1/image1
image: rbd:pool1/image1
file format: raw
virtual size: 9.0G (9663676416 bytes)
disk size: unavailable
cluster_size: 4194304

27.6 Ejecución de QEMU con RBD

QEMU puede acceder a una imagen como dispositivo de bloques virtual directamente a través de librbd. Esto evita una conmutación de contexto adicional y puede aprovechar las ventajas del almacenamiento en caché de RBD.

Puede utilizar qemu-img para convertir las imágenes de la máquina virtual existentes a imágenes de dispositivos de bloques de Ceph. Por ejemplo, si dispone de una imagen qcow2, ejecute:

qemu-img convert -f qcow2 -O raw sles12.qcow2 rbd:pool1/sles12

Para ejecutar un arranque de la máquina virtual desde esa imagen, ejecute:

root # qemu -m 1024 -drive format=raw,file=rbd:pool1/sles12

El almacenamiento en caché de RBD puede mejorar significativamente el rendimiento. Las opciones de caché de QEMU controlan el almacenamiento en caché de librbd:

root # qemu -m 1024 -drive format=rbd,file=rbd:pool1/sles12,cache=writeback

Para obtener más información sobre el almacenamiento en caché de RBD, consulte la Sección 20.5, “Ajustes de caché”.

27.7 Habilitación de descartes y TRIM

Los dispositivos de bloques de Ceph admiten la operación de descarte. Esto significa que un invitado puede enviar peticiones TRIM para permitir que un dispositivo de bloques de Ceph reclame espacio no utilizado. Esto se puede habilitar en el invitado montando XFS con la opción de descarte.

Para que esto esté disponible para el invitado, se debe habilitar explícitamente para el dispositivo de bloques. Para ello, debe especificar una opción discard_granularity asociada a la unidad:

root # qemu -m 1024 -drive format=raw,file=rbd:pool1/sles12,id=drive1,if=none \
-device driver=ide-hd,drive=drive1,discard_granularity=512
Nota
Nota

En el ejemplo anterior se utiliza el controlador IDE. El controlador virtio no admite el descarte.

Si utiliza libvirt, edite el archivo de configuración del dominio de libvirt con el comando virsh edit e incluya el valor xmlns:qemu. A continuación, añada qemu:commandline block como hijo de dicho dominio. El siguiente ejemplo muestra cómo definir dos dispositivos con qemu id= con valores discard_granularity distintos.

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
 <qemu:commandline>
  <qemu:arg value='-set'/>
  <qemu:arg value='block.scsi0-0-0.discard_granularity=4096'/>
  <qemu:arg value='-set'/>
  <qemu:arg value='block.scsi0-0-1.discard_granularity=65536'/>
 </qemu:commandline>
</domain>

27.8 Configuración de las opciones de caché de QEMU

Las opciones de caché de QEMU se corresponden con los siguientes valores de caché de Ceph RBD.

Writeback (actualización de la memoria a través de datos de caché):

rbd_cache = true

WriteThrough (escritura integral caché-memoria):

rbd_cache = true
rbd_cache_max_dirty = 0

None (Ninguna):

rbd_cache = false

Los valores de caché de QEMU sustituyen a los valores por defecto de Ceph (los valores que no se definan explícitamente en el archivo de configuración de Ceph). Si define explícitamente los valores de caché de RBD en el archivo de configuración de Ceph (consulte la Sección 20.5, “Ajustes de caché”), los valores de Ceph sustituirán a los valores de caché de QEMU. Si define los valores de caché en la línea de comandos de QEMU, los valores de la línea de comandos de QEMU sustituyen a los valores del archivo de configuración de Ceph.