Como migrar discos virtuais do VMware para ZFS no Proxmox VE via linha de comando
Guia técnico passo a passo para converter discos VMDK do ESXi para volumes ZFS (ZVol) no Proxmox usando qm importdisk. Inclui solução para drivers VirtIO.
A migração de infraestrutura de virtualização é um momento crítico para qualquer administrador de sistemas. Ao sair do ecossistema VMware vSphere para o Proxmox VE, a mudança mais significativa não está apenas no hypervisor, mas na camada de armazenamento.
Enquanto o VMware tradicionalmente encapsula dados em arquivos .vmdk sobre o sistema de arquivos VMFS, o Proxmox VE brilha ao utilizar o ZFS nativo. No ZFS, os discos virtuais não são arquivos comuns, mas sim ZVols (ZFS Volumes) — dispositivos de bloco lógicos que oferecem proteção contra degradação de dados (bit rot), compressão transparente e snapshots instantâneos.
Este guia técnico detalha o processo de conversão e importação de discos virtuais diretamente via terminal, garantindo a integridade dos dados e a otimização do armazenamento.
Resumo em 30 segundos
- Conversão Automática: O comando
qm importdiskdo Proxmox converte arquivos.vmdkdiretamente para ZVols (dispositivos de bloco ZFS).- Diferença de Arquivos: No VMware, você deve migrar o arquivo "flat" (ex:
vm-flat.vmdk), que contém os dados brutos, e não o arquivo descritor pequeno.- Drivers VirtIO: Sistemas Windows exigem a instalação de drivers VirtIO antes da troca do controlador de disco para evitar telas azuis de boot.
Entendendo a topologia: De arquivo para bloco
Antes de executar comandos, é vital entender o que acontece com seus dados. No VMware, um disco virtual é um arquivo residente em um sistema de arquivos (VMFS). No Proxmox com ZFS, o disco da VM se torna um dispositivo de bloco cru (raw block device).
Isso elimina uma camada de abstração (o sistema de arquivos local como ext4 ou xfs), permitindo que o ZFS gerencie diretamente a alocação de blocos, cache e integridade.
Figura: Comparativo de arquitetura de armazenamento: Arquivo VMDK sobre VMFS vs. ZVol nativo no ZFS.
Tabela comparativa: VMFS vs ZFS (Contexto de VM)
| Característica | VMware (VMDK em VMFS) | Proxmox (ZVol em ZFS) |
|---|---|---|
| Tipo de Objeto | Arquivo (.vmdk) |
Dispositivo de Bloco (/dev/zvol/...) |
| Proteção de Dados | Depende do RAID de Hardware | Checksums e Auto-cura (Self-healing) |
| Snapshots | Cadeia de arquivos delta (pode degradar performance) | Ponteiros de metadados (custo zero de performance) |
| Compressão | Geralmente requer All-Flash/vSAN | LZ4/ZSTD nativo em qualquer disco |
| Cache | Cache do controlador RAID | ARC (Adaptive Replacement Cache) na RAM |
Passo 1: Preparação e transferência dos dados
Para importar o disco, o Proxmox precisa ter acesso ao arquivo .vmdk. A maneira mais segura e universal é copiar o arquivo do host ESXi para o host Proxmox via SSH.
Habilitando SSH no ESXi
Por padrão, o SSH vem desabilitado no ESXi.
Acesse a interface web do ESXi.
Vá em Host > Actions > Services > Enable Secure Shell (SSH).
Identificando o arquivo correto
No diretório de armazenamento do VMware, cada disco virtual possui dois arquivos principais:
vmname.vmdk: Um arquivo de texto pequeno (descritor XML). Não copie este.vmname-flat.vmdk: O arquivo grande que contém os dados reais. Este é o alvo.
⚠️ Perigo: Tentar importar o arquivo descritor pequeno resultará em um disco de tamanho incorreto ou erro de leitura. Sempre busque o arquivo com o sufixo
-flat.vmdk.
Transferindo o disco (SCP)
No terminal do seu servidor Proxmox, execute o comando abaixo para puxar o arquivo. Recomendamos salvar em um local temporário com espaço suficiente (não no armazenamento ZFS final ainda).
# Crie um diretório temporário
mkdir -p /mnt/pve/temp_import
# Copie o arquivo flat do ESXi (substitua IP e caminhos)
scp [email protected]:/vmfs/volumes/datastore1/MinhaVM/MinhaVM-flat.vmdk /mnt/pve/temp_import/
Figura: Transferência do arquivo flat via SCP entre os hypervisors.
Passo 2: Criando a VM esqueleto no Proxmox
Antes de importar o disco, precisamos de uma "casca" (uma VM vazia) para recebê-lo.
No Proxmox, clique em Create VM.
Defina o VM ID (ex:
105).Na aba OS, selecione o tipo correto (Linux ou Windows).
Na aba Disks, remova o disco padrão que o assistente cria. Queremos a VM sem discos por enquanto.
Finalize a criação.
Passo 3: Importando o disco para ZFS (qm importdisk)
Agora ocorre a mágica. O comando qm importdisk lê o arquivo .vmdk, converte o fluxo de dados e escreve diretamente em um novo ZVol dentro do seu pool ZFS.
Sintaxe:
qm importdisk <vmid> <caminho-origem> <storage-destino>
Execute no terminal do Proxmox:
# Importando para o storage chamado 'local-zfs'
qm importdisk 105 /mnt/pve/temp_import/MinhaVM-flat.vmdk local-zfs
O que acontece nos bastidores:
O Proxmox cria um ZVol do tamanho exato do disco original.
Os dados são lidos sequencialmente do arquivo flat.
Se a compressão LZ4 estiver ativa no pool ZFS (padrão recomendado), os dados já são gravados comprimidos, economizando espaço imediatamente.
💡 Dica Pro: Se você possui uma rede de 10Gbps ou superior entre os servidores, é possível montar o datastore do ESXi via NFS no Proxmox e importar diretamente, sem a cópia intermediária do Passo 1. Isso economiza tempo e gravações no SSD.
Passo 4: Anexando e configurando o disco
Após a importação, o disco não é anexado automaticamente como bootável. Ele aparecerá como um "Unused Disk" (Disco não utilizado) na configuração da VM.
Acesse o painel do Proxmox.
Selecione a VM
105> Hardware.Localize o item Unused Disk 0.
Clique duas vezes nele (ou clique em Edit).
Escolhendo o Barramento (Bus/Device)
Aqui reside a decisão mais importante para a performance:
Para Linux: Escolha VirtIO Block. É o padrão mais rápido e nativo do KVM.
Para Windows (Migração): Escolha SATA ou IDE inicialmente.
- Por que? O Windows vindo do VMware não tem os drivers VirtIO instalados. Se você selecionar VirtIO agora, o Windows não encontrará o disco de boot e dará Tela Azul (
INACCESSIBLE_BOOT_DEVICE).
- Por que? O Windows vindo do VMware não tem os drivers VirtIO instalados. Se você selecionar VirtIO agora, o Windows não encontrará o disco de boot e dará Tela Azul (
Figura: Seleção do barramento de disco no Proxmox: Escolha crítica para compatibilidade de drivers.
Após adicionar o disco:
Vá em Options > Boot Order.
Habilite o novo disco e mova-o para o topo da lista.
Passo 5: Otimização do ZVol (Ajustes Finos)
Como estamos usando ZFS, podemos verificar se o novo volume está otimizado.
Liste os volumes ZFS associados à VM:
zfs list -r local-zfs/vm-105-disk-0
Verifique a compressão e o tamanho do bloco:
zfs get compression,volblocksize local-zfs/vm-105-disk-0
Saída esperada:
NAME PROPERTY VALUE SOURCE
local-zfs/vm-105-disk-0 compression on inherited from local-zfs
local-zfs/vm-105-disk-0 volblocksize 8K default
Se a compressão estiver off, você pode ativá-la (afetará apenas novos dados gravados):
zfs set compression=lz4 local-zfs/vm-105-disk-0
Passo 6: Pós-Migração (Apenas Windows)
Se você migrou uma VM Windows e usou SATA/IDE para garantir o boot, agora é hora de mudar para VirtIO para ganhar performance.
Baixe a ISO de drivers VirtIO-win e anexe ao CD-ROM da VM.
Adicione um segundo disco temporário à VM (1GB é suficiente), mas escolha o barramento VirtIO SCSI ou VirtIO Block.
Inicie o Windows. Ele detectará o novo hardware (o disco de 1GB) e pedirá drivers.
Instale os drivers (viostor/vioscsi) a partir do CD.
Desligue a VM.
No Proxmox, desanexe e remova o disco temporário de 1GB.
Desanexe o disco principal (SATA/IDE) e anexe-o novamente, agora escolhendo VirtIO.
Ligue a VM. O Windows agora bootará com performance máxima.
Figura: O processo de troca de drivers no Windows para habilitar a performance do VirtIO.
Considerações finais
A migração de VMDK para ZVol é mais do que uma simples cópia de arquivos; é uma atualização de arquitetura de armazenamento. Ao mover seus dados para ZFS, você ganha acesso a recursos de nível empresarial — como replicação assíncrona (zfs send/recv) para Disaster Recovery — sem custo adicional de licença.
Recomendo fortemente que, após validar a migração, você configure uma rotina de Snapshots Automáticos no Proxmox. Diferente do VMware, onde snapshots antigos degradam a performance, no ZFS eles são praticamente gratuitos em termos de I/O, permitindo uma estratégia de backup muito mais agressiva e granular.
Perguntas Frequentes (FAQ)
O qm importdisk converte automaticamente para ZVol?
Sim. Quando o storage de destino é um pool ZFS, o comando detecta isso e converte o fluxo de dados do arquivo VMDK (baseado em arquivo) diretamente para um ZVol (dispositivo de bloco), eliminando a necessidade de conversão manual prévia com ferramentas como qemu-img.Preciso desligar a VM no VMware antes de copiar?
Sim, absolutamente. Copiar um arquivo VMDK (especialmente o -flat.vmdk) enquanto a VM está ligada e gravando dados resulta em inconsistência severa e corrupção do sistema de arquivos no destino. A VM deve estar em estado "Powered Off".Por que meu Windows dá tela azul (0x0000007B) após a migração?
Esse erro (INACCESSIBLE_BOOT_DEVICE) ocorre porque o Windows não possui os drivers VirtIO SCSI/Block instalados e ativos no momento do boot. A solução é importar o disco inicialmente como SATA ou IDE, instalar os drivers VirtIO dentro do Windows, e só então alterar a interface do disco para VirtIO.
Roberto Almeida
Auditor de Compliance (LGPD/GDPR)
"Especialista em mitigação de riscos regulatórios e governança de dados. Meu foco é blindar infraestruturas corporativas contra sanções legais, garantindo a estrita conformidade com a LGPD e GDPR."