Considerações sobre a migração do Windows para o IBM Cloud VPC: drivers, licenciamento e preparação
Analise as considerações sobre a migração do Windows para o IBM Cloud VPC, incluindo a injeção de drivers do VirtIO, a preparação com o sysprep e os requisitos de licenciamento.
O desafio do motorista
Em seu ambiente VMware, o Windows carrega os drivers paravirtualizados VMware ( vmxnet3 para rede, pvscsi para armazenamento e assim por diante) e os vincula a identificadores de hardware específicos. Quando você move o disco para o VPC, o hardware é alterado:
- Rede: VMware vmxnet3 → Adaptador de rede de E/S virtual ( VirtIO )
- Armazenamento (inicialização): VMware PVSCSI → VirtIO adaptador SCSI
- Armazenamento (dados): VMware PVSCSI → VirtIO adaptador de bloco
Se o Windows for inicializado e encontrar IDs de hardware diferentes para o controlador de armazenamento de inicialização, ele não conseguirá inicializar (tela azul INACCESSIBLE_BOOT_DEVICE).
Solução A: Abordagem com o Sysprep
O utilitário sysprep da Microsoft "generaliza" uma instalação do Windows, redefinindo-a para um estado de primeira inicialização. Isso:
- Libera os vínculos de driver
- Redefine o identificador de segurança do Windows (SID)
- Remove informações específicas do computador
- Prepara a imagem para reimplantação
Conclua o seguinte processo para sysprep:
-
Instale os drivers VirtIO em sua máquina virtual Windows enquanto ainda estiver hospedada em VMware:
- Baixe a imagem ISO do virtio-win de uma instância de servidor virtual RHEL (
/usr/share/virtio-win). - Monte o ISO, execute
virtio-win-gt-x64.exeevirtio-win-guest-tools.exe. - Instale drivers para o sistema operacional e para a partição de recuperação.
- Baixe a imagem ISO do virtio-win de uma instância de servidor virtual RHEL (
-
Execute o sysprep:
C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown -
Exporte e migre usando qualquer um dos métodos de migração, exceto a extração direta de VDDK, que é apenas para vCenter.
-
Primeira inicialização na VPC:
- O Windows executa um mini-assistente de configuração (OOBE)
- Detecta novo hardware, carrega os drivers VirtIO
- Pode ser necessário reinserir a chave do produto
- Pode ser necessário voltar a acessar o domínio
Vantagens:
- Processo bem documentado da Microsoft
- Funciona de forma confiável para implementações do Windows
Desvantagens:
- Redefine a identidade do computador (problemático para servidores unidos por domínio)
- Pode acionar a reativação do Windows
- Problemas específicos do aplicativo (alguns aplicativos não lidam bem com o sysprep)
- Requer a conclusão do OOBE na primeira inicialização
Decisão de projeto: Use o sysprep para implantações baseadas em modelos ou quando você migrar para máquinas virtuais de desenvolvimento ou teste em que a redefinição de identidade seja aceitável. Evite para servidores de produção unidos por domínio com dependências complexas de aplicativos.
Solução B: Injeção do driver “ virt-v2v ”
A ferramenta libguestfs virt-v2v pode injetar drivers VirtIO em uma instalação do Windows sem executar o sysprep. Isso:
- Monta o sistema de arquivos do Windows (sem inicializar o Windows)
- Injeta drivers VirtIO no armazenamento de drivers
- Modifica o registro para forçar o Windows a carregar esses drivers
- Preserva a identidade da máquina, a associação ao domínio e o estado do aplicativo
Pré-requisitos:
- A máquina virtual deve ser desligada de forma limpa (sem falhas, sem desligamento forçado)
- A versão do Windows deve ser compatível (Server 2008 R2 até 2025, Windows 7 até 11)
- Pacote de driver Virtio-win (disponível em sistemas RHEL:
/usr/share/virtio-win)
Veja a seguir o processo para a injeção do driver virt-v2v:
-
Instale os drivers VirtIO nas partições de inicialização e recuperação do Windows (a mesma abordagem do sysprep)
-
Desligamento limpo da máquina virtual do Windows
-
Exporte/transfira o disco para uma instância de servidor virtual de trabalho utilizando qualquer um dos métodos de migração.
-
Executar virt-v2v:
virt-v2v -i disk windows-vm.img -o disk -os /target --block-driver virtio-scsiParâmetros:
-i disk: A entrada é um arquivo de imagem de disco-o disk -os /target: Saída para o diretório--block-driver virtio-scsi: Use o driver SCSI para o primeiro disco (necessário para volumes de inicialização VPC)
-
Se estiver gravando diretamente no dispositivo:
ln -fs /dev/vdb /target/windows-vm-sda virt-v2v -i disk windows-vm.img -o disk -os /target --block-driver virtio-scsi
Vantagens de virt-v2v:
- Preserva a identidade da máquina (sem reativação, sem junção de redomínio)
- Não há assistente de configuração na primeira inicialização
- Estado do aplicativo intacto
- Funciona para servidores de produção
Desvantagens:
- Requer configuração híbrida RHEL/ Ubuntu
- Mais complexo que o sysprep
- Requer desligamento limpo (não processe máquinas virtuais com falha/forçadas a desligar)
Decisão de projeto: Use virt-v2v para servidores Windows de produção em que a preservação da identidade é fundamental. Aceite a complexidade adicional das ferramentas como uma compensação para migrações mais limpas.
O desafio do RHEL/ Ubuntu
Questão crítica: A opção “ --block-driver virtio-scsi ” é obrigatória para máquinas virtuais Windows na VPC (o disco de inicialização utiliza SCSI de E/S virtual ( VirtIO ), e não o bloco “ VirtIO ”), mas:
- O RHEL virt-v2v não é compatível com
--block-driver virtio-scsi - Ubuntu virt-v2v suportes
--block-driver virtio-scsi - As libguestfs do RHEL incluem drivers virtio-win em
/usr/share/virtio-win - Ubuntu a libguestfs não inclui drivers virtio-win
Solução alternativa
Há duas soluções alternativas para o problema do RHEL/ Ubuntu.
Opção 1: Compilar a libguestfs em Ubuntu
A primeira opção é compilar o libguestfs em Ubuntu executando o seguinte comando.
# On Ubuntu worker virtual server instance
apt-get install libguestfs-tools
# Copy virtio-win from a RHEL system
# On RHEL: tar czf virtio-win.tar.gz /usr/share/virtio-win
# Transfer to Ubuntu and extract:
tar xzf virtio-win.tar.gz -C /usr/share/
# Now virt-v2v on Ubuntu has both SCSI support and drivers
virt-v2v -i disk windows.img -o disk -os /target --block-driver virtio-scsi
Opção 2: Conversão em dois estágios
A segunda opção é usar o seguinte comando para fazer uma conversão em dois estágios.
# On RHEL worker (has drivers, no SCSI support)
virt-v2v -i disk windows.img -o disk -os /tmp
# Transfer to Ubuntu worker
scp /tmp/windows-sda ubuntu-worker:/tmp/
# On Ubuntu worker (has SCSI support)
virt-v2v -i disk /tmp/windows-sda -o disk -os /target --block-driver virtio-scsi
Arquitetura do driver de armazenamento do Windows na VPC
Entender como o VPC apresenta o armazenamento ao Windows ajuda a solucionar problemas de inicialização:
Primeiro volume (disco de inicialização):
- Apresentado como VirtIO dispositivo SCSI
- Requer um driver virtio-scsi
- É por isso que o site
--block-driver virtio-scsié obrigatório
Volumes subsequentes (discos de dados):
- Apresentado como VirtIO dispositivos de bloco
- Requer um driver virtio-blk
- Driver diferente do disco de inicialização
Ambos os drivers devem ser instalados em ambos:
- O sistema operacional em execução
- O ambiente de recuperação ( WinRE )
Instalação de drivers no ambiente de recuperação
O Ambiente de Recuperação do Windows ( WinRE ) é um mini-ambiente do Windows independente, utilizado para operações de recuperação. Se não houver drivers de E/S virtual ( VirtIO ), não será possível utilizá-lo para recuperação após a migração.
Localização WinRE:
reagentc /info
Isso pode informar um volume de recuperação, mas a imagem real do WinRE pode estar em:
C:\Windows\System32\Recovery\winre.wim
Instalação de drivers em WinRE:
-
Montar a ISO do virtio-win
-
Identifique o local do WinRE por meio de
reagentc /info -
Se estiver em um volume separado, monte-o temporariamente
-
Use o DISM para injetar drivers:
dism /mount-wim /wimfile:C:\Windows\System32\Recovery\winre.wim /index:1 /mountdir:C:\mount dism /image:C:\mount /add-driver /driver:E:\viostor\w10\amd64 /recurse dism /image:C:\mount /add-driver /driver:E:\netkvm\w10\amd64 /recurse dism /unmount-wim /mountdir:C:\mount /commit
Considerações sobre a partição GPT:
Se o seu disco do Windows usa GPT (não MBR):
- Use
list volumeeselect volumeem vez delist partition - A configuração das IDs de volume é diferente:
- Volume de dados:
set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 - Volume do sistema:
set id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
- Volume de dados:
Versões do Windows compatíveis
Red Hat o pacote virtio-win da Microsoft fornece drivers para:
Windows Server:
- 2008 R2
- 2012, 2012 R2
- 2016, 2019, 2022, 2025
Cliente Windows:
- 7
- 8, 8.1
- 10
- 11
Não há suporte para versões mais antigas (Server 2003, 2008 non-R2, Vista).
A tabela a seguir é a matriz de decisão de design para o Windows
| Cenário | Abordagem recomendada |
|---|---|
| Máquinas virtuais de desenvolvimento/teste | Sysprep (simples, redefinição de identidade aceitável) |
| Servidores autônomos de produção | virt-v2v (preserva a identidade) |
| Servidores de produção unidos por domínio | virt-v2v (evita o reingresso no domínio) |
| Implantações baseadas em modelos | Sysprep (apropriado para modelos) |
| Servidores com licenciamento vinculado à ID do hardware | virt-v2v + revisão cuidadosa da licença |
| Windows antigo (2003, 2008 non-R2 ) | Não há suporte para migração |