🖥️ Infra
⚙️ Hypervisor
🌐 Rede
💾 Storage
🧷 HA/DR
🔒 Segurança
Virtualização — abordagem profunda
Virtualização é a camada que abstrai hardware físico (CPU, memória, disco e rede) para executar múltiplas máquinas virtuais (VMs) com isolamento, governança e elasticidade. O “pulo do gato” não é apenas criar VMs, mas desenhar um ambiente com performance previsível, disponibilidade, segurança, backup e capacidade planejada.
🎯 Por que virtualizar?
Consolidação de servidores, provisionamento rápido, isolamento, snapshots, automação, HA e recuperação mais eficiente.
ConsolidaçãoAgilidadeGovernança⚠️ Onde dá ruim?
Oversubscription sem controle, storage lento, rede mal segmentada, snapshots eternos, backup fraco e falta de observabilidade.
IOPSNUMARPO/RTO🏗️ Arquiteturas e hipervisores
Type-1 vs Type-2 • Full/Para • Hardware assist
- Hipervisor Type-1 (bare-metal): roda direto no hardware (menor overhead e mais recursos de cluster/HA).
- Hipervisor Type-2 (hosted): roda sobre um SO (ótimo para desktop/lab, menos indicado para produção pesada).
- Virtualização assistida por hardware: Intel VT-x / AMD-V, EPT/NPT, IOMMU (essenciais em produção).
- Full virtualization: o guest não precisa “saber” que é VM.
- Paravirtualização: drivers otimizados (virtio, vmxnet3, pvscsi) para reduzir overhead.
Modelo mental (camadas)
[VM / Guest OS / Apps]
|
[Virtual HW: vCPU, vNIC, vDisk]
|
[Hypervisor]
|
[CPU/RAM/NIC/HBA físicos]
|
[Storage / Rede]
Regra prática: em produção, prefira Type-1 + drivers paravirtualizados (rede e disco) para reduzir latência e CPU.
Decisão rápida
| Objetivo | Escolha comum |
|---|---|
| Lab/estudo | Type-2 (desktop) ou cluster pequeno |
| Produção corporativa | Type-1 + cluster + storage compartilhado |
| Alta densidade | Type-1 + tunning CPU/mem + storage forte |
| NFV / rede virtual | Type-1 + SR-IOV/DPDK (quando necessário) |
🧮 CPU, scheduler e NUMA
vCPU • overcommit • CPU ready • pinning
- vCPU ≠ core físico: vCPU é tempo de CPU agendado pelo hipervisor.
- Overcommit de CPU: você pode alocar mais vCPUs do que cores físicos, mas precisa monitorar latência (tempo de espera).
- CPU ready / steal time: indica que a VM quer CPU, mas o host está ocupado (sintoma clássico de overcommit).
- NUMA: em servidores multi-socket, memória “local” é mais rápida do que memória “remota”. VMs grandes precisam respeitar NUMA.
- Pinning/affinity: “prender” vCPUs em cores específicos pode ajudar workloads previsíveis, mas reduz flexibilidade do scheduler.
Alerta: VM com muitos vCPUs “sem necessidade” pode ficar mais lenta (o scheduler precisa achar tempo livre para todos os vCPUs).
| Sintoma | Causa provável |
|---|---|
| latência alta / “travadas” curtas | CPU ready/steal alto, host saturado |
| VM grande lenta | NUMA mismatch, memória remota |
| picos ao backup | compressão/cripto + CPU concorrendo |
Boas práticas de CPU
- Comece com menos vCPU e aumente se necessário
- Evite “8 vCPU para tudo”
- Use reservas/limites quando houver vizinhos ruidosos
- Monitore CPU ready/steal + load no host
Heurística (bem geral)
- VMs pequenas: 1–2 vCPU
- Serviços médios: 2–4 vCPU
- Bancos/ETL: dimensionar por benchmark e latência
🧠 Memória: ballooning, sharing, hugepages
overcommit • swap • latência
- Overcommit de RAM: possível em alguns hipervisores via técnicas de compartilhamento/ballooning, mas é arriscado para produção sem controle.
- Ballooning: driver no guest “devolve” RAM para o host sob pressão.
- Swap do host: é sinal vermelho; swap em host virtualizado geralmente derruba desempenho do cluster.
- Hugepages: páginas grandes reduzem overhead de TLB e podem melhorar performance (especialmente em workloads de memória intensiva).
- Reserva de memória: para VMs críticas, garanta RAM para evitar competição.
Sinal crítico: host swapando = degradação generalizada. Ajuste capacity ou reduza consolidação.
Modelo mental de pressão de memória
1) Cache/buffers reduzem
2) Ballooning (se habilitado)
3) Swap guest
4) Swap host (pior cenário)
Boas práticas de RAM
- Evite overcommit agressivo em produção
- Prefira “right sizing” (dimensionamento real)
- Para DBs: reserve RAM e evite ballooning
- Monitore page faults, swap e latência
💾 Storage: datastores, iSCSI, NFS, Ceph
IOPS • latência • cache • RAID
- Storage é o coração: a maioria dos gargalos em virtualização é IO (latência) e não CPU.
- Métricas-chave: latência (ms), IOPS, throughput (MB/s) e fila (queue depth).
- Protocolos: NFS (arquivo), iSCSI (bloco), FC (bloco), storage distribuído (Ceph, etc.).
- Cache: write-back/write-through, cache em SSD/NVMe para aceleração (com cuidado em consistência).
- RAID: RAID10 costuma ser “safe default” para IO aleatório; RAID5/6 economiza disco, mas penaliza escrita.
| Workload | Exigência típica |
|---|---|
| Banco OLTP | baixa latência + IOPS aleatório |
| Arquivos/backup | throughput + capacidade |
| VDI | picos de IO (boot storm) |
| Logs | escrita sequencial consistente |
Regra prática: priorize latência baixa e previsível. 5–10 ms já pode ser “perceptível” para alguns bancos/serviços.
Erros comuns
- Colocar muitas VMs críticas no mesmo datastore lento
- Manter snapshots por semanas (crescem e aumentam latência)
- Não separar IO de backup do IO de produção
- Sem multipath / redundância de links
Checklist storage
- Latência média e p95
- IOPS sustentados
- Redundância (links/controladoras)
- Plano de expansão (capacity)
- Testes de restore/DR
🌐 Rede: vSwitch, VLAN, VXLAN, SR-IOV
isolamento • throughput • offloads
- vSwitch: switch virtual conectando vNICs das VMs a uplinks físicos.
- VLAN: segmentação L2 para separar redes (mgmt, storage, vMotion/live migration, produção, DMZ).
- Overlay (VXLAN/Geneve): segmentação virtual em larga escala (mais comum em SDN).
- Bonding/LACP: redundância e agregação (depende do design e do switch físico).
- SR-IOV: acesso quase direto à NIC (alta performance), mas reduz flexibilidade (migração/inspeção).
Segmentação recomendada (exemplo)
- VLAN 10: Management (hosts)
- VLAN 20: Storage (iSCSI/NFS/Ceph)
- VLAN 30: Live Migration / vMotion
- VLAN 40: Produção (VMs)
- VLAN 50: DMZ (serviços expostos)
Alerta: misturar Storage + Produção na mesma rede pode gerar “microparadas” por congestionamento e aumentar latência de disco.
Boas práticas de rede
- Separar redes críticas por VLAN/VRF quando possível
- Garantir MTU (ex: jumbo) somente quando suportado fim-a-fim
- Monitorar perda, jitter e microbursts
- Evitar oversubscription extremo em uplinks
📀 Discos virtuais: thin/thick, snapshots e consistência
thin provisioning • snapshot chain • quiesce
- Thick: espaço reservado no datastore (mais previsível).
- Thin: aloca conforme uso (economiza, mas exige controle de capacity para evitar “datastore full”).
- Snapshots: ótimos para mudanças curtas; péssimos para manter por muito tempo (crescem e degradam IO).
- Consistência: snapshots/backup ideais usam “quiesce” (congelar IO) e integração com VSS (Windows) quando aplicável.
Anti-padrão: snapshot como “backup”. Snapshot é ferramenta de curto prazo; backup é cópia independente + retenção.
| Prática | Recomendação |
|---|---|
| Snapshots | minutos/horas (no máximo poucos dias, dependendo do workload) |
| Thin | use com alertas e “headroom” (espaço de segurança) |
| Discos | drivers paravirt (virtio/pvscsi) quando possível |
Headroom (reserva)
- Reserve espaço para crescimento + snapshots temporários + operações de manutenção
- Evite operar datastores acima de ~80–85% (depende do ambiente)
🧷 Alta disponibilidade (HA) e Cluster
failover • quorum • live migration
- Cluster: conjunto de hosts gerenciados como pool (balanceamento, migração, HA).
- HA: se um host cai, VMs reiniciam em outro host (depende de storage/rede/controle).
- Quorum: evita split-brain (principalmente em clusters com storage distribuído).
- Live migration: move VM ligada entre hosts (manutenção sem downtime, se rede/storage suportarem).
- Anti-affinity: regras para separar VMs críticas em hosts diferentes (ex: nós de cluster de banco).
HA não é DR:
- HA = continuidade local (falha de host)
- DR = desastre/site down (falha de datacenter)
Projeto saudável: N+1 (ou N+2) — o cluster suporta perder 1 (ou 2) host(s) e continuar.
Pontos de atenção
- Capacidade após failover (N+1 real)
- Rede dedicada para migração
- Storage resiliente (ou distribuído)
- Testes de failover planejados
🧯 Backup, replicação e DR
RPO/RTO • 3-2-1 • imutável
- Backup: cópia independente, com retenção e verificação (restore test).
- Replicação: cópia contínua/quase contínua para outro storage/site (ótimo para DR, não substitui backup).
- RPO: quanto de dado você aceita perder (ex: 15 min).
- RTO: tempo para voltar (ex: 1 hora).
- Imutabilidade: proteção contra ransomware (backups WORM/imutáveis).
| Camada | Objetivo |
|---|---|
| Snapshot curto | rollback rápido antes de mudanças |
| Backup | retenção, histórico, auditoria |
| Replicação | continuidade em outro site |
| DR runbook | passo-a-passo de retorno |
Regra 3-2-1: 3 cópias, 2 mídias diferentes, 1 cópia offsite (idealmente imutável).
O que quase ninguém faz (mas deveria)
- Testar restore regularmente
- Medir RTO “na vida real”
- Separar rede/credenciais do backup
- Guardar backup offline/imutável
🔒 Segurança e hardening
segurança do host • isolamento • RBAC
- Camada crítica: o hipervisor é “coroa” — se comprometer o host, compromete todas as VMs.
- RBAC: perfis por função (admin, operador, auditor) e princípio do menor privilégio.
- Rede de management isolada: sem acesso direto da internet; VPN e MFA.
- Atualizações: patching do hypervisor, management e firmware (planejamento com live migration).
- Segurança de backup: credenciais separadas, repositório protegido, imutabilidade.
- Segurança de rede: microsegmentação (quando disponível), firewalls, ACLs e VLANs.
Modelo mental: trate a plataforma de virtualização como “Tier 0” (mais sensível que servidores comuns).
| Controle | Exemplo |
|---|---|
| Acesso | VPN + MFA + IP allowlist |
| Credenciais | contas nominativas, sem compartilhamento |
| Logs | envio para SIEM/syslog |
| Segredos | vault/secret manager (evitar “senha em planilha”) |
Hardening rápido
- Desabilitar serviços/protocolos desnecessários
- Segregar redes (mgmt/storage/migration/prod)
- Auditar permissões e mudanças
- Backups com MFA/imutabilidade
- Controle físico (datacenter/rack)
📈 Observabilidade e capacity planning
métricas • p95 • alarmes • SLO
- Não monitore só média: use percentis (p95/p99) para detectar degradações.
- CPU: uso, ready/steal, load, co-stop (quando aplicável).
- Memória: swap, ballooning, page faults, cache.
- Storage: latência (leitura/escrita), IOPS, fila, congestão, erros.
- Rede: throughput, perda, erros, drops, microbursts.
- Capacity: N+1, crescimento (mês a mês), “headroom” de datastore.
Modelo SRE (simplificado)
- Defina SLO: ex. "latência de storage p95 < 10ms"
- Crie alertas por SLO e saturação
- Revise tendência (forecast) e planeje expansão
Capacidade sem tendência = susto. Use gráficos de 30/60/90 dias para prever saturação.
Alarmes úteis
- Datastore acima de 80–85%
- Latência de storage p95 subindo
- CPU ready/steal elevado
- Host swapando / ballooning agressivo
- Perda de link / erros na NIC
📦 VMs vs Containers
isolamento • densidade • operações
- VM: virtualiza hardware; cada VM tem seu kernel/OS (isolamento forte, overhead maior).
- Container: compartilha kernel do host; empacota app+deps (leve, rápido, isolamento menor que VM).
- Na prática: containers rodam “em cima” de VMs na maioria das empresas (melhor governança e isolamento).
- Escolha: VM para workloads legados/estado/isolamento; containers para apps stateless e deploy frequente.
| Critério | VM |
|---|---|
| Isolamento | alto |
| Velocidade de start | média |
| Densidade | média |
| Compatibilidade | alta (qualquer SO) |
Anti-padrões
- Colocar DB crítico em container sem storage/backup/replicação bem desenhados
- Container “imutável” mas com dados críticos dentro
- Sem observabilidade (logs, métricas, tracing)
🧩 Checklist de desenho de ambiente
blueprint • padrões • decisões
- 1) Requisitos: workloads, RPO/RTO, compliance, janela de manutenção.
- 2) Capacidade: CPU/RAM/IOPS, crescimento 12–24 meses, N+1.
- 3) Storage: arquitetura (SAN/NAS/distribuído), latência alvo, redundância, multipath.
- 4) Rede: VLANs/segmentação, uplinks, MTU, redundância, QoS se necessário.
- 5) Segurança: mgmt isolado, RBAC, MFA, logs centralizados, hardening.
- 6) Backup/DR: 3-2-1, imutabilidade, testes, runbooks.
- 7) Operação: monitoramento, alertas, patching, automação, documentação.
Blueprint mínimo (documento)
- Diagrama (rede + storage + hosts)
- Tabela de VLANs e IPs
- Políticas (RBAC, backup, patching)
- Runbook (failover/restore)
- Métricas/SLOs e alertas
“Safe defaults” (em geral)
- N+1 real (capacidade pós-falha)
- Storage com latência baixa e previsível
- Sem snapshots longos
- Backups testados e imutáveis
- Rede de management isolada
Dica: documente primeiro; implementar sem blueprint vira “ambiente frágil”.
🛠️ Troubleshooting por sintomas
diagnóstico rápido
| Sintoma | Verifique primeiro |
|---|---|
| VM “lenta” aleatoriamente | latência de storage (p95), CPU ready/steal, congestionamento de rede, snapshots longos |
| Travadas em operações de disco | fila/queue depth, saturação do datastore, RAID degradado, link iSCSI/NFS, multipath |
| Host instável após crescimento | capacidade (RAM), overcommit, swap, logs de hardware, firmware, temperatura |
| Falhas em live migration | rede dedicada, MTU, compatibilidade CPU, storage compartilhado, permissões |
| Backup impactando produção | janela, throttling, rede/IO separados, snapshots temporários, compressão/encriptação |
| Rede das VMs instável | uplinks, drops, VLAN tagging, loops, MTU mismatch, offloads/driver vNIC |
Sequência prática: (1) storage p95 → (2) CPU ready/steal → (3) rede (drops) → (4) memória (swap) → (5) logs.
Fluxo mental (rápido)
- Está lento: é CPU, RAM, DISCO ou REDE?
- Qual métrica saturou primeiro?
- Onde está o p95/p99 fora do normal?
- Qual mudança ocorreu antes do problema?