¡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 RHEL y permite el despliegue y la gestión de máquinas virtuales y contenedores.
Las notas se centran en la versión 7
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 captuar 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
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:
hdsize: tamaño (en GB) a usar del disco. Si no se selecciona todo, 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
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.
En VirtualBox
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
PCI passthrough
Por ejemplo, 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)
Eliminar mensaje suscripción no válida
Eliminar el mensaje: You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options
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
Repositorios
Fichero /etc/apt/sources.list:
deb http://ftp.es.debian.org/debian bullseye main contrib deb http://ftp.es.debian.org/debian bullseye-updates main contrib # PVE pve-no-subscription repository provided by proxmox.com, # NOT recommended for production use deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription # security updates deb http://security.debian.org bullseye-security main contrib
Si no tenemos una suscripción, comentaremos el fichero con el repositorio empresarial:
/etc/apt/sources.list.d/pve-enterprise.list:
# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
Deshabilitar repositorio empresarial
Por defecto, viene activado el repositorio para para los usuarios que tengan contratada una suscripción. En caso de no tener una clave de suscripción, obtendremos un error de acceso no autorizado a ese repositorio, así que podemos deshabilitarlo abriendo el siguiente fichero: /etc/apt/sources.list.d/pve-enterprise.list y comentamos la línea con #, quedando así su contenido:
# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
Ya podemos actualizar sin que se mire ese repositorio.
Si queremos añadir el repositorio de la versión comunitaria:
echo "deb http://download.proxmox.com/debian buster pve-no-subscription" > /etc/apt/sources.list.d/pve-community.list
Resolución de problemas
Comandos:
pveversion -v
Muestra información sobre los paquetes de Proxmox VE
Información de configuración de una máquina virtual:
qm config <VMID>
Ejemplo:
m config 100 agent: 1 boot: order=ide0;ide2;ide1 cores: 2 ide0: vm:100/vm-100-disk-0.qcow2,cache=writeback,discard=on,size=32G ide1: isos:iso/virtio-win.iso,media=cdrom,size=543390K ide2: isos:iso/Win10_21H1_Spanish_x64.iso,media=cdrom machine: pc-i440fx-6.1 memory: 4096 meta: creation-qemu=6.1.0,ctime=1636485464 name: w10pro net0: e1000=66:39:AE:17:91:E1,bridge=vmbr0,firewall=1 numa: 0 ostype: win10 scsihw: virtio-scsi-pci smbios1: uuid=a371025a-24d9-4f26-bddb-04783f8cd5b5 sockets: 1 vga: virtio vmgenid: 2ce608d5-0482-4201-a68d-9f0c5edb1d52
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
Versión y software
pveversion
Ejemplo de salida:
pve-manager/7.1-10/6ddebafe (running kernel: 5.13.19-4-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)
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.
Wake on LAN
Puede ser útil poder arrancar el servidor que tiene Proxmox desde la red mediante lo que se conoce como Wake on LAN. Esta característica debe estar soportado tanto por la placa base como por tarjeta de red. Suponiendo que lo soporta la placa, podemos verificar el soporte en la tarjeta de red instalando en el servidor Proxmox la herramienta ethtool y ejecutamos:
ethtool <INTERFAZ> | grep Wake-on
Ejemplo:
ethtool enp3s0 | grep Wake-on Supports Wake-on: pumbg Wake-on: d
Posibles desencadenadores de Wake-on:
d: deshabilitadop: actividad PHYu: actividad unicastm: actividad multicastb: actividad broadcasta: actividad ARPg: actividad de paquete mágico
El valor g es necesario para Wake on LAN, así que para habilitarlo:
ethtool -s enp3s0 wol g
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.
En en panel de la máquina virtual 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.
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.
