Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
proyecto:storage_a_lo_pobre [2021/12/31 17:33] looperproyecto:storage_a_lo_pobre [2025/05/30 00:24] (actual) – Struct data changed looper
Línea 5: Línea 5:
 <col md="6"> <col md="6">
  
-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 obsoleto ([[https://ark.intel.com/content/www/es/es/ark/products/27438/intel-pentium-4-processor-2-40-ghz-512k-cache-533-mhz-fsb.html|el CPU es un Pentium 4 de 2002]]).+**¿De qué trata?** 
 + 
 +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 ([[https://ark.intel.com/content/www/es/es/ark/products/27438/intel-pentium-4-processor-2-40-ghz-512k-cache-533-mhz-fsb.html|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.
  
 ==== Galería ==== ==== Galería ====
  
-{{gallery>proyecto:storage_a_lo_pobre?5&lightbox&modsort& }}+{{gallery>proyecto:storage_a_lo_pobre?5&1920X1080&lightbox&modsort& }}
  
 </col> </col>
 <col md="6"> <col md="6">
  
-En la actualidad el nodo es autosuficienteintegra varios servicios para uso con cuentas personales (NextcloudRead-It Later, un EDMS para gestionar papeleo físicoy un repo Git). Para usp abierto ofrece raíces y resolvedor DNS recursivo, un centralizador de multimedia (Jellyfiny estadísticas de la Red Libre con LibreNMS, Smokeping y WeathermapEstán en construcción servicios como la Wikipedia offline.+==== Inventario ==== 
 +^  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)                                        | 
 + 
 +==== Curiosidades aprendidas o relevantes ==== 
 + 
 +  * Los cables IDE tienen dos "configuraciones"maestro y esclavo. Hay que mover los pines correctos para configurarlos (varía según el modelo)no es como en SATA que todo se conecta igual. 
 +  * Los cables IDE clásicos (IDC40/40) soportan solo ATA/33que vuelve la unidad lentísima (~30 MB/s). Yo he usado cables IDC40/80 que soportan hasta ATA/133 (~60 MB/s). 
 +  * Alpine Linux es genial. 
 +  * Placas madres viejas como la Intel D845GVFN sí pueden bootear por USB (yo lo consideraba imposible)Creo que esto depende mucho del modelo de pendrive. 
 +  * Para no saturar los puertos se ha pensado en poner más tarjetas PCI-Ethernet, pero el ancho de banda del bus PCI tampoco es mucho. Llegaremos a un cuello de botella de todas maneras :)
  
-==== IPs anunciadas ==== 
-^  Bloque IP                Anuncio y Red  ^  Atributos               ^ Descripción                            ^ 
-| 2001:470:d9eb:d100::/56  |  LOR7 (BMX7)    | BYOS, Subnet IP público  | Servidores y servicios  | 
-| 10.32.20.0/22            |  LOR7 (BMX7)    | BYOS                     | Servidores y servicios  | 
 </col> </col>
 </grid> </grid>
 +
 +
 +==== Bitácora ====
 +=== 2021 Diciembre ===
 +
 +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)
 +
 +<code>
 +[  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
 +</code>
 +
 +=== 2021 Previo (de junio a nov) ===
 +
 +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:
 +  - Instalar el SO y configurar la red. Los tres puertos de red se detectaron, y creé un puente ''br0'' entre ellos mas una configuración de red estática en ''/etc/network/interfaces''.
 +  - Hacerles un re-reformateo en bajo nivel((Este re-reformateo ayuda a limpiar algún posible sector defectuoso, si este es magnético (pasa con discos viejitos). No ayuda si el disco ya está "sonando raro".)) borrando todo, con ''shred -n 1 -z -v /dev/sda'': una pasada a todo el disco con datos aleatorios, y otra pasada con ceros.
 +  - Verificar si los discos están bien, con ''smartctl -t long /dev/sda''.
 +  - Particionarlos (con tipo MBR y activando una sola partición grande) y formateándolos((Previamente usé ZFS, pero no fue buena idea y el uso de CPU era continuamente elevado)) [[https://wiki.alpinelinux.org/wiki/Setting_up_a_software_RAID_array|como RAID]]: ''<nowiki>mdadm --create --level=1 --raid-devices=2 /dev/md0 /dev/sda1 /dev/sdb1</nowiki>''((Quise usar aquí el formato estable /dev/disk/by-id recomendado en otras partes como comunidades de ZFS, pero fueron ignoradas por mdadm.))
 +  - Crear el sistema de archivos con ''mkfs.ext4 /dev/md0''
 +  - Activar su entrada en /etc/fstab, para que sea accesible al iniciar la PC: ''UUID=01468727-d432-4b95-aecf-303c81e38b9c       /storage ext4   rw,noatime,commit=60    0       3''
 +  - [[https://wiki.alpinelinux.org/wiki/Setting_up_a_nfs-server|Instalar nfs-server]] y activar su entrada en /etc/exports, para que el storage se pueda acceder desde la red mediante NFS: ''/storage 10.0.0.0/8(rw,no_subtree_check,insecure,crossmnt,async)''((Uso async ya que el rendimiento de escritura aleatoria con bloques 4K es horrendo, como 40 KB/s. Además el rango de IP habilitado acá es solo un ejemplo.)).
 +
 +Listo. El storage ya es accesible mediante NFS desde el resto de la red :)
 +
 +---
 +
 +Para el futuro, podríamos:
 +  * Apagar los discos si nadie los está usando (no sé si los modelos de discos que tenemos nos permiten eso)
 ---- struct data ---- ---- struct data ----
 proyecto.nombre      : NAS a lo Pobre proyecto.nombre      : NAS a lo Pobre
 proyecto.mantenedor  : Looper proyecto.mantenedor  : Looper
 proyecto.palabrasclave : nas, linux, raid, mdadm, alpine proyecto.palabrasclave : nas, linux, raid, mdadm, alpine
 +proyecto.descripcion : Tomar una Pentium 4 con discos duros de hace una década, y usarlo como servidor de archivos
 proyecto.fechainicio : 2021-07-08 00:00 proyecto.fechainicio : 2021-07-08 00:00
-proyecto.ubicacion   : +proyecto.ubicacion   : Casa de Luis
 proyecto.estado      : Activo proyecto.estado      : Activo
 ---- ----
  
  • proyecto/storage_a_lo_pobre.1640986421.txt.gz
  • Última modificación: 2021/12/31 17:33
  • por looper