domingo, 9 de abril de 2023

Tutorial: como transferir um HDD do Virtual Box ou VMWare para uma VM no Proxmox

Pessoal,


Como comecei a contar nesse post aqui, resolvi instalar o MS-DOS e as versões antigas do Windows no Proxmox.

Como o Proxmox não aceita imagem de disquetes, não foi possível instalar diretamente o MS-DOS no Proxmox. Precisei usar o VirtualBox para criar a VM e, só então, mandar o HDD para o Proxmox.

Essa tarefa de converter o HDD do VirtualBox para o Proxmox é fácil mas não é trivial e tem algumas etapas mais complexas.

Criar uma VM no VirtualBox ou no VMWare é bem simples. Neste post aqui eu mostrei como criar uma VM do MS-DOS no VMWare. Para criar no VirtalBox é basicamente a mesma coisa.

Existem vários formatos para os HDD virtuais:
  • VDI - formato nativo do VirtualBox mas geralmente não aceito por outros softwares de virtualização;
  • VHD - formato do Microsoft Virtual PC, já em desuso pois foi substituído pelo VHDX;
  • VHDX - novo formato do MS Virtual PC, mas ainda com pouca compatibilidade no mercado;
  • HDD - formato do Parallels;
  • QCOW e QED - formatos antigos em desuso, substituidos pelo QCOW2;
  • VMDK - formato que era proprietário do VMWare mas atualmente é um formato aberto, aceito por quase todos os softwares de virtualização além de ser, provavelmente, mais rápido que VDI.

Geralmente o VirtualBox utiliza o formato .vdi (VirtualBox Disk Image) para criar o HDD virtual (mas é possível escolher outros formatos) e o VMWare utiliza o formato .vmdk.

Independente do formato escolhido, para enviar o arquivo de HDD para o Proxmox é necessário que o arquivo esteja em formato .raw. Para isso, vou explicar como converter os arquivos dos dois formatos mais comuns (.vdi e .vdmk)  para .raw.


.vdi para .raw

Acesse, no seu computador, a pasta das VMs. 


Veja que o arquivo .vdi tem pouco mais de 9MB. Pelo terminal do Mac (e acredito que no Windows e Linux funcione do mesmo modo), dê o seguinte comando:
# VBoxManage clonehd --format RAW "pasted\full\path\to.vdi" "pasted\full\path\to.raw"
Como estou dentro da pasta da VM no VirtualBox, pra mim foi isso aqui:


E apareceu um arquivo .raw com o tamanho total que eu havia reservado para o disco (500MB):


Pronto. Agora pode pular para a seção em que enviaremos este arquivo para o Proxmox.


.vdmk para .raw

Aqui primeiramente vamos mandar o arquivo para o uma pasta do Proxmox utilizando o Filezilla e entramos no Proxmox conectando pelo ssh. Uma vez lá dentro, navegue até a pasta para onde copiou o arquivo e dê o seguinte comando:
# qemu-img convert arquivo_origem.vmdk arquivo_destino.raw
OBS: é necessário fazer esse processo dentro do Proxmox pois o programa qemu-img está disponível apenas para o Linux.

Uma vez convertido o disco, vamos à criação da VM e importação do disco!


Criando uma VM no Proxmox

Esse passo não entrará em detalhes da criação de VM para Proxmox, apenas citarei os aspectos relacionados para este caso específico.

Bom, crie a sua VM normalmente com as características iguais à da VM que você criou no VirtualBox ou VMWare para gerar o HD virtual.

Em "SO" escolha "Não usar qualquer mídia" e escolha o sistema operacional como "Outro". Em Discos, escolha qualquer um e dê um tamanho pequeno, de poucos MB (afinal, não iremos adicionar nada nesse HD e ele será apagado e substituído pelo que criamos). Finalize a VM mas não execute ainda.

Na VM recém criada, vá em Hardware, selecione o Disco Rígido e aperte "Desanexar". Selecione agora o "Disco não usado" e exclua-o clicando em "Remover".

Se você utilizou o método do ".vdi para .raw", você precisa agora do Filezilla (ou equivalente) para copiar o HD em .raw para o Proxmox. Se você usou o método ".vmdk para .raw", você já fez o processo antes de converter o arquivo.

Uma vez copiado o arquivo .raw, precisamos importar o arquivo para o Proxmox utilizando o comando "qm importdisk". A sintaxe é assim:
# qm importdisk <VM ID> /root/<source disk file>.raw <destination storage pool name> --format qcow2
Claro que esse comando deve ser feito no Proxmox, via ssh!

Para facilitar o processo, mudei o nome do arquivo para MSDOS.raw (poderia ser MD-DOS_teste.raw; espaços em branco, em Linux, podem geral erros...). A minha VM tem número 106 e o HD do Proxmox onde eu coloco as VMs se chama "VM". Assim, o meu comando fica:
# qm importdisk 106 MSDOS.raw VM --format qcow2
Se o seu disco se chamasse "Disco_Arquivo" e VM no Proxmox tive o número 171, seu comando seria: 

# qm importdisk 171 MSDOS.raw Disco_Arquivo --format qcow2
A saída é assim:



Lá na sua VM no Proxmox vai agora apareceu um disco indicado como "Disco não usado 1". É esse disco "vm-106-disk-1.qcow2" que importamos.

A opção "--format qcow2" transforma o arquivo .raw em .qcow2. Se você não colocar essa opção, terá que converter depois usando o comando "DD".
# dd if=arquivo_destino.raw of=/local/disco_vm_nova
Assim, você teria que executar isso aqui ainda:
# dd if=vm-106-disk-1.raw vm-106-disk-1.qcow2
Por isso recomendo que use o "--format qcow2" na hora de importar o arquivo .raw.

Já estamos quase finalizando. Agora volte ao Proxmox, na sua VM e vá em Hardware e clique duas vezes no disco não utilizado e escolha "Adicionar". Agora vá em Opções e arraste o disco para o primeiro lugar na ordem do boot.

Pronto! Seu disco criado em .vmdk ou .vdi foi convertido em .raw, enviado ao Proxmox usando o Filezilla, importado para a VM do Proxmox e a VM está funcionante!

Só usar agora!

Nos próximos dias, vamos começar a instalar as VM dos Windows antigos (porque pra instalar o MS-DOS já foi aqui).

É isso que temos pra hoje! 

Nenhum comentário:

Postar um comentário