Recupere arquivos de uma máquina Virtualbox quebrada .vdi

23

Meu Ubuntu 12.04.1 em execução no virtualbox ficou sem espaço enquanto eu instalava o software e agora não está sendo reinicializado . Eu tenho arquivos que preciso recuperar dele. Eu tenho o ubuntu64.vdiarquivo no meu laptop Windows 7 (host) e queria saber se existe alguma maneira de recuperar os arquivos do arquivo vdi.

Paralelamente, eu criei uma nova máquina 12.04.1 na caixa virtual do mesmo laptop, e usarei essa em vez da que está sendo usada.

Eu posso adicionar o borked vdià lista de discos no trabalho. Então usei o gnome nautilus para montar o disco com borked.

Eu posso encontrar os arquivos lá, mas eles têm cerca de 2 meses. Acho que isso coincide com a última vez que fiz um instantâneo da caixa virtual, mas não a última vez que consegui uma máquina em funcionamento, que foi ontem. Existe alguma maneira de montar a vdipartir de ontem, pouco antes de cair?

EDITADO:

Aqui está o que Virtual Media Managerme diz sobre o meu ubuntu64.vdiarquivo: insira a descrição da imagem aqui

EDITADO2:

Copiei o meu ubuntu.vdipara um USB externo com muito espaço em disco. Tentei usar o Windows para cloná-lo, mas ocorreu um erro:

insira a descrição da imagem aqui

Tentei o mesmo na VM em funcionamento por meio de uma pasta compartilhada da unidade USB e a clonagem foi iniciada. Demorou um bom tempo, mas terminou com sucesso:

root@precise64:/media/sf_E_DRIVE/copy_of_ubuntu64_vm_folder_20140224/ubuntu64# 
VBoxManage clonehd ubuntu64.vdi ubuntu64.raw --format RAW
0%...

10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'RAW'. UUID: 90f99198-18e1-40ee-85fe-c083dcbb1ac3

EDITADO3:

Depois de criar o arquivo bruto, eu corro testdiskcom Deeper Search, recebo uma lista como esta: insira a descrição da imagem aqui

Após o Deeper Searchtérmino, recebo uma lista como esta:

insira a descrição da imagem aqui

Mas não sei qual é qual instantâneo ... Alguma idéia?

719016
fonte
@ Takkat, isso parece legal. Como eu posso fazer isso?
719016
@ Takakat, eu fiz e montei usando o gnome nautilus, mas acredito que ele montou uma versão antiga da máquina com dois meses.
719016
2
O problema aqui não é como recuperar o disco, mas como fazer isso mesclado com o instantâneo. Se você tentar clonar seu vdi, ele terá outro uuid e o snapshot não funcionará com ele e você perderá os dados mais recentes. Não uso snapshots regularmente porque já tive discos corrompidos no passado e consegui recuperar o disco base, mas sempre perdi os deltas. Espero que alguém aqui dê uma boa receita para recuperar a base e o delta.
Pablo Marin-Garcia
1
É a próxima vez: nunca armazene dados na máquina virtual, monte sempre uma unidade externa ... ou faça backup / sincronização frequente via rsync.
Dee
1
Tente clonar o instantâneo mais recente, não o disco original. Você deve usar Vboxmanage clonehd 2208...(copie o UUID mais recente aqui). Veja serverfault.com/a/506581/195528
Rmano

Respostas:

21

Da linha de comando

Caso usemos o Ubuntu como host, podemos converter nosso disco .vdi em um disco bruto com o seguinte comando:

VBoxManage clonehd <sourcename> <clone.raw> --format RAW

Em seguida, podemos abrir o testdisk Instale testdisk com esse arquivo para recuperar arquivos na imagem da unidade virtual (também veja abaixo):

testdisk <clone.raw>

De uma máquina virtual

Caso a imagem da unidade VDI quebrada ainda esteja registrada no Virtual Box, podemos adicionar essa imagem como uma unidade à nossa nova máquina virtual:

insira a descrição da imagem aqui

Inicie o Ubuntu virtual ao qual adicionamos o .vdi quebrado, mas não monte a unidade .

  1. Crie um diretório em uma partição montada para armazenar os dados coletados (por exemplo ~/rescued),

  2. Instale o testdisk Instale testdisk na máquina virtual.

  3. Inicie o testdisk a partir de um terminal:

    sudo testdisk
    
  4. Escolha a unidade apropriada para coletar dados (aqui mostrado para /sdb) e selecione[Proceed]

    insira a descrição da imagem aqui

  5. Escolha o layout de partição apropriado (geralmente Intel)

  6. Selecionar [Analyse]-[Quick Search]

  7. Selecione a partição que contém os dados a serem coletados (aqui apenas uma partição NTFS estava presente):

    insira a descrição da imagem aqui

  8. Pressione P para listar arquivos nessa partição.

  9. Vá para o diretório que contém os dados. Veja os nomes dos arquivos para garantir que você escolheu os corretos.

  10. Selecione diretórios ou arquivos para colher usando : . Todos os arquivos / diretórios selecionados serão marcados em verde:

    insira a descrição da imagem aqui

  11. Pressione maiúsculas C para copiar todos os diretórios / arquivos selecionados para o diretório de recuperação que será selecionado na próxima etapa.

  12. Escolha um diretório nas partições montadas da sua VM do Ubuntu para armazenar dados recuperados:

    insira a descrição da imagem aqui

  13. Pressione c para começar a copiar os dados do .vdi quebrado para o nosso diretório de resgate na sua VM íntegra.

Notas:

  • Caso não possamos ver nossos arquivos com a [Quick Search]opção 6. , talvez seja necessário executar a [Deeper Search]. Isso também listará as partições excluídas e substituídas anteriormente. Portanto, precisamos ter certeza de selecionar as partições apropriadas onde nossos dados residem.

  • Se tiramos instantâneos do arquivo .vdi, podemos encontrá-los, ~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkmas sempre que usamos o recurso de instantâneo do Virtual Box, qualquer alteração de um instantâneo será gravada em um arquivo diferencial.

    Para mesclar o arquivo diferencial com o disco rígido, precisamos excluir todos os snapshots (o que provavelmente não é o que queremos, pois poderíamos restaurar o snapshot anterior em vez de solicitar a recuperação de dados) ou precisamos clonar a unidade da máquina usando:

    VBoxManage clonehd <name_of_source> <clone>
    

    Em seguida, vinculamos o clone à nossa VM de resgate, como mostrado acima.

  • A gravação no arquivo .vdi quebrado só deve ser feita após a segurança dos dados, pois isso pode danificar ainda mais o sistema de arquivos.

  • Caso nosso Ubuntu de resgate seja muito pequeno para armazenar os dados resgatados, podemos criar outra nova unidade virtual para vincular à VM. Essa unidade deve ser montada na VM para poder salvar os dados do testdisk lá.

Takkat
fonte
obrigado por estas instruções brilhantemente detalhadas. Eu os segui corretamente e adicionei os arquivos para copiar na minha pasta resgatada. A cópia foi bem-sucedida, mas o registro de data e hora dos arquivos era bastante antigo: no verão de 2013, em vez de dois dias atrás. Não me lembro se fiz algo em particular há 8 meses, mas, à primeira vista, meus arquivos de dois dias atrás não estavam lá. Agora estou usando Deeper Searchpara navegar novamente.
719016
@ 213441265152351 - também veja a pasta de instantâneos ... pode haver um .vmdk mais recente (pelo menos foi com meus sistemas aqui). Espero que você encontre seus dados :)
Takkat
Eu fiz um Deeper Search, e depois de um par de horas, pesquisados novamente o conteúdo que eu queria para se recuperar: eles ainda estão apontando para uma versão de verão 2013 da máquina virtual, mais cedo do que apenas a montagem da partição com gnome nautilus, que foi me dando uma janeiro Versão 2014, mas ainda não foi possível encontrar os arquivos de dois dias atrás.
719016
1
@ 213441265152351: bem, isso é mais complicado então. Pode ser que as imagens diferenciais ainda não tenham sido gravadas adequadamente na unidade quando ocorreu a "falha". Você pode tentar dar uma olhada no disco no Virtual Media Manager (consulte virtualbox.org/manual/ch05.html#diffimages ) para ver se foi esse o caso, mas devo dizer que não terei um bom desempenho. idéia de como recuperar dados dessas imagens.
Takkat
2
@Rmano: na verdade, uma VDI clonada não incluirá nenhum instantâneo, mas será o último estado atual da VM com diferenciais mesclados. Somente no caso de precisarmos clonar um snapshot anterior, podemos usar um VDI do snapshot para clonar, mas todas as alterações posteriores ao snapshot não serão incluídas no clone.
Takkat 28/02
5

1) Tente recuperar o instantâneo pelo UUID, use o seguinte hack:

  • escolha UUID do estado que você deseja recuperar.
  • Abra o arquivo .xml, de preferência em uma ferramenta (funciona o Internet Explorer) que permite a navegação fácil do arquivo XML.
  • Na MUITO INFERIOR, na seção Controladores de Armazenamento, localize o UUID do Estado Atual e observe o nome StorageController =, type = e AttachedDevice type =, port = e device = settings.
  • No meio, encontre o instantâneo desejado.
  • Na seção Controlador de armazenamento da captura instantânea, localize o AttachedDevice com os valores (nome / tipo / tipo / porta / dispositivo) que correspondem aos valores recuperados acima.
  • Essa imagem UUID identifica a imagem de instantâneo para o disco rígido. Remova os {} colchetes e

insira o comando C:> VBoxManage clonehd <UUID> CloneDisk.vdi

Espero que ajude, eu encontrei a solução aqui: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) se as etapas em 1) não funcionarem, veja outras etapas que você pode tentar. Como clonar o estado atual de um disco:

  • Abra o Virtual Media Manager (Menu: Arquivo> Virtual Media Manager).
  • Navegue até o disco rígido que deseja clonar e expanda completamente a árvore (use a tecla * no teclado numérico).
  • Encontre o arquivo .vdi {hexUUID} anexado à VM da qual você deseja clonar o estado atual. Serão (um dos) arquivos de folhas no final de um ramo. Quando você o seleciona, o texto 'Anexado a:' na parte inferior da janela diz: 'Anexado a:', sem nenhum (nome da captura instantânea) entre colchetes.
  • Clique no nome do arquivo à direita de 'Local:' exibido na parte inferior da janela.
  • Ctrl + C / Copiar para copiar o texto para a área de transferência, que será algo como: (caminho) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / Cole e extraia o valor hexUUID (removendo os colchetes {}) e execute clonehd para cloná-lo!

Essa solução é daqui: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) Ambos falam principalmente sobre o mesmo.

Dee
fonte
1

Eu tinha um sistema Linux corrompido /e fscknão conseguia corrigi-lo . Eu usei a seguinte abordagem simples:

  1. Adicione um novo VDI de substituição à máquina.
  2. Faça o download de uma nova ISO do Linux.
  3. Inicialize e instale um novo linux no disco que você adicionou em (1).
  4. Monte o disco no seu novo sistema e copie os arquivos necessários. Geralmente, isso significa copiar a /home/user/pasta. Lembre-se de copiar os arquivos ocultos (arquivos de configurações).

Funcionou bem para mim. A corrupção do disco estava apenas atrapalhando a inicialização, não houve perda de dados na minha pasta pessoal.

Deleet
fonte