Eu tenho o 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
Vou conseguir o que quero. Mas leva muito, muito tempo (mais de 5 horas, considerando meu hardware e tamanho de disco inicial de 16G).
E, é claro, 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, falha em todas as chamadas subseqüentes.
Existe uma maneira de criar vdi simples a partir de vários instantâneos - mais rapidamente?
$ VBoxManage --version
3.2.14r75509
(perguntou no ServerFault, mas decidiu que este lugar é mais apropriado para esta pergunta)
fonte
Respostas:
Encontrei a solução. É tão simples quanto o último passo dos comandos que escrevi aqui. Ou seja,
Portanto, devo clonar apenas o último instantâneo, nem 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 Snapshots no canto superior direito, clique com o botão direito do mouse no snapshot desejado, selecione Clone ... e selecione Clone completo na caixa de diálogo.
fonte
thedisk-full.vdi
arquivo em disco, altere primeiro o nome no comando para algo comothedisk-full-new.vdi
.tail -1
"?clonehd
foi preterido e deixado para compatibilidade com versões anteriores, use em seuclonemedium
lugar.Aqui está uma técnica (testada no VirtualBox 4.3.4) que usa o comando 'Clone' para mesclar e compactar todos os instantâneos em uma nova VM contendo um único arquivo VDI:
Renomeie a VM para poder reutilizar seu nome atual para VM clonada (você pode alterar o nome da VM na guia 'Básico' das configurações de 'Geral').
Clique com o botão direito do mouse na VM e execute o comando 'Clone ...':
Exclua a VM antiga (clique com o botão direito do mouse na VM e execute o comando 'Remover ...').
fonte
Você pode tentar exportar para OVF e depois importar novamente o arquivo gerado.
Como explicado aqui :
Como resultado, você terá uma VM clonada com o estado atual sem outros instantâneos.
fonte
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 seu 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)
fonte
Alguns têm LAN de 10 Gib / s, portanto, ele pode transferir mais de um gigabyte por segundo, para que não seja um gargalo.
Alguns têm LAN de 1 Gib / s, portanto, ele pode transferir mais de 100 megabytes por segundo, para que não seja um gargalo (a menos que você tenha um SSD muito rápido).
Os discos mecânicos, quando lidos e gravados no mesmo disco ao mesmo tempo (ou muito fragmentados), ficam inativos por quase 20 megabytes por segundo, enquanto que apenas leitura ou gravação não fragmentada pode atingir mais de 100 megabytes por segundo.
Você diz que a LAN é mais lenta, mas não o USB (2.0, para não mencionar 1.1 ou 1.0) é muito mais lento.
O que eu sugeriria seria: Use USB 3.1 Gen2 Tipo C ou um eSATA / SATA / SAS
Mas sempre: use um segundo disco rápido o suficiente.
E sempre: a clonagem em outro disco e a cópia de volta do arquivo são muito mais rápidas que o uso de apenas um disco, a menos que seja um SSD ou um disco rígido com braços independentes de várias cabeças (eles podem ler e gravar ao mesmo tempo em dois locais de superfície, cada cabeça tem seu próprio braço, muito caro, cerca de> 9876 €).
O melhor é clonar apenas o disco rígido virtual do estado desejado, verificar se funciona e, em seguida, RESTAURAR o nível superior (excluirá todos os instantâneos), remover o disco rígido no armazenamento e conectar esse novo.
Então, etapas, para perder todos os estados antigos em um esquema de instantâneos sem árvore:
Mas sempre lembre-se: os instantâneos 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 solte esse estado, mas não o restante, nenhum pai e filho serão afetados, os dados serão mesclados em todo o primeiro sub childs de nível, processo tão lento) e em RESTORE como destruir todos os seus childs em todos os subníveis (perdendo todos os estados depois daquele restaurado, ele exclui apenas os arquivos, processo muito rápido, apenas alguns segundos).
Isso é!
PD: como nomes horríveis que a VBOX deu a essas duas operações (exclua apenas um nó = DELETE; exclua todos os nós filhos em todos os subníveis = RESTORE)
fonte