Microserver HP Proliant Gen 8 + Proxmox + Truenas Scale + Passthrough M1015

Si haz llegado aca es porque haz tenido muchos problemas para poder pasa en modo Passtrthrough tus discos duros a una VM en tu Microservidor HP Gen 8, esto es debido a que el Microservidor HP Gen 8 tiene una mala separacion des IRQ (IOMMU) eso hace que cuando quieres pasar tus 4 discos duros a tu VM tu Host Proxmox va a congelarse, esto es debido a que el unico puerto SATA interno, el puerto USB interno, el MicroSD interno y el RAID (B120i) comparten todos el mismo IRQ y cuando uno quiere pasar en Passthrough lo que hace es pasar todo lo que se encuentre en ese IRQ lo que significa que estamos pasando, aparte de los 4 discos duros, el disco en el que se encuentra instalado nuestro proxmox lo que provoca que el sistema se congele.


 

PREREQUISITOS: 

La solucion que he encontrado ha sido comprar una tarje PCIe Raid en particular la IBM 

"ServeRAID M1015" que es la misma que "LSI9211-8i en mode IT/IR"

Lo que hicieron es que usando el mismo hardware pero con diferente firmware a unas les dieron mas funcionalidades que a otras, en caso que compremos la original Server Raid M1015 nos tocaria flashearla para convertirla en LSI9211-8i IT o sino simplement comprarla ya flasheada en eBay por ejemplo:

Esta viene con 2 cables Mini SAS que se pueden usar para discos SAS et SATA, la tarjeta ya esta flasheada con el bios que nos interesa, 

https://www.ebay.fr/itm/356421769940?_trksid=p4375194.c101949.m162918


 Etapa 0:

Instalar la tarjeta Raid en nuestro Microserver HP Proliant Gen 8, en el paquete que llego via eBay, me vino tarjeta ya flasheada + 2 cables Mini SAS con 4 salidas SATA/SAS cada uno(osea podriamos conectar hasta 8 discos) + adaptador pcie Low Profile algo que necesitamos dada la talla reducida de nuestro servidor.

Una vez instalado pasamos el cable de nuestros discos que esta conectado al Raid b120i de nuestra placa y lo conectamos en nuestra tarjeta:


 De aqui : 

Hacia aqui:


 Y en el otro Mini SAS de la tarjeta que queda libre le conectamos uno de los cables que nos vino con la tarjeta y nos quedaria algo asi:


 En la tarjeta Raid LSI9211-8i IT quedarian conectados los 4 discos de las bahias de nuestro servidor(en mi caso solo 3 por el momento, tengo que comprar los discos finales) + 1 cable Mini SAS con 4 salidas SAS/SATA en el que voy a conectar por el momento 1 SSD de 256Gb para usarlo como cache de mi pool en Truenas y en la placa madre se puede ver un cable rojo que esta conectado a un ssd de 1Tb que es donde esta instalado proxmox y que contendra todas mis VMs y Containers.

 

 la version de BIOS que trabaja correctamente es la 7.39.00.00, eso lo puedes ver durante el aranque de tu servidor:


 Si lo quieren hacer ustedes mismos aqui tienen un manual en frances :

https://www.sia-informatique.com/flasher-ibm-m1015-lsi-9211-8i-sas2008/

 ETAPA 1:

Instalamos Proxmox a dia de hoy la version 8.4.0, cambiamos los repositorios, desabilitamos lo que tienen la version enterprise y añadimos el pve-no-subscription y deberia quedar asi :


 Una vez realizado eso actualizamos el sistema y reiniciamos el servidor :

 

Despues de esto deberiamos encontrarnos en la version 8.4.1 de proxmox
 


ETAPA 2:

Instalar Truenas Scale, a dia de hoy la version 25.04.1 o la 24.10.2.2 yo opte por la primera:


 En la pagina de truenas scale, en mi caso damos click derecho en el boton verde y seleccionamos la opcion "copiar la url" y una vez realizado esto nos vamos a nuestro proxmox -> local -> ISO Images -> Download from URL -> Pegamos en URL lo que copiamos -> damos click en Query URL -> Damos click en el boton Download y luego de esto comenzara la descarga de la imagen iso directamente en nuestro proxmox.


 Luego que termine de descargar veremos que tenemos la ISO de TrueNAS-SCALE-25.04.1

 ETAPA 3:

Ahora vamos a crear nuestra VM, damos click en el boton azul arriba a la derecha "Create VM" o click derecho en nuestro nodo y luego Create VM. 

Le damos un Nombre en mi caso truenas-scale-prod y escogemos la VM ID en mi caso 500 o dejamos por defecto lo que nos propone proxmox:


Damos click a next, y en ISO image buscamos nuestra imagen iso que descargamos en la etapa 2, Type dejamos Linux y version 6.X - 2.6 Kernel, eso porque Truenas Scale es un debian mientras que Truenas Core es un FreeBSD y continuamos:


 En la siguiente etapa dejamos todo por defecto y activamos el qemu Agent


 

 Ahora vamos a darle un tamaño de solo 32Gb a nuestra VM porque truenas scale no necesita mas que eso activamos el ssd emulation y continuamos:

 

Numero de Cores yo le puse 2 porque actualmente tengo un XEON de 4 nucleos pero tengo otro de 8 podria ponerle en caso necesite mas potencia pero suficiente con 2.


En la siguiente etapa en memory le puse 8192Mb(8Gb) creo que es lo minimo necesario (https://www.truenas.com/docs/scale/gettingstarted/scalehardwareguide/)


En al parte de redes todo por defecto :

 

Y finalmente confirmamos la creacion de nuestr VM:

 


ETAPA 4: 

Primero verficamos en nuestro Nodo -> Disks : y vemos todos nuestros son reconocidos por el sistema yo tengo un disco SSD PNY de 1Tb conectado al unico sata de la tarjeta madre y 3 disco duros HDD + 1 SDD SanDisk conectados a mi tarjeta Raid M1015 transformada en LSI9211-8i IT.

 


Ahora lo que vamos a hacer es pasar esos 4 ultimos(3 HDD + 1 SDD Sandisk) a nuestra VM Truenas Scale en modo Passthrough para que sea ella la que tenga la administracion completa de todo los discos entre otras cosas lo que mas me interesa es que pueda realisar los test SMART, algo que no puede hacer si solo le pasamos los discos directamente. Para pasar la tarjeta RAID tenemos que dar click en nuestr VM, en mi caso 500 (truenas-scale-prod) -> Hardware -> Add -> PCI Device -> Raw Device -> y buscamos nuestra tarjeta Raid y la seleccionamos:


 Y antes de continuar no hay que olvidar de deselecionar el ROM-Bar y deberia quedar asi y luego damos click en Add:


 Una vez que arranquemos la VM nuestro Host Proxmox dejara de ver los discos duros que esten conectados a la tarjeta raid:

 


Cuando arranquemos la VM nos saldra un error :  

"kvm: -device vfio-pci,host=0000:07:00.0,id=hostpci0,bus=pci.0,addr=0x10,rombar=0: vfio 0000:07:00.0: failed to setup container for group 1: Failed to set group container: Invalid argument"
TASK ERROR: start failed: QEMU exited with code 1
 

en mi caso sale el 0000:07:00.0 porque es el identificador de mi tarjeta.

 Aqui es donde tenemos que modificar algunos parametros de nuestro grub al momento de arrancar para eso vamos a Nodo(Balthasar) -> Shell y escribimos 

nano /etc/default/grub 

y buscamos la linea:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

y la vamos a reemplazar por :

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on,relax_rmrr vfio_iommu_type1.allow_unsafe_interrupts=1 iommu=pt intremap=no_x2apic_optout" 

 Guardamos, cerramos y luego escribimos el comando

 update-grub

luego reiniciamos el servidor completo


 Etapa 5 :

Una vez realizada todas estas etapas nuestra VM Truenas deberia lanzarse sin problemas para proceder a la instalacion del sistema :

 

Seleccionamos Install/Upgrade : 

 

Nos va a salir la lista de discos que ahora la VM tiene acceso, osea el disco virtual de proxmox de 32Gb que creamos en la etapa 3 mas todos los discos que esten conectados nuestra tarjeta RAID(en mi caso 3 HDD + 1 SDD) :

 

Yo voy a selecionar evidentemente el disco que viene de proxmox(QEMU HARDDISK) para la instalacion del sistema, si se dan cuenta al lado de algunos de mis discos sale zfs-tanky, zfs-alone y zfs-none, el primero es porque para unas pruebas use 2 discos en modo mirroring de 1Tb cada uno, el zfs-alone es porque cree un pool en modo stripe con 1 solo disco(nada recomendable pero como es una prueba ...) y el ultimo zfs-alone corresponde a mi SSD que voy a utilisar como cache para mi pool Tanky compuesto de 2 discos de 1Tb, esto obviamente va a cambiar, voy a comprar 4 discos HDD de 12 o 18Tb para la version final del servidor, esto prueba que si ya tenias discos de un antiguo truenas estos seran reconocidos directamente, obviamente tienes que tener la configuracion de truenas exportada porque sino no podras abrir el encriptado que tiene tus pools, en caso que tus discos san nuevos no te va a salir nada de esto.

Seguimos con la instalacion, damos enter en OK:


 

En la siguiente pantalla demos a OK para Administrative user (truenas_admin)


Ponemos un password:

En la siguiente etapa dejamos por defecto y damos a Yes y esperamos a que termine la instalacion

 


 


 Cuando termine la instalacion y antes de dar OK en esta pantalla:

 

Vamos a 500(truenas-scale-prod) -> Hardware -> CD/DVD Drive(damos doble click) -> y damos click a la opcion Do not use any media, asi retiramos la imagen iso porque ya acabamos la instalacion, damos click a OK


 

 Regresamos a 500(truenas-scale-prod) -> Console y ahora si damos enter en OK:


 Con el teclado escogemos la opcion Reboot System y damos enter en OK

Etapa 6:

Esperamos a que nuestro Truenas Scale arranque para poder recuperar la IP y conectarnos con el usuario truenas_admin y la contraseña que le pusimos en la etapa anterior:

Etapa 7:

Abrimos un navegador y vamos a http://192.168.1.141 o https://192.168.1.141, eso en mi caso porque esa es la IP que sale en la etapa anterior, enseguida entramos nuestro usuario y contraseña:

 


En Storage -> Disks aqui vemos todos nuestro discos y podemos comenzar a crear nuestros pools como todo la vida: Storage -> Create Pool y agregas los discos que quieras, pero como yo habia hecho pruebas antes y no quiere crear todo de cero voy a recuperar mis pools, esto lo puedo hacer porque no he encriptado con un password mis pool y si lo hubiera hecho bastaria con tener el password, para esto vamos a Storage->Import Pool, en la image se ve qen el fondo que he recuperado mi poll Tanky y me falta alone


 Basta con seleccionarlo y darle click a import:

 


Y ahora tengo mis 2 pools alone y Tanky :)

POST-SCRIPT:

Si deseas que Truenas Scale se lance de forma automatica cuando arranque proxmox ve a : 500(truenas-scale-prod) -> Options -> Start at boot(doble click o click en Edit) -> Marcar el cuadro al lado de Start at boot y click en Ok

De esta forma tu Nas siempre se va a lanzarse cuando tu servidor acabe de reiniciar por x razones(Corte electrico, update del sistema, reboot forzado etc etc) 

Bueno espero que esto ayude un poco a aquellos que tienen el mismo problema que tuve yo y si tienen preguntas no duden.

Ultima reflexion, porque decidi meter truenas dentro de proxmox, sobre todo porque yo encuentro que instalar truenas en modo bare-metal me haria perder muchos recursos, procesador, ram etc, mientras que instalarlo dentro de proxmox me permite tener multiples VM et Containers que pueden hacer tranquilamente muchas mas cosas, es cierto que la tendencia de truenas, omv, unraid, etc es de incluir mas y mas applicaciones dentro de sus catalogos, pero para mi no hay nada como un verdadero Hypervisor como es el caso de proxmox para administrar los recursos del servidor y que mi truenas haga el trabajo para el que fue creado osea un NAS(administrar y compartir la capacidad de almacenamiento).

Comentarios