- Para mantener una Raspberry Pi sin intervención durante semanas o incluso años, hay que diseñar de antemano una ruta de recuperación automática ante fallas
- La guía reemplaza el artículo anterior sobre reducir el desgaste de la tarjeta SD con una serie más amplia sobre confiabilidad, que reúne respuestas por tipo de problema y consejos de monitoreo
- Los principales riesgos se dividen en fallas de conexión WiFi, interrupciones de servicios, crashes por inestabilidad de hardware, firmware o drivers, y desgaste o saturación de capacidad de la tarjeta SD
- Los problemas de la tarjeta SD pueden mitigarse eligiendo una microSD adecuada, evitando usar swap, reduciendo escrituras, usando un sistema de archivos raíz de solo lectura y ejecutando fsck cuando sea necesario
- Desactivar journaling puede reducir el desgaste, pero aumenta el riesgo de corrupción del sistema de archivos ante crashes o cortes de energía, por lo que no encaja con el objetivo de estabilidad a largo plazo
Puntos de falla que conviene revisar primero en operación prolongada
- Para mantener una Raspberry Pi en línea durante mucho tiempo, hay que evaluar cómo se recuperará ante cada situación de falla, y comparar también los beneficios y riesgos de cada solución
- El autor usa Raspberry Pi en su casa como transmisor FM de baja potencia y como monitor de energía de un UPS, entre otros usos
- La serie Raspberry Pi Reliability recopila tipos de problemas que el autor experimentó y sus formas de resolverlos, e incluye principalmente consejos de monitoreo con Uptime Kuma
- Esta serie busca ser una guía más completa que el artículo anterior sobre reducir el desgaste de la tarjeta SD, y los artículos enlazados funcionan como reemplazos actualizados
Respuestas por tipo de problema y opciones que conviene evitar
- Las fallas de conexión WiFi son un tipo de falla que conviene considerar primero en operación prolongada
- Las interrupciones de servicios de software son un área que requiere una estrategia de recuperación aparte
- La inestabilidad de hardware, firmware o drivers puede terminar en crashes
- Las tarjetas SD pueden desgastarse o llenarse por completo, lo que afecta la forma de operar
- Se empieza por elegir la tarjeta microSD correcta
- No usar la tarjeta SD como swap
- Se puede evaluar reducir las escrituras en la tarjeta SD, en especial reduciendo la escritura de logs y haciendo que el sistema de archivos raíz sea de solo lectura
- Si no se usa un sistema de archivos raíz de solo lectura, hay que revisar el sistema de archivos con frecuencia
- Desactivar servicios innecesarios ayuda tanto a la estabilidad del software como a mitigar el desgaste de la tarjeta SD
- Antes de aplicar intervenciones invasivas, conviene comparar primero los riesgos y beneficios
- Cuando una falla ocurre realmente, el logging remoto es útil para identificar la causa
- Un post de Stack Exchange sugiere desactivar journaling en el sistema de archivos de la Pi, pero conviene evitarlo porque aumenta la posibilidad de corrupción del sistema de archivos ante crashes o cortes de energía
1 comentarios
Opiniones de Hacker News
En cambio empecé a comprar Lenovo mini PC; con 18 cm x 18 cm x 3 cm siguen siendo muy pequeños.
Hoy en día se consiguen muy baratos, y vienen con un gabinete y refrigeración adecuados: https://psref.lenovo.com/syspool/Sys/PDF/ThinkCentre/ThinkCe...
Tengo uno justo al lado: i5-8500T, 32 GB de RAM, 2 SSD, y con el autotuning de
powertopel consumo en reposo ahora es de 5 W: https://wiki.archlinux.org/title/powertopPodrías agregar una conexión serial a un microcontrolador, pero eso hace que la solución sea menos prolija.
Hace poco también migré mi NAS (N5105) y mi máquina de servicios (3215U) a mini PC usadas y Chromebooks desbloqueadas que conseguí en eBay o en mercados de pulgas. Son baratas, mantienen bajo el consumo de energía y la capacidad de cómputo está en un nivel completamente distinto al de una Pi.
En Australia aparecen por miles cuando terminan los contratos de leasing. Los chips 8500T u 8700T son excelentes, pueden ejecutar Windows 11 oficialmente y traen transcodificación por hardware integrada, así que son buenos como servidores Plex.
A una de las mías le puse 2 SSD de 2 TB y 64 GB de RAM, y funciona 24/7 sin problemas.
La tarjeta SD probablemente era la principal fuente de problemas, y si además consideras el costo de conectar algo como un SSD a una RPi, ya no resultaba rentable.
El primer consejo no debería ser activar el modo journaling del sistema de archivos.
El primer consejo debería ser montar el sistema de archivos en modo solo lectura, montar
/varen memoria y enviar todos los logs a un nodo con un UPS adecuado y NUT en ejecución, no a la RPi. Si el sistema de archivos es de solo lectura o está en un área temporal, un corte de energía se vuelve prácticamente inofensivo.Para una sola RPi puede ser demasiado, pero el autor dijo que usa varias repartidas por la casa.
También es buena idea tener particiones de sistema A/B y actualizar reescribiendo una partición completa, para luego cambiar la partición activa. Así, aunque la versión nueva tenga un bug crítico, siempre queda una partición de sistema funcional y la recuperación es sencilla.
He usado bien este enfoque durante más de 20 años con varias PC pequeñas/de placa única en distintos roles.
https://www.dzombak.com/blog/2021/11/Reducing-SD-Card-Wear-o...
/var, sino también para lugares como/tmp. Eso debería aumentar mucho la vida útil de la tarjeta SD.Me pregunto cómo se crea la nueva imagen de disco y si se inicia sesión en cada dispositivo para actualizarlo o si hay automatización.
/varen memoria podrías exceder la memoria del dispositivo.Tal vez tengas que mover
/var/lib/dockera almacenamiento secundario.En 2011 creé un producto comercial que corría en una de las primeras computadoras tipo plug de Global Scale Technologies.
Solo vendimos unas 20 unidades, pero todas fueron devueltas por problemas de corrupción de tarjetas SD, y tuvimos que cambiar de urgencia el sistema de archivos raíz a solo lectura. Desde entonces me empezó a gustar este enfoque.
Ese primer producto comercial era un producto de seguridad para el hogar con algunas funciones muy pequeñas de automatización del hogar; en 2021 lo publiqué como open source con un nuevo nombre, y ahora funciona en computadoras de placa única de la línea Jetson: https://github.com/hcfman/sbts-install
Ahora también incluye modelos YOLO avanzados como disparadores. Como estaba pensado para ser un producto independiente, tenía soporte para HTTPS y también una GUI que envolvía todo el trabajo con certificados. Esa función sigue en la versión open source, así que es fácil usar certificados autofirmados para llamadas REST entre dispositivos.
Además mantuve y amplié el enfoque de overlayFS en memoria con múltiples particiones, y el instalador primero instala un sistema
sbts-basepara que otros puedan usarlo como su propio sistema base.Con el tiempo, el sistema empezó a congelarse 1 o 2 segundos cada vez que escribía en disco, y fue bastante doloroso.
A quienes quieran hacer algo así, primero les recomendaría ver si no pueden resolver lo que necesitan con una placa pequeña como ESP32
Consumen mucha menos energía, cuestan apenas unos dólares y son suficientes para muchos usos. Si prefieren el lado de Python, muchas placas soportan tanto MicroPython como CircuitPython
Vale la pena revisarlo, porque puede reducir tanto el costo inicial de compra como el gasto continuo de electricidad
Los proyectos hechos con microcontroladores me han resultado décadas más estables que los basados en Pi, y también hay menos preocupación de olvidar cambiar la configuración SSH por defecto y terminar formando parte de una botnet. Creo que el valor por defecto era
pi:raspberryAdemás de MicroPython, el soporte de no_std Rust para ESP32C3 mejora cada mes. Para alguien que hace pequeños proyectos de automatización del hogar por diversión, las restricciones adicionales pueden hacerlo más entretenido y gratificante
Dicho eso, para quien ya está familiarizado con Linux, una Pi suele ser mucho más fácil y, en mi experiencia, cuesta al menos unas 10 veces más. También hay que incluir en la decisión configuraciones adicionales como arranque desde SSD, arranque por red, sistema de archivos raíz de solo lectura y configuración de watchdog para lograr el mismo nivel de estabilidad, además del mayor consumo de energía, en especial el de la Pi 5
¿Se puede correr un servidor de gestor de contraseñas en un ESP32? No. ¿Pi-hole? No. ¿Controlador Unifi? No
Este tipo de recomendación parece imaginar que la gente usa una Pi para cosas como un controlador de puerta de cochera, pero sugerir de forma refleja un ESP32 como reemplazo de una Pi no ayuda mucho
Cuando algo no funciona, no puedes conectar HDMI y teclado y depurar al vuelo en un entorno Linux mainline con todas las utilidades habituales
Probé MicroPython por primera vez en vez de Arduino y me encantó; sorprendentemente, es muy estable. Antes, por los estados de energía de Wi-Fi, los proyectos solían fallar con frecuencia a largo plazo, pero hasta ahora no he tenido problemas con la estructura de MicroPython
Eso de que “al final casi siempre se reduce a un script que comprueba periódicamente si la conexión Wi-Fi está bien y, si no, reinicia la interfaz Wi-Fi o toda la Pi” no es un hack, sino una buena práctica
Así como un servidor importante en un centro de datos debería tener una conexión fuera de banda, como IPMI o una toma RPDU controlable de forma remota, un servidor importante en una ubicación remota de difícil acceso debería tener un script watchdog
Por supuesto, hay que ajustarlo al caso de uso considerando el impacto de reiniciar y el tiempo de caída hasta que se reinicie, y al menos se pueden registrar los eventos anómalos para investigarlos después
Cuando desplegué una RPi remota, lo primero que hice fue un script watchdog sencillo en Bash. No era solo para problemas de Wi-Fi, sino para decenas de situaciones que podían romperse y arreglarse con un reinicio
Si no se puede confiar en que init gestione servicios, entonces me pregunto de dónde viene la garantía de que el sistema va a prestar servicios
Podríamos rehacerlo con scripts, pero ya pasamos esa etapa. Menciono mucho systemd, pero no es por favoritismo; también hay alternativas
La mayoría de los servicios no aprovechan bien el entorno en el que existen. Parece que se espera una personalización específica del sitio, como declarar que un servidor web necesita cierto montaje
Una directiva que se suele pasar por alto es
PartOf=. Permite vincular el reinicio de un servicio o recurso con otroMás simple aún, probablemente NetworkManager ofrezca alguna forma de personalizar la comprobación de Wi-Fi/portal. Quizá no haga falta irse a algo completamente radical
En el caso del router, intenta conectarse al SSID adecuado y hace ping al router; si cualquiera de las dos cosas falla, cambia al otro router. Tengo dos routers iguales con la misma configuración, y la alimentación está conectada a los contactos NO/NC de un relé SPDT, de modo que si uno falla basta cambiar el estado del relé para pasar al otro
Si el router está vivo, el watchdog carga la página de estado del módem de cable y hace ping a cualquiera de tres IP dentro de la red del ISP que parecen ser el CMTS o equipos cercanos, para comprobar que la infraestructura HFC siga activa. Si la falla no se puede resolver con un reinicio, no quiero reiniciar por gusto
Lamentablemente, no encontré forma de tener dos módems de cable con la misma MAC y alternar entre ellos, y el ISP tampoco permite dos módems en la misma cuenta, así que si falla el módem de cable no queda más que reiniciarlo y esperar que funcione
A esto le añadí un rack de baterías que puede mantener el router y el módem funcionando más de 30 horas durante un corte de luz, y desde que lo armé en mayo de 2020 se ha mantenido en línea casi todo el tiempo. El código es horrible, pero en la práctica funciona de forma muy robusta
Pasan cosas que ni el código ni el diseño perfectos pueden evitar, y un temporizador watchdog rompe los bucles infinitos y reinicia. También están cosas como una nave espacial que invierte bits o caídas momentáneas de voltaje, y en una Raspberry Pi también hay que preocuparse por la corrupción de la tarjeta SD
Entiendo que la Raspberry Pi tiene un temporizador watchdog de hardware integrado. Arduino definitivamente lo tiene
Durante casi 10 años hemos estado operando miles de Pi en entornos de producción, y ahora estamos empezando a migrar a x86
La relación precio/rendimiento de las Pi ya no es la de antes. Presenté esta experiencia recientemente en State of Open Con: https://youtu.be/vX-qK9mxKZI
Nuestro servicio todavía no lo usa, pero según la documentación parece bastante sólido y puede proteger los datos del disco/SD
Todavía estamos bastante satisfechos con la Pi, y el paso a APIs más abiertas como Mesa/DRM/KMS/FFmpeg se ve muy prometedor ahora que por fin están en un estado usable
Como el uso principal sigue siendo la señalización digital, la potencia bruta de procesamiento no es tan importante. La decodificación de video, que representa una parte importante del costo, obviamente está acelerada, y la compatibilidad hacia atrás posible en la Pi es excelente. Todavía tenemos clientes que siguen usando Pi1B+ desde hace casi 10 años, con la versión más reciente del SO que ofrecemos
También hay que considerar la vida útil, y ahí también creo que ARM durará más que x86. En términos de modularidad, ARM también es mejor que x86, porque es más barato tener varios dispositivos pequeños
Pero en cuanto a escalabilidad, es decir, viabilidad comercial en la economía actual, x86 es mejor que ARM
Además, todos los gráficos deberían estar expresados por watt. Que al pasar de 2 a 4 el rendimiento haya mejorado no es noticia; lo importante es si mejoró el rendimiento por watt
Visto así, se nota que la Raspberry Pi 5 no tiene una mejora de rendimiento por watt tan grande como se esperaba. Parece que hemos alcanzado una cima permanente en la historia de la humanidad
Por último, en este momento la única esperanza de avance no está en el rendimiento sino en la apertura, con JH7110, aunque el soporte 3D está atrasado
Aunque no hicimos nada de eso, varias Pi funcionaron sin problemas durante años hasta que fueron reemplazadas por modelos nuevos
La gateway HomeKit/Zigbee y el registrador de datos ahora están en una Pi 4. Al final, parece que la clave son una buena tarjeta SD y una fuente de alimentación estable
Creo que pibenchmark es una buena fuente de información: https://pibenchmarks.com/
Antes de comprar, hay que comparar sí o sí las tarjetas SD
Si operas suficientes dispositivos, todo lo que pueda salir mal va a salir mal, y también aparecerán nuevos modos de falla que ni en sueños habías imaginado
Probablemente esa fue la razón de tantos reportes de tarjetas dañadas después
No hice nada más que instalar Raspbian en una tarjeta micro SD, configurar Cups y conectar el USB a la impresora. Otra administra una impresora de red. Después de eso simplemente las dejé así
Ahora cambié la mayoría a SSD. Si no, se siente demasiado como tirar los dados
Me sorprendió que lo de las tarjetas SD no fuera lo primero, y me sorprendió aún más que el artículo no propusiera arranque por USB
Tengo una Pi encendida casi 24/7 desde hace años, y creo que no ha dado problemas por 1) haber configurado Alpine para tocar el disco lo menos posible, y 2) no tener una tarjeta SD que pueda corromperse. No sé por qué USB es más confiable, pero empíricamente así fue
La única razón por la que falla es cuando se va la luz. Creo que una batería que aguante apenas 10 minutos sería más que suficiente
Por ejemplo, quisiera saber si te refieres a algo como https://wiki.alpinelinux.org/wiki/Installation#Diskless_Mode
Saqué la tarjeta y pasé esa tarjeta y la siguiente Pi a usar SSD por USB. Me dio algo de miedo. Aun así, como dije antes, también tengo una Pi funcionando como servidor Cups durante años con micro SD sin problemas
Mis dos RPi arrancan y funcionan desde USB, y llevan años funcionando bien
Desde 2017 tengo dos Pi funcionando casi continuamente con las mismas tarjetas SD. Hubo unos 2 o 3 cortes de luz.
Uno es un servidor DNS/de impresión, y el otro es Kodi, con los medios en un NFS externo. Lo único que hice fue desactivar todos los logs, y nunca tuve problemas.
Ambos usan tarjetas SanDisk de 2 GB. Recuerdo vagamente haber pensado de forma ingenua algo como “menos espacio → menor densidad de bits → mejor confiabilidad”.
log2ram(github/azlux/log2ram) y estoy conforme con el resultado.Monta un disco RAM en
/vary solo de vez en cuando copia los logs del disco RAM a la tarjeta SD. Gracias a eso puedo ver todos los logs sin castigar demasiado la tarjeta SD.Está encendida la mayor parte del tiempo, aunque de vez en cuando apago por accidente la fuente de alimentación USB conectada. Es una fuente pequeña de 5 puertos, casi de la misma edad, y en mi configuración el botón de encendido se presiona con demasiada facilidad.
Básicamente monté todos los logs y las páginas web en tmpfs; la DB está en la tarjeta SD y se escribe cada 5 minutos.
Pasó por varias instalaciones, pero ahora es un servidor DNS de respaldo. Al mirar el sistema de archivos, veo que se usa como Pi-hole desde 2018 y, salvo algunos reinicios y mudanzas, básicamente funciona 24/7.
No escribe nada en la SD; todo va a RAM en
/dev/shm. Si Pi-hole se cae, cosa que rara vez pasa, basta con volver a descargar las listas; de todos modos se descargan todos los días.Más adelante también empecé a usarlas como DNS local y nodos de Tailscale. A veces pasaron meses sin reiniciarse, y el mayor tiempo de actividad fue de unos 11 meses. Fueron muy sólidas. Tenerlas conectadas a un UPS sin duda ayuda.
Se dijo que “mantener una Raspberry Pi en línea sin intervención durante semanas, meses o años es en cierta medida un arte”, pero yo arranco un kernel de NetBSD con sistema de archivos integrado.
Por ejemplo, uso el kernel INSTALL o un kernel personalizado. Después del arranque, se puede retirar la tarjeta SD y, opcionalmente, hacer
chroota un almacenamiento conectado.Así funciona durante semanas, meses o años. No he tenido los problemas que menciona el autor del blog.
El único problema que encontré está del lado del conector de alimentación cuando se usa una carcasa. Por ejemplo, con un cable de reemplazo la conexión puede quedar débil. Tal vez en las Pi más recientes haya mejorado.
Pero se podría decir que la mayoría de las computadoras son parecidas. Los cables y conectores suelen ser piezas débiles y baratas. Si se corta la alimentación por algún movimiento, la Pi se reinicia automáticamente.