Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Enterprise Storage 7.1 / Guia de Administração e Operações / Integração com ferramentas de virtualização / Ceph como back end para instância de KVM QEMU
Aplica-se a SUSE Enterprise Storage 7.1

27 Ceph como back end para instância de KVM QEMU

O caso de uso mais frequente do Ceph envolve fornecer imagens de dispositivos de blocos para máquinas virtuais. Por exemplo, um usuário pode criar uma imagem “perfeita” com um OS e qualquer software relevante em uma configuração ideal. Em seguida, ele captura um instantâneo da imagem. Por fim, ele clona o instantâneo (normalmente, várias vezes. Consulte a Seção 20.3, “Instantâneos” para obter detalhes). A capacidade de criar clones de cópia em gravação de um instantâneo significa que o Ceph pode provisionar imagens de dispositivos de blocos para máquinas virtuais rapidamente, pois o cliente não precisa fazer download de uma imagem inteira cada vez que capturar uma nova máquina virtual.

Os dispositivos de blocos do Ceph podem ser integrados às máquinas virtuais QEMU. Para obter mais informações sobre a KVM QEMU, consulte https://documentation.suse.com/sles/15-SP1/single-html/SLES-virtualization/#part-virt-qemu.

27.1 Instalando qemu-block-rbd

Para usar os dispositivos de blocos do Ceph, o QEMU precisa ter o driver apropriado instalado. Verifique se o pacote qemu-block-rbd está instalado, e instale-o se necessário:

# zypper install qemu-block-rbd

27.2 Usando o QEMU

A linha de comando do QEMU espera você especificar o nome do pool e da imagem. Você também pode especificar o nome de um instantâneo.

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

Por exemplo, se você especificar as opções id e conf, a aparência deverá ser a seguinte:

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

27.3 Criando imagens com o QEMU

Você pode criar uma imagem de dispositivo de blocos no QEMU. Você deve especificar rbd, o nome do pool e o nome da imagem que deseja criar. Você também deve especificar o tamanho da imagem.

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

Por exemplo:

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

O formato de dados brutos é realmente a única opção de formato sensível para usar com o RBD. Tecnicamente, você pode usar outros formatos compatíveis com o QEMU, como qcow2, mas isso aumentará o overhead e também tornará o volume não seguro para migração dinâmica da máquina virtual quando o cache estiver habilitado.

27.4 Redimensionando imagens com o QEMU

É possível redimensionar uma imagem de dispositivo de blocos usando o QEMU. Você deve especificar rbd, o nome do pool e o nome da imagem que deseja redimensionar. Você também deve especificar o tamanho da imagem.

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

Por exemplo:

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

27.5 Recuperando informações da imagem com o QEMU

Você pode recuperar informações da imagem do dispositivo de blocos usando o QEMU. Você deve especificar rbd, o nome do pool e o nome da imagem.

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

Por exemplo:

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 Executando o QEMU com o RBD

O QEMU pode acessar uma imagem como dispositivo de blocos virtual diretamente pelo librbd. Isso evita um switch de contexto adicional e pode ser melhor do que o cache do RBD.

Você pode usar qemu-img para converter as imagens existentes de máquinas virtuais em imagens de dispositivos de blocos do Ceph. Por exemplo, se você tem uma imagem qcow2, pode executar:

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

Para executar uma inicialização de máquina virtual dessa imagem, você pode executar:

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

O cache do RBD pode melhorar o desempenho significativamente. As opções de cache do QEMU controlam o cache do librbd:

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

Para obter mais informações sobre cache do RBD, consulte a Seção 20.5, “Configurações de cache”.

27.7 Habilitando descarte e TRIM

Os dispositivos de blocos do Ceph suportam a operação de descarte. Isso significa que um convidado pode enviar solicitações TRIM para permitir que um dispositivo de blocos do Ceph reaproveite o espaço não usado. Para habilitar esse recurso, monte o XFS com a opção de descarte.

Para que ele fique disponível ao convidado, é necessário habilitá-lo explicitamente no dispositivo de blocos. Para fazer isso, você deve especificar discard_granularity associado à unidade:

# 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

O exemplo acima usa o driver IDE. O driver virtio não suporta descarte.

Se for usar o libvirt, edite o arquivo de configuração do domínio libvirt usando virsh edit para incluir o valor xmlns:qemu. Em seguida, adicione qemu:commandline block como filho desse domínio. O exemplo a seguir mostra como definir dois dispositivos com qemu id= com valores discard_granularity diferentes.

<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 Definindo as opções de cache do QEMU

As opções de cache do QEMU correspondem às seguintes configurações de Cache do Ceph RBD.

Writeback:

rbd_cache = true

Writethrough:

rbd_cache = true
rbd_cache_max_dirty = 0

Nenhuma:

rbd_cache = false

As configurações de cache do QEMU anulam as configurações padrão do Ceph (configurações que não são explicitamente definidas no arquivo de configuração do Ceph). Se você definir explicitamente as configurações de Cache do RBD no arquivo de configuração do Ceph (consulte a Seção 20.5, “Configurações de cache”), as configurações do Ceph anularão as configurações de cache do QEMU. Se você definir as configurações de cache na linha de comando do QEMU, elas anularão as configurações do arquivo de configuração do Ceph.