Guía de ZFS: Instalar y Optimizar el Sistema de Archivos ZFS en ZimaBoard

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

¡Saludos entusiastas de ZimaBoard! Hoy, nos complace traerles un tutorial completo de nuestro dedicado miembro de la comunidad, Tyrehl. No solo Tyrehl te guía expertamente a través del proceso de instalación de ZFS en ZimaBoard, sino que también ofrece una visión integral del propio ZimaBoard.

Desde conocimientos de la comunidad hasta instrucciones detalladas de instalación, el artículo de Tyrehl es tu recurso integral para desbloquear todo el potencial tanto de ZFS como de ZimaBoard. Nuestro más sincero agradecimiento a Tyrehl por esta enriquecedora contribución, que une el compromiso comunitario con el conocimiento técnico. Emprendamos juntos este viaje y elevemos tu experiencia con ZimaBoard. ¡Feliz exploración!

Introducción

Las computadoras de placa única (SBC) son muy populares en escenarios de laboratorios caseros, y en los últimos años han ganado terreno en entornos profesionales y en la industria también. Hoy en día existe un gran ecosistema centrado en la computación en el borde y sistemas de factor de forma pequeño.

Es fácil conseguir un cómputo decente, con varias SBC que ofrecen 4 núcleos y mucha RAM para diversas aplicaciones. Donde usualmente fallan es en el almacenamiento. Las tarjetas SD y el almacenamiento Flash en general son lentos y propensos a fallos en escenarios con muchas escrituras. Los discos conectados por USB no ofrecen la misma fiabilidad, y elegir un buen conector USB a SATA tampoco es trivial.

El ZimaBoard tiene un as bajo la manga. Dos puertos SATA, el doble Ethernet 100/1000 y varias opciones de extensión PCIe, hacen un sistema muy flexible.

¿Cuáles son los límites de lo que una SBC puede lograr de manera realista, y por qué el almacenamiento siempre es un problema? ¿Dónde está el punto medio ideal entre una máquina compacta, que no domina ninguna tarea particularmente bien, y un monstruo de cables con 6 discos SATA que requiere una fuente de alimentación ATX externa?

Este artículo tiene como objetivo explorar las fortalezas del ZimaBoard y cómo pueden aprovecharse para darle un buen uso. Sin terminar con una configuración ridícula e impráctica.

Motivación

Como se mencionó anteriormente, es fácil desplegar y utilizar mucha capacidad de cómputo. La memoria también es barata, por lo que el almacenamiento se convierte rápidamente en el factor limitante. Cualquiera que haya tenido que lidiar con infraestructura probablemente sea consciente de esto. Solo eche un vistazo a las opciones de almacenamiento en red de k8s, las diversas plataformas que afirman ofrecer APIs compatibles con S3 para su clúster, y lo molestas que son de desplegar y operar correctamente.

El ZimaBoard, con sus excelentes capacidades de E/S, es un gran candidato para un NAS de factor de forma pequeño o un servidor de propósito general con almacenamiento local resistente. Y aquí radica el desafío: ¿cómo proporcionar almacenamiento tolerante a fallos en un paquete de factor de forma pequeño, en una plataforma que "simplemente funciona" y es operativamente aburrida?

En cuanto al hardware, nos limitaremos a usar solo dos discos de 2.5 pulgadas conectados a los conectores de energía y SATA en la parte trasera del ZimaBoard. Esto crea una solución muy compacta sin necesidad de una fuente de alimentación externa ni tarjetas de extensión.

Menos es más

Desplegar mucho almacenamiento es bueno, pero tener almacenamiento tolerante a fallos es aún mejor. Para eso necesitamos un sistema de archivos más avanzado que ofrezca redundancia de almacenamiento.

ZFS ofrece capacidades de RAID por software que superan a la mayoría de los controladores RAID por hardware. Es un sistema de archivos realmente excelente con muchas otras características notables como instantáneas incrementales, sincronización entre sistemas remotos y pools de almacenamiento, y cifrado.

El enfoque hoy es puramente ejecutar los discos de forma redundante. Normalmente ZFS se usa para gestionar un arreglo RAIDZ. Pero como nos limitamos a dos discos, solo queda una opción relevante: el pool espejo ZFS. Esto reducirá a la mitad la capacidad de almacenamiento, pero al mismo tiempo nos proporcionará mejor redundancia y la capacidad de soportar la falla de un solo disco. No es ideal, pero tendrá que servir.

Hardware

Discos

Generalmente, la comunidad de ZimaBoard recomienda a los usuarios usar discos de 2.5 pulgadas. Su principal ventaja es que no necesitan un riel de 12V para funcionar. Hay reportes de pruebas exitosas con discos de 3.5 pulgadas, así que tu experiencia puede variar. En mi caso, opté por dos SSD de 1TB. También puedes elegir HDD si necesitas más capacidad.

Conectores y accesorios impresos en 3D

Se recomienda encarecidamente el divisor en Y oficial para conectar y alimentar los dos discos. Hay soluciones alternativas, como usar adaptadores de alimentación USB a SATA. Esto se ve feo, pero funcionará. Para mantener todo junto, un soporte dual para HDD impreso en 3D funciona muy bien. El resultado final es un paquete muy portátil y de perfil bajo.

Los enlaces están incluidos al final del artículo. Encontré esta versión muy compacta y práctica debido a su pequeño tamaño. También existen varias placas impresas en 3D para montaje en rack, si tienes espacio para ello.

Instalando ZFS

El ZimaBoard viene con Debian por defecto. Esta es también mi recomendación personal para una distribución sólida que no interfiera ni te sorprenda. Para otras distribuciones, consulta la documentación respectiva e instrucciones de instalación de ZFS.

Antes de comenzar, recuerda actualizar a la última versión LTS si puedes. Haz una copia de seguridad de tus datos para que sea fácil desmontar todo y empezar de nuevo. Y documenta cada paso para facilitar la solución de problemas. Consulta script comando para una forma conveniente de hacerlo.

Las instrucciones detalladas y casos de uso avanzados están documentados en https://wiki.debian.org/ZFS esta es la fuente principal recomendada para configurar ZFS.

Requisitos previos

Asegúrate de que se pueda acceder a los repositorios HTTPS:

1 apt install -y lsb-release apt-transport-https

Agrega el repositorio Backports para tu versión editando /etc/apt/sources.list o añade un nuevo archivo de fuentes en ‘/etc/apt/sources.list.d/’:

1 #determina el nombreclave o reemplázalo manualmente a continuación:
2 nombreclave=$(lsb_release -cs)
3 #agregar repositorio backports a la lista de fuentes:
4 echo “deb http://deb.debian.org/debian $codename-backports main contrib non-free”|sudo tee /etc/apt/sources.list.d/debian_backports.list && sudo apt update

Paquetes de ZFS

Finalmente, según la documentación de Debian, instala los últimos headers de Linux y los paquetes relevantes de ZFS:

1 sudo apt install linux-headers-amd64;sudo apt install -t $codename-backports zfsutils-linux zfs-dkms

“Oh no – algo salió mal”

La falla al instalar ZFS generalmente se debe a un kernel antiguo o incorrecto, o a la falta de headers. Lo mejor es eliminar todos los paquetes relacionados con ZFS, verificar los headers instalados y releer la documentación de instalación.

1 sudo dpkg -l | egrep ‘linux-image|linux-headers’

Creando un pool y un sistema de archivos

Listar discos por IDs:

1 ls -l /dev/disk/by-id/
2 ls -l /dev/disk/by-id/
3 lrwxrwxrwx 1 root root 9 22 Dic 15:29 ata-KINGSTON_SA400S37960G_50026B73818333D1 -> ../../sdb
lrwxrwxrwx 1 root root 9 22 Dic 15:29 ata-KINGSTON_SA400S37960G_50026B73818333DB -> ../../sda
4 lrwxrwxrwx 1

Y crear un pool especificando los IDs de dispositivo estables, por ejemplo:

1 zpool create $mirror_pool_name mirror ata-KINGSTON_SA400S37960G_50026B73818333D1 ata-KINGSTON_SA400S37960G_50026B73818333DB

Crear un sistema de archivos encriptado:

1 zfs create \
2 -o encryption=on \ # eliminar si no es necesario
3 -o keyformat=passphrase -o casesensitivity=mixed \
4 -o acltype=posixacl -o xattr=sa -o dnodesize=auto $mirror_pool_name/$dataset_name

Escenarios de uso real y rendimiento

ZimaBoard no tiene problemas para ejecutar ZFS y ofrece un gran rendimiento, solo la encriptación afecta notablemente el uso de la CPU. La transcodificación y transmisión (por ejemplo, con Jellyfin) tampoco son un problema. Vale la pena señalar que leer o escribir archivos muy grandes en un sistema de archivos encriptado exigirá mucho a la CPU. Esto podría afectar otras cargas de trabajo en el sistema.

SMB/NFS

Durante las pruebas generales, escribir un solo archivo de 12GB en el pool espejo ZFS tomó alrededor de 5 minutos, siendo el IO del disco el cuello de botella. Leer del pool ZFS fue mucho más rápido, tomando menos de la mitad del tiempo. Efectivamente, la conexión de red de 1Gbps se saturó por completo. Ambas pruebas se realizaron hacia y desde un sistema de archivos sin encriptar:

La siguiente prueba muestra el gran impacto que tiene la encriptación en la CPU. Se leyó el mismo archivo de 12GB desde el sistema de archivos ZFS sin encriptar y se escribió en uno encriptado. El rendimiento sigue siendo excelente, pero el uso de la CPU se disparó y se mantuvo muy alto durante todo el proceso.

Recursos y referencias

Conclusión

¿Tienes preguntas o necesitas más aclaraciones sobre algún aspecto del tutorial? ¡Tyrehl está aquí para ayudarte! Únete a nuestra comunidad de Discord para conectar directamente con Tyrehl y participar en discusiones interesantes. Tu curiosidad no tiene que detenerse con el tutorial: Tyrehl está listo para asistirte en tu viaje con ZFS. Únete a nuestro servidor de Discord: [ zimaboard.com/discord]

Centro de Campañas Zima

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.