miniDLNA con XigmaNAS y otras configuraciones

Mis primeros inicios en la informática por allá, 2009, en esos tiempos cuando ni una dirección IP sabiamos que era, cuando ni prender una pc, eso era una hasaña, y aún, porque siempre seremos novatos, de mis primeras versiones FreeNAS muy poco conocido, su hijo(fork) XigmaNAS antes llamado Nas4FREE, este por intereses de sus desarrolladores (lo más seguro es que sea lo típico) money, política, una parte tendrá licenciamiento.

iXSystems en este interesante timeline, se ve parte de la historia de FreeNAS el que encendio la chispa, ahora FreeNAS es TrueNAS CORE, durante la creación de este post, TrueNAS y FreeNAS ambos eran mantenidos por iXSystems, luego de un tiempo lograron unirlos.

Dado que la situación de FreeNAS cambió mucho y open media vault no me inspira tanto pero "me gusta también", vamos a usar XigmaNAS para librarnos de todo eso, recordando hace años cuando FreeNAS era verderamente free, bajo fondo xigmanas sigue siendo un derivado de FreeBSD, tiene muchos servicios interesantes para utilizarlos en nuestra red local/remota compatible con el sistema de ficheros ZFS unos de los formatos más avanzados que existen teniendo una de sus ventajas más prominentes es el uso de snapshots o instantáneas de los datasets.

Usare virtualbox para ir probando luego migrare (es decir hacer un backup y luego importarlo al NAS real) todo a una placa supermicro x8dtn+, unos dual Xeon E5645 socket 1366, 2 discos en ZFS mirror aka 2-way mirror marca Western Digital Red Pro (WD2001FFSX) 24/7 de 7200RPM y unos 32gb de memorias RAM-ECC de 1333MHz en aliexpress por cierto xD.

Y aqui lo tenemos todo montado ya, respaldamos lo que teníamos de virtualbox y lo importamos en el propio nas

systemInformation

nas activo

Flujo importante inicial

El flujo comienza desde el circulo rojo, bastante ideal con la mayoria de los pasos necesarios para dejar nuestro NAS activo.

FLOW install de XigmaNAS

Info:


Comunicacíon vía puerto serie

Necesitamos un cable y la simple app cu, y la gran ventaja de esto es que no necesitamos un monitor fijo, esta conexón la hize en mi portatil.

DSD TECH SH-RS232G USB a Serie DB9 Cable Hembra Chip FTDI FT232RL Incorporado

cable puerto serie

sudo apt install cu (1)
sudo chmod a+rw /dev/ttyUSB0 (2)
sudo cu -l /dev/ttyUSB0 -s 9600 (3)
1 la app cu
2 Executar permisos al puerto serie /dev/ttyUSB0
3 Conexión al NAS via puerto serie

conexion serial al nas

DLNA - Digital Living Network Alliance

Un protocolo basado en UPNP nos vendra bien para ver peliculas muy sangrientas de noche en la TV, mmmm sin estar usando tanto el USB, en caso de que NETFLIX no tenga esa pelicula que tanto queramos ver.

Pestaña Settings

Aquí existen configuraciones interesantes que podemos hacer algunas de ellas son:

settings minidlna

- Name

Es el nombre de nuestro servidor dlna y es xigmaNAS movies así se va a mostrar en nuestros clientes dlna

- Broadcast Interval

El tiempo de escaneo lo tendré a 5 segundos, si los clientes escanean los sevidores dlna en la red, dichos servidores se mostraran en ese tiempo, por defecto son 300 segundos. FIXME

- Database Directory

Debemos tener un directorio base raíz, el mío se llamara igual pero en minúscula minildlna, entonces si escaneo con mí TV, o ANDROID, IOS sucks(que en realidad tendrán sus propios clientes dlna), los directorios que saldrán son los contenidos en el, por ejemplo:

minidlna/directorioConContenidoParaMostrar

- Vizualizar status del miniDLNA

La url siguiente nos permite vizualizar el estado del servidor miniDLNA nuestro, y los dispositivos de nuestra red, por ejemplo SmartTV, teléfonos disponibles.

http://ipxigmanas:8200/status
  • Media library actuamente contiene 1 solo video.

status minidlna

En caso de que "Video files" no nos muestre ningun video que eso no es bueno, porque podemos pasar el rato buscando el porque, en la parte inferior de la pestaña settings se debe dar click en "rescan" que dicho botón bajo fondo es equivalente a este comando:

sudo service minidlna rescan
  • También muy importante mirar los permisos del fichero, deberían estan así:

  • -rwxr-xr-x si hacemos lo siguiente damos permisos de ejecución y que se visualize en la tabla de la imagen anterior.

sudo chmod 755 nombreArchivo

O al contenido de un directorio de manera recursiva

sudo chmod -R 755 nombreDir

Este comando También viene útil si se guarda en opciones avanzadas

/bin/chmod -R 755 /mnt/mydataset/minidlna

Cron ?

tenemos la posibilidad de añadir dicha tarea de "rescan" de nuestro minidlna usando cron por ejemplo:

/usr/sbin/service minidlna rescan

Pero, solo la guardaré, si ese "rescan" se hace cada pocos segundos, lo que se este reproduciendo via DLNA se interrumpiría.


Pestaña Media Folder

media folder

- Path

Aqui vamos buscar el directorio que estara contenido dentro del directorio raíz minidlna y será movies, que es donde se alojaran ficheros con formato (.mp4 .mkv .avi etc), dicho directorio es el que mostrará su contenido al ser escaneado ejemplo:

minidlna/movies


Usando DMS Explorer en Android

Con esta app podemos ver los servidores DLNA disponibles en nuestra red y como resultado tenemos lo siguiente:

dmsExplorer


Panasonic es el SmartTV de ejemplo

Si buscamos los dispositivos disponibles desde nuestro SmartTV tenemos lo siguiente:

dispositivos smartTV

smartTV movie


Navegando al directorio movies desde CIFS/SMB (Samba), FTP etc

Si tenemos samba habilitado y nuestro usuario correspondiente podemos ir al directorio movies, y copiar las peliculas ahí.

directorio movies desde samba

Usando Cx Explorer desde Android

La interface de esta app es mas pulida y es la que estoy usando ahora mismo, además al compartir puedo subir cosas al directorio del NAS sin problemas.

cxExplorer


Configuración para acceso vía SSH

En nuestra pc cliente, generamos la clave asimétrica tipo

ssh-keygen -t ed25519 (1)
1 Fuerte y rápido, el algoritmo de clave pública mas brutal de hoy en día.
Con añadir una passphrase sería más seguro aún.

Luego la clave publica generada la copiamos en el usuario correspondiente como aquí

clave ssh

Permisos al autenticar con el servidor ssh

En caso de no poder autenticar con el XigmaNAS vía ssh es necesario mirar los logs

/var/log/sshd.log (1)
1 En el servidor tenemos este fichero, para mirar logs del servicio sshd

Y vemos lo siguiente

Could not open user 'ruben' authorized keys '/mnt/pool/ruben/.ssh/authorized_keys': Permission denied

Se debe verificar que el dataset del usuario al cual se desea acceder tenga los permisos correctos, en este caso use:

  • ACL inherit: Passthrough - Inherit all entries

  • ACL mode: Passthrough - Do not change ACL

Y también esto

dataset permissions ssh

El grupo ruben no debe tener permisos de escritura, solo lectura y ejecución o chmod -R 750 ruben

De manera más precisa el dir .ssh debe estar con el mode 750 y el fichero authorize_keys con mode 600

Luego debemos sincronizar desde la UI el pool

sync dataset

https://192.168.1.250/disks_zfs_config_sync.php (1)
1 Este fichero .php se le hace la request para hacer el Synchronize

Si todo sale bien, deberíamos poder hacer login ssh con el usuario correspondiente.

rubn ⲁƛ ▸ ssh -i ~/.ssh/key xxx@192.168.1.250
Enter passphrase for key '/xxx/xxx/.ssh/key:
Last login: Wed Jan 10 16:21:21 2024 from 192.168.x.x
Welcome to Xigmanas!
[xxx@servernas ~]$

Via SFTP con Filezilla

Generamos nuestros certificados en formato X.509.pem tanto publico como privado con firma RSA(SHA512withRSAEncryption), he usado el api bouncy castle y su dependencia para FIPS (Federal Information Processing Standards), aún toca mejorarlo con Elliptic Curve Cryptography (ECC)

ftp tls

Con la clave privada anterior generada ed25519, para ssh, la usaremos también para hacer login con Filezilla via SFTP, pero debemos importarla primero para que filezilla cree un fichero con extension .ppk compatible.

Entonces, vamos a Edit/Settings…​

Importamos el fichero

conversion fichero para filezilla

nas filezilla loginSFTP

Vamos al Site Manager y buscamos el fichero que generamos con filezilla en formato .ppk

site manager filezilla

Y con eso sería suficiente para conectarnos desde Filezilla por SFTP.


Reiniciar servicio miniDLNA desde la WEB-GUI

Podemos reiniciar el servidor miniDLNA desde la WEB-GUI o desde la shell del XigmaNAS

restart minidlna

Desde la shell de XigmaNAS hacemos login con las credenciales del usuario admin que posee permisos para escritura en la consola, o También nos serviria el usuario del grupo de ssh.

sudo service minidlna restart

Configurando conexión IPMI

Esto es muy útil, porque permite que tengamos acceso a nuestro server vía LAN, como es eso?

Podemos acceder a la BIOS por medio de ella, pero necesitamos una tarjeta que permita hacer esto por ejemplo:

  • La AOC-SIMLP-3+

ipmi card

Si intentamos ir al BIOS por puerto serie, no podemos, pero por IPMI si 💥 y no nos haría falta tener un monitor para eso.

ipmi card motherboard

Este es el socket para la tarjeta IPMI encaja perfectamente, aun teniendo un disipador de aire justo arriba.

Reseteando tarjeta con el IPMItool

Por alguna razón, cuando cambie de http a https no pude acceder más, entonces desde el XigmaNAS ya viene instalado por defecto.

ipmitool raw 0x3c 0x40

Can’t find /boot/zfsloader

Un error que puede arrojar el NAS a la hora de iniciar, y por lo visto que por el orden de los discos, tocaria seleccionar el correcto donde se realizo la instalación.


Sobre zfs mirror

La elección entre un 2-way mirror y un 3-way mirror en ZFS depende de tus prioridades:

  • 2-way mirror: Es más eficiente en términos de capacidad, ya que cada bloque de datos solo se duplica una vez. Puedes perder un disco sin perder datos, pero si fallan dos discos, los datos se perderán.

  • 3-way mirror: Ofrece mayor resiliencia, permitiéndote perder hasta dos discos sin pérdida de datos, pero consume más espacio, ya que cada bloque se almacena en tres discos.

Conclusión: Si la disponibilidad y seguridad son prioritarias, el 3-way mirror es mejor; si buscas eficiencia de almacenamiento, el 2-way mirror es suficiente.

Personalmente recomiendo 3-way mirror, el 2-way mirror si que puede fallar, existe más probabilidades de que fallen 2 discos a 3.

Pool en DEGRADED

Ya esto es signo de un disco defectuoso

servernas: ~# zpool status
  pool: pool_3_4tb
 state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
	Sufficient replicas exist for the pool to continue functioning in a
	degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
	repaired.
  scan: scrub repaired 0B in 00:00:43 with 0 errors on Tue Aug 20 13:54:57 2024
config:

	NAME        STATE     READ WRITE CKSUM
	pool_3_4tb  DEGRADED     0     0     0
	  mirror-0  DEGRADED     0     0     0
    (1)
      ada2p1  FAULTED      6 48.9K    20  too many errors
	    ada3p1  ONLINE       0     0     0
1 Posiblemente sea el disco con el controlador ada2p1 defectuoso, cables, puede ser también el puerto SATA

CAM status: ATA Status Error

Como lo dicho arriba, toca probar el disco duro porque "quizas" este dañado, cables, conector SATA.

logs del error
Aug 20 13:52:30 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 1 more tries remain
Aug 20 13:52:37 servernas kernel: (ada2:ahcich2:0:0:0): READ_DMA. ACB: c8 00 10 0a 00 40 00 00 00 00 10 00
Aug 20 13:52:37 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:52:37 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 40 (UNC )
Aug 20 13:52:37 servernas kernel: (ada2:ahcich2:0:0:0): RES: 51 40 10 0a 00 40 00 00 00 10 00
Aug 20 13:52:37 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 0 more tries remain
Aug 20 13:52:44 servernas kernel: (ada2:ahcich2:0:0:0): READ_DMA. ACB: c8 00 10 0a 00 40 00 00 00 00 10 00
Aug 20 13:52:44 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:52:44 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 40 (UNC )
Aug 20 13:52:44 servernas kernel: (ada2:ahcich2:0:0:0): RES: 51 40 10 0a 00 40 00 00 00 10 00
Aug 20 13:52:44 servernas kernel: (ada2:ahcich2:0:0:0): Error 5, Retries exhausted
Aug 20 13:52:51 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b4 c0 40 d1 01 00 00 00 00
Aug 20 13:52:51 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:52:51 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:52:51 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b4 c0 40 d1 01 00 00 00
Aug 20 13:52:51 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 3 more tries remain
Aug 20 13:52:58 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b4 c0 40 d1 01 00 00 00 00
Aug 20 13:52:58 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:52:58 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:52:58 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b4 c0 40 d1 01 00 00 00
Aug 20 13:52:58 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 2 more tries remain
Aug 20 13:53:05 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b4 c0 40 d1 01 00 00 00 00
Aug 20 13:53:05 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:05 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:05 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b4 c0 40 d1 01 00 00 00
Aug 20 13:53:05 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 1 more tries remain
Aug 20 13:53:12 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b4 c0 40 d1 01 00 00 00 00
Aug 20 13:53:12 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:12 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:12 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b4 c0 40 d1 01 00 00 00
Aug 20 13:53:12 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 0 more tries remain
Aug 20 13:53:19 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b4 c0 40 d1 01 00 00 00 00
Aug 20 13:53:19 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:19 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:19 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b4 c0 40 d1 01 00 00 00
Aug 20 13:53:19 servernas kernel: (ada2:ahcich2:0:0:0): Error 5, Retries exhausted
Aug 20 13:53:26 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b6 c0 40 d1 01 00 00 00 00
Aug 20 13:53:26 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:26 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:26 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b6 c0 40 d1 01 00 00 00
Aug 20 13:53:26 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 3 more tries remain
Aug 20 13:53:33 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b6 c0 40 d1 01 00 00 00 00
Aug 20 13:53:33 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:33 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:33 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b6 c0 40 d1 01 00 00 00
Aug 20 13:53:33 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 2 more tries remain
Aug 20 13:53:40 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b6 c0 40 d1 01 00 00 00 00
Aug 20 13:53:40 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:40 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:40 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b6 c0 40 d1 01 00 00 00
Aug 20 13:53:40 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 1 more tries remain
Aug 20 13:53:47 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b6 c0 40 d1 01 00 00 00 00
Aug 20 13:53:47 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:47 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:47 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b6 c0 40 d1 01 00 00 00
Aug 20 13:53:47 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 0 more tries remain
Aug 20 13:53:54 servernas kernel: (ada2:ahcich2:0:0:0): READ_FPDMA_QUEUED. ACB: 60 10 10 b6 c0 40 d1 01 00 00 00 00
Aug 20 13:53:54 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:53:54 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
Aug 20 13:53:54 servernas kernel: (ada2:ahcich2:0:0:0): RES: 41 40 10 b6 c0 40 d1 01 00 00 00
Aug 20 13:53:54 servernas kernel: (ada2:ahcich2:0:0:0): Error 5, Retries exhausted
Aug 20 13:54:01 servernas kernel: (ada2:ahcich2:0:0:0): FLUSHCACHE48. ACB: ea 00 00 00 00 40 00 00 00 00 00 00
Aug 20 13:54:01 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:54:01 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 04 (ABRT )
Aug 20 13:54:01 servernas kernel: (ada2:ahcich2:0:0:0): RES: 51 04 28 9e e7 47 00 00 00 00 00
Aug 20 13:54:01 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 0 more tries remain
Aug 20 13:54:08 servernas kernel: (ada2:ahcich2:0:0:0): FLUSHCACHE48. ACB: ea 00 00 00 00 40 00 00 00 00 00 00
Aug 20 13:54:08 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:54:08 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 04 (ABRT )
Aug 20 13:54:08 servernas kernel: (ada2:ahcich2:0:0:0): RES: 51 04 28 9e e7 47 00 00 00 00 00
Aug 20 13:54:08 servernas kernel: (ada2:ahcich2:0:0:0): Error 5, Retries exhausted
Aug 20 13:54:08 servernas kernel: (ada2:ahcich2:0:0:0): Synchronize cache failed
Aug 20 13:54:15 servernas kernel: (ada2:ahcich2:0:0:0): READ_DMA. ACB: c8 00 08 00 00 40 00 00 00 00 01 00
Aug 20 13:54:15 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:54:15 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 40 (UNC )
Aug 20 13:54:15 servernas kernel: (ada2:ahcich2:0:0:0): RES: 51 40 08 00 00 40 00 00 00 01 00
Aug 20 13:54:15 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 3 more tries remain
Aug 20 13:54:22 servernas kernel: (ada2:ahcich2:0:0:0): READ_DMA. ACB: c8 00 08 00 00 40 00 00 00 00 01 00
Aug 20 13:54:22 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: ATA Status Error
Aug 20 13:54:22 servernas kernel: (ada2:ahcich2:0:0:0): ATA status: 51 (DRDY SERV ERR), error: 40 (UNC )
Aug 20 13:54:22 servernas kernel: (ada2:ahcich2:0:0:0): RES: 51 40 08 00 00 40 00 00 00 01 00
Aug 20 13:54:22 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 2 more tries remain
Aug 20 13:54:52 servernas kernel: ahcich2: Timeout on slot 1 port 0
Aug 20 13:54:52 servernas kernel: ahcich2: is 00000000 cs 00000000 ss 00000000 rs 00000002 tfd ff80 serr 00000000 cmd 0015c117
Aug 20 13:54:52 servernas kernel: (ada2:ahcich2:0:0:0): READ_DMA. ACB: c8 00 08 00 00 40 00 00 00 00 01 00
Aug 20 13:54:52 servernas kernel: (ada2:ahcich2:0:0:0): CAM status: Command timeout
Aug 20 13:54:52 servernas kernel: (ada2:ahcich2:0:0:0): Retrying command, 1 more tries remain

En caso de que nuestro disco este bueno y no tengamos puertos disponibles esta tarjeta PCI Express x1 ASMedia 1064 nos daria puertos disponibles, pero esta es de 4, existen con más puertos solo que si son muchos puertos el ancho de banda se distribuiria afectando el rendimiento un poco.

tarjeta pci puertos sata

Con zpool attach podemos añadir otro disco duro al mirror existente

zpool attach to mirror

Wed Aug 21 00:47:01 2024
  pool: pool1
 state: ONLINE
status: Some supported and requested features are not enabled on the pool.
	The pool can still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
	the pool may no longer be accessible by software that does not support
	the features. See zpool-features(7) for details.
  scan: resilvered 2.60G in 00:00:10 with 0 errors on Tue Aug 20 21:39:15 2024 (1)
1 El proceso de resilvered se inicio y se completo.

Sería interesante probar el uso de apps como BubbleUpnP, jupnp etc