Dar uma placa de vídeo a uma máquina virtual: o obstáculo real não é o driver, é o grupo

Passar hardware direto para uma máquina é possível, mas os dispositivos são cedidos em grupos, não um a um. E o hardware cedido também tira da máquina a liberdade de migrar.

AtlasPVE ·

Este verbete responde a

  • proxmox gpu passthrough
  • proxmox grupo iommu
  • proxmox pci passthrough não funciona
  • proxmox placa de vídeo para vm
  • proxmox passagem de hardware

Dar uma placa de vídeo física, uma controladora de disco ou uma placa de captura direto para uma máquina virtual é possível. A promessa é real: a máquina usa aquele hardware como se fosse dela.

Mas onde as pessoas travam não é o driver. É o grupo.

Dispositivos não são cedidos um a um

Sua placa-mãe decide quais dispositivos podem ser isolados uns dos outros e os organiza em grupos. Você não pode ceder um único dispositivo de um grupo; você cede o grupo inteiro.

A consequência: se a sua placa de vídeo está no mesmo grupo da controladora de disco, dar a placa de vídeo significa dar a controladora também. Isso geralmente não dá, porque ali está o disco do servidor.

Então a pergunta na hora de comprar hardware não é "essa placa de vídeo funciona" e sim "nesta placa-mãe ela fica num grupo só dela". O agrupamento é propriedade da placa-mãe, não da placa de vídeo. A mesma placa passa limpo numa placa-mãe e não passa de jeito nenhum em outra.

O dispositivo some do servidor

Segunda surpresa: uma vez cedido a uma máquina virtual, o servidor não consegue mais usar o dispositivo. Não é empréstimo, é transferência.

A versão mais comum: numa máquina com uma única placa de vídeo você cede a placa para uma máquina virtual e a tela do próprio servidor vai junto. Se você consegue conectar remotamente, tudo bem; mas num contratempo você não tem mais a opção de plugar teclado e monitor para olhar.

O hardware cedido também tira a liberdade de migrar

Para quem montou um cluster este é o ponto mais importante: uma máquina com passagem de hardware em geral não consegue ir para outro nó.

O motivo é simples: a placa que você cedeu está dentro desta máquina física. Mesmo que o outro nó tenha o mesmo modelo, não é o mesmo dispositivo.

Ou seja, a rede de segurança que o cluster te dá não cobre aquela máquina. Ela não pode ser movida nas noites de manutenção nem subir em outro nó durante uma falha. Ao montar uma passagem de hardware, o que você escolhe de verdade é isto: mobilidade em troca de desempenho e acesso direto ao hardware.

A memória também deixa de ser flexível

Quarta restrição, a menos conhecida: o hardware cedido escreve direto na memória da máquina virtual. Para isso funcionar, essa memória precisa ficar onde está.

Mas o mecanismo que estica a memória e a retoma é justamente o que a movimenta. Quando os dois estão ligados na mesma máquina, aparecem problemas do lado do driver.

Na prática a regra é: numa máquina com passagem de hardware não estique a memória, dê um valor fixo. Isso significa que essa máquina não pode participar do jogo de "prometer mais do que se tem" descrito no artigo anterior. A memória prometida a ela está de fato reservada.

A frase da decisão

Passagem de hardware não é um ganho, é uma troca. O que você ganha: a velocidade real do hardware e acesso a todas as capacidades dele. O que você perde: portabilidade, o uso daquele dispositivo pelo servidor e a flexibilidade da memória.

Se você faz essa troca de propósito, é a ferramenta certa. Se fez sem perceber, descobre na primeira noite de manutenção ou na primeira falha.

O que o Atlas faz

Quando o Atlas lê os dispositivos PCI do servidor, ele lê também em qual grupo de isolamento cada um está. Assim, antes de decidir, você vê o agrupamento: o dispositivo que você quer ceder está sozinho, ou tem ao lado algo que você não quer entregar.

Há ainda uma regra que cai exatamente na última parte deste artigo. Se uma máquina virtual tem passagem de hardware definida e o esticamento de memória ligado, o Atlas marca como aviso: juntos causam problema do lado do driver. O aviso não diz só "há um problema", diz o que fazer e te leva direto ao ajuste de memória.

É um pequeno exemplo da postura geral do produto: a configuração em si é válida, nada dá erro, mas dois ajustes válidos juntos não fazem sentido. Coisas assim precisam ser ditas na hora de montar, não durante uma falha.

Fontes

A documentação oficial do Proxmox. Em inglês, e é ela que dá a palavra final neste assunto.

Verbetes relacionados

Como isso aparece dentro do Atlas?

Ir para a página do produto