Raspberry Pi y MicroSD: «errores de I/O y como solucionarlos»
Índice
Si estás experimentando errores de Input/Output y mensajes como “RootFS is currently Read Only (R/O) mounted” o símplemente lentitud en Raspberry OS o DietPi, este blog es para ti.
Entrando en contexto
Recientemente, me enfrenté a una serie de dolores de cabeza con mi nueva Raspberry Pi Zero 2W. Recién sacada de la caja, me dispuse a probarla con una microSD 8Gb Sandisk Ultra que tenía por casa, es una clase 10, estará bien…, pensaba yo ingenuo.
Raspberry Pi OS Lite arrancando, tardó bastante, pero bueno, podía ser normal, el primer arranque siempre tarda más, y la Raspberry Pi Zero 2W no es tan potente. Finalmente se instaló y procedí con el primer «apt update».
Aquello no era ni medio normal; tardaba y tardaba… y lo peor vino luego con el apt upgrade.
No podía ser que la Raspberry Pi Zero 2W fuera tan patata lenta…. ¡Pero CPU y memoria estaban estables y al mínimo,! ¿Qué estaba pasando?
Apagué, saqué la microSD y le puse DietPi, a ver si iba mejor. Esta vez ni iba, no llegaba a arrancar. Bueno, no pasa nada, cogí otra tarjeta igual que tenía por ahí, y probé de nuevo a lanzar DietPi; esta vez si parecía que podía acceder y ver el estado de la instalación, hasta que…
El sistema había entrado en modo solo lectura y era imposible hacer nada ya., así que pensé bueno será un bug de DietPi, voy a probar en esta microSD, Raspberry Pi OS Lite… ¿Lo que pasó después?
Tras varias pruebas, en ambos SO, finalmente probé en otra tarjeta Samsung Evo de 32Gb. Había estado corriendo Raspbian en la Raspberry Pi 3 desde hace siete años, no podía salir mal, y efectivamente, pude terminar de instalar, tanto Raspberry Pi OS Lite como DietPi, pero el resultado al hacer apt update, seguía siendo el mismo, extremadamente lento.
¿Por Qué Sucede Esto?
Las tarjetas microSD tienen una vida útil limitada en términos de ciclos de escritura. Cada vez que se escriben datos en la tarjeta, se producen ciclos de escritura/lectura. Con el tiempo, estos ciclos pueden desgastar las celdas de memoria, provocando errores y una disminución en el rendimiento. Es importante evitar tarjetas de mala calidad, pero incluso tarjetas de buena calidad como las que yo tenía, Sandisk Ultra, o Samsung Evo, pueden no estar a la altura, de ejecutar un sistema como Raspberry Pi OS o DietPi, y es lo que vamos a ver a continuación.
Comprobando una microSD antigua
Una utilidad llamada agnostics, nos permitirá comprobar el estado de nuestra microSD. Aparte de ejecutarla desde la GUI podemos ejecutarla desde la consola de la siguiente manera:
sudo apt update sudo apt install agnostics sh /usr/share/agnostics/sdtest.sh
Este es el resultado en la Samsung Evo:
Después de siete años de uso, la microSD estaba pidiendo un cambio también, y este test, es la respuesta también a por qué últimamente parecía lenta la Raspberry Pi 3; aunque todavía se podía trabajar, y no había llegado al nivel de catástrofe al que habían llegado las microSD probadas anteriormente.
En uno de los intentos en una de las tarjetas «malditas» llegué a ver 1 IOPS de escritura en esta prueba.
Cómo Elegir la MicroSD Adecuada
Si tú también tienes problemas de lentitud y te coinciden estos FAIL con IOPS tan bajos, quizás cambiar la microSD podría ser una gran idea. Si lo dejas pasar, en el futuro puede que en lugar de lentitud experimentes un error I/O.
Lo que he aprendido después de todo, es que en estos momentos lo mejor es comprar tarjetas de Clase A1: Las tarjetas Clase A1 garantizan al menos 1500 IOPS (Operaciones de Entrada/Salida por Segundo) para lecturas y 500 IOPS para escrituras, lo que proporciona un rendimiento básico adecuado para muchas aplicaciones.
¿Y las A2 no son mejores?
Aunque las tarjetas A2 ofrecen un rendimiento superior, pueden no ser totalmente compatibles con todos los dispositivos, y sin esa compatibilidad, ser más lentas que las A1. Por lo que las tarjetas A1 son una opción más segura y confiable para la mayoría de los usuarios. Si te da curiosidad el tema puedes echar un vistazo en este hilo:
Por otro lado, las tarjetas microSDXC son generalmente más grandes y rápidas que las microSDHC. Para un rendimiento óptimo, elige tarjetas microSDXC con alta capacidad y velocidad. Las tarjetas UHS-I con velocidad U1 también son recomendables para un rendimiento más rápido y fiable.
Recomendaciones de compra
En base a esto, aquí tienes mis recomendaciones:
- SanDisk 64GB Ultra:
- Esta tarjeta de memoria microSDXC ofrece velocidades de hasta 140 MB/s y cuenta con una Clase A1 para un rendimiento de aplicaciones fiable. Solo cuesta 8€ en estos momentos.
- SanDisk 128GB Ultra:
- Similar a la anterior, pero con mayor capacidad, por 12€ a día de hoy.
- https://amzn.to/3MiVkD5
Al ser microSDXC, vienen formateadas en exfat, pero es igual, no hace falta formatearlas ya que el formato será ext4 tras flasear la imagen ya sea de Raspberry Pi OS Lite como de DietPi, que se encargan además de preparar el boot en fat32.
Pueden parecer un poco grandes para usarlas en una Raspberry, pero son baratas y son las más rápidas. Hay otro modelo de Sandisk ultra, microSDHC de 32GB pero ya da 120 MB/s en lugar de 140 MB/s.
Comprobando la nueva microSD
Tras investigar las opciones que tenía y decantarme por estas Sandisk, volví a probar tanto Raspberry Pi OS Lite como DietPi, y los resultados fueron muy buenos (espectaculares comparados con el infierno de los días anteriores:
Y por supuesto, lo importante; ¡Ahora apt update y apt upgrade terminan en tiempo récord!
Eso sí, me quedo en Raspberry Pi OS Lite, al final me gustó más que DietPi, aunque esto es debate para otro día. (Y además 32bit, mejor que 64bit teniendo tan poca memoria)
Conclusión
No dejes que una microSD defectuosa arruine tu experiencia con Raspberry Pi. Elegir una tarjeta de buena calidad y estar atento a los síntomas de degradación puede ahorrarte muchas horas de frustración. Espero que este blog te haya ayudado a entender mejor los problemas relacionados con las microSD y cómo resolverlos. ¡Buena suerte con tu Raspberry Pi, sea el modelo que sea!