A maneira mais rápida de mesclar instantâneos no VirtualBox?

45

Eu tenho vdi com um grande número de instantâneos tirados dele - digamos, 50 ou 70 instantâneos. Eu quero ter um vdi simples com um estado atual. Esses instantâneos ocupam muito espaço em disco e não são necessários como instantâneos.

Eu sei que se eu ligar

VBoxManage clonehd thedisk.vdi thedisk-full.vdi
(50-70 times) VBoxManage clonehd {uuid-of-snapshot}.vdi thedisk-full.vdi --existing

Eu vou conseguir o que quero. Mas demora muito, muito tempo (mais de 5 horas, dado o meu hardware e tamanho de disco inicial de 16G).

E, claro, eu tentei VBoxManage snapshot delete e é estranho: não funciona na máquina parada, pode falhar na máquina em execução e quando falha uma vez, ele irá falhar todas as chamadas subseqüentes.

Existe uma maneira de tornar o vdi simples a partir de vários snapshots - mais rápido?

$ VBoxManage --version
3.2.14r75509

(perguntou em ServerFault mas decidiu que este lugar é mais apropriado para esta questão)

    
por Andrey Regentov 03.05.2013 / 11:43

5 respostas

46

Encontrou a solução. É tão simples quanto o último passo dos comandos que escrevi aqui. Ou seja

VBoxManage clonehd fullpath/{uuid-of-last-snapshot}.vdi thedisk-full.vdi

Então eu deveria clonar apenas o último instantâneo, não todos os instantâneos da cadeia. E é milhares por cento mais rápido.

O uuid pode ser encontrado em VBoxManage list hdds | grep VmName | tail

Na GUI (no Windows), selecione a VM, selecione Instantâneos no canto superior direito, clique com o botão direito no instantâneo desejado, selecione Clone ... , e selecione Full Clone na caixa de diálogo.

    
por 10.05.2013 / 07:01
20

Aqui está uma técnica (testada no VirtualBox 4.3.4) que usa o 'Clone' comando para mesclar e compactar todos os instantâneos para uma nova VM contendo um único arquivo VDI:

  1. Renomeie a VM para poder reutilizar o nome atual da VM clonada (você pode alterar o nome da VM na guia "Básico" das configurações "Geral".

  2. Clique com o botão direito do mouse na VM e execute o comando 'Clone ...':

    • Defina o nome para o nome original da VM.
    • Aceite os padrões restantes, ou seja, tipo Clone: 'Clone completo'; Instantâneos: 'Estado atual da máquina'.
  3. Exclua a VM antiga (clique com o botão direito do mouse na VM e execute o comando 'Remover ...' comando).

por 05.12.2013 / 01:12
3

Você pode tentar exportar para OVF e, em seguida, importar de volta os dados gerados arquivo.

Como explicado aqui :

OVF cannot describe snapshots that were taken for a virtual machine. As a result, when you export a virtual machine that has snapshots, only the current state of the machine will be exported, and the disk images in the export will have a "flattened" state identical to the current state of the virtual machine.

Como resultado, você terá uma VM clonada com o estado atual sem outros snapshots.

    
por 03.05.2013 / 12:59
0

Essa operação significa ler e gravar arquivos muito grandes no mesmo disco físico. A única maneira de acelerar isso é colocar esses arquivos em discos diferentes, alterando os caminhos no comando VBoxManage. Se a máquina tiver apenas um disco, você poderá usar uma unidade USB externa ou até mesmo um disco em outra máquina através de um compartilhamento de rede (dependendo da velocidade da sua rede)

    
por 07.05.2013 / 11:28
-2

Alguns têm 10Gib / s LAN, por isso podem transferir mais de um gigabyte por segundo, por isso não será um afunilamento.

Alguns possuem 1Gib / s LAN, portanto, ele pode transferir mais de 100 megabytes por segundo, portanto, não será um gargalo (a menos que você tenha um SSD realmente rápido).

Discos mecânicos, quando lidos & escreva no mesmo disco ao mesmo tempo (ou muito fragmentado), desça por cerca de 20 megabytes por segundo, enquanto que em não fragmentado somente leitura ou somente gravação pode ir para mais de 100 megabytes por segundo.

Você diz que a LAN é mais lenta, mas não sobre USB (2.0, para não mencionar 1.1 ou 1.0) é muito mais lenta.

O que eu gostaria de sugerir seria: usar USB 3.1 Gen2 tipo C ou eSATA / SATA / SAS

Mas sempre: use um segundo disco rápido o suficiente.

E sempre: Clonar para outro disco e copiar o arquivo é muito mais rápido do que usar apenas um disco, a menos que seja um SSD ou um disco rígido com braços de várias cabeças independentes (eles podem ler e escrever ao mesmo tempo tempo em dois lugares de superfície, cada cabeça tem seu próprio braço, muito caro, sobre > 9876 €).

O melhor é clonar apenas o disco rígido virtual do estado desejado, depois verificar se funciona e, em seguida, remover o nível superior (excluirá todos os instantâneos), remova o HDD no armazenamento e conecte esse novo.

Assim, para perder todos os estados antigos em um esquema de instantâneos sem árvore:

  1. Clone de um disco rígido para outro, evite gargalos
  2. Crie uma nova máquina, conecte esse disco, desconecte-o, configure-o como inmutável
  3. Teste funciona (já que é inmutável) você terá o mesmo estado
  4. Se você precisar que não seja inmutável, desconecte-o, volte ao normal, etc.
  5. Excluir os instantâneos da máquina antiga (RESTORE primeiro)
  6. Excluir a máquina de teste temporal
  7. Copiar de volta para o disco do disco virtual
  8. Anexar o disco clonado

Mas, em geral, os snapshots podem ser como uma árvore completa, um nó pode ter mais de um filho, cada filho pode ter mais de um filho, etc.

Para trabalhar com árvores de snoapshots, sempre pense em DELETE como excluir um nó sem afetar o restante dos nós (apenas perder esse estado, mas não há descanso, nenhum pai e nenhum filho serão afetados, os dados serão mesclados em todos os nós) os primeiros childs de subnível, processo lento) e RESTORE como destruindo todos os seus filhos em todos os subníveis (perdendo todos os estados depois daquele que você restaura, ele somente apaga os arquivos, então processa muito rápido, apenas alguns segundos).

Isso é!

P.D .: Como os nomes horríveis que o VBOX deu a essas duas operações (exclua apenas um nó = DELETE; exclua todos os nós filhos em todos os subníveis = RESTORE)

    
por 20.02.2017 / 12:03