Que imagem de disco devo usar com o VirtualBox, VDI, VMDK, VHD ou HDD?


276

As últimas versões do VirtualBox suportam vários formatos para discos virtuais, mas eles se esqueceram de fornecer uma comparação entre eles.

  • VDI
  • VMDK
  • VHD
  • HDD

Agora, estou interessado em uma recomendação ou comparação que considere o seguinte:

  • ser capaz de usar o dimensionamento dinâmico
  • ser capaz de ter instantâneos
  • ser capaz de mover minha máquina virtual para outro sistema operacional ou até mesmo outra solução de virtualização livre com o mínimo de esforço (provavelmente algo que rodaria bem no Ubuntu).
  • desempenho

9
Execute a caixa Virtual e clique no ícone de ajuda & gt; Conteúdo, há uma explicação justa lá em "Armazenamento Virtual"
Moab

1
Em relação à migração para "outra solução de virtualização livre ... que rodaria bem no Ubuntu", tenho certeza que o VirtualBox está disponível para Linux.
Iszi

Em termos de desempenho, acho que o melhor é criar discos fixos se você tiver espaço. Caso contrário, é muito estressante no sistema operacional ao usar a máquina virtual em vez de uma vez no momento da criação.
Alexis Wilke

2
Outra coisa a considerar é redimensionar a imagem quando você precisar - o VBoxManage não pode redimensionar VMDK, então você teria que clonar primeiro na VDI, depois redimensionar, e então voltar para VMDK + fudge up the UUID. Por esse motivo, a VDI parece a melhor escolha para mim.
Mike Demenok

Respostas:


196

VirtualBox tem suporte total para VDI , VMDK e VHD e suporte para Parallels versão 2 (HDD) (versões não mais recentes) .

Respondendo suas considerações

  • ser capaz de usar o dimensionamento dinâmico

VDI , VMDK e VHD todos suportam dimensionamento alocado dinamicamente. O VMDK tem um recurso adicional de dividir o arquivo de armazenamento em arquivos com menos de 2 GB cada, o que é útil se o seu sistema de arquivos tiver um limite pequeno de tamanho de arquivo.

  • ser capaz de ter instantâneos

Todos os quatro formatos suporta instantâneos no VirtualBox.

  • ser capaz de mover minha máquina virtual para outro sistema operacional ou até mesmo outra solução de virtualização livre com o mínimo de esforço (provavelmente algo que rodaria bem no Ubuntu).

VDI é o formato nativo do VirtualBox. Eu não procurei por nenhum outro software que suporte este formato.

O VMDK é desenvolvido por e para VMWare, mas o Sun XVM, o QEMU, o VirtualBox, o SUSE Studio e o .NET DiscUtils também o suportam. ( Esse formato pode ser o mais adequado para você, porque você quer um software de virtualização que funcione bem no Ubuntu. )

VHD é o formato nativo do Microsoft Virtual PC. Esse é um formato popular entre os produtos da Microsoft.

Eu não sei nada sobre o HDD. A julgar por olhar para esse site , Parallels é um produto Mac OS X e provavelmente não é adequado para você, especialmente considerando que o VirtualBox suporta apenas uma versão antiga do formato HDD.

  • desempenho

O formato não deve afetar o desempenho ou, pelo menos, os impactos no desempenho são insignificantes.

Os fatores que influenciam o desempenho são:

  • limitações do seu dispositivo físico (muito mais perceptível em uma unidade de disco Disco de Estado Sólido ... Por quê? )
  • Expandir uma unidade de disco virtual alocada dinamicamente (operações de gravação são mais lentas à medida que o disco virtual se expande, mas, uma vez que seja grande o suficiente, a expansão deve acontecer menos)
  • tecnologia de virtualização ( hardware vs. software ; a virtualização de hardware ajuda o VirtualBox e melhora a velocidade dos sistemas operacionais virtuais)
  • o fato de você estar executando um sistema operacional virtual. O desempenho é sempre mais lento do que executar um sistema operacional no host devido ao processo de virtualização.

15
Eu adicionarei que o VMDK parece oferecer a panacéia que eu tenho procurado em termos de backups incrementais: eu não ter para fazer backup de um enorme VDI de monolitro para uma mudança de bit único no convidado.
msanford

Eu acho que há algumas considerações em falta sobre o disco rígido host bruto, que é o convidado virtual usando um disco rígido "físico" (ou dispositivo RAID), como visto a partir do host. Isso permitiria melhores desempenhos do que usar um drive simulado sobre um sistema de arquivos.
EnzoR

1
@Enzo: Eu uso o VMDK em um dispositivo de bloco bruto agora. O grande problema é que o VirtualBox precisa ser executado como root. Além disso, os instantâneos não são suportados em discos brutos, mas eu tenho um sistema de instantâneos de terceiros (ZFS). O VMDK em um disco bruto também é muito menos portátil. Quanto ao desempenho, não tenho nenhum benchmark sólido, mas também não tenho reclamações.
Deltik

6
O VHD pode ser montado como uma unidade no Gerenciamento de Disco do Windows, que não parece tão simples com o VDI: superuser.com/q/342334/13889
endolith

5
@msanford você poderia explicar como o VMDK evita fazer backup do arquivo enorme - o rsync é mais capaz de descobrir as diferenças? o arquivo VMDK também parece mudar a cada modificação.
Ben Creasy

35

Eu sempre uso VDI, como é o formato nativo do VirtualBox; no entanto, usar um VMDK (formato VMWare) aumentará a compatibilidade com outro software de máquina virtual.

O VirtualBox rodará bem no Ubuntu, então se o objetivo for a interoperabilidade do Windows / Ubuntu, o VDI seria uma escolha perfeitamente válida.

Ambos os formatos atenderão aos seus requisitos.

Quanto aos outros dois, o VHD é um formato desenvolvido pela Microsoft, e o HDD é um formato desenvolvido pela Apple; estes são licenciados de forma proprietária, portanto, limite o suporte a várias plataformas; Eu não os recomendaria.


16

Mpack, explica uma diferença de desempenho chave entre VHD e VDI aqui:

Tendo estudado recentemente o formato VHD, eu esperaria que houvesse pelo menos uma pequena diferença em VDIs, mais perceptível quando você está comparando com o like, ou seja, um VHD otimizado vs VHD otimizado. A razão é que o formato VHD dinâmico tem esses setores de "bitmap" espalhados pelo disco. Toda vez que você modifica um setor dentro de um bloco, esses blocos de bitmap podem precisar ser atualizados e escritos também, envolvendo buscas, leituras e gravações extras. Esses setores de bitmap também precisam ser ignorados ao ler clusters consecutivos de uma imagem de unidade - mais pesquisas. O formato VDI não tem essas sobrecargas, especialmente se o VDI foi otimizado (blocos no disco virtual classificados na ordem LBA).

Todos os meus comentários se aplicam ao formato VHD dinâmico versus VDI dinâmico. Testes de desempenho em discos virtuais de tamanho fixo são inúteis, já que ambos os formatos são os mesmos (apenas uma imagem simples de um disco), eles apenas têm cabeçalhos diferentes.

https://forums.virtualbox.org/viewtopic.php?f=1&t=22688


5

Não sei se usar o vmdk permitiria executar de forma transparente uma máquina virtual criada no VirtualBox no VMware ou não. Pode ser. No entanto, uma opção mais universal pode ser usar a função VirtualBox File / Export para criar um arquivo "Open Virtualization Appliance" .ova que pode ser importado para o VMware. Com essa abordagem, você pode migrar para qualquer sistema de virtualização que suporte o .ova sem importar qual formato de imagem de disco você usa no VirtualBox.

Se você precisar exportar da mesma VM em intervalos regulares, por exemplo, todos os dias, isso poderia ser uma dor. Mas se você passar para uma tecnologia diferente ocasionalmente, tudo bem.

Se você já tiver um arquivo .vdi, poderá testar se isso funciona sem precisar criar uma nova máquina virtual. Exporte-o para um .ova e tente importar com o vmware.


5

Os arquivos de imagem de disco residem no sistema host e são vistos pelos sistemas convidados como discos rígidos de determinada geometria. Quando um sistema operacional convidado lê ou grava em um disco rígido, o VirtualBox redireciona a solicitação para o arquivo de imagem.

Como um disco físico, um disco virtual tem um tamanho (capacidade), que deve ser especificado quando o arquivo de imagem é criado. Ao contrário de um disco físico, no entanto, o VirtualBox permite que você expanda um arquivo de imagem após a criação, mesmo que já tenha dados; O VirtualBox suporta quatro variantes de arquivos de imagem de disco:

VDI: Normalmente, o VirtualBox usa seu próprio formato de contêiner para discos rígidos convidados - arquivos de Imagem de Disco Virtual (VDI). Em particular, esse formato será usado quando você criar uma nova máquina virtual com um novo disco.

VMDK: O VirtualBox também oferece suporte total ao formato de contêiner VMDK popular e aberto que é usado por muitos outros produtos de virtualização, em particular, pelo VMware. [25]

VHD: VirtualBox também oferece suporte total ao formato VHD usado pela Microsoft.

Arquivos de imagem da versão 2 do Parallels (formato HDD) também são suportados. [26] Por falta de documentação do formato, os formatos mais recentes (3 e 4) não são suportados. Você pode, no entanto, converter esses arquivos de imagem para o formato da versão 2 usando ferramentas fornecidas pelo Parallels.


2
Esta resposta vem do capítulo 5 do manual do VirtualBox. ligação
JerryOL

4

Depende de como você planeja usar o disco virtual também. Nem toda VM quer uma única partição em um único disco.

VDI parece ter mais opções (quando usado com o VirtualBox), mas assim que você tira o VirtualBox da imagem, o suporte para VDI se torna um pouco instável (a partir do final de 2014).

Por exemplo, minhas soluções precisam ter suporte máximo em várias plataformas. Montar um VDI (como um dispositivo de loopback) no linux ou no Windows 7 é mais difícil e mais complicado do que você poderia esperar. Quase como o VDI tem muitos recursos, tornando difícil fazer utilitários que estejam em conformidade e que possam operá-lo.

VMDK é apenas menos IMHO indolor quando você quer que ele funcione com qualquer VM em qualquer estação de trabalho, quando você deseja cloná-lo 3 vezes para outros sistemas na rede ao mesmo tempo, e quando você deseja forçá-lo aberto sem iniciar uma VM instância.

Embora eu use o VirtualBox 90% do tempo, as poucas vezes em que meus discos se tornam inacessíveis em certos fluxos de trabalho me levaram a favorecer o VMDK para sistemas de arquivos conectáveis ​​/ compartilhados.


4

Uma boa razão para eu usar o vmdk é que o Virtualbox (pelo menos até a v4.1) usando o formato VDI tem a tendência, ao longo do tempo, de preencher todo o espaço em disco alocado, embora o uso do disco virtual interno ainda seja muito menor. Com o Virtualbox usando discos vmdk, isso parece ser um problema menor.

Mas eu estou falando de anos de atividade. Isso pode não ser um problema que muitas pessoas enfrentam.


2
Está mais relacionado à fragmentação do sistema de arquivos convidado do que ao próprio formato.
EnzoR

3

Parece que usar o VDI possibilita cortar o arquivo do disco para seu tamanho real Suporte ao comando TRIM do VirtualBox e do SSD


Embora preciso, é um pouco sem brilho para uma pergunta que pergunta sobre as diferenças gerais entre esses formatos, você não acha?
Seth

3
@Seth A visão geral geral foi fornecida por respostas anteriores e eu não tenho representante suficiente para apenas comentar, mas ainda é importante mencionar esse fato
OwnageIsMagic

1
Apenas como sugestão, adicione-o para dar mais contexto. Por exemplo. "Enquanto isto resposta fornece uma boa visão geral, você também deve considerar a vantagem de ... ". Assim, mesmo se ler sozinho a sua resposta tem uma relação com um mais geral.
Seth

@Seth existe edit botão sob minha pergunta para você: D
OwnageIsMagic

1
Posso garantir que vou rever a sua edição para que o seu trabalho não seja desperdiçado. Além disso, você será mencionado como editor de pergunta, assim você terá uma atribuição adequada. Qual é o problema?
OwnageIsMagic

1

A VDI é muito mais fácil de compactar se a VM ficar muito grande.


1

Há muito tempo fiz um teste, converti o vdi dinâmico em vhd dinâmico apenas para testar a velocidade e o tamanho dos arquivos.

Lembre-se que foi um inmutable guest Windows limpo os instalar com alguns aplicativos, lembre-se para o meu teste eu converter um formato para outro, por isso ambos são suostos para ter a mesma imagem exactr, como fazer uma clonagem.

Para um tamanho de disco de 64GiB, o tamanho do arquivo VDI foi de 18GiB, enquanto o tamanho do arquivo de VHD foi 22GiB.

Eu posso lembrar que vi estas duas coisas:

  1. Tempo de inicialização foi significativamente diferente, se eu não me lembro mau vhd foi 1,6 vezes mais rápido que VDI
  2. O tamanho do VHD foi muito maior do que o VDI, cerca de 4GiB gigabytes maiores que 18GiB, portanto, 1,2 vezes maior.

Isso foi há muito tempo e o teste foi feito em um disco rígido, mas eu garanto que ambos os arquivos sejam desfragmentados e próximos um do outro na parte rápida do disco.

Espero que alguém possa fazer verdadeiros testes SSD, mas meu sentimento é que o VHD é mais rápido (e maior) que o VDI.

Apenas uma dica: VHD / VHDX pode ser compactado diretamente em qualquer Windows 7 e Up usando a ferramenta de linha de comando DiskPart, para VDI é necessária uma ferramenta externa CloneVDI.

Desculpe eu não testei o VMDK, eu não sabia como compactá-lo sem mudar seu UUID (o UUID do disco), lembre-se que as ferramentas de comando do VBOX mudam sempre em cada clone, não importa o formato que você usa.


1

Acabei de migrar um VMDK bruto, que foi mapeado para uma partição de um SSD370 128 GB da Transcend para um Samsung Pro 850 de 512 GB.

Aparentemente, o VMDK é muito mais rápido que o VDI. Eu não entendo porque, talvez eu tenha cometido um erro em algum lugar.

Eu copiei o VMDK através do Virtual Media Manager para o 850. Uma vez como um VDI, uma vez como um VMDK.

Então eu corri hdparm -tT --direct /dev/sda nas imagens. Para cada um dos "runs" troquei de substituir o "Machine - & gt; Settings - & gt; Storage - & gt; Controller SATA - & gt; ImageFile.xxx". A partição bruta no SSD370 foi definida por um arquivo VMDK, portanto, não é realmente uma imagem.

Estes são os resultados:

################################################################################################

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-96-generic x86_64)

  System information as of Thu Sep 21 17:02:51 CEST 2017

  System load:  1.96               Processes:              201
  Usage of /:   83.2% of 43.88GB   Users logged in:        0
  Memory usage: 4%                 IP address for eth0:    
  Swap usage:   0%                 IP address for docker0: 172.17.0.1

################################################################################################

======================================================================================
      V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================

 Timing O_DIRECT cached reads:   1024 MB in  2.00 seconds = 511.61 MB/sec <---
 Timing O_DIRECT disk reads: 1134 MB in  3.00 seconds = 377.88 MB/sec <---

 Timing O_DIRECT cached reads:   1042 MB in  2.00 seconds = 520.82 MB/sec <---
 Timing O_DIRECT disk reads: 1162 MB in  3.00 seconds = 387.27 MB/sec <---

---

 Timing O_DIRECT cached reads:   816 MB in  2.00 seconds = 407.55 MB/sec
 Timing O_DIRECT disk reads: 1020 MB in  3.01 seconds = 339.43 MB/sec <---

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

 Timing O_DIRECT cached reads:   836 MB in  2.00 seconds = 417.21 MB/sec <---
 Timing O_DIRECT disk reads: 782 MB in  3.01 seconds = 260.21 MB/sec

 Timing O_DIRECT cached reads:   834 MB in  2.00 seconds = 416.08 MB/sec
 Timing O_DIRECT disk reads: 786 MB in  3.00 seconds = 261.71 MB/sec

---

 Timing O_DIRECT cached reads:   826 MB in  2.00 seconds = 412.75 MB/sec <---
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.79 MB/sec

 Timing O_DIRECT cached reads:   828 MB in  2.00 seconds = 413.88 MB/sec <---
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.83 MB/sec

---

 Timing O_DIRECT cached reads:   842 MB in  2.00 seconds = 420.76 MB/sec <---
 Timing O_DIRECT disk reads: 770 MB in  3.00 seconds = 256.56 MB/sec

======================================================================================
      V D I --- on Samsung Pro 850 515GB
======================================================================================

 Timing O_DIRECT cached reads:   470 MB in  2.01 seconds = 234.21 MB/sec <---
 Timing O_DIRECT disk reads: 766 MB in  3.00 seconds = 254.94 MB/sec

 Timing O_DIRECT cached reads:   494 MB in  2.00 seconds = 246.45 MB/sec <---
 Timing O_DIRECT disk reads: 754 MB in  3.00 seconds = 250.92 MB/sec

 Timing O_DIRECT cached reads:   490 MB in  2.00 seconds = 244.46 MB/sec <---
 Timing O_DIRECT disk reads: 764 MB in  3.01 seconds = 254.03 MB/sec

################################################################################################
# Data above comes from here
################################################################################################

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 17:02:51 CEST 2017

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   836 MB in  2.00 seconds = 417.21 MB/sec <======
 Timing O_DIRECT disk reads: 782 MB in  3.01 seconds = 260.21 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   21080 MB in  2.00 seconds = 10554.40 MB/sec
 Timing buffered disk reads: 784 MB in  3.00 seconds = 260.92 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   834 MB in  2.00 seconds = 416.08 MB/sec <======
 Timing O_DIRECT disk reads: 786 MB in  3.00 seconds = 261.71 MB/sec <======

======================================================================================
      V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================

  System information as of Thu Sep 21 17:00:47 CEST 2017

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   1024 MB in  2.00 seconds = 511.61 MB/sec <======
 Timing O_DIRECT disk reads: 1134 MB in  3.00 seconds = 377.88 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   21182 MB in  2.00 seconds = 10603.52 MB/sec
 Timing buffered disk reads: 1060 MB in  3.00 seconds = 352.91 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   1042 MB in  2.00 seconds = 520.82 MB/sec <======
 Timing O_DIRECT disk reads: 1162 MB in  3.00 seconds = 387.27 MB/sec <======

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 16:58:12 CEST 2017

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   826 MB in  2.00 seconds = 412.75 MB/sec <======
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.79 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   22082 MB in  2.00 seconds = 11055.78 MB/sec
 Timing buffered disk reads: 788 MB in  3.01 seconds = 262.11 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   828 MB in  2.00 seconds = 413.88 MB/sec <======
 Timing O_DIRECT disk reads: 774 MB in  3.00 seconds = 257.83 MB/sec <======

======================================================================================
      V D I --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 16:55:24 CEST 2017

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   21468 MB in  2.00 seconds = 10747.37 MB/sec
 Timing buffered disk reads: 662 MB in  3.01 seconds = 220.12 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   470 MB in  2.01 seconds = 234.21 MB/sec <======
 Timing O_DIRECT disk reads: 766 MB in  3.00 seconds = 254.94 MB/sec <======

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   494 MB in  2.00 seconds = 246.45 MB/sec <======
 Timing O_DIRECT disk reads: 754 MB in  3.00 seconds = 250.92 MB/sec <======

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   20872 MB in  2.00 seconds = 10448.98 MB/sec
 Timing buffered disk reads: 694 MB in  3.01 seconds = 230.78 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   490 MB in  2.00 seconds = 244.46 MB/sec <======
 Timing O_DIRECT disk reads: 764 MB in  3.01 seconds = 254.03 MB/sec <======

======================================================================================
      V M D K --- on Samsung Pro 850 515GB
======================================================================================

  System information as of Thu Sep 21 16:52:32 CEST 2017

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   20872 MB in  2.00 seconds = 10448.90 MB/sec
 Timing buffered disk reads: 764 MB in  3.01 seconds = 254.11 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   842 MB in  2.00 seconds = 420.76 MB/sec <======
 Timing O_DIRECT disk reads: 770 MB in  3.00 seconds = 256.56 MB/sec <======

======================================================================================
      V M D K --- R A W !!! --- on Transcend SSD370 128 GB
======================================================================================

  System information as of Thu Sep 21 16:29:55 CEST 2017

user@xeon:~$ sudo hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   22034 MB in  2.00 seconds = 11029.82 MB/sec
 Timing buffered disk reads: 990 MB in  3.00 seconds = 329.68 MB/sec

user@xeon:~$ sudo hdparm -tT --direct /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   816 MB in  2.00 seconds = 407.55 MB/sec <======
 Timing O_DIRECT disk reads: 1020 MB in  3.01 seconds = 339.43 MB/sec <======

Eu realmente não sei como interpretar isso, talvez alguém queira deixar um comentário sobre isso. Eu escolhi o VMDK então.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.