Instalación de Proxmox en almacenamiento eMMC (miniPC, SBC, embebidos)
¿Por qué tiene sentido hacer esto?
Aunque el equipo de Proxmox ha repetido en numerosas ocasiones que no dan soporte a este tipo de dispositivos, argumentando su escaso rendimiento, número limitado de escrituras y, en ocasiones, nulo wear-leveling, estos argumentos son cada vez más obsoletos y cierran una puerta muy interesante para instalar Proxmox en un homelab barato y de consumo extremadamente bajo.
Actualmente no es raro ver eMMCs de 64–128 GB que ofrecen tasas de escritura secuencial comparables, e incluso superiores, a un SSD SATA2, con una durabilidad más que aceptable para un uso doméstico o de laboratorio. Personalmente, he llegado a utilizar durante más de un año un Proxmox VE instalado sobre una eMMC de 16 GB, simplemente desactivando los logs más “pesados”, sin experimentar ningún problema de durabilidad ni de rendimiento apreciable.
Hardware donde este método resulta especialmente útil
Casos típicos donde instalar Proxmox VE en eMMC tiene mucho sentido son, por ejemplo, los MiniPCs con memoria integrada (como el Beelink Me Mini), o los Small Board Computers (SBC) x86 avanzados, como la Odroid H4.
La solución habitualmente aportada en el foro oficial de Proxmox —usar un SSD— es, como mínimo, subóptima en estos escenarios: La Odroid H4 carece de controladora SATA, como ocurre con muchos equipos industriales. Además, "Gastar" el único puerto M.2 en un NVMe no siempre es lo adecuado, ya que es interesante para cosas como NICs de 10Gb, o gráficas mediante un riser para hacer PCIe passtrough. Por último, el consumo adicional de un NVMe no suele aportar gran cosa cuando se ejecutan contenedores ligeros, microservicios o máquinas virtuales pequeñas que apenas realizan escrituras a disco.
Procedimiento
Descargar Proxmox Virtualization Environment (PVE)
Descargamos la versión más reciente de Proxmox Virtualization Environment desde la página oficial del proyecto: https://www.proxmox.com/en/downloads
Grabar la ISO en un pendrive
Grabamos la ISO descargada en un pendrive USB utilizando Rufus o cualquier otra herramienta equivalente para creación de medios de arranque.
Configurar la BIOS para arrancar desde USB
Configuramos la BIOS/UEFI del equipo para permitir el arranque desde dispositivos USB, o bien forzamos el arranque manual seleccionando el pendrive como dispositivo de inicio. En hardware tipo miniPC o SBC suele ser suficiente con pulsar la tecla de boot menu durante el arranque (Esc, F7, F10, F11 o F12, según fabricante).
Arrancar el instalador gráfico de Proxmox
Arrancamos desde el pendrive y, en el menú inicial de Proxmox, elegimos el instalador gráfico, que corresponde a la primera opción del menú.
Aceptamos la licencia y MUY IMPORTANTE avanzamos en el instalador hasta llegar a la pantalla de selección de región, zona horaria e idioma de teclado. Para que se guarde la selección, pasamos a la siguiente pantalla.
Si se omite este paso, resulta bastante farragoso configurar posteriormente la distribución de teclado correcta desde consola, aunque se puede trabajar con layout de US
Modificación del script del instalador para que permita instalar en MMC
Vamos a finalizar el instalador. Para ello, pasamos a la consola pulsando Control + Alt + F1 y finalizamos el proceso del instalador gráfico pulsando Control + C. Nos quedaremos en una terminal de texto con acceso como root.
A continuación editaremos el siguiente archivo. En Proxmox VE 9.x la ruta es ligeramente distinta respecto al tutorial original. Se recomienda usar vi:
vi /usr/share/perl5/Proxmox/Sys/Block.pm
Cambio necesario en el archivo
Buscamos el bloque donde aparecen las expresiones regulares para dispositivos NVMe. (En vi, basta escribir /nvme y pulsar Enter para buscar la palabra nvme.)
Copiamos dos líneas completas del bloque correspondiente a NVMe usando el comando 2yy (el 2 indica que se copian dos líneas, la y es de "yank") y las pegamos justo debajo usando p.
En la primera de las líneas pegadas, modificamos la expresión de:
^/dev/nvme\d+n\d+$
a:
^/dev/mmcblk\d+$
Debería quedar así (captura de la fuente original):
Guardamos los cambios y salimos del editor (Esc, :wq, Enter).
Nota sobre particiones previas
En el tutorial original se indica que debe existir previamente una partición en la eMMC para que el instalador la detecte. Con la Odroid H4 y Proxmox VE 9.1 esto no es necesario: este paso puede omitirse y el instalador funciona correctamente incluso con la eMMC completamente vacía.
Instalación final
Volvemos a iniciar el instalador, esta vez en modo texto, ejecutando el siguiente comando desde la consola:
proxmox-tui-installer
Seguimos el instalador hasta el final, seleccionando la eMMC (mmcblk) como dispositivo de destino.
Tras completar la instalación y reiniciar, Proxmox VE funcionará normalmente desde la eMMC.
Referencias
Este tutorial está basado en los pasos descritos en el foro Level1techs: https://forum.level1techs.com/t/beelink-me-mini-proxmox-on-mmcblk-mini-howto/231244 ligeramente adaptados para PVE 9.x