Logotipo de frambuesa

Raspberry Pi: una solución más resistente File Sistema

Raspberry Pi: Haciendo una Raspberry Pi más resilienteFile-Sistema-producto

Alcance del documento

Este documento se aplica a los siguientes productos Raspberry Pi:

Pi 0 Pi 1 Pi 2 Pi 3 Pi 4 Pi 400 CM1 CM3 CM4 CM 5 Pico
0 W H A B A B B Todo Todo Todo Todo Todo Todo Todo
* * * * * * * * * * * * * *  

 

Introducción

Los dispositivos Raspberry Pi Ltd se utilizan frecuentemente como dispositivos de almacenamiento y monitorización de datos, a menudo en lugares donde pueden producirse cortes de energía repentinos. Como con cualquier dispositivo informático, las interrupciones de energía pueden causar daños en el almacenamiento. Este informe técnico ofrece algunas opciones para prevenir la corrupción de datos en estas y otras circunstancias mediante la selección de las opciones adecuadas. file Sistemas y configuraciones para garantizar la integridad de los datos. Este informe técnico asume que la Raspberry Pi ejecuta el sistema operativo (SO) Raspberry Pi (Linux) y está completamente actualizada con el firmware y los kernels más recientes.

¿Qué es la corrupción de datos y por qué ocurre?
La corrupción de datos se refiere a cambios imprevistos en los datos informáticos que ocurren durante la escritura, la lectura, el almacenamiento, la transmisión o el procesamiento. En este documento, nos referimos únicamente al almacenamiento, no a la transmisión o el procesamiento. La corrupción puede ocurrir cuando un proceso de escritura se interrumpe antes de completarse, impidiendo que se complete, por ejemplo.ampSi se corta la alimentación. En este punto, conviene presentar brevemente cómo el sistema operativo Linux (y, por extensión, el sistema operativo Raspberry Pi) escribe datos en el almacenamiento. Linux suele utilizar cachés de escritura para almacenar los datos que se van a escribir en el almacenamiento. Estas cachés almacenan temporalmente los datos en la memoria de acceso aleatorio (RAM) hasta que se alcanza un límite predefinido, momento en el cual todas las escrituras pendientes en el medio de almacenamiento se realizan en una sola transacción. Estos límites predefinidos pueden estar relacionados con el tiempo o el tamaño. Por ejemplo,ampEs decir, los datos pueden almacenarse en caché y escribirse en el almacenamiento solo cada cinco segundos, o solo cuando se ha acumulado cierta cantidad de datos. Estos esquemas se utilizan para mejorar el rendimiento: escribir una gran cantidad de datos de una sola vez es más rápido que escribir muchos fragmentos pequeños.

Sin embargo, si se pierde la alimentación entre el almacenamiento de los datos en la caché y su escritura, dichos datos se pierden. Otros posibles problemas surgen más adelante en el proceso de escritura, durante la escritura física de los datos en el medio de almacenamiento. Una vez que un componente de hardware (por ejemplo,ampAunque se le indica a la interfaz de la tarjeta Secure Digital (SD) que escriba datos, el almacenamiento físico de estos aún requiere un tiempo finito. De nuevo, si se produce un corte de energía durante ese breve periodo, es posible que los datos que se están escribiendo se corrompan. Al apagar un sistema informático, incluyendo la Raspberry Pi, se recomienda usar la opción de apagado. Esto garantizará que se escriban todos los datos almacenados en caché y que el hardware haya tenido tiempo de escribirlos en el medio de almacenamiento. Las tarjetas SD que utilizan la mayoría de los dispositivos de la gama Raspberry Pi son excelentes como reemplazos económicos de discos duros, pero son susceptibles a fallar con el tiempo, dependiendo de cómo se usen. La memoria flash de las tarjetas SD tiene una vida útil limitada, y a medida que las tarjetas se acercan a ese límite, pueden volverse poco fiables. La mayoría de las tarjetas SD utilizan un procedimiento llamado nivelación de desgaste para garantizar su máxima duración, pero al final pueden fallar. Esto puede durar desde meses hasta años, dependiendo de la cantidad de datos que se hayan escrito o (lo que es más importante) borrado de la tarjeta. Esta vida útil puede variar considerablemente entre tarjetas. La falla de la tarjeta SD generalmente se indica mediante un error aleatorio. file Corrupciones a medida que partes de la tarjeta SD se vuelven inutilizables.

Existen otras maneras de corromper los datos, como, por ejemplo, un medio de almacenamiento defectuoso, errores en el software de escritura de almacenamiento (controladores) o errores en las propias aplicaciones. A efectos de este informe técnico, cualquier proceso que pueda provocar una pérdida de datos se define como un evento de corrupción.

¿Qué puede provocar una operación de escritura?
La mayoría de las aplicaciones realizan algún tipo de escritura en el almacenamiento, por ejemploampinformación de configuración, actualizaciones de bases de datos y similares. Algunos de estos fileLos s pueden incluso ser temporales, es decir, solo se usan mientras el programa se ejecuta y no requieren mantenimiento durante un ciclo de encendido; sin embargo, aún generan escrituras en el medio de almacenamiento. Incluso si su aplicación no escribe datos, Linux escribirá constantemente en segundo plano en el almacenamiento, principalmente información de registro.

Soluciones de hardware

Aunque no se trata exclusivamente de este informe técnico, cabe mencionar que prevenir cortes de energía inesperados es una medida común y bien entendida para mitigar la pérdida de datos. Dispositivos como los sistemas de alimentación ininterrumpida (SAI) garantizan un suministro de energía estable y, si se produce un corte de energía en el SAI, mientras funciona con batería, pueden avisar al sistema informático de la inminente pérdida de energía para que el apagado se realice correctamente antes de que se agote la fuente de alimentación de respaldo. Dado que las tarjetas SD tienen una vida útil limitada, puede ser útil contar con un sistema de reemplazo que garantice su reemplazo antes de que lleguen al final de su vida útil.

Robusto file sistemas

Hay varias maneras de proteger un dispositivo Raspberry Pi contra eventos de corrupción. Su capacidad para prevenir la corrupción varía, y cada acción reduce la probabilidad de que ocurra.

  • Reduciendo escrituras
    Simplemente reducir la cantidad de escritura que realizan sus aplicaciones y el sistema operativo Linux puede tener un efecto beneficioso. Si registra muchos registros, aumenta la probabilidad de que se produzcan escrituras durante un evento de corrupción. Disminuir los registros en su aplicación depende del usuario final, pero en Linux también se puede reducir. Esto es especialmente relevante si utiliza almacenamiento basado en flash (p. ej., eMMC, tarjetas SD) debido a su ciclo de vida de escritura limitado.
  • Cambiar los tiempos de confirmación
    El tiempo de compromiso para un file El sistema es el tiempo que almacena los datos en caché antes de copiarlos por completo al almacenamiento. Aumentar este tiempo mejora el rendimiento al agrupar muchas escrituras, pero puede provocar la pérdida de datos si se produce un evento de corrupción antes de escribirlos. Reducir el tiempo de confirmación reducirá la probabilidad de que un evento de corrupción provoque la pérdida de datos, aunque no la previene por completo.
    Para cambiar el tiempo de confirmación para el EXT4 principal file sistema en Raspberry Pi OS, debe editar el archivo \etc\fstab file que define cómo file Los sistemas se montan al iniciar.
  • $sudo nano /etc/fstab

Agregue lo siguiente a la entrada EXT4 para la raíz file sistema:

  • confirmar=

Por lo tanto, fstab podría verse así, con un tiempo de confirmación de tres segundos. El tiempo de confirmación predeterminado será de cinco segundos si no se configura específicamente.

Raspberry Pi: Haciendo una Raspberry Pi más resilienteFile-Sistema-

 

Temporario file sistemas

Si una aplicación requiere temporal file almacenamiento, es decir, datos que solo se usan mientras la aplicación se está ejecutando y no es necesario guardarlos durante un apagado, entonces una buena opción para evitar escrituras físicas en el almacenamiento es usar un almacenamiento temporal. file sistema, tmpfs. Porque estos file Los sistemas se basan en RAM (en realidad, en memoria virtual), cualquier dato escrito en un tmpfs nunca se escribe en el almacenamiento físico y, por lo tanto, no afecta la vida útil de la memoria flash y no puede dañarse debido a un evento de corrupción.
Para crear una o más ubicaciones de tmpfs es necesario editar el archivo /etc/fstab file, que controla todos los file sistemas bajo el sistema operativo Raspberry Pi. El siguiente ejemploample reemplaza las ubicaciones basadas en almacenamiento /tmp y /var/log con ubicaciones temporales file Ubicaciones del sistema. El segundo ejemploample, que reemplaza la carpeta de registro estándar, limita el tamaño general de la file sistema a 16 MB.

  • tmpfs /tmp tmpfs valores predeterminados, noatime 0 0
  • tmpfs /var/log tmpfs valores predeterminados, noatime, tamaño=16m 0 0

También existe un script de terceros que ayuda a configurar el registro en RAM, disponible en GitHub. Este script tiene la función adicional de volcar los registros de RAM al disco en un intervalo predefinido.

Raíz de solo lectura file sistemas

La raíz file sistema (rootfs) es el file sistema en la partición del disco en la que se encuentra el directorio raíz, y es el file sistema en el que se basan todos los demás file Los sistemas se montan al arrancar el sistema. En la Raspberry Pi, es / y, por defecto, se encuentra en la tarjeta SD como una partición EXT4 de lectura y escritura. También hay una carpeta de arranque, que se monta como /boot y es una partición FAT de lectura y escritura. Al configurar el sistema de archivos raíz como de solo lectura, se evita cualquier tipo de acceso de escritura, lo que lo hace mucho más resistente a eventos de corrupción. Sin embargo, a menos que se tomen otras medidas, esto significa que no se puede escribir en el archivo. file El sistema en general, por lo que guardar datos de cualquier tipo de su aplicación en el sistema de archivos raíz está deshabilitado. Si necesita almacenar datos de su aplicación pero desea un sistema de archivos raíz de solo lectura, una técnica común es agregar una memoria USB o similar que se dedique exclusivamente a almacenar datos de usuario.

NOTA
Si está utilizando un intercambio file cuando se utiliza una de sólo lectura file Sistema, necesitarás mover el swap file a una partición de lectura/escritura.

Cubrir file sistema

Una superposición file El sistema (overlayfs) combina dos file sistemas, una parte superior file sistema y un inferior file sistema. Cuando un nombre existe en ambos file sistemas, el objeto en la parte superior file El sistema es visible mientras el objeto está en la parte inferior. file El sistema está oculto o, en el caso de los directorios, fusionado con el objeto superior. Raspberry Pi ofrece una opción en raspi-config para habilitar un sistema de archivos superpuesto (overlayfs). Esto hace que el sistema de archivos raíz (inferior) sea de solo lectura y crea un sistema superior basado en RAM. file sistema. Esto da un resultado muy similar al de solo lectura. file Sistema, y ​​todos los cambios del usuario se pierden al reiniciar. Puede habilitar un overlayfs mediante la línea de comandos raspi-config o la aplicación de configuración de Raspberry Pi en el menú Preferencias.

También hay otras implementaciones de overlayfs que pueden sincronizar los cambios requeridos desde la capa superior a la inferior. file sistema según un horario predeterminado. Por ejemploampes decir, puede copiar el contenido de la carpeta de inicio de un usuario de la parte superior a la inferior cada doce horas. Esto limita el proceso de escritura a un espacio de tiempo muy corto, lo que significa que la corrupción es mucho menos probable, pero significa que si se corta la energía antes de la sincronización, se pierden todos los datos generados desde la última. pSLC en módulos de cómputo La memoria eMMC utilizada en los dispositivos Raspberry Pi Compute Module es MLC (celda multinivel), donde cada celda de memoria representa 2 bits. pSLC, o pseudocelda de nivel único, es un tipo de tecnología de memoria flash NAND que se puede habilitar en dispositivos de almacenamiento MLC compatibles, donde cada celda representa solo 1 bit. Está diseñada para proporcionar un equilibrio entre el rendimiento y la resistencia de la flash SLC y la rentabilidad y mayor capacidad de la flash MLC. pSLC tiene una mayor resistencia de escritura que MLC porque escribir datos en las celdas con menos frecuencia reduce el desgaste. Mientras que MLC puede ofrecer alrededor de 3,000 a 10,000 XNUMX ciclos de escritura, pSLC puede lograr números significativamente más altos, acercándose a los niveles de resistencia de SLC. Esta mayor resistencia se traduce en una vida útil más larga para los dispositivos que utilizan tecnología pSLC en comparación con los que utilizan MLC estándar.

La memoria MLC es más rentable que la memoria SLC, pero si bien la pSLC ofrece mejor rendimiento y resistencia que la MLC pura, lo hace a expensas de la capacidad. Un dispositivo MLC configurado para pSLC tendrá la mitad de la capacidad (o menos) que un dispositivo MLC estándar, ya que cada celda almacena solo un bit en lugar de dos o más.

Detalles de implementación

pSLC se implementa en eMMC como un Área de Usuario Mejorada (también conocida como almacenamiento mejorado). La implementación real del Área de Usuario Mejorada no está definida en el estándar MMC, pero suele ser pSLC.

  • El Área de usuario mejorada es un concepto, mientras que pSLC es una implementación.
  • pSLC es una forma de implementar el Área de usuario mejorada.
  • Al momento de escribir este artículo, el eMMC utilizado en los módulos de cómputo Raspberry Pi implementa el Área de usuario mejorada mediante pSLC.
  • No es necesario configurar toda el área de usuario eMMC como un Área de usuario mejorada.
  • Programar una región de memoria como Área de Usuario Mejorada es una operación única. Esto significa que no se puede deshacer.

Encendiéndolo
Linux proporciona un conjunto de comandos para manipular las particiones eMMC en el paquete mmc-utils. Instale un sistema operativo Linux estándar en el dispositivo CM e instale las herramientas como se indica a continuación:

  • sudo apt install mmc-utils

Para obtener información sobre el eMMC (este comando se conecta a less ya que hay bastante información para mostrar):

  • sudo mmc extcsd read /dev/mmcblk0 | menos

 ADVERTENCIA
Las siguientes operaciones son únicas: puede ejecutarlas una sola vez y no se pueden deshacer. También debe ejecutarlas antes de usar el módulo de cómputo, ya que borrarán todos los datos. La capacidad de la eMMC se reducirá a la mitad.

El comando para activar pSLC es mmc enh_area_set, que requiere varios parámetros que indican la cantidad de memoria sobre la que se habilitará el pSLC. El siguiente ejemploampUtiliza toda el área. Consulte la ayuda del comando mmc (man mmc) para obtener más información sobre cómo usar un subconjunto del eMMC.

Raspberry Pi: Haciendo una Raspberry Pi más resilienteFile-Sistema-

Después de reiniciar el dispositivo, DEBERÁ reinstalar el sistema operativo, ya que habilitar pSLC borrará el contenido del eMMC.

El software Raspberry Pi CM Provisioner ofrece una opción para configurar pSLC durante el proceso de aprovisionamiento. Esta opción se encuentra en GitHub. https://github.com/raspberrypi/cmprovision.

  • Fuera del dispositivo file sistemas / arranque de red
    La Raspberry Pi puede arrancar a través de una conexión de red, por ejemploample usando la Red File Sistema (NFS). Esto significa que una vez que el dispositivo ha completado su primer...tage boot, en lugar de cargar su kernel y root file El sistema se carga desde la tarjeta SD desde un servidor de red. Una vez en ejecución, todos... file Las operaciones actúan en el servidor y no en la tarjeta SD local, que no desempeña ningún otro papel en el proceso.
  • Soluciones en la nube
    Hoy en día, muchas tareas de oficina se realizan en el navegador, y todos los datos se almacenan en línea en la nube. Mantener el almacenamiento de datos fuera de la tarjeta SD puede mejorar la fiabilidad, a costa de la necesidad de una conexión a internet permanente y de los posibles cargos de los proveedores de la nube. El usuario puede usar una instalación completa del sistema operativo Raspberry Pi, con el navegador optimizado para Raspberry Pi, para acceder a cualquiera de los servicios en la nube de proveedores como Google, Microsoft, Amazon, etc. Una alternativa son los proveedores de clientes ligeros, que sustituyen el sistema operativo Raspberry Pi por un sistema operativo/aplicación que se ejecuta desde recursos almacenados en un servidor central en lugar de la tarjeta SD. Los clientes ligeros funcionan conectándose remotamente a un entorno informático basado en servidor donde se almacenan la mayoría de las aplicaciones, los datos confidenciales y la memoria.

Conclusiones

Si se siguen los procedimientos de apagado correctos, el almacenamiento en la tarjeta SD de la Raspberry Pi es extremadamente fiable. Esto funciona bien en entornos domésticos o de oficina, donde el apagado se puede controlar. Sin embargo, al usar dispositivos Raspberry Pi en entornos industriales o en zonas con suministro de energía inestable, es necesario tomar precauciones adicionales para mejorar la fiabilidad.

En resumen, las opciones para mejorar la confiabilidad se pueden enumerar de la siguiente manera:

  • Utilice una tarjeta SD conocida y confiable.
  • Reducir las escrituras utilizando tiempos de confirmación más largos y utilizando archivos temporales. file sistemas, utilizando un overlayfs, o similar.
  • Utilice almacenamiento fuera del dispositivo, como arranque de red o almacenamiento en la nube.
  • Implementar un régimen para reemplazar las tarjetas SD antes de que lleguen al final de su vida útil.
  • Utilice un SAI.

Raspberry Pi es una marca comercial de Raspberry Pi Ltd.
frambuesa pi ltd

Colofón
© 2020-2023 Raspberry Pi Ltd (anteriormente Raspberry Pi (Trading) Ltd.)
Esta documentación está bajo una licencia Creative Commons Atribución-SinDerivadas 4.0 Internacional (CC BY-ND).

  • fecha de construcción: 2024-06-25
  • versión de compilación: githash: 3e4dad9-clean

Aviso legal
LOS DATOS TÉCNICOS Y DE CONFIABILIDAD DE LOS PRODUCTOS DE RASPBERRY PI (INCLUYENDO LAS HOJAS DE DATOS) SEGÚN LAS MODIFICACIONES PERIODALES ("RECURSOS") SON PROPORCIONADOS POR RASPBERRY PI LTD ("RPL") "TAL CUAL" Y CUALQUIER GARANTÍA EXPLÍCITA O IMPLÍCITA, INCLUYENDO, ENTRE OTRAS SE RENUNCIA A LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD E IDONEIDAD PARA UN FIN DETERMINADO. EN LA MEDIDA MÁXIMA PERMITIDA POR LA LEY APLICABLE, EN NINGÚN CASO RPL SERÁ RESPONSABLE DE CUALQUIER DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, ENTRE OTROS, ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTOS; PÉRDIDA DE USO, PÉRDIDA DE DATOS , O BENEFICIOS O INTERRUPCIÓN DEL NEGOCIO) CUALQUIERA QUE SEA CAUSADO Y SOBRE CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA POR CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUYENDO NEGLIGENCIA O DE OTRO TIPO) QUE SURJA DE CUALQUIER MANERA DEL USO DE LOS RECURSOS, INCLUSO SI SE HA ADVERTIDO DE LA POSIBILIDAD DE TALES DAÑOS.

RPL se reserva el derecho a realizar mejoras, correcciones o cualquier otra modificación a los RECURSOS o a cualquier producto descrito en ellos, en cualquier momento y sin previo aviso. Los RECURSOS están destinados a usuarios expertos con conocimientos de diseño adecuados. Los usuarios son los únicos responsables de la selección y el uso de los RECURSOS, así como de cualquier aplicación de los productos descritos en ellos. El usuario se compromete a indemnizar y eximir de responsabilidad a RPL por cualquier responsabilidad, coste, daño u otra pérdida derivada del uso de los RECURSOS. RPL autoriza a los usuarios a utilizar los RECURSOS únicamente en conjunción con los productos Raspberry Pi. Queda prohibido cualquier otro uso de los RECURSOS. No se concede ninguna licencia sobre ningún otro derecho de propiedad intelectual de RPL ni de terceros.

ACTIVIDADES DE ALTO RIESGO. Los productos Raspberry Pi no están diseñados, fabricados ni destinados a utilizarse en entornos peligrosos que requieran un rendimiento a prueba de fallos, como en la operación de instalaciones nucleares, sistemas de navegación o comunicación de aeronaves, control de tráfico aéreo, sistemas de armas o aplicaciones críticas para la seguridad (incluidos sistemas de soporte vital y otros dispositivos médicos), en los que un fallo de los productos podría provocar directamente la muerte, lesiones personales o daños físicos o ambientales graves ("Actividades de Alto Riesgo"). RPL renuncia específicamente a cualquier garantía expresa o implícita de idoneidad para Actividades de Alto Riesgo y no acepta ninguna responsabilidad por el uso o la inclusión de productos Raspberry Pi en Actividades de Alto Riesgo. Los productos Raspberry Pi se proporcionan sujetos a los Términos Estándar de RPL. La provisión de los RECURSOS por parte de RPL no amplía ni modifica de otro modo los Términos Estándar de RPL, incluidas, entre otras, las exenciones de responsabilidad y garantías expresadas en ellos.

Preguntas frecuentes

  • P: ¿Qué productos Raspberry Pi son compatibles con este documento?
    R: Este documento se aplica a varios productos Raspberry Pi, incluidos Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 y Pico.
  • P: ¿Cómo puedo reducir las posibilidades de corrupción de datos en mi dispositivo Raspberry Pi?
    R: Puede reducir la corrupción de datos al minimizar las operaciones de escritura, especialmente las actividades de registro, y ajustar los tiempos de confirmación para las file sistema tal como se describe en este documento.

Documentos / Recursos

Raspberry Pi: una solución más resistente File Sistema [pdf] Guía del usuario
Pi 0, Pi 1, Haciendo una sociedad más resiliente File Sistema, más resiliente File Sistema resiliente File Sistema, File Sistema

Referencias

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *