Llegamos a la parte final de esta serie de artículos sobre el nuevo servidor de virtualización, que es precisamente, la parte de virtualización. Tenía claro desde el principio que iba a hacer uso de ProxMox para implementar el servicio. Al fin y al cabo, es lo que venía usando desde hace años, en un mero PC convencional, para contener mis máquinas virtuales. ProxMox proporciona una interfaz de administración amigable a la virtualización KVM de Linux, y permite una operación profesional del entorno. Como es habitual en proyectos software libre, es posible desplegar una versión completamente funcional del entorno de manera gratuita, y contratar un servicio de suscripción para tener soporte especializado por parte de la empresa que manteniene la solución.
En cuanto al mecanismo de despliegue, como adelanté en los capítulos anteriores, opté por realizar una instalación de Debian 12, para a continuación desplegar sobre ella la configuración específica de ProxMox. Para los pasos concretos de cómo hacerlo, existe una guía bien detallada oficial de ProxMox que muestra cómo realizar dichos pasos: Install Proxmox VE on Debian 12 Bookworm.
Un detalle importante a tener en cuenta, en caso de que se desee que las máquinas virtuales tengan direccionamiento de la red donde está instalado el servidor de ProxMox (lo que es mi caso), es que es necesario crear un Bridge Linux. Existe una guía detallada al respecto: Default Configuration using a Bridge que vale la pena consultar. En este caso, puedo indicar que es más sencillo configurar el bridge desde la interfaz gráfica (aunque sea contraintuitivo), ya que la instalación de Debian 12 hace que una interfaz física ya tenga asignada la configuración de red. Desde la interfaz gráfica simplemente es eliminar la configuración de la tarjeta, crear el Bridge Linux, asignar esa configuración de IP y máscara, y vincular la interfaz física a la tarjeta. Una vez hecho esto, se aplican los cambios, y el sistema sale andando solo sin mayores dolores de cabeza.
El siguiente paso a dar para mí fue migrar las máquinas virtuales de mi antiguo entorno al nuevo. Hubiera sido una idea interesante el configurar un cluster HA con las dos máquinas, pero por desgracia no fue posible, ya que el entorno antiguo está en la versión 6.x de ProxMox y el nuevo en la 8.x, y no hay compatibilidad directa. Hubiera sido preciso escalar la instalación antigua a 7, y posteriormente a 8, y prefería dejar la antigua como estaba, para tener una máquina de respaldo en caso de desastre.
En lugar de esto, y dado que tengo un servidor NAS donde hago las copias de seguridad de mi entorno ProxMox, opté por generar copias nuevas, y posteriormente añadir este servidor como un volumen NAS externo al servidor y, una vez añadido, simplemente restaurar las copias. La adición del servidor NAS se hace desde Datacenter->Storage->Add->NFS, e indicar los datos del servidor y el cometido que se le quiere dar a ese volumen (en mi caso, VZDump backup).
El proceso funcionó sin problemas, y una vez importadas las máquinas desde el backup en el nuevo servidor, hice algunos cambios menores, como asignar mayor cantidad de RAM por máquina (4 GB a cada una), más procesadores (8 a cada una), y mapear a la máquina de la domótica dos dispositivos USB externos que tengo configurados, que funcionaron también sin mayor problema. Paré el servidor antiguo, arranqué máquinas, y todo funcionó perfectamente.
Como se puede ver, incluso con las máquinas a pleno rendimiento, el servidor está más que sobrado para atenderlas, y con unos niveles de sonoridad incluso más reducidos que con el servidor original. He notado además, como era de esperar, que las máquinas virtuales responden de manera mucho más ágil que en el entorno antiguo, por lo que todo son ventajas. Espero que este servidor dure muchos, muchos años.
Etiquetas: debian, proxmox, virtualización
Una vez realizados los ajustes de configuración del servidor era el momento para pensar en la definición de la red. En principio esta parte tendría que haber sido bastante sencilla: el servidor venía con una interfaz de red de 4 bocas 10/100/1000, además de la iLO. Simplemente tendría que escoger una boca, asignarle direccionamiento IP fijo, y configurar además la iLO para acceder de manera remota en caso de fallo. Simple, ¿verdad? Pues… no. Y es que la tarjeta HP Ethernet 1Gb 4-port 331FLR Adapter, con chipset Broadcom NetXtreme BCM5719 no iba a hacer más que dar dolores de cabeza.
Con la idea anterior en mente, preparé una memoria USB con la última versión de Proxmox VE lista para instalar. El proceso de instalación en sí iba bien, en el aspecto específico de la tarjeta de red la detectaba y dejaba configurarla, pero con la instalación ya completa y usando el kernel específico de ProxMox la tarjeta dejaba de aparecer. Y sin enlace de red un servidor es poco menos que inusable. Probé con versiones algo más antiguas de ProxMox, con resultados incluso peores: ni siquera durante la fase de instalación se detectaba la tarjeta de red.
Por ello, me decidí a dar un paso intermedio: realizar el despliegue de ProxMox no directamente con el instalador, sino instalando una Debian 12 primero, y después realizar la actualización a ProxMox. De nuevo, grabé una memoria USB con una ISO DVD de Debian 12, y realicé la instalación. Como esperaba, con una Debian limpia ésta reconocía correctamente la tarjeta de red 331FLR. Fue en este punto cuando aproveché para realizar la modificación de la iLO mencionada anteriormente. Pero en cuanto realicé el despliegue de la ProxMox (eso quedará para un artículo posterior), la tarjeta de red sencillamente desaparecía.
Tras investigar un poco, pude averiguar que determinadas distribuciones de linux modificadas para propósitos específcos (pfsense, unraid, ProxMox…) presentan problemas con esta tarjeta debido a que tiene determinado firmware propietario que es necesario cargar, y que no está presente fuera de las ramas non-free de Debian. En mi caso, como había instalado indicando de manera específica que quería hacer uso de fuentes non-free, era por lo que había podido hacer uso de la tarjeta con el kernel convencional. Pero en cuanto desplegué el kernel específico de ProxMox, ésta dejó de funcionar.
Así que no me quedó otra que hacerme con otra tarjeta de red PCI Express para instalar en el servidor. Conseguí una tarjeta de red con chipset Intel, igualmente de 4 bocas a giga y, en cuento se la instalé, el sistema la reconoció, pude configurar la red, y acceder de manera remota al servidor. Lo curioso del asunto es que la tarjeta 331FLR también pasó a ser mostrada correctamente por el sistema, y de manera completamente funcional:
…pero en cuanto retiraba la nueva tarjeta, la 331FLR también desaparecía. Así que no me ha quedado otra que dejar ambas tarjetas, con lo que dispongo de 8 bocas de red giga en mi nuevo servidor.
En cuanto a la configuración de red en sí, la opción de configuración más adecuada para mis propósitos era definir un bridge linux, que contendrá la configuración de red, de tipo estático, de la red a la que esté conectado el servidor, de tal manera que las máquinas virtuales también tengan direccionamiento de red en la red de datos de casa, sin tener que aplicar NAT. Esto fue lo que hice, configurando como puerto del bridge la boca de red donde tengo conectado el cable que va al switch físico.
Etiquetas: 331flr, bridge, broadcom, debian, hp, hp dl360p gen8, proliant, proxmox
Una vez el servidor estaba completamente operativo, el siguiente paso a dar era el plantearse que el mismo se pudiera usar de una manera razonable en un entorno doméstico, y no en un CPD, que es para lo que están planteados estos servidores. Y el punto principal para poder realizar esto era el reducir los niveles de ruido del servidor, específicamente el proveniente de los ventiladores. Y es que un servidor como el DL360p Gen8 viene con ocho módulos de ventiladores para refrigerar adecuadamente el servidor (y eso sin contar los ventiladores de las fuentes de alimentación), lo que hace que el nivel de rumorosidad que puede alcanzar sea el equivalente al de un Concorde despegando, lo que no es exactamente compatible con la placidez que se espera en una casa.
Aquí me marqué dos estrategias: reducir al mínimo el nivel de rendimiento del equipo, y reducir la velocidad de los ventiladores. Si bien es cierto que ambas estrategias están interrelacionadas, cada una de ellas tenía que acometerse de manera separada.
En cuanto al primero punto, era el más sencillo, y también el más lógico. Tengo desplegadas tres máquinas virtuales dentro del entorno, que hasta entonces estaban contenidas en un viejo PC con un servidor Intel de doble núcleo, y tras los últimos desastres, apenas con 3 GB de RAM. Había pasado a poseer un servidor con doble procesador Intel Xeon E5-2640 (de 6 Núcleos/12 Hilos) a 3 GHz, lo que totalizaba un total de 24 hilos de procesamiento, además de 96 GB de RAM. Potencia sobrada para lo que buscaba.
El servidor admite la regulación del nivel de potencia que entrega, y la manera más sencilla de realizar dicha regulación es desde la iLO. Basta con entrar a la misma, ir a Power Management -> Power Settings, y seleccionar el modo de “Static Low Power Mode”.
En lo que se refiere al segundo, éste sí tenía algo más de chicha. Aunque a nivel interno los servidores ProLiant tienen capacidad para regular la velocidad de los ventiladores de manera individual, no es algo que por sistema permitan hacer al usuario, por lo que en condiciones normales no nos quedaría otra que confiar en que la regulación de los mismos se haga de la manera más inteligente posible por parte del servidor. Por desgracia, esta regulación no es lo suficientemente fina como para que el nivel de ruido sea algo que se considere aceptable en un hogar. Sin carga alguna, de acuerdo a la iLO, los ventiladores de mi servidor no bajaban de un régimen de giro del 50% de su potencia. Esto, sin ser una barbaridad, hacía que el servidor fuera más rumoroso de lo deseable.
Por suerte, pude encontrar un proyecto en GitHub (iLO4 unlock – Silence of the fans) que permite hacer uso de algunas características ocultas del sistema de la iLO de los ProLiant, entre ellos el de jugar con la regulación de los ventiladores de manera individual. La idea general es desplegar una versión modificada de la iLO4 en su versión 2.77 con la capacidad de ejecutar comandos específicos para estos ajustes finos. En mi caso, y sin ser demasiado agresivo, he conseguido bajar el régimen de giro de los ventiladores al 19%, lo que hace que el servidor sea incluso más silencioso que el PC al que reemplaza.
Las instrucciones para realizar esta instalación son las siguientes:
sh ./CP027911.scexe –unpack=ilo_250
cd ilo_250
cp /path/to/ilo4_277.bin.fancommands ilo4_250.bin
sudo ./flash_ilo4 –direct
A continuación dejo un vídeo bastante interesante de cómo jugar un poco con los ventiladores:
Una vez realizado el conexionado básico, el siguiente punto a tratar era el de la configuración del almacenamiento. Aquí tenía una idea bastante clara de lo que hacer: quería configurar un RAID5 con los 4 discos, de tal manera que tuviera un volumen de 6 TB y un disco de paridad, con lo que dispondría de una razonable protección ante fallos de disco. Hasta ahora llevaba unos pocos años funcionando con un único disco y copias en mi NAS, así que esto iba a ser un salto de calidad. Los discos, además, son discos rotacionales de 7200 RPM. Ninguna maravilla para un entorno de producción empresarial, pero más que de sobra para un uso doméstico. Además, son menos propensos a fallos que discos de 10K o 15K RPM.
Pero me encontré la primera en la frente:
Error de la controladora de discos P420i Smart Array: Self-test failure (cmd = 0h, err = 00h, loockup = 013:0h). Grandioso. Además, al acceder a la configuración de la controladora, se podía que ver que no reconocía ninguno de los discos. Tras investigar un poco, encontré la causa raíz del problema: la controladora no reconocía los discos como OEM (es decir, propios del fabricante), y se negaba a mostrarlos. Una auténtica maravilla.
Tras seguir investigando, pude llegar a un artículo que explicaba cómo solucionar el problema: HP P410i – P420i Self-test failure lockup. En líneas generales, se trataba de desconectar el módulo de caché de la controladora, volver a encender y… todo correcto, la controladora ya no mostraba error alguno, y pude entrar en su interfaz de configuración para configurar el volumen lógico según lo comentado anteriormente, y listo.
Posteriormente, volví a conectar el módulo de caché, y comprobé que el volumen lógico se seguía manteniendo sin errores, y sin problemas entre reinicios o apagados del servidor. A continuación dejo un vídeo de cómo identificar y extraer el módulo de caché:
Etiquetas: almacenamiento, hp, ilo, p420i, raid5
A la hora de recibir el servidor, lo primero fue realizar el proceso de conexionado hardware básico. Si bien el servidor en sí venía montado, los discos venían aparte. Se trataba de 4 discos de 2 TB cada uno a 7500 RPM. Los discos, que eran genéricos y no específicos de HP, venían junto con 4 caddies, de tal manera que se pudieran conectar en caliente, como es habitual en este tipo de servidores.
Así que el primer paso fue atornillar cada disco a su respectivo caddy, e insertarlo en su correspondiente bahía. El servidor es un HP Proliant DL360p Gen8, con 4 bahías de tipo LFF, por lo que con esos 4 discos quedaban todas las bahías completas. Con ello era posible configurar un volumen RAID5 con 3 discos de datos y 1 de paridad, para un total de 6 GB de espacio en disco, gracias a la controladora de disco P420i integrada.
Resuelto el tema del montaje, tocaba plantearse la conectividad. Los servidores Proliant Gen8 disponen de sistema de control remoto mediante iLO, con su tarjeta de red separada. El servidor, además venía con una tarjeta integrada 331FLR 10/100/1000 de 4 puertos. Mi planteamiento era configurar una de las bocas para la conectividad de red convencional, y la iLO, para poder administrar el servidor de manera remota.
Una vez hecho esto, tocaba arrancar. El servidor disponía de dos fuentes de alimentación, pero para el arrancado básico me bastaba con uno. Enchufé, arranqué, se iluminó el led de estado del servidor, lo pulsé… y se inició un festival de luces. Pero el servidor no arrancaba. O mejor dicho, arrancaba, ponía los ventiladores al tope, y se paraba. Estuve un buen rato como loco hasta que, después de enchufar y arrancar su buena media docena de veces, resultó que… el servidor arrancó solo. Y es que estaba siendo muy, muy impaciente. Este tipo de servidores tienes que dejarlos tranquilos, que hagan su proceso de autodiagnóstico, y ellos se encargan de arrancar por sí solos cuando han terminado de hacer lo que tienen que hacer. Sólo se trata de ser pacientes.
En paralelo, había estado intentando acceder a la iLO, que sí había encendido correctamente. Pero mi gozo en un pozo. Le habían cambiado la contraseña y no coincidía con la etiqueta de acceso a la misma con la que venía el servidor de fábrica. Así que tocaba resetearla. Pero mientras me había fallado el encendido por mi impaciencia, no me había sido posible acceder. Pero una vez encendido, era cuestión de entrar en el menú de la UEFI, y ejecutar el procedimiento para restablecer la iLO 4 desde la Utilidad de Configuración de iLO 4:
Con ello, quedó restablecida la iLO, y pude continuar con el proceso de configuración básica del servidor.
Etiquetas: hp, hp dl360p gen8, ilo, proliant, UEFI