Hyper-V no Windows Server: Virtualização Prática para PME com PowerShell

Hyper-V · Windows Server · Virtualização · PowerShell · VM · PME  |  ✎ Duarte Spínola  |  2026-06-27

Hyper-V · Windows Server · Virtualização · PowerShell · VM · PME

A virtualização é a base da infraestrutura de qualquer PME moderna. Em vez de comprar um servidor físico por função (um para AD, um para ficheiros, um para backup), um único servidor com Hyper-V aloja todas as máquinas virtuais (VMs) necessárias, reduzindo custo de hardware, energia e manutenção. O Hyper-V está incluído no Windows Server sem custo adicional e é suportado nas edições Standard e Datacenter. Este guia percorre a instalação do role, configuração de switches virtuais, criação de VMs com PowerShell, gestão de memória dinâmica, checkpoints, nested virtualization e melhores práticas de storage e backup. As referências oficiais estão em Hyper-V overview e Hyper-V Technology Overview. Para o Windows Server 2025, consultar o Windows Server 2025: Novidades e Migração.

Neste artigo

  1. O Que É o Hyper-V
  2. Requisitos de Hardware
  3. Instalar o Role Hyper-V
  4. Configurar Switches Virtuais
  5. Criar VMs com PowerShell
  6. Dynamic Memory: Optimizar RAM
  7. Gestão de Discos e Storage
  8. Checkpoints e Snapshots
  9. Nested Virtualization
  10. Gestão e Monitorização de VMs
  11. Erros Comuns em Hyper-V
  12. Checklist de Implementação Hyper-V

1. O Que É o Hyper-V

O Hyper-V é o hipervisor Type-1 da Microsoft, incluído no Windows Server e no Windows 10/11 Pro/Enterprise. Corre directamente sobre o hardware (com a partição parent a alojar o Windows de gestão) e suporta máquinas virtuais com Windows, Linux e outros sistemas operativos. A documentação completa está em Hyper-V Overview e o planeamento em Plan Hyper-V on Windows Server.

ℹ️ Nota: O Hyper-V no Windows Server Standard permite até 2 VMs Windows Server incluídas na licença; a edição Datacenter permite VMs ilimitadas. Para PME com 3+ VMs Windows Server, a edição Datacenter é mais económica. VMs Linux não contam para o limite de licenças incluídas.

2. Requisitos de Hardware

Requisito Mínimo Recomendado para PME
CPU 64-bit, SLAT (Second Level Address Translation) Xeon E-series ou EPYC, 8+ núcleos
RAM 4 GB (host) 32-128 GB consoante número de VMs
Disco 32 GB livres (host) SSD ou NVMe; RAID 1/10 para redundância
Rede 1 Gbps 2× 10 Gbps (teaming/LACP)
Virtualização BIOS VT-x (Intel) ou AMD-V activo Obrigatório — verificar no BIOS/UEFI
Extensões de Virtualização Hyper-V role instalado Verificar com Get-ComputerInfo

⚠️ Atenção: A virtualização deve estar activada no BIOS/UEFI antes de instalar o role Hyper-V. Se não estiver, a instalação aparenta sucesso mas as VMs não arrancam com erro “Hyper-V Launcher failed”. Verificar com systeminfo (secção Hyper-V Requirements).

3. Instalar o Role Hyper-V

A instalação do role Hyper-V no Windows Server faz-se via Server Manager ou PowerShell, descrita em Install the Hyper-V role:

# Verificar que a virtualização está disponível no hardware
Get-ComputerInfo -Property “HyperV*”

# Instalar o role Hyper-V com ferramentas de gestão
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

# Após reinício, verificar instalação
Get-WindowsFeature -Name Hyper-V | Select-Object DisplayName, Installed
Get-Service vmms, vmcompute | Select-Object Name, Status, StartType

💡 Dica

O parâmetro -Restart reinicia automaticamente o servidor após a instalação. Em produção, agendar janela de manutenção. Após o reinício, o serviço vmms (Hyper-V Virtual Machine Management) deve estar a correr. Para gestão remota, instalar também as ferramentas RSAT Hyper-V na estação de administração. Para activar Hyper-V no Windows 10/11 Pro, consultar Enable Hyper-V on Windows. Para criar VMs passo a passo, consultar Create a VM in Hyper-V.

4. Configurar Switches Virtuais

O switch virtual é a ponte de rede entre as VMs e a rede física. O Hyper-V suporta três tipos:

Tipo de Switch Descrição Uso típico PME
External Liga as VMs directamente à rede física Produção — acesso à LAN/WAN
Internal Comunicação entre host e VMs apenas Gestão, isolamento de testes
Private Comunicação apenas entre VMs (sem host) Laboratório, clusters isolados
# Listar switches existentes
Get-VMSwitch | Select-Object Name, SwitchType, NetAdapterInterfaceDescription

# Criar switch External ligado à placa de rede física
$adapter = Get-NetAdapter | Where-Object { $_.Status -eq “Up” -and $_.Name -like “Ethernet*” } | Select-Object -First 1
New-VMSwitch -Name “vSwitch-Extern” -NetAdapterName $adapter.Name -AllowManagementOS $true

# Criar switch Internal para gestão
New-VMSwitch -Name “vSwitch-Management” -SwitchType Internal

# Verificar configuração
Get-VMSwitch | Format-Table Name, SwitchType, NetAdapterInterfaceDescription -AutoSize

ℹ️ Nota: O parâmetro -AllowManagementOS $true permite que o próprio host Windows Server partilhe a placa de rede com as VMs. Isto é normal em PME com uma única placa física. Para servidores com duas placas, dedicar uma ao management (host) e a outra ao switch External para melhor desempenho e isolação.

5. Criar VMs com PowerShell

A criação de VMs via PowerShell é mais rápida e reproduzível que o Hyper-V Manager. Os cmdlets principais (New-VM, Set-VM, Start-VM) permitem automatizar todo o processo:

# Criar uma VM Windows Server com 4 vCPU, 8GB RAM, 80GB disco
$vmName = “SRV-AD01”
$vmPath = “C:\Hyper-V\VMs\$vmName”
$vhdxPath = “$vmPath\$vmName.vhdx”

# Criar directório
New-Item -Path $vmPath -ItemType Directory -Force

# Criar disco virtual dinâmico de 80GB
New-VHD -Path $vhdxPath -SizeBytes 80GB -Dynamic -LogicalSectorSizeBytes 512

# Criar a VM
New-VM -Name $vmName -MemoryStartupBytes 8GB -Generation 2 `
-VHDPath $vhdxPath -Path $vmPath -SwitchName “vSwitch-Extern”

# Configurar vCPU e Dynamic Memory
Set-VM -Name $vmName -ProcessorCount 4
Set-VM -Name $vmName -DynamicMemory -MemoryMinimumBytes 2GB -MemoryMaximumBytes 12GB

# Adicionar ISO de instalação
Add-VMDvdDrive -VMName $vmName -Path “D:\ISO\Windows_Server_2025_x64.iso”

# Configurar boot order: DVD primeiro, depois VHDX
$vm = Get-VM -Name $vmName
$dvd = Get-VMDvdDrive -VMName $vmName
$hd = Get-VMHardDiskDrive -VMName $vmName
Set-VMFirmware -VMName $vmName -FirstBootDevice $dvd

# Arrancar a VM
Start-VM -Name $vmName

⚠️ Atenção: Usar sempre Generation 2 para novas VMs Windows Server 2016+ ou Linux moderno. As VMs Generation 1 usam BIOS e emulação legada, sem suporte a Secure Boot UEFI. Generation 2 suporta Secure Boot, boot PXE, e discos VHDX maiores que 2 TB. Para Linux, verificar que a distribuição suporta Generation 2 (Ubuntu, RHEL, Debian, SUSE suportam).

6. Dynamic Memory: Optimizar RAM

O Dynamic Memory permite que as VMs ajustem automaticamente a RAM alocada consoante a carga, optimizando a utilização total da memória do host:

# Verificar configuração de memória de todas as VMs
Get-VM | Select-Object Name, State, MemoryAssigned, MemoryDemand, MemoryStartup, `
@{N=”Dynamic”;E={$_.DynamicMemoryEnabled}}, `
@{N=”Min(GB)”;E={[math]::Round($_.MemoryMinimum/1GB,1)}}, `
@{N=”Max(GB)”;E={[math]::Round($_.MemoryMaximum/1GB,1)}} |
Format-Table -AutoSize

# Configurar Dynamic Memory para uma VM
Set-VM -Name “SRV-AD01” -DynamicMemory `
-MemoryMinimumBytes 2GB -MemoryMaximumBytes 12GB -MemoryStartupBytes 4GB

# Desactivar Dynamic Memory (para workloads sensíveis como SQL Server)
Set-VM -Name “SRV-SQL01” -StaticMemory -MemoryStartupBytes 16GB

Workload Dynamic Memory? Recomendação
Domain Controller Sim Min 2GB, Max 8GB
File Server Sim Min 2GB, Max 8GB
SQL Server Não (static) Memória fixa consoante instância
Exchange Não (static) Memória fixa, follow sizing guide
Linux VM Sim (com integration services) Min 1GB, Max 4GB

ℹ️ Nota: O Dynamic Memory requer que os Hyper-V Integration Services estejam instalados na VM. No Windows Server 2016+, vêm pré-instalados. Em Linux, instalar hyperv-daemons (Ubuntu: apt install linux-tools-virtual linux-cloud-tools-virtual). Sem Integration Services, a memória não é ajustada dinamicamente e o MemoryDemand aparece como 0.

7. Gestão de Discos e Storage

O Hyper-V suporta discos VHDX (até 64 TB) com três formatos:

Formato Descrição Uso
Dynamic Cresce conforme dados são escritos PME — optimiza espaço
Fixed Reserva todo o espaço logo Produção — melhor desempenho
Differencing Disco base + alterações (para laboratório) Testes, VDI

Para criar e gerir discos virtuais, consultar New-VHD, Resize-VHD e Mount-VHD. Para configuração de processador virtual, consultar Set-VMProcessor.

# Criar disco fixo de 100GB (melhor desempenho)
New-VHD -Path “C:\Hyper-V\VMs\SRV-SQL01\sql01.vhdx” -SizeBytes 100GB -Fixed

# Expandir um disco existente
Resize-VHD -Path “C:\Hyper-V\VMs\SRV-AD01\SRV-AD01.vhdx” -SizeBytes 120GB
# Depois, dentro da VM, expandir a partição com Disk Management ou diskpart

# Converter disco dinâmico em fixo
Convert-VHD -Path “C:\Hyper-V\VMs\SRV-AD01\SRV-AD01.vhdx” `
-DestinationPath “C:\Hyper-V\VMs\SRV-AD01\SRV-AD01-fixed.vhdx” -VHDType Fixed

# Montar VHDX para inspecção offline
Mount-VHD -Path “C:\Hyper-V\VMs\SRV-AD01\SRV-AD01.vhdx” -ReadOnly
Get-Disk | Where-Object BusType -eq “File Backed Virtual”
Dismount-VHD -Path “C:\Hyper-V\VMs\SRV-AD01\SRV-AD01.vhdx”

💡 Dica

Para PME com storage limitado, discos dinâmicos poupam espaço mas têm ligeira penalização de desempenho (expansão on-demand). Para workloads intensivos (SQL, Exchange), usar discos fixed. Para Domain Controllers e file servers, dynamic é adequado. Para gestão de storage em cluster, consultar a documentação de Storage Spaces Direct no Windows Server 2025: Novidades e Migração.

8. Checkpoints e Snapshots

Os checkpoints (antigamente “snapshots”) capturam o estado da VM — disco, memória e configuração — num momento específico, permitindo reverter. São úteis antes de actualizações ou alterações de configuração, mas não substituem backup. Para referência do cmdlet, consultar Checkpoint-VM, Get-VMSnapshot e Export-VM:

# Criar checkpoint antes de actualização
Checkpoint-VM -Name “SRV-AD01” -SnapshotName “Pre-WindowsUpdate-2026-06”

# Listar checkpoints
Get-VMSnapshot -VMName “SRV-AD01” | Select-Object Name, CreationTime, ParentSnapshotName

# Reverter para checkpoint
Restore-VMSnapshot -VMName “SRV-AD01” -Name “Pre-WindowsUpdate-2026-06” -Confirm:$false

# Remover checkpoint após validação (liberta espaço)
Remove-VMSnapshot -VMName “SRV-AD01” -Name “Pre-WindowsUpdate-2026-06”

# Exportar VM completa (backup manual)
Export-VM -Name “SRV-AD01” -Path “E:\Backup\VMs\”

⚠️ Atenção: Checkpoints NÃO são backup. Se o disco VHDX do host se corromper, os checkpoints também se perdem. Usar checkpoints apenas para reverter alterações imediatas (janela de minutos/horas). Para backup real, usar uma solução que suporte Hyper-V (Veeam, Altaro, Backup Exec) ou exportar VMs periodicamente. Para backup imutável contra ransomware, consultar o Ransomware: Backup 3-2-1 Imutável.

ℹ️ Nota: Em Domain Controllers, evitar checkpoints — reverter um DC para um estado anterior pode causar USN rollback e inconsistências de replicação. Em vez de checkpoint, fazer backup system state antes de alterações.

9. Nested Virtualization

A nested virtualization permite correr Hyper-V dentro de uma VM — útil para laboratórios, testes de Kubernetes (BitLocker + Entra ID Join), ou treinar WSL2 dentro de uma VM. A documentação está em Nested Virtualization:

# Activar nested virtualization numa VM
Set-VMProcessor -VMName “SRV-LAB01” -ExposeVirtualizationExtensions $true

# Verificar
Get-VMProcessor -VMName “SRV-LAB01” | Select-Object ExposeVirtualizationExtensions

# Desactivar (se já não necessário)
Set-VMProcessor -VMName “SRV-LAB01” -ExposeVirtualizationExtensions $false

Requisito Nested Detalhe
VM Generation Generation 2 obrigatório
Host Windows Server 2016+ ou Windows 10/11
Guest OS Windows Server 2016+ ou Windows 10/11 (build 10565+)
RAM Dinâmica não suportada — usar static
Networking MacAddress spoofing pode ser necessário para DHCP no nested

10. Gestão e Monitorização de VMs

O cmdlet Get-VM fornece visão geral de todas as VMs. Para monitorização contínua, usar Performance Monitor ou um sistema como Grafana (Grafana para PME: Dashboards com Prometheus):

# Visão geral de todas as VMs
Get-VM | Select-Object Name, State, CPUUsage, MemoryAssigned, UptimeStatus |
Format-Table -AutoSize

# Detalhe de uma VM específica
Get-VM -Name “SRV-AD01” | Format-List *

# Estado de integração services
Get-VMIntegrationService -VMName “SRV-AD01” |
Select-Object Name, Enabled, PrimaryOperationalStatus

# Relatório de resource usage
Get-VM | ForEach-Object {
[PSCustomObject]@{
Name = $_.Name
State = $_.State
vCPU = $_.ProcessorCount
RAM_Assigned_GB = [math]::Round($_.MemoryAssigned/1GB, 1)
RAM_Demand_GB = [math]::Round($_.MemoryDemand/1GB, 1)
Uptime_Days = [math]::Round($_.Uptime.TotalDays, 1)
Status = $_.Status
}
} | Sort-Object Name | Format-Table -AutoSize

# Arrancar/parar todas as VMs num host
Get-VM | Where-Object State -eq “Off” | Start-VM
Get-VM | Where-Object State -eq “Running” | Stop-VM -Save # guarda estado

ℹ️ Nota: O Stop-VM -Save guarda o estado da VM em disco (como hibernação) e permite retomar sem reiniciar o SO. O Stop-VM -TurnOff desliga abruptamente (equivalente a puxar a ficha) — usar apenas em emergência. Para paragem graciosa, usar Stop-VM sem parâmetros (requer Integration Services instalados no guest).

11. Erros Comuns em Hyper-V

Problema Causa Solução
VM não arranca: “Boot failed” Boot order incorrecto ou ISO desmontada Set-VMFirmware -FirstBootDevice e verificar DVD
“Hyper-V Launcher failed” Virtualização desactivada no BIOS Activar VT-x/AMD-V no BIOS/UEFI
VM fica “Paused-Critical” Espaço em disco insuficiente no host Libertar espaço no volume das VMs; Resume-VM
Dynamic Memory não ajusta Integration Services em falta no guest Instalar Hyper-V Integration Services; reiniciar VM
Checkpoint não removível Merge em curso ou ficheiro bloqueado Aguardar merge; verificar antivírus não bloqueia VHDX
VM Linux sem rede Legacy adapter em Gen1 ou driver em falta Usar Gen2; instalar hyperv-daemons no Linux
Live Migration falha Constrained delegation ou autenticação Kerberos Configurar delegação no AD e permitir migration no host
Performance baixa Disco dynamic em workload intensivo Converter para fixed; mover para SSD/NVMe
New-VHD falha com “insuficiente espaço” Volume host sem espaço para o tamanho requested Verificar com Get-Volume; usar dynamic ou expandir volume

12. Checklist de Implementação Hyper-V

  • [ ] Verificar virtualização activa no BIOS/UEFI (VT-x / AMD-V)
  • [ ] Instalar role Hyper-V com Install-WindowsFeature -IncludeManagementTools
  • [ ] Criar switch External ligado à placa de produção
  • [ ] Criar switch Internal para gestão (opcional)
  • [ ] Definir directório base das VMs em volume dedicado (não C:)
  • [ ] Criar VMs com Generation 2 e Secure Boot activo
  • [ ] Configurar Dynamic Memory consoante workload (excepto SQL/Exchange)
  • [ ] Usar discos fixed para workloads intensivos; dynamic para restantes
  • [ ] Activar Integration Services em todas as VMs (Linux: hyperv-daemons)
  • [ ] Configurar backup adequado (Veeam/Altaro) — não depender de checkpoints
  • [ ] Evitar checkpoints em Domain Controllers
  • [ ] Documentar topologia de switches, IPs e recursos de cada VM
  • [ ] Monitorizar com Get-VM periódico ou integrar com Grafana (Grafana para PME: Dashboards com Prometheus)
  • [ ] Rever storage trimestralmente: espaço, fragmentação, VHDX órfãos
  • [ ] Para clusters, planear Storage Spaces Direct (Windows Server 2025: Novidades e Migração)

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário