¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Proxmox VE
Entorno de virtualización de servidores de código abierto. Está en distribuciones GNU/Linux basadas en Debian con una versión modificada del kernel y permite el despliegue y la gestión de máquinas virtuales y contenedores todo desde una interfaz web muy completa.
Las notas se centran en la versión 9
Proxmox VE es un hipervisor tipo 1 (bare-metal), es decir, se instala directamente sobre el hardware del servidor. Alternativa libre a VMware ESXi o Hyper-V, pero con muchísimas funciones incluidas sin pagar licencias.
Proxmox VE = Debian + KVM + LXC + gestión web
Casos de uso
- Montar servidores virtualizados
- Crear laboratorios (Linux, Windows, firewalls, etc.)
- Consolidar varios servicios en un solo servidor físico
- Clusters de alta disponibilidad
- Backups y snapshots fáciles
Qué es y qué no es Proxmox
Proxmox VE sí es:
- Un hipervisor bare-metal
- Una alternativa libre a VMware ESXi o Hyper-V
- Una plataforma para VMs y contenedores LXC
Proxmox VE no es:
- Docker o Kubernetes
- Un NAS (aunque pueda usar ZFS)
- Un proveedor de cloud público
Conceptos en Proxmox
Máquinas virtuales
Una máquina virtual o VM (Virtual Machine) es un ordenador completo virtual:
- Tiene su propio kernel
- Arranca con BIOS/UEFI
- Corre su propio sistema operativo
En Proxmox usa KVM/QEMU.
Ventajas de las VMs
- Aislamiento fuerte
- Soportan cualquier SO
- Más seguras
- Snapshot del SO completo
Desventajas
- Más consumo de RAM
- Arranque más lento
- Overhead mayor
LXC (Contenedor)
Un contenedor es:
- Un sistema Linux aislado
- Comparte el kernel del host
- No arranca como un PC (no hay BIOS)
Es muy ligero.
Ventajas de LXC:
- Consume muy poca RAM
- Arranque casi instantáneo
- Ideal para muchos servicios pequeños
- Rendimiento casi nativo
Desventajas:
- Solo Linux
- Menor aislamiento
- No ideal para sistemas críticos de seguridad
Almacenamiento
Proxmox organiza el almacenamiento en un nodo de la siguiente manera:
Nodo Proxmox (pve)
│
┌───────────┴───────────┐
│ │
Storage: local (pve) Storage: local-lvm (pve)
│ │
┌───────┴─────────┐ ┌────┴─────┐
│ │ │ │ │
ISOs Plantillas Backups Discos VM Snapshots
CTs (Máquinas virtuales)
- Nodo Proxmox (pve): tu servidor físico con Proxmox instalado.
- local (pve): almacenamiento basado en sistema de archivos (
/var/lib/vz, por defecto). Ideal para archivos:- ISOs
- Plantillas de contenedores (CT)
- Backups
- local-lvm (pve): almacenamiento basado en LVM. Ideal para discos de VM:
- Discos de máquinas virtuales
- Snapshots a nivel de bloque
Consejos:
- Si quieres un contenedor ligero, puedes usar local directamente.
- Si creas una VM con discos grandes, selecciona local-lvm para mejor rendimiento.
Otra forma de representar:
🖥️ Nodo Proxmox (pve)
│
┌───────────────┴───────────────┐
│ │
📁 local (pve) 💽 local-lvm (pve)
(Filesystem /var/lib/vz) (LVM / bloque)
│ │
┌─────────┼──────────┐ ┌─────┼─────────┐
│ │ │ │ │
📀 ISOs 📦 Plantillas 💾 Backups 🖥️ VM Discos ⏺️ Snapshots
(Instalación) (CT templates) (raw/LVM)
Preparar medio de instalación
Tras descargar la ISO, esa imagen puede ser grabada en un CD/DVD o pendrive USB.
En caso de optar por instalarlo en un pendrive USB, se puede utilizar Rufus en Windows o el comando dd en Linux.
En caso de usar Rufus, cuando nos advierta de que ha detectado la ISO de Proxmox como una Hybrid ISO, debemos elegir el modo DD.
Poner captura de esta advertencia
En caso de estar en Linux y optar por el comando dd, con permisos de administrador tecleamos:
dd bs=1M conv=fdatasync if=/ruta/imagen/proxmox.iso of=/dev/ABC
Donde /dev/ABC es el dispositivo que identifica el pendrive USB (/dev/sdc, /dev/sdd…)
Con el medio de instalación preparado, lo metemos en el servidor donde vayamos a instalar Proxmox y nos aseguramos de arrancar desde este medio (ya sea mediante un selector de arranque o modificando el orden de arranque en la BIOS/UEFI)
Instalación
Durante la instalación podemos personalizar el uso que Proxmox hará del disco donde vayamos a instalarlo:
hdsize: tamaño (en GB) a usar del disco. Lo normal es poner el tamaño total del disco, pero si no lo hacemos, el resto quedará sin particionar (por si lo queremos usar en un futuro para otras particiones).swapsize: tamaño máximo (en GB) de la memoria de intercambio.maxroot: tamaño máximo (en GB) de la partición root (donde se instalará el sistema). Máximohdsize/4.minfree: tamaño mínimo libre (en GB) para root.maxvz: tamaño máximo (en GB) para la partición de datos.
Proxmox hace la siguiente cuenta: maxvz = hdsize - maxroot - swapsize - minfree
Ejemplo con un disco de 32 GB:
hdsize: 32 GBswapsize: 2 GBmaxroot: 20 GBminfree: 0maxvz: (en blanco)
Tras instalarse, Proxmox ocupa ¿?¿?
El instalador crea un grupo de volúmenes (VG) llamado pve y los volúmenes lógicos (LV) root, data y swap. Podemos personalizar el tamaño de estos volúmenes:
Si lo dejamos todo por defecto (sin asignar espacio concreto), tomando de ejemplo un disco de 500 GB:
# vgdisplay --- Volume group --- VG Name pve System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size <465.26 GiB PE Size 4.00 MiB Total PE 119106 Alloc PE / Size 115011 / 449.26 GiB Free PE / Size 4095 / <16.00 GiB VG UUID RGCV1F-8q0g-N8eV-2F7O-mimm-XfBp-IHdjp0 root@klein:~# lvdisplay --- Logical volume --- LV Path /dev/pve/swap LV Name swap VG Name pve LV UUID UQnlWe-m6rR-m6xX-jTfV-Cewe-A2By-XIfNw9 LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 11:15:24 +0100 LV Status available # open 2 LV Size 8.00 GiB Current LE 2048 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/pve/root LV Name root VG Name pve LV UUID KaqGI5-Z2ZN-wkce-Yn3y-RVuB-jzzD-QAO8ey LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 11:15:24 +0100 LV Status available # open 1 LV Size 96.00 GiB Current LE 24576 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Name data VG Name pve LV UUID gGiM97-L2Wx-UbwL-PNYd-bAK7-w5Uw-7EEqHA LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 11:15:32 +0100 LV Pool metadata data_tmeta LV Pool data data_tdata LV Status available # open 0 LV Size <338.36 GiB Allocated pool data 0.00% Allocated metadata 0.50% Current LE 86619 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4
Por tanto:
- swap: 8 GB (memoria de intercambio)
- root: 96 GB (sistema y máquinas virtuales que vayamos creando)
- data: 338 GB (copias de seguridad de máquinas)
El almacenamiento “local” por defecto está localizado bajo /var/lib/vz/. “local-lvm” no es un directorio de almacenamiento sino un thin-lvm
Si, con el ejemplo de disco de 500 GB, establecemos un valor de 300 en minfree, nos quedaría:
Si, con el ejemplo de disco de 500 GB, establecemos un valor de 240 GB en maxvz, nos quedaría:
root@klein:~# lvdisplay --- Logical volume --- LV Path /dev/pve/swap LV Name swap VG Name pve LV UUID QNuDkb-gkkB-eJV9-njGH-Tx1n-cYuS-Jllvs8 LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 14:53:34 +0100 LV Status available # open 2 LV Size 4.00 GiB Current LE 1024 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/pve/root LV Name root VG Name pve LV UUID DWApZI-elu9-Nat3-RzlJ-fi1v-y1T5-95qyBs LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 14:53:34 +0100 LV Status available # open 1 LV Size 96.00 GiB Current LE 24576 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Name data VG Name pve LV UUID e9YBDd-gckd-01Az-C9F5-Hb9d-d1Dk-CqJWA1 LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 14:53:40 +0100 LV Pool metadata data_tmeta LV Pool data data_tdata LV Status available # open 0 LV Size <245.00 GiB Allocated pool data 0.00% Allocated metadata 0.67% Current LE 62719 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4
Si, con el ejemplo de disco de 500 GB, establecemos un valor de 250 GB en maxroot, nos quedaría:
root@klein:~# lvdisplay --- Logical volume --- LV Path /dev/pve/swap LV Name swap VG Name pve LV UUID jrCc81-u9Zg-z57E-A8Xp-sfg6-tl24-8C1Jd2 LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 15:15:44 +0100 LV Status available # open 2 LV Size 4.00 GiB Current LE 1024 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/pve/root LV Name root VG Name pve LV UUID BVYYst-7zSz-zIVw-VJdj-tyeD-qPPN-xB1iIn LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 15:15:44 +0100 LV Status available # open 1 LV Size 116.25 GiB Current LE 29760 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Name data VG Name pve LV UUID q451ZL-6a3H-nyNo-Pwf4-nykg-0g0E-xoKXOJ LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 15:15:51 +0100 LV Pool metadata data_tmeta LV Pool data data_tdata LV Status available # open 0 LV Size <322.43 GiB Allocated pool data 0.00% Allocated metadata 0.52% Current LE 82542 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4
Si, con el ejemplo de disco de 500 GB, establecemos un valor de 20 GB en maxroot y 222 GB para minfree, nos quedaría:
root@klein:~# lvdisplay --- Logical volume --- LV Path /dev/pve/swap LV Name swap VG Name pve LV UUID z4NBtg-bzqV-t4UE-YWI1-pd75-PMuW-BV8GMW LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 16:14:35 +0100 LV Status available # open 2 LV Size 8.00 GiB Current LE 2048 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/pve/root LV Name root VG Name pve LV UUID eSurET-QqJq-dHhe-Qmmb-Zo7j-gVev-SKUhLZ LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 16:14:35 +0100 LV Status available # open 1 LV Size 20.00 GiB Current LE 5120 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Name data VG Name pve LV UUID EsZC56-c8TL-Yr5o-6fp2-INl4-qIEJ-PYn8vN LV Write Access read/write LV Creation host, time proxmox, 2022-02-11 16:14:40 +0100 LV Pool metadata data_tmeta LV Pool data data_tdata LV Status available # open 0 LV Size 210.95 GiB Allocated pool data 0.00% Allocated metadata 0.77% Current LE 54004 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:4
En este último escenario, nos quedarían libres:
vgdisplay | grep Free Free PE / Size 56830 / 221.99 GiB
221.00 GiB para crear un nuevo volumen y dedicarlo a backups.
Proxmox en VirtualBox
Instalación
Desde VirtualBox 6.3 hay que activar la aceleración de virtualización anidada: Configuración → Sistema → Procesador → Habilitar VT-x/AMD-V anidado.
Si la opción no apareciese seleccionable, se puede activar desde línea de comandos con VBoxManage modifyvm nombre-maquina-virtual --nested-hw-virt on
Para el caso más sencillo, configura el adaptador de red como Adaptador puente. De esta manera, Proxmox es un equipo más en tu red local, igual que tu PC o tu móvil. Además, en la parte de Promiscuous Mode debemos elegir Permitir todo para que las interfaces virtuales puedan recibir tráfico DHCP (si optamos por esto).
Proxmox detectará la NIC virtual (enp0s3 o nic0), sin IP, y luego creará un bridge vmbr0 que es un switch virtual que conecta la NIC física con las VMs y contenedores. El bridge tendrá una IP y es la que nos permitirá acceder a la gestión de Proxmox (https://ip.servidor:8006)
Red
[ Router 192.168.0.1 ]
|
LAN 192.168.0.0/24
|
[ VirtualBox (bridge) ]
|
[ nic0 ] ← NIC virtual
|
[ vmbr0 ] ← switch virtual + IP
|
[ Proxmox Host 192.168.0.16 ]
|
[ VMs / LXC ]
Con esa configuración, sin hacer nada más, funcionaría:
- Acceso web a Proxmox
- VMs accesibles desde tu LAN
- Internet desde VMs
- SSH entre máquinas
- Laboratorio realista
Regla mental:
nic0= tarjeta de red físicavmbr0= switch virtual- IP siempre en el bridge
Si eso se cumple, Proxmox estará feliz
PCI passthrough
Es posible hacer accesibles a las máquinas virtuales el hardware que esté conectado en puertos PCI, siendo el caso más interesante el de las tarjetas gráficas. De esa manera, podemos utilizar aceleración gráfica en las máquinas virtuales.
La placa base y la tarjeta gráfica deben soportar PCI passthrough, conocido también como IOMMU. Los sistemas Intel se refieren a esta característica como Intel VT-d mientras que en AMD es AMD IO-MMU (o AMD SVM).
Cuanta más memoria tenga la tarjeta gráfica, más memoria se podrá compartir con las máquinas virtuales.
Completar sección
Almacenamiento
Desde la versión 7 podemos descargar ISOs desde Internet. Si el almacenamiento permite archivos ISO, tendremos el botón Download from URL donde le indicaremos la URL de la ISO y un nombre del archivo (lo puede detectar automáticamente si pulsamos en Query URL)
El almacenamiento “local” por defecto de las máquinas virtuales es /var/lib/vz/images/<VMID>
Gestión gráfica
Una vez instalado, podemos acceder con el navegador a https://IP:8006. Desde ahí podemos:
- Crear VMs y contenedores
- Ver consumo de CPU/RAM
- Configurar redes y discos
- Hacer backups y restauraciones
Máquinas virtuales
Para la creación de una máquina virtual, además de decidir los recursos que tendrá, debemos tener disponibles los medios de instalación del sistema operativo.
En Proxmox, si vamos a Datacenter → Storage → ISO Images y pulsamos en Upload, podemos subir al servidor de Proxmox la ISO de instalación del sistema que queramos.
También tenemos otra posibilidad que es descargar la ISO desde Internet con el botón Download from URL.
Gestión en línea de comandos
Versión y software
pveversion
Ejemplo de salida:
pve-manager/9.1.4/5ac30304265fbd8e (running kernel: 6.17.2-1-pve)
Si le añadimos la opción -v podemos ver la lista de programas relacionados con pve:
pveversion -v
Rendimiento
Para ver cómo de rápido es el sistema en el que tenemos instalado Proxmox:
pveperf
Ejemplo de salida:
PU BOGOMIPS: 40042.48 REGEX/SECOND: 2331444 HD SIZE: 19.52 GB (/dev/mapper/pve-root) BUFFERED READS: 493.30 MB/sec AVERAGE SEEK TIME: 0.05 ms FSYNCS/SECOND: 504.13 DNS EXT: 59.75 ms DNS INT: 27.63 ms (local)
Contenedores
Proxmox VE está pensado para gestionar todo desde la línea de comandos usando la herramienta pct (Proxmox Container Toolkit) para LXC.
Suponiendo que tenemos un contenedor con identificador 100:
| Acción | Comando |
|---|---|
| Listar todos los contenedores | pct list |
| Mostrar información de un contenedor | pct config 101 |
| Iniciar contenedor | pct start 101 |
| Parar contenedor | pct stop 101 |
| Reiniciar contenedor | pct reboot 101 |
| Entrar en la consola del contenedor | pct console 101 |
| Ejecutar un comando dentro del contenedor | pct exec 101 -- <comando> |
| Crear snapshot | pct snapshot 101 <nombre> |
| Listar snapshots | pct listsnapshot 101 |
| Restaurar snapshot | pct rollback 101 <nombre> |
| Clonar contenedor | pct clone 101 <nuevoID> --name <nombre> |
| Crear un contenedor nuevo | pct create <ID> <plantilla> --storage <STORAGE> --hostname <NOMBRE> |
| Eliminar contenedor | pct destroy 101 |
Máquinas virtuales
En Proxmox las máquinas virtuales (VM) se gestionan con la herramienta qm (Qemu/KVM Manager). Te hago un resumen completo y práctico de los comandos básicos.
Suponiendo que tenemos una máquina con identificador 100:
| Acción | Comando |
|---|---|
| Listar las máquinas virtuales | qm list |
| Iniciar una máquina virtual | qm start 100 |
| Apagar de forma limpia | qm shutdown 100 |
| Apagado forzoso | qm stop 100 |
| Reiniciar | qm reset 100 |
| Conectarse a la consola de QEMU (modo monitor) | qm monitor 100 |
| Terminal tipo serial | qm terminal 100 |
| Conectar a la VM como si fuera la pantalla del host | qm console 100 |
| Eliminar una máquina virtual | qm destroy 100 |
Crear una máquina virtual:
qm create <VMID> --name <nombre> --memory <MB> --cores <número> --net0 virtio,bridge=vmbr0 --bootdisk scsi0 --scsihw virtio-scsi-pci --ide2 <storage>:cloudinit
- VMID → ID único de la VM (por ejemplo 100)
- memory → RAM en MB
- cores → número de CPU
- net0 → interfaz de red conectada al bridge vmbr0
- bootdisk → disco principal
- cloudinit → si quieres automatizar la instalación
Para instalar desde ISO, usar –cdrom <storage>:iso/<imagen>.iso
Ejemplo mínimo:
qm create 100 --name vm-test --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0 --cdrom local:iso/debian-12.iso --scsihw virtio-scsi-pci --bootdisk scsi0
Creación de máquinas virtuales
Windows 11
Para obtener el mejor rendimiento, se usarán los drivers VirtIO durante la instalación de Windows.
Configuración de la máquina virtual:
- Guest OS: “Microsoft Windows 11/2022”
- En la pestaña System, habilitar Qemu Agent
- Disco duro virtual:
- Bus: SCSI
- Controladora: VirtIO SCSI
- Caché: “Write back” (“No cache” es más seguro, pero también más lento
- Marcar “Discard” para un uso óptimo del espacio del disco (TRIM).
- Red: VirtIO (paravirtualized)
Para los drivers VirtIO, subimos la ISO que podemos obtener desde aquí.
En la configuración de la máquina virtual, añadimos un lector de CD (“Add → CD/DVD drive”) con el bus “IDE” y el número 0.
Comenzamos la instalación de Windows. En la opción avanzada de instalación, elegimos Cargar controladores y cargamos (buscando en la ISO de los drivers de VirtIO):
- Disco duro:
vioscsi\w11\amd64. Elegimos “Red Hat VirtIO SCSI pass-through controller”
Una vez instalado Windows, desde el propio sistema operativo virtualizado instalamos el resto de drivers VirtIO automáticamente desde el ejecutable virtio-win-gt-x64.exe de la ISO.
Windows 10
Para obtener el mejor rendimiento, se usarán los drivers VirtIO durante la instalación de Windows.
Configuración de la máquina virtual:
- Guest OS: “Microsoft Windows 10/2016/2019”
- En la pestaña System, habilitar Qemu Agent
- Disco duro virtual:
- Bus: SCSI
- Controladora: VirtIO SCSI
- Caché: “Write back” (“No cache” es más seguro, pero también más lento
- Marcar “Discard” para un uso óptimo del espacio del disco (TRIM).
- Red: VirtIO (paravirtualized)
Para los drivers VirtIO, subimos la ISO que podemos obtener desde aquí.
En la configuración de la máquina virtual, añadimos un lector de CD (“Add → CD/DVD drive”) con el bus “IDE” y el número 3.
Comenzamos la instalación de Windows. En la opción avanzada de instalación, elegimos Cargar controladores y cargamos (buscando en la ISO de los drivers de VirtIO):
- Disco duro:
vioscsi\w10\amd64. Elegimos “Red Hat VirtIO SCSI pass-through controller” - Red:
NetKVM\w10\amd64y elegimos Redhat VirtIO Ethernet Adapter“ - Memory Ballooning:
Balloon\w10\amd64y elegimos “VirtIO Balloon Driver”
Windows 7
Para obtener el mejor rendimiento, se usarán los drivers VirtIO durante la instalación de Windows.
Configuración de la máquina virtual:
- Guest OS: “7/2008r2”
- Disco duro virtual:
- Bus: SCSI
- Controladora: VirtIO SCSI
- Caché: “Write back” (“No cache” es más seguro, pero también más lento)
- Red: VirtIO (paravirtualized)
Para los drivers VirtIO, subimos la ISO que podemos obtener desde aquí.
En la configuración de la máquina virtual, añadimos un lector de CD (“Add → CD/DVD drive”) con el bus “IDE” y el número 3.
Comenzamos la instalación de Windows. En la opción avanzada de instalación, elegimos Cargar controlador y cargamos (buscando en la ISO de los drivers de VirtIO):
- Disco duro:
viostor\w7\amd64. Elegimos “Red Hat VirtIO SCSI controller” - Red:
NetKVM\w7\amd64y elegimos Redhat VirtIO Ethernet Adapter” - Memory Ballooning:
Balloon\w7\amd64y elegimos “VirtIO Balloon Driver”
Hypervisor dentro de hypervisor
Si queremos instalar otro hypervisor dentro de Proxmox es posible siempre y cuando el procesador soporte la virtualización anidada. Podemos averiguarlo ejecutando:
cat /sys/module/kvm_intel/parameters/nested
Si nos devuelve Y, podremos.
Cuando creemos la máquina virtual donde instalaremos el hypervisor tendremos que elegir una CPU de tipo host.
Añadir disco
Para añadir un nuevo disco a un servidor con Proxmox, una vez instalado, vamos a Datacenter → Nodo → Disks. Si aparece ahí, lo ha detectado correctamente. Ahora hay que crear una partición y formatearla:
fdisk /dev/sdb
Línea de comandos
Máquinas virtuales
Listar máquinas virtuales
qm list
Ejemplo de salida:
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 debian11 stopped 2048 32.00 0
101 win10 stopped 4096 64.00 0
102 win11 stopped 8128 64.00 0
Configuración
Para ver la configuración de una máquina virtual:
qm config <ID_MV>
Donde ID_MV es el identificador de la máquina virtual. Por ejemplo:
qm config 100
Salida:
boot: order=scsi0;ide2;net0 cores: 1 description: * IP%3A `192.168.0.51`%0A* usuario%3A `debianita`%0A* root%3A `root` ide2: isos:iso/debian-11.2.0-amd64-netinst.iso,media=cdrom memory: 2048 meta: creation-qemu=6.1.0,ctime=1644606499 name: debian11 net0: virtio=A2:F0:8E:A1:B6:9F,bridge=vmbr0,firewall=1 numa: 0 ostype: l26 scsi0: local-lvm:vm-100-disk-0,size=32G scsihw: virtio-scsi-pci smbios1: uuid=36799c55-d997-4658-ae45-c63cc67f9a42 sockets: 1 vmgenid: 01bbacf6-bc8b-4433-9e91-d5e5e5aa64b5
Apagar máquina virtual
Enviar señal de apagado a la máquina virtual:
qm shutdown <ID_MV>
Detener máquina virtual
A diferencia de shutdown el siguiente comando detiene inmediatamente la ejecución de la máquina virtual:
qm stop <ID_MV>
Suspender máquina virtual
qm suspend <ID_MV>
Arrancar máquina virtual
qm start <ID_MV>
Copia de seguridad de máquina virtual
vzdump 101 -compress lzo
101 es el identificador de la máquina virtual que queremos guardar.
UEFI en máquinas virtuales
Si necesitas trabajar con particiones UEFI, deberás usar una Máquina Virtual (VM), los contenedores LXC no lo soportan (son contenedores que comparten el kernel del host, no tienen su propio firmware ni proceso de arranque tradicional.)
A la hora de configurar una nueva máquina virtual, en la pestaña System:
- BIOS: “OVMF (UEFI)”
- EFI Storage: local-lvm (o el almacenamiento que tengamos).
- Machine:
q35(recomendado para UEFI) - Add TPM: Opcional para Secure Boot
Podemos crear una máquina virtual para UEFI desde línea de comandos con:
# Crear VM con UEFI qm create 100 \ --name "vm-uefi-linux" \ --memory 2048 \ --cores 2 \ --net0 virtio,bridge=vmbr0 \ --bios ovmf \ --machine q35 \ --efidisk0 local-lvm:1,format=qcow2,efitype=4m,pre-enrolled-keys=0
En la instalación del sistema operativo en la nueva máquina virtual tendremos que hacer varios cambios en el disco virtual:
- Crear tabla de particiones GPT
- Crear partición ESP (EFI System Partition)
- Instalar un gestor de arranque UEFI
Ejemplo dentro de una máquina virtual Linux:
# Dentro de la VM Linux sudo gdisk /dev/vda # Crear tabla GPT y particiones: # 1. Partición ESP (500MB, tipo EF00) # 2. Partición raíz # 3. Partición swap (opcional) # Formatear ESP sudo mkfs.fat -F32 /dev/vda1 sudo mount /dev/vda1 /boot/efi
Ventajas
Las ventajas de usar VM en lugar de LXC para aprender UEFI:
- Arranque real UEFI con OVMF (emulador UEFI open-source)
- Puedes experimentar con:
- Secure Boot
- EFI System Partition (ESP)
- Bootloaders UEFI (systemd-boot, GRUB UEFI, rEFInd)
- Variables EFI
- Aislamiento completo sin riesgo al host
- Snapshots para experimentar sin miedo
Verificar arranque UEFI
En un sistema operativo Linux virtualizado en la máquina anterior:
# Verificar si el sistema arrancó en modo UEFI ls /sys/firmware/efi/efivars # Si existe, es UEFI # Ver particiones EFI sudo fdisk -l | grep EFI
Herramientas UEFI
En Debian:
apt install efibootmgr efivar
Podemos listar entradas de arranque UEFI con:
sudo efibootmgr -v
Snapshots
Las instantáneas o snapshots permiten guardar el estado de una máquina virtual en un determinado momento. Es como guardar una copia, pero sin requerir el mismo espacio en el disco. Además, es posible guardar múltiples estados de una misma máquina virtual.
En cualquier momento podemos regresar al estado en que estaba la máquina en una determinado momento gracias a las instantáneas.
Proxmox permite la realización de instantáneas “en caliente”, es decir, no es necesario detener la máquina virtual sino que se pueden hacer con ella en funcionamiento.
Creación
En el panel de la máquina virtual o contenedor LXC de nuestro interés, vamos al menú Snapshots y luego pulsamos el botón que pone Take Snapshot. Podemos dar un nombre y una descripción.
Desde la línea de comandos sería:
pct snapshot <IDENTIFICADOR_DEL_CCONTENEDOR> <NOMBRE_DE_LA_INSTANTANEA>
Restauración
Vamos al menú Snapshot de la máquina virtual o contenedor LXC y marcamos la instantánea que queremos restaurar. Al pulsar en Rollback, la máquina o contenedor volverá al estado exacto de la instantánea.
Desde la línea de comandos sería:
pct rollback <ID_CONTENEDOR> <NOMBRE_DE_LA_INSTANTÁNEA>
Clonación
La clonación permite crear un contenedor o máquina virtual completamente nueva a partir de la original. Útil para crear laboratorios duplicados, reproducir servicios…
Creación
Arriba a la derecha, pulsamos el botón More y luego Clone. En las máquinas virtuales tendremos dos tipos de clon:
- Full Clone: copia todo el contenedor (más lento, ocupa más espacio).
- Linked Clone: copia ligera que depende del original (ahorra espacio, pero si borras el original, el linked clone falla)
Backups
Proxmox permite realizar copias de seguridad de las máquinas virtuales. Las copias se realizan internamente con vzdump y son copias de la máquina al completo.
Ajustes y mantenimiento
Repositorios
Dentro del directorio /etc/apt/sources.list.d podemos encontrar los siguientes ficheros:
ceph.sourcesdebian.sourcespve-enterprise.sources
A partir de Debian 13 («Trixie»), el formato de los archivos de configuración de repositorios cambió a uno nuevo, basado en bloques de configuración por repo, llamado Deb822 (Deb822-style Format).
Por ejemplo, este es el contenido de debian.sources:
Types: deb URIs: http://deb.debian.org/debian/ Suites: trixie trixie-updates Components: main contrib non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb URIs: http://security.debian.org/debian-security/ Suites: trixie-security Components: main contrib non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Si no tenemos una suscripción, podemos deshabilitar los repositorios ceph.sources y pve-enterprise.sources
Types: deb URIs: https://enterprise.proxmox.com/debian/pve Suites: trixie Components: pve-enterprise Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg Enabled: no
Si queremos añadir el repositorio de la versión comunitaria, creamos un fichero llamado proxmox.sources con el siguiente contenido:
Types: deb URIs: http://download.proxmox.com/debian/pve Suites: trixie Components: pve-no-subscription Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
Eliminar mensaje suscripción no válida
Al acceder a la administración (https://ip.del.servidor:8006) veremos el mensaje:
You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options
Podemos hacer que no se muestre si abrimos el fichero /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js y buscamos la línea:
title: gettext('No valid subscription'),
Comentamos esta parte:
// if (res === null || res === undefined || !res || res // .data.status.toLowerCase() != 'active') {
Y añadimos en su lugar:
if (false) {
Reiniciamos el servicio web de Proxmox:
systemctl restart pveproxy.service
Estas modificaciones se pierden al actualizar Proxmox. Tras la actualización, habrá que volver a hacerlo.

