RAID na Virtualização: Passthrough de Controladora vs Software RAID no Hypervisor

      17 de dezembro de 2025 David Ross 8 min de leitura
      RAID na Virtualização: Passthrough de Controladora vs Software RAID no Hypervisor

      Decida a arquitetura de storage correta para seus VMs. Análise profunda de latência, integridade de dados (ZFS) e trade-offs entre IOMMU Passthrough e RAID gerenciado pelo Host.

      Compartilhar:

      Esta é uma das discussões mais polarizadas em arquitetura de infraestrutura. De um lado, os puristas do "bare metal" que exigem acesso direto ao disco; do outro, os administradores que preferem a abstração conveniente dos arquivos de disco virtual (vmdk/qcow2).

      Como arquiteto, minha resposta padrão é "depende", mas o "depende" aqui não é uma fuga. É uma questão de calcular onde você quer pagar o preço: na complexidade de configuração inicial (Passthrough) ou na latência e sobrecarga de gerenciamento (Software RAID no Hypervisor). Não existe almoço grátis em I/O.

      Vamos dissecar essa topologia para que você pare de adivinhar e comece a arquitetar.

      O Dilema do Acesso ao Armazenamento na Virtualização

      Passthrough de Controladora (PCIe Passthrough) consiste em dedicar um dispositivo de hardware físico (como uma HBA LSI ou um controlador NVMe) exclusivamente a uma Máquina Virtual, ignorando a camada de gerenciamento do Hypervisor. Software RAID no Hypervisor, por outro lado, envolve o Hypervisor (ESXi, Proxmox, Hyper-V) gerenciando o array de discos e apresentando um "disco virtual" genérico para a VM, abstraindo a geometria física subjacente.


      A Anatomia do I/O: Onde a paridade é calculada?

      Para tomar essa decisão, você precisa visualizar o caminho do dado. O maior erro que vejo em campo é a ignorância sobre quem está "pagando a conta" do cálculo de paridade (RAID 5/6/Z1/Z2) e do gerenciamento de cache.

      Se você usa Software RAID no Hypervisor (ex: ZFS no Proxmox entregando um zvol para a VM), o fluxo é:

      1. Aplicação na VM grava dados.

      2. Sistema de Arquivos da VM (EXT4/NTFS) processa.

      3. Driver de disco virtual (VirtIO/PVSCSI) encapsula.

      4. Context Switch (VM -> Hypervisor).

      5. Hypervisor recebe o I/O.

      6. Sistema de Arquivos do Hypervisor (ZFS/VMFS) calcula paridade/checksum.

      7. Driver físico grava no disco.

      Fluxo de I/O: A diferença crítica no caminho dos dados entre abstração e acesso direto. Figura: Fluxo de I/O: A diferença crítica no caminho dos dados entre abstração e acesso direto.

      Note o passo 4. Cada operação de I/O paga um pedágio de CPU para alternar contextos. Em cargas de trabalho sequenciais massivas, isso é trivial. Em bancos de dados transacionais com alto IOPS aleatório, isso é latência pura.

      Se você usa Passthrough, a VM fala diretamente com o hardware. O Hypervisor apenas mapeia os endereços de memória via IOMMU (Input-Output Memory Management Unit). O sistema operacional da VM (ex: TrueNAS, Unraid ou uma VM Linux com mdadm) vê o disco físico real. O "pedágio" do Hypervisor é drasticamente reduzido.

      PCIe Passthrough (IOMMU): Entregando o metal para a VM

      O Passthrough é a implementação técnica do conceito de "isolamento estrito". Quando você ativa o VT-d (Intel) ou AMD-Vi, você está dizendo ao chipset: "Este dispositivo PCI (a controladora de disco) pertence exclusivamente a este domínio de memória (a VM)".

      Como validar se sua arquitetura suporta Passthrough

      Não basta querer usar. O hardware precisa permitir o isolamento dos grupos IOMMU. Se a sua controladora de disco compartilha o mesmo grupo IOMMU que a sua placa de rede ou, pior, a ponte PCI raiz, você não conseguirá passar um sem derrubar o outro.

      Para verificar grupos IOMMU em um host Linux/Proxmox antes de decidir a arquitetura:

      #!/bin/bash
      shopt -s nullglob
      for g in /sys/kernel/iommu_groups/*; do
          echo "IOMMU Group ${g##*/}:"
          for d in $g/devices/*; do
              echo -e "\t$(lspci -nns ${d##*/})"
          done
      done
      

      O Trade-off do Passthrough: Ao entregar a controladora para a VM, o Hypervisor fica cego.

      • O Hypervisor não pode ver a temperatura dos discos (facilmente).

      • O Hypervisor não pode fazer snapshots daquele armazenamento (pois ele não controla o sistema de arquivos).

      • O Hypervisor não pode usar esse espaço para armazenar outras VMs ou ISOs.

      Software RAID no Hypervisor: A camada de abstração conveniente

      Esta é a rota padrão para 90% das empresas, e por um bom motivo: flexibilidade.

      Quando o Hypervisor gerencia o RAID (seja via Hardware RAID card apresentando um volume lógico, ou via ZFS/vSAN), a VM é apenas um arquivo. Isso significa que:

      1. Migração (vMotion/Live Migration): É trivial mover a VM entre hosts.

      2. Snapshots: Você pode congelar o estado da VM antes de um update crítico.

      3. Thin Provisioning: Você pode prometer 10TB para a VM gastando apenas 100GB reais inicialmente.

      O Risco Oculto: Write Amplification e Double Caching O perigo aqui é a redundância de camadas. Se você roda ZFS no Host e ZFS na VM (sobre um disco virtual), você está criando um pesadelo de performance conhecido como CoW sobre CoW (Copy-on-Write sobre Copy-on-Write).

      Se a VM tenta alinhar um bloco de 4K, o Hypervisor pode ter que reescrever um bloco de 128K (recordsize padrão do ZFS). Isso destrói o desempenho de escrita e a vida útil de SSDs de consumo.

      Regra de Ouro: Se usar RAID no Hypervisor, o sistema de arquivos da VM deve ser "burro" e leve (EXT4, XFS), não outro gerenciador de volume complexo.

      Comparativo Técnico: Passthrough vs Virtual Disk

      Abaixo, uma análise direta dos atributos que impactam o TCO e a operação diária.

      Atributo PCIe Passthrough (IOMMU) Software RAID no Hypervisor (Virtual Disk)
      Latência de I/O Nativa (Quase zero overhead) Média/Alta (Depende da fila do Hypervisor)
      Portabilidade da VM Baixa (A VM está "presa" ao hardware físico) Alta (A VM é um arquivo agnóstico)
      Snapshots Complexo (Depende do OS da VM, ex: ZFS snapshots) Simples (Nativo do Hypervisor)
      Recuperação de Desastre Exige hardware similar ou reconfiguração Restauração de arquivo em qualquer hardware
      Monitoramento S.M.A.R.T Direto na VM Apenas no Host (VM não vê saúde do disco)
      Uso Ideal NAS Virtualizado (TrueNAS), Storage Server Aplicações Gerais, Web Servers, AD, DBs leves

      Portabilidade e Recuperação: O pesadelo do Vendor Lock-in

      Aqui é onde a teoria encontra a realidade da operação às 3 da manhã de um domingo.

      Se você usa Passthrough de uma controladora RAID de Hardware (ex: PERC, HP SmartArray) para uma VM, e essa placa morre, você está em apuros. Você precisa de uma placa idêntica (ou compatível com a mesma estrutura de metadados proprietários) para recuperar os dados.

      Se você usa Passthrough de uma HBA (IT Mode) para ZFS/Software RAID na VM, o risco diminui. Você pode plugar os discos em qualquer controladora HBA "burra", em qualquer servidor, e importar o pool ZFS. Esta é a única forma de Passthrough que eu recomendo para arquiteturas resilientes.

      No modelo de RAID no Hypervisor, se o servidor inteiro pegar fogo, basta pegar os discos, importar no novo Hypervisor e registrar as VMs novamente. A camada de abstração protege a VM das especificidades do hardware.

      Veredito Arquitetural: Quando usar Passthrough vs Virtual Disk

      Não decida baseado em "qual é mais rápido". Decida baseado em "quem deve gerenciar os dados".

      Matriz de Decisão: Escolhendo a topologia de storage baseada em requisitos operacionais. Figura: Matriz de Decisão: Escolhendo a topologia de storage baseada em requisitos operacionais.

      Use Passthrough (IOMMU) SE:

      1. Você está virtualizando um NAS/SAN (TrueNAS, Unraid, OMV): Esses sistemas operacionais precisam de acesso direto aos discos para gerenciar cache, integridade e S.M.A.R.T. corretamente. Virtualizar o ZFS sem acesso direto aos discos é pedir para perder dados.

      2. Performance Máxima de BD: Você tem um banco de dados que satura o barramento NVMe e o overhead do virtio-scsi ou nvme-of é inaceitável.

      3. Tape Drives/Hardware Legado: Você precisa que a VM acesse um dispositivo de fita ou dongle de segurança específico.

      Use Software RAID no Hypervisor (Virtual Disks) SE:

      1. Consolidação de Cargas Gerais: Você tem 20 VMs (Web, App, AD). Não faz sentido dedicar controladoras para cada uma.

      2. Necessidade de Alta Disponibilidade (HA): Recursos como vMotion/Live Migration exigem armazenamento abstraído ou compartilhado. Passthrough geralmente quebra o HA automatizado.

      3. Simplicidade Operacional: Você quer fazer backup da VM inteira copiando um arquivo .qcow2 ou .vmdk.

      Resumo para o Arquiteto

      O Passthrough é uma ferramenta poderosa para transformar uma VM em um appliance de armazenamento dedicado. No entanto, ele quebra o paradigma da virtualização (abstração de hardware). Use-o apenas quando a aplicação (como o ZFS dentro do TrueNAS) for inteligente o suficiente para gerenciar o hardware melhor do que o Hypervisor. Para todo o resto, a abstração do disco virtual, apesar do pequeno custo de performance, paga-se em flexibilidade e facilidade de recuperação.


      Referências & Leitura Complementar

      • Intel Virtualization Technology for Directed I/O (VT-d) Architecture Specification: Detalhes técnicos sobre como o remapeamento de DMA e interrupções funciona no nível do silício.

      • ZFS on Linux - The intent log (ZIL): Compreensão crítica para entender por que o Passthrough é vital para latência de escrita síncrona em ZFS virtualizado.

      • VMware KB 1010789: Configuração de Passthrough (DirectPath I/O) e limitações associadas (perda de vMotion, Snapshots).

      • Proxmox VE Admin Guide - PCI Passthrough: Documentação prática sobre implementação de IOMMU em ambientes baseados em KVM.

      #RAID Virtualização #PCI Passthrough #IOMMU #ZFS em VM #HBA IT Mode #Storage Performance #Proxmox Storage #VMware Datastore
      David Ross

      David Ross

      Linux Sysadmin Veterano

      Vive no terminal. Mantenedor de diversos módulos kernel de storage. Acredita que GUI é bloatware.