Cómo hacer Passthrough en Proxmox VE | Pasar gráfica a máquina virtual en Proxmox VE | GPU Passthrough GTX 960 en Proxmox VE
GPU Passthrough GTX 960 en Proxmox VE: guía completa con VFIO, IOMMU y drivers CUDA
Cómo pasar una tarjeta gráfica NVIDIA física a una máquina virtual Ubuntu Server con GPU passthrough, configuración IOMMU en el host, y verificación CUDA en la VM. Hardware legacy (Maxwell), rendimiento nativo.
¿Qué es GPU Passthrough?
El GPU passthrough es una capacidad de Proxmox VE que permite asignar control total de un dispositivo PCIe (en este caso una tarjeta gráfica NVIDIA) a una máquina virtual, como si estuviera instalada en bare metal. La GPU queda aislada del host mediante IOMMU y VFIO, trabajando al 100% de rendimiento sin overhead de hipervisión.
En este tutorial, documento el proceso completo con una NVIDIA GTX 960 (arquitectura Maxwell) y Ubuntu Server 24.04 en Proxmox VE 8.x. El hardware es legacy de 2015, pero el resultado es completamente funcional: CUDA, drivers oficiales NVIDIA 580, y GPU accesible desde dentro de la VM.
Características principales
Rendimiento nativo
GPU al 100%, sin penalización de virtualización. Acceso directo a PCIe.
Aislamiento IOMMU
El dispositivo queda segregado del host. Invisible para Proxmox después del passthrough.
VFIO + KVM
Combinación estándar Linux para pasar hardware a VMs QEMU. Completamente soportada.
Drivers oficiales NVIDIA
nvidia-driver-580, sin necesidad de parches custom. Compatible GTX 960 (Maxwell).
CUDA 100% funcional
nvidia-smi verifica GPU, drivers y cores CUDA. Listo para Ollama, transcodificación, ML.
Configuración legacy-friendly
GTX 960 necesita allow_unsafe_interrupts=1. Funciona pero requiere cuidado.
Paso 1: Habilitar Intel VT-d en la BIOS
Antes de cualquier comando, hay que activar Intel VT-d en la placa base. Sin esta capacidad de hardware, el procesador no puede segmentar los canales PCIe para aislamiento.
Procedimiento (MSI Click BIOS 5):
1. Entrar en modo avanzado
Reiniciar → Pulsar Supr → Entrar a BIOS → F7 para activar modo avanzado (necesario).
2. Navegar a CPU Features
OC → CPU Features (o Settings → Advanced → CPU Configuration en algunas placas).
3. Cambiar VT-d a Enabled
Localizar "Intel VT-d" o "Intel Virtualization Technology for Directed I/O" → Cambiar de Disabled a Enabled.
4. Guardar y reiniciar
F10 → Confirmar → Sistema reinicia con VT-d activo en hardware.
Paso 2: Configurar IOMMU y VFIO en el host Proxmox
Con VT-d activo en hardware, ahora configuramos el kernel de Proxmox para que cargue los módulos VFIO y pase los parámetros IOMMU al arranque.
Paso 2a: Parámetros de arranque GRUB
Paso 2b: Módulos del kernel
Paso 2c: Interrupciones no seguras (necesario para GTX 960)
Paso 2d: Verificación tras reinicio
Paso 3: Asignar GPU a la máquina virtual
Con el host configurado, ahora le asignamos la GPU a la VM. Esto se hace en el fichero de configuración de la VM (ej: 101.conf para VM ID 101).
Opción 1 (GUI): En Proxmox → Seleccionar VM → Hardware → Add → PCI Device → Seleccionar GPU.
Opción 2 (CLI - recomendado):
•
pcie=1 → Usar PCIe en lugar de PCI (más eficiente).•
x-vga=1 → Indicar a QEMU que esto es un display device.
Paso 4: Instalar drivers NVIDIA y verificar CUDA en la VM
Arranca la VM (con la GPU asignada). Dentro de Ubuntu Server, detectaremos la GPU, instalaremos drivers, y verificaremos CUDA.
Diagnóstico inicial
Instalar drivers NVIDIA
Verificación CUDA
Resumen de ficheros modificados
| Fichero | Entorno | Propósito | Estado |
|---|---|---|---|
/etc/default/grub.d/proxmox-ve.cfg |
Host | Parámetros IOMMU | Modificado |
/etc/modules |
Host | Módulos VFIO | Modificado |
/etc/modprobe.d/kvm_unsafe.conf |
Host | Interrupciones KVM | Creado |
/etc/modprobe.d/iommu_unsafe.conf |
Host | Interrupciones VFIO | Creado |
/etc/pve/qemu-server/101.conf |
Host | Asignación GPU a VM | Modificado |
Casos de uso para GTX 960 via Passthrough
- Inferencia local: Ollama con Llama 3.2 3B, Phi-3 mini. 4 GB VRAM + Q4 quantization = viabilidad total.
- Transcodificación: Jellyfin/Plex con NVENC/NVDEC hardware. Reduce CPU host dramáticamente.
- CUDA workloads: Procesamiento datos, entrenamiento ML ligero, computer vision con 1024 CUDA cores.
- Gaming/Desktop: VM Windows o Linux desktop con GPU dedicada. No es AAA moderno, pero viable indie/retro.
- Laboratorio: Testing de aplicaciones GPU-bound. Desarrollo CUDA. Experimentación.
Acceso remoto seguro (opcional)
Si la VM está dentro del LAN y quieres acceso remoto, usa Caddy o Nginx Proxy Manager:
Mantenimiento y gestión
Ver logs de la VM
Backup de datos de la VM
Actualizar drivers NVIDIA en la VM
Monitorear GPU dentro de la VM
Comparativa: GPU Passthrough vs otras opciones
vs GPU Emulation (qemu)
Passthrough gana: Rendimiento nativo, sin penalización. Emulation gana: No requiere hardware compatible, más flexible.
vs Bare Metal (sin Proxmox)
Passthrough gana: Múltiples VMs, consolidación, management centralizado. Bare Metal gana: Cero overhead, máxima compatibilidad.
vs Cloud GPU (AWS/Azure)
Passthrough gana: Control total, sin suscripción, privado, latencia cero. Cloud gana: Escalabilidad, disponibilidad, GPUs modernas.
Comentarios
Publicar un comentario