mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 18:32:13 +00:00
173 lines
13 KiB
JSON
173 lines
13 KiB
JSON
{
|
|
"meta": {
|
|
"title": "Cambiar modo GPU (VM ↔ LXC) | Documentación de ProxMenux",
|
|
"description": "Cambia una GPU entre VFIO para VM y controlador nativo para LXC. ProxMenux detecta el controlador, pregunta cómo resolver asignaciones en conflicto, retira audio asociado y regenera initramfs si cambia la configuración del host."
|
|
},
|
|
"header": {
|
|
"title": "Cambiar modo GPU (VM ↔ LXC)",
|
|
"description": "Cambia una GPU asignada entre acceso directo a VM y uso compartido en LXC. ProxMenux gestiona controlador, VFIO, módulos e initramfs y pregunta cómo tratar los invitados afectados. Revisa las opciones y verifica el resultado tras reiniciar.",
|
|
"section": "Hardware: GPU y Coral-TPU"
|
|
},
|
|
"intro": {
|
|
"title": "Qué hace",
|
|
"body": "Con <code>vfio-pci</code>, la GPU se reserva para una VM. Con el controlador nativo <em>(i915 / amdgpu / nvidia)</em>, pueden compartirla el host y los LXC. <strong>Cambiar modo GPU</strong> gestiona <code>vfio.conf</code>, módulos bloqueados y referencias en invitados, y avisa de asignaciones pendientes."
|
|
},
|
|
"graphics": {
|
|
"lxcTitle": "Listo para contenedores LXC",
|
|
"lxcDesc": "Driver nativo activo",
|
|
"vmTitle": "Listo para passthrough a VM",
|
|
"vmDesc": "Driver VFIO-PCI activo"
|
|
},
|
|
"when": {
|
|
"heading": "¿Cuándo debería usar esto?",
|
|
"intro": "Úsalo si la GPU <strong>ya está asignada</strong> y quieres cambiar su uso:",
|
|
"headerSituation": "Situación",
|
|
"headerUse": "¿Usar esta página?",
|
|
"rows": [
|
|
{
|
|
"situation": "GPU libre, nunca asignada: quiero usarla en una VM.",
|
|
"useRich": "No — usa <vmLink>Añadir GPU a VM</vmLink>"
|
|
},
|
|
{
|
|
"situation": "GPU libre, nunca asignada: quiero usarla en un LXC.",
|
|
"useRich": "No — usa <lxcLink>Añadir GPU a LXC</lxcLink>"
|
|
},
|
|
{
|
|
"situationRich": "La GPU está en una VM vía <code>vfio-pci</code>, quiero usarla desde un LXC en su lugar.",
|
|
"useRich": "<strong>Sí — esta página.</strong>"
|
|
},
|
|
{
|
|
"situation": "La GPU está compartida con un LXC, quiero dedicarla a una VM.",
|
|
"useRich": "<strong>Sí — esta página.</strong>"
|
|
},
|
|
{
|
|
"situation": "Quiero retirar todas las asignaciones de esta GPU.",
|
|
"use": "El modo LXC devuelve la GPU al controlador del host; la política de conflictos de VM puede eliminar las entradas hostpci, pero las entradas de dispositivo de los LXC hay que eliminarlas aparte. No deja la GPU sin controlador."
|
|
}
|
|
]
|
|
},
|
|
"prereqs": {
|
|
"title": "Antes de empezar",
|
|
"assigned": "<strong>Una GPU ya asignada</strong> a una VM por VFIO o a un LXC. Para la primera asignación, usa Añadir GPU a VM / LXC.",
|
|
"iommu": "<strong>IOMMU debe estar activo en el host</strong> al pasar <em>a</em> modo VM. Depende del firmware y del kernel. Si al kernel en ejecución le falta <code>intel_iommu=on</code> o <code>amd_iommu=on</code>, el script lo añade con <code>iommu=pt</code> a <code>/etc/kernel/cmdline</code> (marca de raíz ZFS) o a <code>/etc/default/grub</code> y ejecuta <code>proxmox-boot-tool refresh</code> o <code>update-grub</code>. Revisa los avisos y reinicia cuando lo solicite.",
|
|
"iommuCheck": "dmesg | grep -i 'IOMMU enabled' | head -1",
|
|
"reboot": "<strong>Planifica un reinicio.</strong> Los cambios persistentes de controlador y arranque pueden requerir regenerar initramfs y reiniciar. El script muestra la solicitud al terminar.",
|
|
"knowList": "<strong>Identifica las VM y LXC que usan la GPU.</strong> El script detecta referencias y pregunta qué hacer con cada invitado; conocerlos facilita revisar la selección."
|
|
},
|
|
"blocklist": {
|
|
"title": "No todas las GPUs son seguras para pasar a una VM",
|
|
"body": "El script bloquea el modo VM para los ID <code>8086:5a84</code> y <code>8086:5a85</code> por su política de compatibilidad. Si coincide la GPU elegida, detiene el cambio a modo VM y vuelve a la selección de GPU, o sale si es la única GPU. Esta lista no impide pasar <em>a</em> LXC, aunque siguen aplicándose otras comprobaciones."
|
|
},
|
|
"running": {
|
|
"heading": "Ejecutar el script",
|
|
"body": "Abre <strong>Hardware: GPU y Coral-TPU → Cambiar modo GPU (VM ↔ LXC)</strong> en ProxMenux.",
|
|
"imageAlt": "Opción Cambiar modo GPU (VM ↔ LXC) en el menú de hardware"
|
|
},
|
|
"howRuns": {
|
|
"heading": "Cómo funciona el script",
|
|
"body": "Revisas GPU y dirección antes del cambio principal. Una limpieza separada de VFIO antiguo puede pedir confirmación antes, y los invitados tienen sus propios diálogos de conflicto. Lee cada confirmación: no hay una única confirmación final para todos los cambios."
|
|
},
|
|
"walkthrough": {
|
|
"heading": "Proceso paso a paso",
|
|
"detect": {
|
|
"title": "Detectar GPU y controlador actual",
|
|
"body": "Examina las controladoras VGA, 3D y Display del host y consulta <code>/sys/bus/pci/devices/*/driver</code>. Muestra nombre, dirección PCI y controlador actual de cada GPU para identificar su modo.",
|
|
"imageAlt": "Checklist de GPU mostrando cada GPU detectada con su driver actual (vfio-pci / nvidia / amdgpu / i915) y slot PCI"
|
|
},
|
|
"pickGpu": {
|
|
"title": "Elegir las GPU que cambiar",
|
|
"body": "Si hay una GPU, se selecciona sola. Si hay varias, puedes marcar más de una, pero deben estar en el <em>mismo</em> modo. Si mezclas modos, pide reducir la selección.",
|
|
"tipTitle": "Cambiar varias GPU a la vez",
|
|
"tipBody": "Por ejemplo: pasar tres NVIDIA a modo VM y luego devolver la iGPU a LXC. Son dos ejecuciones, cada una con un destino común, en lugar de cambiar cada tarjeta por separado."
|
|
},
|
|
"direction": {
|
|
"title": "Revisar la dirección propuesta",
|
|
"intro": "Según el modo actual, el script propone el opuesto como destino:",
|
|
"items": [
|
|
"<strong>VM → LXC:</strong> retira la asignación a <code>vfio-pci</code> para que el controlador nativo (<code>nvidia</code>, <code>amdgpu</code>, <code>i915</code>) pueda usar la GPU. En NVIDIA elimina las entradas BDF correspondientes de <code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> para el próximo arranque.",
|
|
"<strong>LXC → VM:</strong> prepara la asignación a <code>vfio-pci</code>. AMD / Intel bloquea el controlador nativo y usa <code>options vfio-pci ids=…</code>. En NVIDIA, <code>nvidia</code> solo se bloquea globalmente si todas las GPU NVIDIA del host están en VFIO; si no, las reglas BDF aplican <code>driver_override=vfio-pci</code> a los dispositivos de los grupos IOMMU afectados y las GPU NVIDIA externas a esos grupos conservan <code>nvidia</code>. Revisa cada miembro del grupo."
|
|
],
|
|
"outro": "Confirma la dirección o cancela."
|
|
},
|
|
"conflict": {
|
|
"title": "Cómo tratar cada VM o LXC afectado",
|
|
"body": "Revisa <code>/etc/pve/lxc/*.conf</code> por dispositivos según la familia del controlador y <code>/etc/pve/qemu-server/*.conf</code> por asignaciones PCI. En LXC no identifica cada tarjeta por BDF exacto. Revisa los invitados detectados y elige qué hacer con cada uno:",
|
|
"headerPolicy": "Política",
|
|
"headerEffect": "Efecto",
|
|
"headerWhen": "Cuándo elegirla",
|
|
"keepPolicy": "Conservar configuración y desactivar arranque automático",
|
|
"keepEffect": "<code>pct set CTID -onboot 0</code> o <code>qm set VMID -onboot 0</code>. Conserva las entradas de GPU.",
|
|
"keepWhen": "Si piensas reutilizar el invitado cuando la GPU vuelva al modo anterior. Opción predeterminada conservadora.",
|
|
"removePolicy": "Eliminar la GPU de la configuración",
|
|
"removeEffect": "Retira las entradas <code>hostpci</code> / <code>dev</code> identificadas y las referencias antiguas compatibles.",
|
|
"removeWhen": "Elígelo si el invitado debe funcionar sin GPU. Revisa antes la aplicación: el uso alternativo de CPU depende de ella y retirar el dispositivo no la reconfigura automáticamente.",
|
|
"imageAlt": "Diálogo para elegir qué hacer con cada VM o LXC afectado"
|
|
},
|
|
"audio": {
|
|
"title": "Retirar asignaciones de audio asociadas al salir de VM",
|
|
"body1": "Muchas GPU NVIDIA / AMD tienen audio HDMI en la función <code>.1</code> del mismo slot; también puede haber audio adicional asignado. Al retirar la GPU pueden quedar entradas <code>hostpci</code> de audio obsoletas. Revisa qué dispositivos deben conservarse.",
|
|
"body2": "Identifica las direcciones BDF de audio y muestra una lista para elegir qué retirar. También elimina sus ID vendor:device de <code>/etc/modprobe.d/vfio.conf</code>, solo si ninguna otra VM los usa."
|
|
},
|
|
"apply": {
|
|
"title": "Aplicar cambios al host y a los invitados",
|
|
"body": "Tras confirmar, el script escribe los cambios en el host: <code>vfio.conf</code>, la lista de módulos bloqueados, los módulos y, para NVIDIA, la regla udev por BDF en <code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code> y el estado BDF en <code>/etc/proxmenux/vfio-bind.bdfs</code>. También aplica la política de conflictos elegida a cada VM/LXC afectado. Si la configuración del host ha cambiado, ejecuta <code>update-initramfs -u -k all</code> y después <code>proxmox-boot-tool refresh</code>; si no ha cambiado, omite ambos comandos."
|
|
},
|
|
"reboot": {
|
|
"title": "Reiniciar",
|
|
"body": "Reinicia el host para aplicar la nueva asignación persistente. Puedes posponerlo, pero verifica el controlador activo antes de arrancar el invitado destino: hasta el reinicio puede seguir usando el anterior.",
|
|
"imageAlt": "Diálogo de resumen listando qué cambió, seguido del prompt de reinicio"
|
|
}
|
|
},
|
|
"manual": {
|
|
"heading": "Inspección manual",
|
|
"intro": "Antes de pasar de <strong>VM → LXC</strong>, revisa el controlador y la política BDF. Este ejemplo NVIDIA usa <code>10de:2204</code>; adáptalo a tu tarjeta. Los comandos consultan el estado; el script también gestiona invitados y miembros del grupo IOMMU.",
|
|
"lxcToVm": "Antes de <strong>LXC → VM</strong>, consulta la dirección PCI y su grupo IOMMU. Sustituye la dirección del ejemplo y revisa todos los miembros antes de asignar dispositivos.",
|
|
"oneVmTitle": "Una GPU física asignada por VFIO solo puede usarla una VM a la vez",
|
|
"oneVmBody": "Poner varias entradas <code>hostpci</code> con el mismo slot PCI en dos VMs es config válida pero solo una de las VMs puede arrancar con la GPU — la segunda fallará. El paso de política de conflicto de ProxMenux trata exactamente de evitar esta trampa."
|
|
},
|
|
"verification": {
|
|
"heading": "Verificación tras el reinicio"
|
|
},
|
|
"troubleshoot": {
|
|
"heading": "Solución de problemas",
|
|
"stillVfioTitle": "La GPU sigue mostrando vfio-pci tras cambiar a modo LXC",
|
|
"stillVfioBody": "Un módulo VFIO cargado no demuestra qué controlador usa esta GPU. Revisa la tarjeta y si finalizaron <code>update-initramfs</code> y el reinicio. <code>lsmod | grep vfio</code> solo lista módulos. En AMD / Intel revisa <code>vfio.conf</code>; en NVIDIA, <code>/etc/proxmenux/vfio-bind.bdfs</code> y <code>/etc/udev/rules.d/10-proxmenux-vfio-bind.rules</code>. Corrige las reglas antiguas antes de ejecutar <code>update-initramfs -u -k all</code> y reiniciar.",
|
|
"vmFailTitle": "Una VM no arranca tras pasar la GPU a LXC",
|
|
"vmFailBody": "Comprueba si conserva referencias <code>hostpci</code> obsoletas. La política <em>Eliminar la GPU de la configuración</em> puede retirarlas durante el cambio previsto; revisa la dirección antes de repetir el script para no invertir el modo por error. También puedes retirar la asignación en Proxmox con la VM parada.",
|
|
"smiFailTitle": "nvidia-smi muestra «Driver/library version mismatch» al volver a LXC",
|
|
"smiFailBody": "Compara el módulo NVIDIA cargado con las bibliotecas instaladas, también en LXC. Iguala versiones: reiniciar carga el módulo instalado, pero no corrige paquetes incompatibles. Recargar con <code>modprobe -r nvidia</code> y <code>modprobe nvidia</code> requiere detener los clientes GPU y puede fallar si hay módulos dependientes en uso.",
|
|
"logTitle": "Registro de ejecución",
|
|
"logBody": "Cada ejecución escribe en <code>/tmp/proxmenux_gpu_switch_mode.log</code> del host. Adjunta el registro al pedir ayuda en GitHub."
|
|
},
|
|
"related": {
|
|
"heading": "Relacionado",
|
|
"items": [
|
|
{
|
|
"label": "Añadir GPU a VM (Passthrough)",
|
|
"href": "/docs/hardware/gpu-vm-passthrough",
|
|
"tail": " — primera configuración del modo VM."
|
|
},
|
|
{
|
|
"label": "Añadir GPU a LXC",
|
|
"href": "/docs/hardware/igpu-acceleration-lxc",
|
|
"tail": " — primera configuración del modo LXC."
|
|
},
|
|
{
|
|
"label": "Instalar drivers NVIDIA (Host)",
|
|
"href": "/docs/hardware/nvidia-host",
|
|
"tail": " — necesario para el modo LXC en GPUs NVIDIA."
|
|
},
|
|
{
|
|
"label": "ProxMenux Monitor — pestaña Hardware",
|
|
"href": "/docs/monitor/dashboard/hardware",
|
|
"tail": " — sección Tarjetas gráficas, con el modo actual y el control para cambiarlo."
|
|
},
|
|
{
|
|
"label": "Comandos de asignación directa de GPU",
|
|
"href": "/docs/help-info/gpu-commands",
|
|
"tail": " — referencia rápida de comandos."
|
|
}
|
|
]
|
|
}
|
|
}
|