proyecto | |
---|---|
nombre | NAS a lo Pobre |
mantenedor | Looper |
palabrasclave | nas, linux, raid, mdadm, alpine |
descripcion | Tomar una Pentium 4 con discos duros de hace una década, y usarlo como servidor de archivos |
fechainicio | 2021/07/08 00:00 |
ubicacion | Hacklab de Looper |
estado | Activo |
Este proyecto prepara una PC antigua y la convierte en un NAS (Network Attached Storage): el espacio en disco se comparte a lo largo de la red local, y los demás clientes en la red pueden acceder y compartir cosas. La diferencia: el hardware utilizado es altamente obsoleto (el CPU es un Pentium 4 de 2002).
¿Por qué?
La intención principal del proyecto es darle un uso a lo que podría volverse una pila de basura electrónica, ya que no ofrece ningún beneficio como servidor: es lento, consume más energía por un mismo trabajo, no hay reemplazos para sus piezas en el mercado, etc.
El hardware en general en sí es inútil para tareas modernas, y mas específicamente quedan algunos discos duros IDE, también inútiles en otros lugares por su baja capacidad (de 80 a 160 GB), pero las piezas en conjunto son funcionales.
En algún lugar que se necesite capacidad de almacenamiento siempre podemos instalar un SSD de similar capacidad, que es bastante más eficiente y mucho más rápido. Pero podemos aprovechar este NAS para tareas que escriben continuamente datos, desgastando así estos discos y no el SSD.
¿Funcionaría de forma permanente? Y de ser así, ¿en donde?
Sí, asumiendo que las piezas no se dañen, o de ser el caso, conseguir un repuesto a precios módicos (gratis). Un lugar en donde podría necesitarse este NAS sería en despliegues de servicios de prueba en minidatacenters de LaOtraRed, que pueden estar funcionando en provincia.
Artefacto | Características y/o capacidades | Descripción |
---|---|---|
Placa madre | Intel D845GVFN | |
CPU | Intel(R) Pentium(R) 4 CPU 2.40GHz | XD |
Memoria RAM | DDR 256M | |
Memoria RAM | DDR 512M | Más memoria ayuda como caché |
Pendrive | Sony 16GB | Me lo gané en el HM del 2015. Lo uso como / |
Placa de expansión PCI | Ethernet 10/100 RTL8139 | Para no saturar el puerto de la placa madre, que también es 10/100 |
Placa de expansión PCI | Ethernet 10/100 3c905C-TX/TX-M | idem |
Disco duro | Hitachi Deskstar 7K80 HDS728080PLAT20 80GB | Storage |
Disco duro | Hitachi Deskstar 7K250 HDS722580VLAT20 80GB | Storage |
Disco duro | Hitachi Deskstar T7K250 HDT722516DLAT80 160GB | Storage (en reserva) |
Salió Alpine 3.15. Intenté actualizar (por mi versionitis) y el sistema dejó de arrancar. Conectando el pendrive a mi PC, intenté resolverlo con un chroot pero no funcionó. Eventualmente arranqué el pendrive mediante una máquina virtual en VirtualBox y desactualicé a la versión 3.14, que anda funcionando bastante bien.
Originalmente estaba instalado un disco más, de 60 GB, pero empezó a escupir errores de I/O y preferí quitarlo. Como futuro proyecto podríamos desarmarlo con los chicos del HL, por si a alguien le interesa (hay gente que con uno se armó adornos para sus habitaciones)
[ 437.917475] sd 0:0:1:0: [sdb] tag#0 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08 cmd_age=48s [ 437.917482] sd 0:0:1:0: [sdb] tag#0 Sense Key : 0x5 [current] [ 437.917487] sd 0:0:1:0: [sdb] tag#0 ASC=0x21 ASCQ=0x4 [ 437.917492] sd 0:0:1:0: [sdb] tag#0 CDB: opcode=0x28 28 00 00 62 b1 80 00 05 80 00 [ 437.917499] blk_update_request: I/O error, dev sdb, sector 6467968 op 0x0:(READ) flags 0x4000 phys_seg 120 prio class 0 [ 437.917533] ata1: EH complete [ 437.963566] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 437.963570] ata1.01: BMDMA stat 0x65 [ 437.963574] ata1.01: failed command: READ DMA EXT [ 437.963582] ata1.01: cmd 25/00:00:00:d0:62/00:05:00:00:00/f0 tag 0 dma 655360 in [ 437.963582] res 00/00:00:00:00:00/01:01:01:01:01/00 Emask 0x2 (HSM violation) [ 437.963610] ata1: soft resetting link [ 441.272977] ata1.00: configured for UDMA/100 [ 441.280749] ata1.01: configured for UDMA/33 [ 441.280780] ata1: EH complete [ 471.849413] ata1: lost interrupt (Status 0x0) [ 471.849444] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 471.849450] ata1.01: failed command: READ DMA EXT [ 471.849460] ata1.01: cmd 25/00:00:00:d0:62/00:05:00:00:00/f0 tag 0 dma 655360 in [ 471.849460] res 40/00:00:00:00:00/01:01:01:01:01/00 Emask 0x4 (timeout) [ 471.849463] ata1.01: status: { DRDY } [ 471.849496] ata1: soft resetting link [ 472.042210] ata1.00: configured for UDMA/100 [ 472.049949] ata1.01: configured for UDMA/33 [ 472.049969] ata1: EH complete
Se me ocurrió la idea de forma random (why not).
Se supone que esa placa madre, con el BIOS actualizado y todo, no podía bootear desde un pendrive: esto lo quería ya que en mi previo trabajo un NAS tenía así su instalación: puedes armar y desarmar tu storage fácil, si algo de tu / (root) falla puedes instalar uno nuevo cómodamente, etc. Y resulta que sí, la placa sí puede arrancar desde un pendrive. Nunca pude hacer eso antes, fue raro (quizás es el modelo de pendrive).
Elegí Alpine Linux por ser muy ligero y llevarse bien con almacenamiento flash (que suelen desgastarse con cada escritura). Booteé por red con netboot.xyz (así me ahorro instalar un lector de CD) e instalé la versión 3.14. Luego, el resto de la configuración fue normal y sin ninguna sorpresa, usando los tutoriales de la wiki de Alpine.
Respecto al storage que usaremos desde otras partes de la red, dedicaremos los dos discos a la tarea y los configuraremos en RAID 1: la información se duplicará en ambos, y si un disco falla aún tendremos acceso a la información mediante el que queda.
Lo que hice fue:
br0
entre ellos mas una configuración de red estática en /etc/network/interfaces
.shred -n 1 -z -v /dev/sda
: una pasada a todo el disco con datos aleatorios, y otra pasada con ceros.smartctl -t long /dev/sda
.mkfs.ext4 /dev/md0
UUID=01468727-d432-4b95-aecf-303c81e38b9c /storage ext4 rw,noatime,commit=60 0 3
/storage 10.0.0.0/8(rw,no_subtree_check,insecure,crossmnt,async)
4).Listo. El storage ya es accesible mediante NFS desde el resto de la red :)
—
Para el futuro, podríamos: