Vai al contenutoNaviga tra le pagine: pagina precedente [tasto di scelta p]/pagina successiva [tasto di scelta n]
documentation.suse.com / Documentazione di SUSE Enterprise Storage 7 / Guida alle operazioni e all'amministrazione / Integrazione con gli strumenti di virtualizzazione / Ceph come back-end per l'istanza QEMU KVM
Si applica a SUSE Enterprise Storage 7

27 Ceph come back-end per l'istanza QEMU KVM

Il caso di utilizzo Ceph più frequente riguarda l'inserimento di immagini di dispositivi di blocco nelle macchine virtuali. Ad esempio, un utente può creare un'immagine "golden" con un sistema operativo e qualsiasi software pertinente in una configurazione ideale. L'utente, quindi, effettua uno snapshot dell'immagine. Infine, l'utente clona lo snapshot (di solito molte volte, vedere Sezione 20.3, «Snapshot» per ulteriori informazioni). La capacità di creare cloni copia su scrittura di uno snapshot significa che Ceph è in grado di fornire rapidamente immagini di dispositivi di blocco alle macchine virtuali, perché il client non deve effettuare il download di un'immagine intera ogni volta che esegue lo spin-up di una nuova macchina virtuale.

I dispositivi di blocco Ceph possono essere integrati con le macchine virtuali QEMU. Per ulteriori informazioni su QEMU KVM, vedere https://documentation.suse.com/sles/15-SP2/html/SLES-all/part-virt-qemu.html (in lingua inglese).

27.1 Installazione di qemu-block-rbd

Per utilizzare i dispositivi di blocco Ceph, è necessario che in QEMU sia installato il driver appropriato. Verificare che il pacchetto qemu-block-rbd sia installato e installarlo se necessario:

root # zypper install qemu-block-rbd

27.2 Uso di QEMU

Nella riga di comando QEMU ci si aspetta che venga specificato il nome pool e il nome immagine. È anche possibile specificare il nome di uno snapshot.

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

Ad esempio, se si specificano le opzioni id e conf si potrebbe ottenere:

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

27.3 Creazione di immagini con QEMU

È possibile creare un'immagine del dispositivo di blocco da QEMU. Specificare rbd, il nome pool e il nome dell'immagine che si desidera creare. Si devono specificare anche le dimensioni dell'immagine.

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

Esempio:

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

Il formato dati raw è effettivamente la sola opzione di formato sensibile da utilizzare con RBD. Tecnicamente si potrebbero utilizzare altri formati supportati da QEMU, come qcow2, ma in tal modo si aggiungerebbe ulteriore overhead e il volume non sarebbe sicuro per la migrazione in tempo reale della macchina virtuale quando la memorizzazione nella cache è abilitata.

27.4 Ridimensionamento delle immagini con QEMU

È possibile ridimensionare un'immagine del dispositivo di blocco da QEMU. Specificare rbd, il nome pool e il nome dell'immagine che si desidera ridimensionare. Si devono specificare anche le dimensioni dell'immagine.

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

Esempio:

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

27.5 Recupero delle informazioni sull'immagine con QEMU

È possibile recuperare informazioni sull'immagine del dispositivo di blocco da QEMU. Specificare rbd, il nome pool e il nome dell'immagine.

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

Esempio:

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 Esecuzione di QEMU con RBD

Con QEMU è possibile accedere a un'immagine come un dispositivo di blocco virtuale direttamente tramite librbd. In tal modo si evita un ulteriore passaggio contestuale ed è possibile sfruttare la memorizzazione nella cache RBD.

È possibile utilizzare qemu-img per convertire le immagini della macchina virtuale esistenti in immagini del dispositivo di blocco Ceph. Ad esempio, se si dispone di un'immagine qcow2, si potrebbe eseguire:

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

Per eseguire un avvio della macchina virtuale da tale immagine, si potrebbe eseguire:

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

La memorizzazione nella cache RBD può migliorare le prestazioni in modo significativo. Le opzioni di cache QEMU controllano la memorizzazione nella cache librbd caching:

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

Per ulteriori informazioni sulla memorizzazione nella cache RBD, fare riferimento alla Sezione 20.5, «Impostazioni della cache».

27.7 Abilitazione dell'operazione di scarto e TRIM

I dispositivi di blocco Ceph supportano l'operazione di scarto. Vale a dire che un guest può inviare richieste TRIM per consentire a un dispositivo di blocco Ceph di recuperare spazio inutilizzato. Tale operazione può essere abilitata nel guest tramite il montaggio di XFS con l'opzione di scarto.

Affinché questa sia disponibile nel guest, è necessario abilitarla esplicitamente per il dispositivo di blocco. A tal fine, specificare una discard_granularity associata all'unità:

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

Nell'esempio di cui sopra è utilizzato il driver IDE. Il driver virtio non supporta l'opzione di scarto.

Se si utilizza libvirt, modificare il file di configurazione del dominio libvirt utilizzando virsh edit per includere il valore xmlns:qemu. Aggiungere quindi un qemu:commandline block come secondario per tale dominio. Nell'esempio seguente è illustrato come impostare due dispositivi con qemu id= su valori discard_granularity diversi.

<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 Impostazione delle opzioni cache QEMU

Le opzioni cache QEMU corrispondono alle seguenti impostazioni cache RBD Ceph.

Writeback:

rbd_cache = true

Write-through:

rbd_cache = true
rbd_cache_max_dirty = 0

Nessuno:

rbd_cache = false

Le impostazioni cache QEMU sostituiscono le impostazioni di default Ceph (impostazioni non impostate esplicitamente nel file di configurazione Ceph). Se si impostano esplicitamente le impostazioni cache RBD nel file di configurazione Ceph, (fare riferimento alla Sezione 20.5, «Impostazioni della cache»), le impostazioni Ceph sostituiscono le impostazioni della cache QEMU. Se si configurano le impostazioni cache nella riga di comando QEMU, le rispettive impostazioni sostituiscono quelle del file di configurazione Ceph.