Introducción a Proxmox VE (PVE)
Proxmox VE es una plataforma de virtualización de código abierto basada en Debian que combina la virtualización KVM y contenedores LXC. Su arquitectura permite gestionar cómputo, almacenamiento y redes desde una única consola web.
Capacidades de Gestión
- Arquitectura Multi-maestro: Permite gestionar múltiples nodos físicos desde una interfaz unificada sin necesidad de un servidor de gestión centralizado dedicado.
- Sistema de Archivos Proxmox (pmxcfs): Una base de datos de configuración distribuida que se replica en memoria para mantener la consistencia entre miles de máquinas virtuales.
- API RESTful: Facilita la integración con herramientas de terceros y la automatización mediante llamadas programáticas.
- Control de Acceso (RBAC): Permite definir permisos granulares basados en roles.
- Autenticación Flexible: Soporte para PAM, LDAP, Active Directory y autenticación de dos factores (2FA) como Google Authenticator.
Almacenamiento y Redes
PVE es compatible con diversas tecnologías de almacenamiento como NFS, LVM local, Ceph RBD, ZFS y GlusterFS. En cuanto a conectividad, utiliza por defecto un modelo de puente (bridge), donde el host actúa como un switch virtual (hub) que conecta las interfaces físicas con las virtuales de los huéspedes.
Instalación y Requisitos del Sistema
Para un rendimiento óptimo, especialmente si se planea usar tecnologías como el paso de dispositiovs (PCIe passthrough), el hardware debe cumplir ciertos criterios:
- Procesador: Intel EMT64 o AMD64 con soporte para VT-x/AMD-V.
- Memoria RAM: Mínimo de 2 GB para el sistema base. Para configuraciones con ZFS o Ceph, se recomienda 1 GB adicional por cada TB de almacenamiento.
- Discos: Se recomiendan unidades SSD con controladores RAID que dispongan de caché protegida por batería.
Pruebas de Rendimiento
Una vez instalado, se puede evaluar el rendimiento del subsistema de E/S y CPU mediante la herramienta nativa:
pveperf /ruta/al/punto/de/montaje
Configuración de Repositorios y Actualización
Para entornos que no utilizan la suscripción empresarial, es necesario ajustar las fuentes de apt para recibir actualizaciones de la comunidad.
# Configuración de repositorios para Debian Bookworm
cat <<EOF > /etc/apt/sources.list
deb https://deb.debian.org/debian bookworm main contrib non-free-firmware
deb https://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
deb https://security.debian.org/debian-security bookworm-security main contrib non-free-firmware
EOF
# Añadir repositorio No-Subscription de PVE
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
# Desactivar el aviso de suscripción en la interfaz web
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy.service
Sincronización Horaria y Salud del Hardware
La consistencia del tiempo es crítica en clústeres PVE. Se recomienda el uso de chrony para una sincronización precisa.
# Instalación y ajuste de Chrony
apt update && apt install -y chrony
echo "server hora.rediris.es iburst" >> /etc/chrony/chrony.conf
systemctl restart chrony
# Verificación de discos mediante SMART
smartctl -a /dev/nvme0n1
# Si SMART está desactivado:
smartctl -s on /dev/nvme0n1
Gestión de Clústeres
Un clúster de alta disponibilidad requiere al menos tres nodos para evitar escenarios de "split-brain" y asegurar el quórum.
Consideraciones de Red en el Clúster
- Latencia de red inferior a 5ms entre nodos.
- Uso de redes dedicadas para la comunicación de Corosync para evitar congestión por tráfico de migración o almacenamiento.
Archivo de Configuración Corosync
El archivo /etc/pve/corosync.conf define la topología del clúster:
nodelist {
node {
name: pve-master-01
nodeid: 1
quorum_votes: 1
ring0_addr: 10.0.0.11
ring1_addr: 192.168.1.11
}
node {
name: pve-slave-02
nodeid: 2
quorum_votes: 1
ring0_addr: 10.0.0.12
ring1_addr: 192.168.1.12
}
}
totem {
cluster_name: dc-produccion
config_version: 5
interface {
linknumber: 0
}
link_mode: passive
secauth: on
version: 2
}
Configuración de Máquinas Virtuales
Al crear instancias, ciertos parámetros optimizan el rendimiento según el tipo de carga:
- Controlador SCSI: VirtIO SCSI Single para mejor gestión de colas.
- Agente QEMU: Debe habilitarse para permitir cierres limpios y congelación de FS durante backups.
- Tipo de CPU: "Host" suele ofrecer el mejor rendimiento, aunque limita la migración entre CPUs de distinta arquitectura.
- Red: VirtIO es el modelo recomendado. Habilitar Multiqueue si el tráfico de red es intensivo.
Migración y Clonación
- Migración en Caliente (Live Migration): Requiere almacenamiento compartido o replicación previa para transferir el estado de la memoria sin apagar la VM.
- Clonación Enlazada (Linked Clone): Crea una copia que depende del disco base original. Es rápida y ahorra espacio, pero requiere que el original sea de solo lectura.
- Clonación Completa (Full Clone): Copia íntegra e independiente de todos los datos.
Paso de Dispositivos PCIe (Passthrough)
Permite que una VM tome control directo de hardware físico (como GPUs o tarjetas de red).
Activación de IOMMU
Modifique el cargador de arranque para habilitar el mapeo de memoria de E/S:
# En /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# Actualizar y cargar módulos necesarios
update-grub
echo -e "vfio\nvfio_iommu_type1\nvfio_pci" >> /etc/modules
update-initramfs -u -k all
Aislamiento de Dispositivos
Identifique el ID del hardware y bloquéelo para el host:
lspci -nn | grep -i nvidia
# Salida ejemplo: [10de:1b81]
echo "options vfio-pci ids=10de:1b81" > /etc/modprobe.d/vfio.conf
Alta Disponibilidad (HA)
El stack de HA en Proxmox se compone de dos elementos clave:
- pve-ha-lrm (Local Resource Manager): Controla el estado de los recursos en el nodo local y ejecuta comandos del CRM.
- pve-ha-crm (Cluster Resource Manager): Toma decisiones a nivel global, gestiona las transiciones de estado y realiza el "fencing" de nodos fallidos.
Estados Comunes del Servicio HA
- started: El sistema intenta mantener la VM activa; si el nodo falla, se reinicia en otro.
- fence: Estado de aislamiento tras detectar una falla, esperando confirmar que el nodo fallido no acceda al almacenamiento compartido.
- freeze: El recurso está congelado (por ejemplo, durante mentenimiento), el gestor de HA no tomará acciones.
Redes Definidas por Software (SDN)
PVE permite crear zonas de red aisladas para entornos multi-inquilino:
- Simple: Crea un puentte con enrutamiento NAT local.
- VLAN: Utiliza el estándar 802.1Q para segmentar tráfico en el switch físico.
- VXLAN / EVPN: Permite extender redes de capa 2 sobre infraestructuras de capa 3, ideal para clústeres distribuidos.