Virtualbox: como mesclar estado atual (instantâneo) com imagem de disco

2

Temos um servidor virtual chamado Jira rodando sob o VirtualBox 4.0 (o host é Debian Squeeze). Em algum momento uma VM falhou ao inicializar, então tivemos que inicializar a partir do GRMO resgate iso. Antes de fazer isso, criamos um instantâneo da VM. Depois de corrigir os problemas de inicialização, a VM continuou a usar esse instantâneo como se fosse o estado atual. Esta é a saída do VBoxManage showvminfo jira:

Name:            jira
Guest OS:        Other/Unknown
UUID:            ef5260be-46d3-45cb-8c9d-9f9e322f9110
Config file:     /home/vbox/.VirtualBox/Machines/jira/jira.xml
Snapshot folder: /home/vbox/.VirtualBox/Machines/jira/Snapshots
Log folder:      /home/vbox/.VirtualBox/Machines/jira/Logs
Hardware UUID:   ef5260be-46d3-45cb-8c9d-9f9e322f9110
Memory size:     2048MB
Page Fusion:     off
VRAM size:       8MB
HPET:            off
Chipset:         piix3
Firmware:        BIOS
Number of CPUs:  1
Synthetic Cpu:   off
CPUID overrides: None
Boot menu mode:  message and menu
Boot Device (1): Floppy
Boot Device (2): DVD
Boot Device (3): HardDisk
Boot Device (4): Not Assigned
ACPI:            on
IOAPIC:          on
PAE:             on
Time offset:     0 ms
RTC:             local time
Hardw. virt.ext: on
Hardw. virt.ext exclusive: on
Nested Paging:   on
Large Pages:     off
VT-x VPID:       on
State:           running (since 2012-05-24T12:23:48.127000000)
Monitor count:   1
3D Acceleration: off
2D Video Acceleration: off
Teleporter Enabled: off
Teleporter Port: 0
Teleporter Address: 
Teleporter Password: 
Storage Controller Name (0):            jira.sata
Storage Controller Type (0):            IntelAhci
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  30
Storage Controller Port Count (0):      30
Storage Controller Bootable (0):        on
Storage Controller Name (1):            jira.ata
Storage Controller Type (1):            PIIX4
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1):  2
Storage Controller Port Count (1):      2
Storage Controller Bootable (1):        on
jira.sata (0, 0): /home/vbox/.VirtualBox/Machines/jira/Snapshots/{e8bedcaa-278b-4b06-a825-1dddc9e4fdb3}.vdi (UUID: e8bedcaa-278b-4b06-a825-1dddc9e4fdb3)
NIC 1:           MAC: 080027ABB6DD, Attachment: Bridged Interface 'eth0.100', Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps, Boot priority: 0
NIC 2:           disabled
NIC 3:           disabled
NIC 4:           disabled
NIC 5:           disabled
NIC 6:           disabled
NIC 7:           disabled
NIC 8:           disabled
Pointing Device: PS/2 Mouse
Keyboard Device: PS/2 Keyboard
UART 1:          disabled
UART 2:          disabled
Audio:           disabled
Clipboard Mode:  Bidirectional
Video mode:      720x400x0
VRDE:            enabled (Address 0.0.0.0, Ports 3389, MultiConn: off, ReuseSingleConn: off, Authentication type: null)
Video redirection: disabled
USB:             disabled

USB Device Filters:

<none>

Available remote USB devices:

<none>

Currently Attached USB Devices:

<none>

Shared folders:  <none>

VRDE Connection:    not active
Clients so far:     0

Guest:

OS type:                             Other
Additions run level:                 0
Configured memory balloon size:      0 MB

Snapshots:

   Name: beforeGRML (UUID: 70949bb5-985a-4ae6-ba28-3d0475434cf0) *

Como você pode ver, o instantâneo é denominado beforeGRML. Na verdade, eu suspeito que esse snapshot é o estado current , e a imagem do disco é um estado antes de recuperarmos a máquina com a iso GRML.

Minhas perguntas:

  • está correto que o instantâneo beforeGRML seja realmente um estado atual?
  • qualquer que seja um 'estado atual', quero mesclá-lo com o disco da VM e não ter instantâneos - como fazer isso?

Por favor note que a VM está hospedada em um servidor Debian remoto e eu uso a interface de linha de comando do VBoxManage. (Eu tentei ler a documentação, mas ainda não consigo descobrir o que todos os 'snapshot delete' e 'snapshot restore' fariam).

    
por thor 25.07.2012 / 11:30

2 respostas

11

Não beforeGRML não é o estado atual. É o estado da máquina do momento em que você fez o instantâneo.

O VirtualBox não é muito intuitivo com a nomeação do comando de instantâneo, se você quiser mesclar o estado atual, você tem que delete do instantâneo.

De seu manual ( link ):

The delete operation deletes a snapshot (specified by name or by UUID). This can take a while to finish since the differencing images associated with the snapshot might need to be merged with their child differencing images.

Para reverter para o estado do instantâneo, use a operação restore :

The restore operation will restore the given snapshot (specified by name or by UUID) by resetting the virtual machine's settings and current state to that of the snapshot. The previous current state of the machine will be lost. After this, the given snapshot becomes the new "current" snapshot so that subsequent snapshots are inserted under the snapshot from which was restored.

    
por 25.07.2012 / 14:10
4

Outra maneira de obter um disco virtual no estado de um instantâneo específico é clonar esse disco virtual com o VBoxManage.

Para ter certeza de qual disco virtual você clona, abra para ler o arquivo .vbox ou use a GUI para obter o caminho do disco (prefiro usar caminhos completos em vez de IDs de disco rígido).

Clonando um ... TheNameOfVirtualDisk ... fornece todos os estados anteriores mesclados ao novo, enquanto deixa inalterados todos os instantâneos.

Então você pode testar em uma nova máquina este novo disco e ver se é o que você quer que ele seja e se funciona.

Então, se algo der errado, você não perderá nada, exceto por algum tempo.

Sem mencionar que, se você quiser se livrar de apenas um instantâneo no meio da árvore de instantâneos ... é uma DOR, a terminologia usada pelo VBox faz com que muitas pessoas fiquem confusas.

Mas, pensando assim, você irá CORRIGIR a terminologia: Apagar um Instantâneo não perde nada além daquele ponto no tempo (internamente ele mescla esse Estado em todos os filhos).

Deixe-me explicar com um exemplo mais complexo. Você tem um nível superior, com dois filhos, um deles também tem dois filhos, enquanto o outro tem três filhos. O nível superior é A (um nó), o segundo nível é B (dois nós), o terceiro nível é C (cinco nós), portanto a árvore é a seguinte:

  • A1
  • A1 - B1
  • A1 - B1 - C1
  • A1 - B1 - C2
  • A1 - B2
  • A1 - B2 - C3
  • A1 - B2 - C4
  • A1 - B2 - C5

Imagine agora que você quer se livrar de B1, então quando você excluir B1, o disco diferencial precisará ser mesclado em C1 e C2, então C1 & C2 serão filhos de A1; não é tão simples quanto deletar um único arquivo; este VirtualBOX chama DELETE o instantâneo B1.

Agora vem o outro caminho do desejo: Quer perder os estados depois de um ponto, deixe-me ver por aquela árvore, eu quero me livrar de B2 e todos os seus filhos, então não há mais parte B2 na árvore ( implica eliminar todos os níveis de seus filhos), por isso será muito rápido fazer, é apenas para apagar alguns arquivos (C3, C4, C5 & B2); isso não é possível de ser feito no VirtualBOX, o que o VirtualBOX chama de RESTORE é para se livrar de C1, C2 & C3, mas não B2 ... você precisa editar manualmente o arquivo .VBOX e fazer isso manualmente. Se você restaurar A1 para se livrar de B2, você também perderá B1, C1 & C2 no processo.

Então, tenha certeza do que você faz!

Sim, o VirtualBOX permite que você se livre de B2 e de todos os seus filhos, mas não em uma etapa, você precisa de duas etapas:

  1. Restaurar B2, para que todos os childs sejam removidos e seus arquivos excluídos
  2. Excluir B2, então, o B2 é removido e seus arquivos são excluídos

Espero que agora possa ser um pouco claro ... muitas pessoas na Internet falam sobre perder todo o seu trabalho porque RESTORE A1, tentando REMOVER B2.

Se os termos tivessem sido REMOVER e DESTRUIR, não causaria tanta confusão.

REMOVER um nó é livrar-se desse nó sem tocar no resto (se ele tiver os filhos mesclar o estado em todos eles, se não apenas excluir o estado). DESTRUIR um nó é livrar-se de um nó e de todos os seus filhos (basta excluir o estado e todos os estados filhos).

Eu não entendo porque o VBox fala sobre o RESTORE ao falar sobre Snapshots, o que introduz muito mal-entendido.

    
por 20.02.2017 / 11:26

Tags