Não é possível inicializar depois que o disco rígido vhd é redimensionado no VirtualBox

15

No Windows 7, configurei outra VM do Windows 7 no VirtualBox. Funcionou muito bem. Então, eu precisava aumentar o tamanho do HD vhd. Então, usei o utilitário VBoxManage para fazer isso com o seguinte comentário:

VBoxManage modifyhd "c:\VMs\Win7.vhd" --resize 30000

Em seguida, tentei executar a VM novamente, mas ela não pode ser inicializada e gera o seguinte erro:

FATAL: Nenhum meio inicializável encontrado! Sistema interrompido.

Então, tentei ver o que está acontecendo dentro do VHD e anexá-lo ao Gerenciamento de dispositivos e ele diz que não pode ser anexado porque o arquivo ou diretório está corrompido e ilegível .

Alguma idéia do que deu errado aqui e como posso salvar minha VM dentro desse arquivo VHD?

tugberk
fonte
Eu tinha exatamente o mesmo problema e não consegui encontrar nenhuma solução útil on-line, então comecei a analisar o VHD manualmente, de acordo com a documentação da Microsoft. Atualmente, parece que há um erro na implementação do modifyhd, que não ajustou o deslocamento para os blocos de dados depois de expandir a tabela de alocação de blocos. Eu preciso fazer mais algumas experiências para verificar isso.
billc.cn
No VirtualBox 4.3.10, redimensionei um arquivo .vhd. Parece que não apenas não ajustou os ponteiros da tabela de alocação de bloco, mas também expandiu a tabela de alocação de bloco para o primeiro bloco de dados, substituindo meu MBR e tabela de partição. Não use o VirtualBox para redimensionar arquivos .vhd!
Aaron

Respostas:

12

Infelizmente, a documentação do VirtualBox para a opção --resize VBoxManage é enganosa. Você não pode simplesmente aumentar o tamanho da imagem do disco e fazer com que tudo funcione corretamente. As informações da partição do disco na imagem devem ser ajustadas para que o sistema operacional convidado conheça o layout da "unidade" que a imagem do disco está simulando. Você realiza esse ajuste baixando uma imagem de CD inicializável que possui um editor de partições e inicializando a VM nesse CD. Em seguida, você usa o editor de partições para ajustar as partições da imagem do disco para usar o espaço adicionado.

Há uma boa descrição do procedimento aqui ; basta pular para a etapa 4.

Kyle Jones
fonte
Bem, isso é uma chatice. Isso significa que acabei de jogar fora as 3 horas de trabalho. Obrigado pela informação.
Tugberk
4
Eu segui a boa redação (depois que redimensionei meu VHD e não consegui inicializá-lo), e o GParted não mostrou nenhuma partição no disco rígido, apenas 50 GB de espaço não alocado. Isso significa que modifyhda unidade foi danificada sem reparo?
GSerg 05/02
1

Eu tive o mesmo problema e consegui recuperar os dados usando o LiveCD GParted

  1. Crie um novo VHD para receber os dados copiados (crie partições e formato)
  2. Faça o download do LiveCD GParted e inicialize no VirtualBox
  3. Selecione Dispositivo -> Tentativa de Recuperação de Dados
  4. Clique em OK e, depois da verificação, clique em Exibir (isso montará / tmp / gparted-roview-XXXXXX)
  5. No terminal, monte o segundo VHD (sudo mount / dev / sdb1 / mnt)
  6. Copie os arquivos (sudo cp -R / tmp / gparted-roview-XXXXXX / * / mnt

Depois disso, você pode desligar a Máquina Virtual e montar o VHD no Windows Device Manager.

Edison Henrique Andreassy
fonte
1

Aqui eles explicam o problema (em espanhol)

Resumo:

uma. "vboxmanage modifyhd (redimensionamento)" gera erro em muitos sistemas (versões Windows NT5, 9x, Server e x86). O resultado é uma partição corrompida, muito difícil de recuperar

b. Você precisa executar "vboxmanage modifyhd (redimensionar)" (para redimensionar o VDI) No caminho que contém todos os arquivos e pastas associados ao VDI. Olhe para a imagem

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Recomendação:

Substitua "vboxmanage modifyhd" por "vboxmanage clonehd"

  1. Crie um novo VDI de disco virtual (com o tamanho que você deseja expandir). Exemplo: Old.vdi tinha 50 gb. New.vdi criá-lo com 100 GB

    VBoxManage createhd - nome do arquivo /path/New.vdi --size 100000

  2. Clone-o com o seguinte comando:

    vboxmanage clonehd /path/Old.vdi /path/New.vdi - existente

Nota : Ambos os VDI não devem estar no mesmo caminho

  1. Execute New.vdi e vá para Windows Computer Management e estenda o espaço em disco (atribua o espaço vazio). Se você não quiser fazê-lo manualmente, poderá usar qualquer aplicativo de particionamento gratuito, como o AOMEI Partition Assistant Standard , GParted e muitos outros.

fonte
atualize a resposta
0

Vale ressaltar que eu tive exatamente o mesmo problema, devido ao fato de eu emitir o comando modifyhd enquanto o convidado estava em execução. A documentação oficial não diz nada sobre o fato de que você deve excluir os instantâneos primeiro e que o convidado deve ter sido parado.

Meu plano era redimensionar o disco enquanto a máquina estava funcionando, porque eu tenho um volume dinâmico que também pode ser aumentado em tempo real. No entanto, essa foi uma péssima idéia, pois reinicializei a máquina para obter o tamanho total do disco. Fiquei no escuro com uma imagem corrompida, que não consegui restaurar nem mesmo com o testdisk. O Testdisk encontra as partições, mas o sistema de arquivos está muito danificado e não pode ser reparado.

Portanto, esteja ciente:

  1. Mesclar todos os instantâneos na imagem base
  2. Encerre o SO convidado

Repeti o procedimento na minha máquina com uma imagem de backup e o sistema operacional convidado está sendo desligado, isso funciona bem.

Carsten Menke
fonte
0

Consegui recuperar uma imagem que foi quebrada por esse bug. Ao contrário de Edison, a imagem ao vivo do gparted não encontrou nada. Aqui está o que eu fiz:

  • Primeiro, como aparentemente o suporte ao VBox para VHD é ruim e terrível, comece convertendo o VHD em um VDI com VBoxManage clonehd foo.vhd --format vdi foo.vdi. Quando pulei esta etapa, pude recuperar arquivos da imagem, mas ela se "quebrou" novamente após algumas reinicializações. Acho que o bug realmente estraga o arquivo VHD de uma maneira que depois a E / S o "re-quebra" ... O VBox não parece ter esses problemas com o VDI, então desisti do VHD.

  • Inicialize no WinPE, o ambiente de pré-instalação do Windows. Como fazer isso pode ser um artigo em si. Se você não estiver familiarizado com isso, aqui está um atalho: Inicialize a partir de um DVD de instalação do Windows (Vista ou superior) e pressione Shift-F10 assim que a GUI aparecer, ele fornecerá um prompt de comando.

  • Faça o download do testdisk , encontre uma maneira de obtê-lo na sua imagem WinPE (ou um simples dispositivo USB funcionaria) e execute-o no ambiente WinPE. (Nota: O WinPE não possui o WOW64, a camada de compatibilidade de 32 bits para aplicativos de 32 bits. Portanto, minha configuração do WinPE de 64 bits precisava do binário do disco de teste de 64 bits.)

  • O Testdisk encontrou as partições e as restaurou.

  • Nesse ponto, os arquivos foram recuperados, mas o carregador de inicialização falhou por vários problemas. Em primeiro lugar, usados diskpartpara marcar a partição como activa ( list disk, sel disk <disk number>, sel par 0, active). Chegou mais longe, não inicializava. Voltou ao WinPE e foi excluído \boot, depois correu bcdboot C:\windows /s C:para reinstalar o carregador de inicialização.

  • No final, corri chkdisk /Rpara ter certeza de que a imagem estava boa. Demorou algumas horas, não encontrou nenhum problema.

asveikau
fonte
-1

Eu tive o mesmo problema, o GParted não reconheceu as partições e foi mostrado como espaço não alocado. Nesse ponto, entendi que os dados poderiam ter sido perdidos.

Lembrei-me de usar o testdisk para procurar partição perdida em discos rígidos; por que não experimentá-lo em discos virtuais? e funcionou.

  1. Inicialização do GParted, no momento em que escrevia essa resposta, o GParted tinha "testdisk" dentro dele. Basta executar o terminal, executar "sudo testdisk / dev / sda" ou o que for exibido no seu computador. Execute "sudo fdisk -l" para mostrar todos os discos.
  2. Analise a Tabela de Partição, ela descobrirá a partição imediatamente, pois ainda está nos primeiros setores. Escreva uma nova partição, tabela e prossiga com o GParted para continuar a recuperação, conforme instruções neste link: http://www.howtogeek.com/124622/how-to-enlarge-a-virtual-machines-disk-in-virtualbox -ou-vmware /
  3. Da próxima vez que você desejar fazer isso, faça uma cópia do seu VDISK primeiro.
  4. Notei no link abaixo que eles criam um novo VHD e clonam com --existing: http://tips.kaali.co.uk/2012/03/16/expand-or-increase-the-size-of-virtual- box-vdi-dis / Ainda não tentei, mas recuperei meu disco com as instruções acima.

Espero que ajude alguém.

Yousef
fonte
Cite as partes essenciais da resposta nos links de referência, pois a resposta pode se tornar inválida se as páginas vinculadas forem alteradas.
DavidPostill