Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Documentation de SUSE Enterprise Storage 7.1 / Guide d'opérations et d'administration / Intégration des outils de virtualisation / Ceph comme support de l'instance QEMU/KVM
S'applique à SUSE Enterprise Storage 7.1

27 Ceph comme support de l'instance QEMU/KVM

Le cas d'utilisation le plus courant de Ceph consiste à fournir des images de périphériques de bloc aux machines virtuelles. Par exemple, un utilisateur peut créer une image « golden » avec un système d'exploitation et tout logiciel pertinent dans une configuration idéale. Il réalise ensuite un instantané de l'image. Enfin, l'utilisateur clone l'instantané (généralement plusieurs fois, voir Section 20.3, « Images instantanées » pour plus de détails). La possibilité de créer des clones de copie sur écritures (copy-on-write, COW) d'un instantané signifie que Ceph peut rapidement bloquer les images de périphérique de bloc sur des machines virtuelles, car le client n'a pas besoin de télécharger une image entière chaque fois qu'il fait tourner une nouvelle machine virtuelle.

Les périphériques de bloc Ceph peuvent s'intégrer aux machines virtuelles QEMU. Pour plus d'informations sur QEMU KVM, reportez-vous à la page https://documentation.suse.com/sles/15-SP1/single-html/SLES-virtualization/#part-virt-qemu.

27.1 Installation qemu-block-rbd

Pour pouvoir utiliser les périphériques de bloc Ceph, QEMU doit disposer du pilote approprié. Vérifiez si le paquetage qemu-block-rbd est installé ; installez-le si nécessaire :

# zypper install qemu-block-rbd

27.2 Utilisation de QEMU

Vous devez indiquer le nom de la réserve et le nom de l'image sur la ligne de commande QEMU. Vous pouvez également spécifier un nom d'instantané.

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

Par exemple, les options id et conf peuvent se présenter ainsi :

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

27.3 Création d'images avec QEMU

Vous pouvez créer une image de périphérique de bloc à partir de QEMU. Vous devez spécifier rbd, le nom de la réserve et le nom de l'image que vous souhaitez créer. Vous devez également indiquer la taille de l'image.

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

Par exemple :

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

Le format de données raw (brut) est le seul format qu'il est raisonnable d'utiliser avec RBD. Techniquement, vous pouvez utiliser d'autres formats pris en charge par QEMU, tels que qcow2, mais cela ajoutera un overhead supplémentaire et fera que le volume ne sera plus sécurisé pour la migration en direct de la machine virtuelle si le caching est activé.

27.4 Redimensionnement d'images avec QEMU

Vous pouvez redimensionner une image de périphérique de bloc à partir de QEMU. Vous devez spécifier rbd, le nom de la réserve et le nom de l'image que vous souhaitez redimensionner. Vous devez également indiquer la taille de l'image.

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

Par exemple :

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

27.5 Récupération d'informations d'image avec QEMU

Vous pouvez récupérer des informations d'image de périphérique de bloc à partir de QEMU. Vous devez spécifier rbd, le nom de la réserve et le nom de l'image.

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

Par exemple :

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 Exécution de QEMU avec RBD

QEMU peut accéder à une image en tant que périphérique de bloc virtuel directement via librbd. Cela évite un changement de contexte supplémentaire et permet de tirer parti du caching RBD.

Vous pouvez utiliser qemu-img pour convertir des images de machines virtuelles existantes en images de périphériques de bloc Ceph. Par exemple, si vous disposez d'une image qcow2, vous pouvez exécuter :

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

Pour exécuter un démarrage de machine virtuelle à partir de cette image, vous pouvez exécuter :

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

Le caching RBD peut améliorer considérablement les performances. Les options de cache de QEMU contrôlent le caching librbd :

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

Pour plus d'informations sur le caching RBD, reportez-vous à la Section 20.5, « Paramètres de cache ».

27.7 Activation du rejet et de TRIM

Les périphériques de bloc Ceph prennent en charge l'opération de rejet. Cela signifie qu'un invité peut envoyer des requêtes TRIM pour permettre à un périphérique de bloc Ceph de récupérer l'espace inutilisé. Cette fonction peut être activée sur l'invité en montant le système de fichiers XFS avec l'option discard.

Afin que cette option soit disponible pour l'invité, elle doit être activée explicitement pour le périphérique de bloc. Pour ce faire, vous devez spécifier une option discard_granularity associée à l'unité :

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

L'exemple ci-dessus utilise le pilote IDE. Le pilote virtio ne prend pas en charge le rejet.

Si vous utilisez libvirt, modifiez le fichier de configuration de votre domaine libvirt à l'aide de virsh edit afin d'inclure la valeur xmlns:qemu. Ajoutez ensuite un qemu:commandline block en tant qu'enfant de ce domaine. L'exemple suivant montre comment définir deux périphériques avec qemu id = et associer des valeurs discard_granularity différentes à cet identifiant.

<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 Définition des options du cache QEMU

Les options du cache QEMU correspondent aux paramètres du cache Ceph RBD suivants.

Writeback (Écriture différée) :

rbd_cache = true

WriteThrough (Écriture immédiate) :

rbd_cache = true
rbd_cache_max_dirty = 0

Aucun :

rbd_cache = false

Les paramètres du cache QEMU remplacent les paramètres par défaut de Ceph (paramètres qui ne sont pas explicitement définis dans le fichier de configuration de Ceph). Si vous définissez explicitement les paramètres de cache RBD dans votre fichier de configuration Ceph (voir Section 20.5, « Paramètres de cache »), vos paramètres Ceph remplacent les paramètres du cache QEMU. Si vous définissez les paramètres du cache sur la ligne de commande QEMU, les paramètres de ligne de commande QEMU remplacent les paramètres du fichier de configuration Ceph.