Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Dokumentation zu SUSE Enterprise Storage 7 / Betriebs- und Verwaltungshandbuch / Integration in Virtualisierungstools / Ceph als Back-End für die QEMU KVM-Instanz
Gilt für SUSE Enterprise Storage 7

27 Ceph als Back-End für die QEMU KVM-Instanz

Der häufigste Anwendungsfall von Ceph ist die Bereitstellung von Blockgeräte-Images für virtuelle Maschinen. Ein Benutzer erstellt beispielsweise ein Klon-Image („Golden Image“) mit Betriebssystem und der relevanten Software in einer idealen Konfiguration. Dann erstellt der Benutzer einen Snapshot des Image. Schließlich klont der Benutzer den Snapshot (normalerweise viele Male, weitere detaillierte Informationen finden Sie in Abschnitt 20.3, „Aufnahmen“). Die Fähigkeit zum Erstellen von Klonen aus Snapshots durch Kopien beim Schreibvorgang bedeutet, dass Ceph schnell Blockgeräte-Images für virtuelle Maschinen bereitstellen kann, weil der Client nicht bei jeder Erstellung einer neuen virtuellen Maschine ein gesamtes Image herunterladen muss.

Ceph-Blockgeräte können in virtuelle QEMU-Maschinen integriert werden. Weitere Informationen zu QEMU KVM finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/part-virt-qemu.html.

27.1 Installieren von qemu-block-rbd

Zur Verwendung von Ceph-Blockgeräten muss für QEMU der entsprechende Treiber installiert sein. Prüfen Sie, ob das Paket qemu-block-rbd installiert ist und installieren Sie es, falls erforderlich:

root # zypper install qemu-block-rbd

27.2 Verwenden von QEMU

In der QEMU-Kommandozeile müssen Sie den Poolnamen und den Image-Namen angeben. Sie können außerdem auch einen Snapshot-Namen angeben.

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

Beispielsweise könnte die Angabe der Optionen id und conf wie folgt aussehen:

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

27.3 Erstellen von Images mit QEMU

Sie können ein Blockgeräte-Image von QEMU aus erstellen. Sie müssen rbd, den Poolnamen und den Namen des zu erstellenden Image angeben. Sie müssen auch die Größe des Image angeben.

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

Beispiel:

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

Das Datenformat raw ist wirklich die einzige sinnvolle Formatoption für RBD. Eigentlich könnten Sie auch andere QEMU-unterstützte Formate verwenden wie qcow2, doch das würde zusätzlichen Overhead bedeuten. Außerdem würde bei Live-Migration der virtuellen Maschine das Volume unsicher, wenn Caching aktiviert ist.

27.4 Ändern der Größe von Images mit QEMU

Sie können die Größe eines Blockgeräte-Images von QEMU aus ändern. Sie müssen rbd, den Poolnamen und den Namen des Image angeben, dessen Größe geändert werden soll. Sie müssen auch die Größe des Image angeben.

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

Beispiel:

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

27.5 Abrufen von Image-Informationen mit QEMU

Sie können die Informationen zum Blockgeräte-Image von QEMU aus abrufen. Sie müssen dazu rbd, den Poolnamen und den Namen des Image angeben.

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

Beispiel:

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 Ausführen von QEMU mit RBD

QEMU kann auf ein Image als virtuelles Blockgerät direkt über librbd zugreifen. Dadurch wird ein zusätzlicher Kontextschalter vermieden und Sie können vom RBD-Caching profitieren.

Zum Konvertieren der bestehenden Images von virtuellen Maschinen zu Ceph-Blockgeräte-Images kann qemu-img verwendet werden. Wenn Sie beispielsweise über ein qcow2-Image verfügen, könnten Sie folgendes Kommando ausführen:

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

Mit folgendem Kommando könnten Sie eine virtuelle Maschine von diesem Image booten:

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

RBD Caching kann die Leistung erheblich verbessern. Die Cache-Optionen von QEMU steuern das librbd-Caching:

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

Weitere Informationen zum RBD-Caching finden Sie in Abschnitt 20.5, „Cache-Einstellungen“.

27.7 Aktivieren und Verwerfen und TRIM

Ceph-Blockgeräte unterstützen die Verwerfen-Operation. Dies bedeutet, dass ein Gast TRIM-Anforderungen senden kann, damit ein Ceph-Blockgerät nicht genutzten Speicherplatz freigibt. Dies kann beim Gast durch Einhängen von XFS mit der Verwerfen-Option aktiviert werden.

Damit dies für den Gast verfügbar ist, muss es explizit für das Blockgerät aktiviert sein. Dazu müssen Sie eine discard_granularity angeben, die mit dem Laufwerk verknüpft ist:

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

Im obigen Beispiel wird ein IDE-Treiber verwendet. Der virtio-Treiber unterstützt keine Verwerfen-Vorgänge.

Wenn Sie libvirt verwenden, bearbeiten Sie die Konfigurationsdatei Ihrer libvirt-Domäne mit virsh edit, um den Wert xmlns:qemu hinzuzufügen. Fügen Sie dann einen qemu:commandline block als untergeordnetes Element dieser Domäne hinzu. Im folgenden Beispiel sehen Sie, wie zwei Geräte mit qemu id= auf verschiedene discard_granularity-Werte festgelegt werden.

<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 Festlegen von QEMU-Cache-Optionen

Die Cache-Optionen von QEMU entsprechen den folgenden Ceph RBD-Cache-Einstellungen.

Writeback:

rbd_cache = true

Writethrough:

rbd_cache = true
rbd_cache_max_dirty = 0

kein Befehl:

rbd_cache = false

Die Cache-Einstellungen von QEMU überschreiben die Standardeinstellungen von Ceph (Einstellungen, die nicht explizit in der Ceph-Konfigurationsdatei festgelegt sind). Wenn Sie explizit die RBD Cache-Einstellungen in Ihrer Ceph-Konfigurationsdatei festlegen (siehe Abschnitt 20.5, „Cache-Einstellungen“), überschreiben Ihre Ceph-Einstellungen die QEMU-Cache-Einstellungen. Wenn Sie die Cache-Einstellungen in der QEMU-Kommandozeile festlegen, überschreiben die Einstellungen der QEMU-Kommandozeile die Einstellungen der Ceph-Konfigurationsdatei.