Qual é o melhor formato de imagem, bruto ou qcow2, para usar como imagem base para outras VMs?

25

Estou usando uma imagem de base e com base nisso criando muitas VMs. E agora eu quero saber qual é o melhor, qcow2 ou raw para usar em uma imagem de base. Além disso, você pode me dizer se existe alguma vantagem em usar essa coisa de imagem de base, em vez de clonar o disco inteiro. A velocidade pode ser um fator, mas em termos de eficiência, existe algum problema no uso de uma imagem de base e na criação de VMs usando essa imagem de base?

Editar 1:

Eu fiz algumas experiências e consegui insira a descrição da imagem aquiinsira a descrição da imagem aquiinsira a descrição da imagem aqui

O primeiro é quando a imagem base e a sobreposição são qcow2. Segundo Quando baseimage é bruto, mas a sobreposição é qcow2 e, no terceiro caso, estou fornecendo uma imagem de disco bruto individual para cada VM. Surpreendentemente, o último caso é muito mais eficiente em comparação com os outros dois.

Configuração experimental: 
SO em baseimage: Ubuntu Server 14.04 de 64 bits.
Sistema operacional host: Ubuntu 12.04 64bit
RAM: 8GB
Processador: CPU Intel® Core ™ i5-4440 a 3.10GHz × 4 
Disco: 500 GB 

No eixo x: número de VM inicializadas simultaneamente. Começando de 1 e incrementado até 15.

No eixo y: tempo total para inicializar o número "x" de máquinas.

A partir dos gráficos, parece que fornecer uma imagem de disco completa para a VM é muito mais eficiente que outros 2 métodos.

Edição 2: insira a descrição da imagem aqui

É o caso quando estamos fornecendo uma imagem bruta individual para cada VM. Após fazer a limpeza do cache, este é o gráfico. É quase semelhante à sobreposição bruta de baseimage + qcow.

Obrigado.

AB
fonte
1
Eu usaria uma imagem base bruta e sobrepor QED em vez de qcow2. O QED é mais rápido que o qcow2 e tem menor probabilidade de ser corrompido por design.
Matt
@ Matt, por favor, comente a pergunta editada.
AB
As diferenças de desempenho são interessantes. Você pode experimentá-lo com qed? pode ser um problema de contenção / bloqueio na implementação qcow2. Eu acredito que tem alguns problemas e é por isso que eles inventaram o qed.
Matt
1
@ Matt verifiquei com a sobreposição bruta baseimage-qed e a sobreposição bruta baseimage-qcow2. Mas qed é muito mais lento que qcow2 nessa configuração.
AB

Respostas:

18

Para o seu caso de uso específico (imagem base + sobreposição qcow2), o formato RAW deve ser preferido:

  1. É mais rápido: como não possui metadados associados, é o mais rápido possível. Por outro lado, o Qcow2 possui duas camadas de indireção que devem ser cruzadas antes para atingir os dados reais
  2. Como a camada de sobreposição deve ser um arquivo Qcow2, você não perde o recurso de instantâneo sempre útil (as imagens RAW não suportam os instantâneos por si só)

A escolha entre a imagem base + a sobreposição qcow2 e várias cópias completas depende da sua prioridade:

  1. Para um desempenho absoluto, use imagens RAW com fallocated. Isso tem a desvantagem de não oferecer suporte à captura instantânea, pois na maioria dos ambientes há um preço muito alto a pagar
  2. Para flexibilidade e eficiência de espaço, use imagens de base RAW + sobreposições Qcow2.

Enfim, achei os arquivos Qcow2 um tanto frágeis.

Para meus hipervisores KVM de produção, basicamente utilizo duas configurações diferentes:

  1. onde o desempenho é o número 1, uso volumes LVM conectados diretamente às máquinas virtuais e uso o recurso de captura instantânea do LVM para fazer backups consistentes
  2. onde posso sacrificar um pouco de desempenho para aumentar a flexibilidade, uso imagens únicas e grandes de LVM Thin Provisioned Volume + XFS + RAW

Outra possibilidade é usar um volume LVM normal + imagens XFS + RAW. A única desvantagem é que os instantâneos LVM normais (não finos) são muito lentos e a captura instantânea de um volume LVM normal ocupado prejudicará o desempenho (durante toda a vida útil do instantâneo). De qualquer forma, se você planeja usar apenas um uso esporádico de instantâneos, essa pode ser a aposta mais simples e segura.

Algumas referências:
lentidão de E / S
KVM no desempenho do armazenamento RHEL 6 KVM e pré-localização Qcow2 no desempenho do armazenamento RHEL 6.1 e Fedora 16
KVM e configurações de cache no volume fino do Red Hat Enterprise Linux 6.2
LVM explicado

shodanshok
fonte
Como afirmado acima: as imagens RAW individuais serão mais rápidas devido a nenhuma camada indireta. Lembre-se de que você está perdendo instantâneos (no nível da imagem) e eficiência de espaço. Além disso, tenho a impressão de que seu terceiro resultado foi distorcido pelo cache do host. Para ter certeza, refaça todos os seus testes emitindo "sync; echo 3> / proc / sys / vm / drop_caches" entre cada execução.
shodanshok
Na verdade, eu estava pensando o mesmo. Mas então eu pensei que, no caso de uso real, também seguirá o mesmo fluxo.
AB
Na verdade, não: neste ambiente de teste, você está simplesmente inicializando suas máquinas virtuais, sem usá-las. Em um caso real, após a inicialização, as máquinas virtuais serão usadas, poluindo o cache. Em geral, é melhor fazer benchmark com um caso de uso razoável.
shodanshok
Você tem alguma idéia de por que o armazenamento em cache não está desempenhando tanto papel no gráfico 1 e no gráfico 2, isto é, sobreposição Qcow2 de imagem de base + sobreposição de Qcow2 e sobreposição de imagem de base Raw + Qcow2.
AB
6

Por favor, esteja ciente .... se você estiver usando linux, poderá usar rawe obter os mesmos benefícios qcow2, tanto quanto o tamanho.

... Se o seu sistema de arquivos suportar furos (por exemplo, ext2 ou ext3 no Linux ou NTFS no Windows), somente os setores gravados reservarão espaço.

https://docs.fedoraproject.org/pt-BR/Fedora/18/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Using_qemu_img.html

formato de imagem de disco bruto bruto (padrão). Esse pode ser o formato mais rápido baseado em arquivo. Se o seu sistema de arquivos suportar falhas (por exemplo, ext2 ou ext3 no Linux ou NTFS no Windows), somente os setores gravados reservarão espaço. Use qemu-img info para obter o tamanho real usado pela imagem ou ls -ls no Unix / Linux.

d hee
fonte
Bom ponto! Mas, no backup / cópia / compactação, parece que todo o tamanho do arquivo de imagem bruto é usado. A 20GB arquivo raw única alocação de 4MB no disco foi fechado para 20MB
MrCalvin
Isso foi completamente novo para mim. Eu tenho uma VM no Proxmox VE com um disco virtual de 30 GB ... e posso ver que o disco tem o tamanho no sistema de arquivos host. Mas o sistema de arquivos host possui um uso geral de << 10 GB. Agora é por isso que eu estava procurando.
cljk