Migrar de uma máquina virtual (VM) para um sistema físico

124

Aka: Como posso converter um arquivo .vdi ou .vmdk em uma instalação real em um disco físico?

É possível / viável migrar uma instalação de Máquina Virtual do Ubuntu para uma máquina física? Se possível, quão difícil seria isso e quais etapas eu precisaria tomar para me preparar para a migração.

Eu gostaria de fazer alguns testes em uma VM e, se funcionar, migrar esse sistema para o hardware físico em vez de reinstalar tudo. Isso é possível?

dting
fonte

Respostas:

98

Sim é possivel. Não é mesmo que difícil, ele só leva algum tempo, um Ubuntu LiveCD, sticky-back-plástico, e um disco USB externo (se você não tem mais de um discos internos).

Etapa preliminar: converter o disco em algo útil

O VMWare e o VirtualBox (entre outros) usam formatos de disco que não se prestam a serem gravados diretamente no disco. Você pode, mas pessoalmente acho que é mais conveniente gravá-lo em uma imagem intermediária e padrão primeiro. Você pode fazer isso no seu sistema atual sem precisar inicializar em um LiveCD.

  • Carregue um terminal e dispare:

    cd /media/wherever-the-image-is/
    
    # for VMWare
    sudo apt-get install qemu-kvm
    qemu-img convert your-vmware-disk.vmdk -O raw disk.img
    
    # For VirtualBox
    VBoxManage clonehd your-virtualbox-disk.vdi disk.img --format RAW
    
  • Mova para /media/wherever-the-image-is/disk.imgalgum lugar em que você não esteja prestes a escrever. Se você está planejando gravá-lo no disco em que está atualmente, cole-o em um disco interno separado ou, o pior que se torna, um disco externo.

  • As instruções a seguir assumem que você o moveu /media/dave/disk.img( daveé um disco USB externo)

  • Antes de escrever qualquer coisa séria, verifique se possui backups . É uma coisa clichê a dizer, exceto um erro de digitação e há uma possibilidade muito real de você danificar seu sistema. Suponha que as coisas vão dar errado e esteja preparado. O CloneZilla pode ajudá-lo a fazer backups completos do disco, se você tiver um local para armazenar esses dados.

Grave a imagem em um disco próprio

Você vai querer fazer algo assim. Isso pressupõe que você substituirá um disco inteiro. Se você deseja fazer uma instalação paralela ao Windows, não siga estas instruções! Pule para depois das balas.

  • Inicialize em um CD do Ubuntu Live e clique em Experimente o Ubuntu.

  • Monte o local onde sua imagem vmdk está sendo armazenada (por exemplo, o disco USB externo como /media/dave). Você não montar o lugar onde você quer gravar.

  • Então vamos trabalhar:

    sudo dd if=/media/dave/disk.img of=/dev/sdX
    

    Você deseja substituir sdXpelo caminho correto para o disco de destino. A sudosenha está em branco, basta pressionar Enter.

  • Você pode abrir gpartedou algo mais e deverá ver sua partição Ubuntu no disco. Você deve conseguir expandi-lo.

Grave a imagem em um disco ao lado de outro sistema operacional

Esta é talvez uma maneira totalmente mais segura de fazer as coisas. A idéia é muito semelhante, além de você fazer uma instalação adequada do Ubuntu e depois apenas sincronizar os arquivos disk.img.

  • Desta vez, seu LiveCD precisará ter a mesma versão do Ubuntu que sua instalação virtual. Inicialize no Live CD e, novamente, clique em Instalar.

  • Siga o instalador, reparte novamente as coisas como achar melhor. Cerca de 10 minutos depois, você será instalado e solicitará a reinicialização. Não reinicie. Não importa se você acidentalmente faz isso, apenas certifique-se de voltar ao LiveCD para obter as próximas instruções.

  • Monte a partição da sua nova instalação e o disco externo onde você armazenou o disk.imgarquivo anterior (apenas clique duas vezes no Nautilus).

  • Monte o seu disk.img ISO em um terminal:

    sudo mkdir /media/oldinstall
    sudo mount -o loop /media/dave/disk.img /media/oldinstall
    

    -Nota - Depois de criar o arquivo .img desejado, às vezes quando você tenta montá-lo como um dispositivo de loop, você pode receber o seguinte erro

    "A assinatura NTFS está ausente. Falha ao montar '/ dev / loop0': argumento inválido O dispositivo '/ dev / loop0' parece não ter um NTFS válido."

    Às vezes, um arquivo .img contém um registro mestre de inicialização e uma tabela de partição antes da partição real que você deseja montar. Portanto, você precisa descobrir o deslocamento da partição necessária. Para isso, pode-se usar a ferramenta separada . Por exemplo, veja a resposta de sisco311 neste link http://ubuntuforums.org/archive/index.php/t-1576011.html

    Portanto, se você determinou seu deslocamento como 'xxx', poderá montar sua partição usando

    sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
    
  • A partir daí, você pode escolher arquivos de cerejeira ou simplesmente copiar tudo sobre a nova instalação do Ubuntu usando algo como:

    sudo rsync /media/oldinstall/ /media/my-new-install/
    
  • Reinicialize e você deve ser recebido com a instalação antiga do VMWare, mas apenas no metal. Se você tiver problemas desagradáveis ​​com o grub, poderá corrigi-lo retornando ao Live CD, fazendo chroot e consertando coisas .

Oli
fonte
7
Você conhece uma ferramenta que faz isso automaticamente?
the_drow
1
Para configurações no Windows / VirtualBox, o VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXcomando ainda funcionará. Tudo o que é necessário é fazer o cd Program Files\Oracle\VirtualBoxantes de executar o primeiro comando.
Aust
2
@ Duvido que /dev/sdXseja um destino válido no Windows. AFAIK será \\Device\Harddisk0ou algo assim.
Danatela
3
VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXnão funciona No Linux dá o erro: VBoxManage: error: Cannot create destination file "/dev/sdX": VERR_ALREADY_EXISTS. É necessário usar o VBoxManagecomando para enviá-lo para uma imagem primeiro. Em seguida, use DD para colocar a imagem no disco físico.
LD James
8

Talvez não seja exatamente o que você está pedindo, mas pode realizar o que você quer fazer.

Como todas as suas configurações estão armazenadas no diretório inicial, você pode fazer uma cópia de backup para outra partição em um disco real. Depois de instalar um Ubuntu novo em um disco real, basta executar o programa de backup mais uma vez para restaurar o diretório inicial com todas as configurações intactas.

Você pode usar um programa de backup realmente interessante chamado Déjà Dup .

Informações do ubuntu software center:

Déjà Dup é uma ferramenta de backup simples. Ele oculta a complexidade do backup do Caminho Certo (criptografado, externo e regular) e usa a duplicidade como back-end.

Recursos:

  • Suporte para locais de backup local, remoto ou na nuvem, como Amazon S3 ou Rackspace Cloud Files

  • Criptografa e comprime seus dados com segurança

  • Faz backup incremental, permitindo restaurar a partir de qualquer backup específico

  • Agenda backups regulares

  • Integra-se bem à sua área de trabalho GNOME

insira a descrição da imagem aqui

Você será feito em menos de duas horas!

boa sorte!

danizmax
fonte
1
Parece fácil. Posso confirmar que realmente funciona dessa maneira?
Mateng
entre outras coisas ... o UID (números de usuário) pode ser diferente nesse momento.
Tomachi 16/11
5

Experimente o UDPCast

A idéia é transmitir todo o seu vmdk da máquina virtual para a máquina física, onde é gravado no disco rígido físico.

O procedimento está descrito abaixo.

Como você possui um arquivo vmdk, você pode ter uma estação de trabalho VMWare à sua disposição, até mesmo complete a Máquina Virtual à qual este vmdk está conectado. Execute sua máquina virtual com esse vmdk específico anexado, mas, em vez da inicialização comum, use o PartedMagic liveCD para inicializar.

Quando o liveCD for iniciado, navegue até o menu principal e encontre o UDPCast Disk Cloning. Suas caixas de diálogo são auto-explicativas (veja a captura de tela) Tela inicial da clonagem de disco UDPCast

Depois de selecionar esta máquina virtual sender, você deve selecionar qual unidade deseja transmitir (usando a notação Unix, como / dev / sda).

Depois de iniciar o sender, você precisa começar receivertambém. Como você tem um disco rígido físico, suponho que você também tenha um PC completo com esse disco rígido. A mesma coisa aqui: você precisa iniciar o liveCD UDPCast Disk Cloningselecionando receiveresse tempo e o disco rígido físico apropriado.

Vale ressaltar que você deve tomar todas as providências necessárias para ter conectividade de rede entre sua Máquina Virtual e o hardware físico. Você deve tomar as precauções necessárias se o seu vmdk contiver dados particulares, pois seu conteúdo seria efetivamente transmitido pela rede. Outra coisa é que o disco rígido de destino não deve ter menos capacidade de armazenamento do que a capacidade do seu vmdk. É óbvio, mas também vale a pena notar que sua imagem é apresentada individualmente no disco rígido de destino e você precisa executar operações adequadas com o gparted ou similares para aproveitar melhor a capacidade do seu novo disco rígido.

PF4Public
fonte
Gostaria de observar que esse método é realmente simples e relativamente fácil de executar. Ou seja, a única etapa de preparação que você precisa executar é preparar seu LiveCD com o UDPCast nele ou qualquer outro LiveCD, suficiente para baixar e executar o UDPCast. Se você tem alguma imagem hd virtual, você definitivamente a usou em uma Máquina Virtual, que já está configurada e pronta, por outro lado, você preparou seu sistema físico e também está pronto para a tarefa.
PF4Public
Há mais: o UDPCast pode ser executado diretamente do PXE. udpcast.linux.lu/bootloader.html#pxe
PF4Public
4

Se você instalou o VirtualBox, poderá converter o arquivo VDI (imagem da unidade do VirtualBox) no formato IMG usando o VBoxManagecomando e copiar no disco físico, por exemplo

VBoxManage clonehd --format RAW file.vdi file.img

Então você pode usar o ddcomando para copiar o arquivo na partição física:

dd if=./file.img of=/dev/<partition_here>

Nota: Use sudo, se necessário. Tenha cuidado ao especificar o dispositivo correto em / dev.

kenorb
fonte
0

Se você tiver o novo disco físico conectado à máquina em que está o disco virtual da VM, poderá converter VDI em físico sem uma conversão intermediária, provavelmente economizando muito tempo e espaço em disco. Isso pressupõe que seu disco físico seja igual ou maior que o tamanho máximo do disco virtual. No meu caso, o objetivo era converter um VDI em um zvol ZFS, mas a abordagem deve ser a mesma para qualquer dispositivo de bloco.

Primeiro, crie um arquivo VMDK apontando para o seu dispositivo de bloco:

VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sdX

Então (com o desligamento da VM!), Você pode clonar o VDI no VMDK:

VBoxManage clonemedium --existing virtual.vdi physical.vmdk

Isso levará um tempo ... Quando terminar, você poderá excluir o arquivo VMDK, pois ele foi usado apenas como ponteiro para o VirtualBox encontrar o dispositivo físico.

No meu caso, o novo zvol tinha exatamente o mesmo tamanho do disco virtual. Como seu disco físico provavelmente é diferente, você precisará empregar algum tipo de mecanismo de redimensionamento de partição para preencher o disco inteiro. Gparted ou algo assim, talvez. Você deve ser capaz de apontar isso no dispositivo físico / dev / sdX enquanto ainda estiver conectado à máquina da VM, para não precisar recorrer à inicialização do CD do host físico.

Depois que o redimensionamento estiver concluído, coloque a unidade em sua máquina física, cruze os dedos e ligue.

Caso você queira continuar usando a unidade física com o VirtualBox, mantenha o VMDK por perto e use-o VBoxManage storageattachpara conectá-lo à VM.

pendor
fonte
Parece que funciona, mas os dados são corrompidos de alguma forma e o sistema operacional não inicializa corretamente.
Sarge Borsch