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
- O Que É o Hyper-V
- Requisitos de Hardware
- Instalar o Role Hyper-V
- Configurar Switches Virtuais
- Criar VMs com PowerShell
- Dynamic Memory: Optimizar RAM
- Gestão de Discos e Storage
- Checkpoints e Snapshots
- Nested Virtualization
- Gestão e Monitorização de VMs
- Erros Comuns em Hyper-V
- 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:
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 |
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:
$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:
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.
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:
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:
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):
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)
