====== 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. * [[https://www.proxmox.com/en/proxmox-ve|Web oficial]] * [[http://download.proxmox.com/iso/|Descarga de ISOs]] {{ https://www.storagereview.com/wp-content/uploads/2025/08/StorageReview-Proxmox-VE-9-2048x1150.png?500 |}} 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) ===== Preparación e instalación ===== ==== Preparar medio de instalación ==== Tras [[https://www.proxmox.com/en/downloads/category/iso-images-pve|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 de Proxmox VE ==== 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. 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áximo ''hdsize/4''. * ''minfree'': tamaño mínimo libre (en GB) para root. Con más de 128 GB de espacio, por defecto son 16 GB; en otro caso, se usará ''hdsize/8''. * ''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 GB * ''swapsize'': 2 GB * ''maxroot'': 20 GB * ''minfree'': 0 * ''maxvz'': (en blanco) Tras instalarse, Proxmox ocupa ¿?¿? 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 entornos virtualizados ===== ==== 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ísica * ''vmbr0'' = 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 * [[https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_pci_passthrough|PCI(e) Passthrough (Proxmox documentation)]] * [[https://www.youtube.com/watch?v=cPrOoeMxzu0|Proxmox vGPU Gaming Tutorial - Share Your GPU With Multiple VMs!]] * [[https://www.youtube.com/watch?v=fgx3NMk6F54|Remote Gaming! (and Video Encoding using Proxmox and GPU Passthrough)]] ===== 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**) * [[https://pve.proxmox.com/wiki/Storage|Modelo de almacenamiento en Proxmox]] El almacenamiento "local" por defecto de las máquinas virtuales es ''/var/lib/vz/images/'' ===== Administración del sistema ===== ==== Actualizaciones ==== Igual que haríamos en cualquier Debian: ===== 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 %%--%% '' | | Crear snapshot | ''pct snapshot 101 '' | | Listar snapshots | ''pct listsnapshot 101'' | | Restaurar snapshot | ''pct rollback 101 '' | | Clonar contenedor | ''pct clone 101 %%--%%name '' | | Crear un contenedor nuevo | ''pct create %%--%%storage %%--%%hostname '' | | 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 --name --memory --cores --net0 virtio,bridge=vmbr0 --bootdisk scsi0 --scsihw virtio-scsi-pci --ide2 :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 :iso/.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 y gestió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/2025" * 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 [[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso|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. * [[https://pve.proxmox.com/wiki/Windows_11_guest_best_practices|Windows 11 guest best practices]] ==== 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 [[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso|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\amd64'' y elegimos Redhat VirtIO Ethernet Adapter" * Memory Ballooning: ''Balloon\w10\amd64'' y elegimos "VirtIO Balloon Driver" * [[https://pve.proxmox.com/wiki/Windows_10_guest_best_practices|Windows 10 guest best practices]] ==== 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 [[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso|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\amd64'' y elegimos Redhat VirtIO Ethernet Adapter" * Memory Ballooning: ''Balloon\w7\amd64'' y elegimos "VirtIO Balloon Driver" * [[https://pve.proxmox.com/wiki/Windows_7_guest_best_practices|Windows 7 guest best practices]] ==== 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 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 === Detener máquina virtual === A diferencia de ''shutdown'' el siguiente comando detiene inmediatamente la ejecución de la máquina virtual: qm stop === Suspender máquina virtual === qm suspend === Arrancar máquina virtual === qm start ==== 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 * [[https://pve.proxmox.com/wiki/OVMF/UEFI_Boot_Entries|OVMF/UEFI Boot Entries]] ==== 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 ==== 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 ===== 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.sources'' * ''debian.sources'' * ''pve-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 [[https://juncotic.com/deb822-el-nuevo-formato-de-sources-list-en-debian-y-derivadas/|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 * [[https://pve.proxmox.com/wiki/Package_Repositories|Repositorios de paquetes en Proxmox]] ==== 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. ==== 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 | grep Wake-on Ejemplo: ethtool enp3s0 | grep Wake-on Supports Wake-on: pumbg Wake-on: d Posibles desencadenadores de Wake-on: * ''d'': deshabilitado * ''p'': actividad PHY * ''u'': actividad unicast * ''m'': actividad multicast * ''b'': actividad broadcast * ''a'': actividad ARP * ''g'': actividad de [[https://es.wikipedia.org/wiki/Wake_on_LAN#Paquete_m%C3%A1gico|paquete mágico]] El valor ''g'' es necesario para Wake on LAN, así que para habilitarlo: ethtool -s enp3s0 wol g ==== Resolución de problemas ==== ===== Recursos ===== * [[https://pve.proxmox.com/pve-docs/|Proxmox VE Documentation Index]] * [[https://pve.proxmox.com/pve-docs/pve-admin-guide.html|Proxmox VE Administration Guide]] * [[https://pve.proxmox.com/wiki/Main_Page|Proxmox wiki]] * [[https://pve.proxmox.com/wiki/Roadmap|Roadmap]] * [[https://pve.proxmox.com/wiki/Downloads|Downloads]] (Wiki Proxmox)