Building a tiny NAS - PiNAS 🢅10
pinas front (113.2 KB)
Estuve armando un mini {{nas}} con una {{raspberry-pi-zero}}. La idea es tener distintos nodos distribuidos en casas de amigos / familiares que me permitan hacer backups offsite. Estos nodos tienen que consumir muy poca energía, tener una conexión a internet constante o al menos en determinadas horas y un disco rígido donde poder guardar los
backups.
La idea que sirva para dos cosas, por un lado como offsite para guardar copias de backup y por otro lado como un NAS / disco externo, donde pueda guardar cosas y tal vez correr algún que otro servicio.
Hardware
El build tiene 4 partes:
- Raspberry Pi Zero 2W
- HDD 1TB Seagate
- HAT Geekworm Raspberry Pi Zero 2 W SATA X301 - wiki🡭
- Memoria SD 32GB Sandisk Ultra
El HAT que compre, solo funciona con Raspberry Pi Zero W o 2W, no con las Zero comunes. Esto es por que las que tienen WIFI, tienen la posibilidad
pinas side view (113.2 KB)
Sistema operativo y software
El sistema operativo es Raspberry Pi OS Lite link🡭 sin desktop ni nada.
Como comente mas arriba la idea es tener un disco offsite al que pueda copiar backups. Para esto lo que estuve probando es compartir un directorio directamente desde {{samba}}. Esto me permite no solo poder usar el disco desde {{Linux}}, así como también desde {{Windows}} en caso que lo necesite.
Además de esto, tiene configurado {{tailscale}}, para poder acceder a ese disco desde cualquier lugar de mi VPN y red. Con esto me ahorro tener que exponer el servicio a internet. De esta forma queda todo dentro de mi red y toda la transferencia de archivos se hace a través de túneles encriptados.
La ventaja de {{tailscale}} es que una vez que se conecta a internet, automáticamente se conecta a la red y ya queda disponible. De esta forma puedo desactivar la conexión por ssh y otros servicios y que solo pueda acceder a través de la VPN.
Como servicio de {{backups}} voy a utilizar {{kopia}}. Por el momento no tengo definida muy bien la estrategia pero es algo que puede quedar para lo último. Los backups van a estar encriptados, así que no tengo que preocuparme mucho si se llega a perder el disco.
Performance
La Raspberry Pi Zero 2 W no tiene puerto Ethernet, así que la única forma de conectarse a la red es a través de Wifi. Podría tener una conexión a través de USB creo, pero no va con la idea de este proyecto.
La velocidad de transmisión que logre fue de 6 MiB/s. En una red local, sin pasar por internet, copiando desde un disco mecánico a otro disco mecánico. No es la mejor ni mas rápida velocidad, pero creo debería alcanzar.
Acá el resultado de escritura en el disco hdd:
Acá el resultado de escritura en la tarjeta de memoria:
y acá los resultados de escritura en un disco SSD conectado por USB:
La verdad es que la diferencia es bastante minima, no creo que haya mucha mas diferencia en el caso que le conecte un disco SSD por sata. Pero creo que igualmente voy hacer la prueba.
La velocidad de transmisión por red que conseguí fue de entre 38 Mbits/s y 60 Mbits/s. Según lo que estuve leyendo en blogs relacionados a {{raspberry-pi-zero}} es que esas son las velocidades máximas y que siempre van a estar afectadas por la distancia que hay entre la rpi y el router / ap. Mientras mas lejos del router menos velocidad vamos a conseguir. La medición la hice con iperf3
.
Otra cosa que aprendí fue que las rpi zero no soportan nic’s gigabits. Hay varios hats y gabinetes que se vienen con nic’s ethernet, que son de 100MB.
Power factor
Como es algo que no va a estar en mi casa, la idea es que tenga un consumo super controlado y bajo. Y me sorprendí cuando pude medir el consumo que tiene. Abajo dejo los datos:
En idle estos son los consumos:
- 0.036 A
- 0.26 Power Factor
- 2.1 W
En copia estos son los consumos:
- 0.048 A
- 0.32 Power Factor
- 3.8 W
pinas power factory (113.2 KB)
Avahi daemon
Para deshabilitar el dameon y todo lo relacionado a mDNS, se tienen que ejecutar los siguientes comandos:
De esta forma no solo deshabilitamos el daemon, si no que también lo forzamos a que no inicie cuando reiniciamos el sistema operativo.
Notas y TODO’s
- no necesito una performance excepcional. necesito tener availability, que pueda contar con el disco cuando lo necesite.
- tampoco necesito que tengan una gran capacidad, la idea es usarlo para hacer backup de configuraciones, datos en texto, base de datos chicas y documentos mínimos. No van a ser usados para media, videos, imágenes, software o juegos.
- como hago para debugear? que pasa si no se conecta al wifi? que pasos debería seguir para saber que el sistema operativo inicio sin problemas?
- acá el caso mas difícil es que si esta en algún lugar al que no puedo llegar, se vuelve complicado ir y conectarle un monitor para poder ver que esta pasando.
- sobre todo que el conector es un HDMI mini.
- acá el caso mas difícil es que si esta en algún lugar al que no puedo llegar, se vuelve complicado ir y conectarle un monitor para poder ver que esta pasando.
- este build en especifico necesita un gabinete por que se llena todo de polvo / tierra si lo voy a dejar así al descubierto, a parte si esta en un lugar donde puede chocarse con otras cosas puede generar un corto en la placa y joder todo
- tengo que medir la temperatura, por el momento solo le puse un disipador al chip de la rpi zero, pero no al chip wifi, debería ver que temperatura tiene en general.
- el gabinete es probable que afecte esto también
- debería investigar si es posible encriptar el disco a nivel de Sistema Operativo. Y ver como funciona eso con Raspbian
- eliminar avahi-daemon, no necesito mDNS, ya que la idea es accederlo 100% mediante {{tailscale}}