Armando un Servidor de Almacenamiento Barato desde Argentina
En un post anterior, ya conté cómo intenté reemplazar mi Synology DS213 de 2013 que había dejado de recibir actualizaciones de software. Probé usar OpenMediaVault en una Raspberry Pi e incluso en una Intel NUC. Después de jugar un tiempo con esas opciones y enfrentar algunas dificultades, decidí dar el paso y armar un server con TrueNAS.
En este post quiero compartirles cuál era mi objetivo, cómo decidí qué partes usar y cómo viene funcionando mi primer TrueNAS server después de algunos meses de uso.
Consideraciones y limitaciones
Mi prioridad absoluta es la redundancia de datos, es decir minimizar la posibilidad de una pérdida definitiva e involuntaria de datos.
¿Qué no es prioridad?
- La velocidad de acceso o escritura de datos.
- El uptime de algún servicio que utilice el almacenamiento.
Si bien no son prioridad, no significa que en algún punto no sean importantes. Sobre todo si impacta en la realización de las tareas de backup. Es decir, si la velocidad es tan lenta que los backups no se terminan nunca de realizar, esto impacta en la redundancia de los datos aún no respaldados. Lo mismo sucede si no se puede acceder al servidor para restaurar un backup o si la velocidad es muy lenta para hacerlo en tiempos razonables.
Para obtener la redundancia el plan es llegar a cumplir con la regla de backup del 3, 2, 1 lo más rápido y barato posible.
La regla del 3, 2, 1 indica que en todo momento deben existir 3 copias de los datos, en al menos 2 dispositivos diferentes y que 1 de las 3 copias tiene que estar en un lugar aislado de las demás. En otro post voy a ahondar en las particularidades de esta regla.
¿Por qué el apuro? Porque cada momento que pasa sin cumplir con la regla estamos en riesgo de perder datos irreemplazables.
¿Por qué lo más barato posible? En realidad más allá de no gastar innecesariamente, esta restricción apunta más al hecho de no invertir en un sistema demasiado poderoso ya que no es necesario para las prioridades definidas. Con tener un servidor que pueda cada tanto recibir actualizaciones de backups y luego a la hora de restaurarlos pueda hacerlo con relativa velocidad, alcanza. Para esto no se necesitan procesadores de última generación, placas de video de alta gama, ni conexiones de red de 2.5Gbps.
Selección de componentes
Luego de todas estas consideraciones me dispuse a preparar la primera iteración del primer server de backups. Veamos cómo elegí los componentes iniciales. Los precios estás calculados a un aproximado entre el Dólar MEP y el CCL para mantener más relevancia que si pusiera el precio en pesos.
Motherboard y CPU
Investigando la oferta disponible en Mercado Libre, analizando diferencias de precios y consumos energéticos terminé decidiendo por la plataforma Intel Socket LGA1200 con un procesador Intel Celeron. Está decisión me permite ahorrar al momento de la compra pero sin irme tan atrás a generaciones que consumían el doble de energía.
Conseguí en Mercado Libre un motherboard de “Outlet”. Nunca había escuchado ese termino, pero parece ser utilizado para productos que fueron utilizados y reacondicionados. La cuenta de Mercado Libre parecía vender varias unidades de este tipo y con buena reputación así que me le animé.
El Motherboard en cuestión es un Gigabyte H410m H Ddr4 Intel Socket 1200 10ma Gen. Ofrece 4 puertos SATA, un M.2 NVMe y hasta 64GB de RAM.
💰 Costo: USD55
Tenet 4 puertos SATA me permitirá más adelante, si instalo TrueNAS en el NVMe, instalar hasta 4 discos de almacenamiento pudiendo utilizar RAIDZ1 o incluso RAIDZ2.
En cuanto al procesador: un Intel Celeron G5905 BX80701G5905 de 2 núcleos y 3.5GHz de frecuencia con gráfica integrada. Este me brinda 2 hilos y bajo consumo. Nuevamente, dado que el objetivo son solo los backups y no la velocidad con la que se corre ningún proceso intensivo, es más suficiente.
💰 Costo: USD65
Memoria RAM
16GB de RAM: 2 x Basics Gamer Color Verde 8Gb Crucial Cb8gu4800. Esto me pareció una cantidad mínima aceptable para un TrueNAS con la cantidad de espacio que pienso tener por el momento.
💰 Costo: USD 48
Almacenamiento
Reutilicé los dos discos que estaba usando en el Synology: 2 x 3TB WD RED. Esto ocupó 2 de los 4 puertos SATA que tenía disponibles.
Para ahorrar puertos SATA para futuras mejoras, busqué un pequeño disco NVMe para instalar TrueNAS y así tener la posibilidad más adelante de utilizar 4 discos en total para almacenamiento.
Encontré una publicación que vendía discos NVMe que habían sido extraídos de laptops nuevas para ser upgradeadas con otros discos y estaban vendiendo el que venía de fábrica. Compré uno: Ssd M.2 Pcie Nvme Kingston 128gb 2280
💰 Costo: USD 14
Fuente y Gabinete
Reutilicé ambos que tenía de una computadora que había armado en 2008. Un gabinete Vitsuba Master y una fuente CoolerMaster v1000. La fuente es totalmente desmedida para este proyecto, pero siendo que la tenía sin uso me pareció más eficiente usarla antes que comprar una nueva.
El costo total sin contar los componentes que ya tenía fue de USD 182 💰.
Configuración
No vamos a entrar acá en detalles de cómo instalar TrueNAS, solo voy a comentar que me decidí por instalar directamente TrueNAS y no virtualizarlo. La decisión fue principalmente porque el hardware elegido para correr solamente TrueNAS, con lo cuál no tenía sentido el overhead de mantener un ambiente de virtualización y el consumo de recursos extra.
Solo contaba con 2 discos para el almacenamiento así que no tenía más opciónes que configurarlos en striped o en espejo. Dado que aún no tengo un sistema para hacer backups del server en sí, nuevamente prioricé la redundancia y elegí la configuración en espejo. De esta manera el sistema puede tolerar la falla de uno de los discos sin perder los datos. Esto es importante ya que los discos tienen 10 años encima.
La situación no es ideal, es riesgosa y “RAID no es un backup”. Pero es el primer paso y es lo que hay. Antes al Synology lo backupeaba a un disco externo USB (Seagate 2TB Backup Plus Slim), pero ya se me rompieron dos de esos. Más adelante se viene la construcción de un segundo server para poder backupear este.
Experiencia
Este post lo estoy escribiendo 8 meses después de haber armado el servidor, así que podemos analizar los resultados.
El plan original era crear un dataset para hacer backups desde mi laptop a través de TimeMachine. Con el paso del tiempo empecé a explorar Immich para backupear y administrar fotos y videos. No instalé Immich en esta máquina sino en mi servidor Proxmox pero conectado a través de SMB a un dataset en TrueNAS que sirve de almacenamiento para el servicio de Immich a través de la red.
Sin hacer ninguna prueba de stress ya que no es el objetivo de este server, puedo decir que cumple con las dos tareas adecuadamente, el CPU no parece estar estresado en lo más mínimo y ninguna de las tareas que tiene que cumplir parecen ser degradadas.
Cumpliendo satisfactoriamente no solo con el objetivo de poder hacer backups sino que también sirviéndo de almacenamiento para Immich, estoy satisfecho con este server y es momento de enfocarse en armar el segundo antes de que ocurra una desgraciá.