GNU/Linux >> Tutoriales Linux >  >> Linux

¿Sistema de archivos de tarjeta SD a prueba de corrupción para Linux integrado?

La mejor resistencia contra la corrupción en una sola tarjeta SD la ofrecería BTRFS en RAID1 modo con fregado automático cada período de tiempo predefinido.

Los beneficios:

  1. retención de la capacidad de RW en el sistema de archivos
  2. sistema de archivos moderno y completo con opciones muy útiles para un RPi, como compresión transparente e instantáneas
  3. diseñado teniendo en cuenta la memoria flash (entre otras cosas)

Aquí se explica cómo hacerlo:

Ejecuto mi RaspberryPi en ArchARM Linux y mi tarjeta está en el lector SD, así que modifique esas instrucciones en consecuencia para otras distribuciones e interfaces /dev.

Aquí hay un diseño de partición de ejemplo:

/dev/mmcblk0p1: fat32 boot partition
/dev/mmcblk0p2: to be used as btrfs partition
/dev/mmcblk0p3: to be used as btrfs partition (mirrored with the above)
/dev/mmcblk0p4 (optional): swap

Para obtener btrfs en RAID1, crea el sistema de archivos de la siguiente manera:

mkfs.btrfs -m raid1 -d raid1 /dev/mmcblk0p2 /dev/mmcblk0p3

Entonces tu rsync -aAXv a su sistema previamente respaldado.

Para que arranque desde BTRFS en raid1, debe modificar initramfs . Por lo tanto, debe hacer lo siguiente mientras aún tiene su sistema ejecutándose en su antiguo sistema de archivos.

Raspberry normalmente no usa mkinitcpio, por lo que debe instalarlo. Luego, debe agregar "btrfs" a la matriz de MÓDULOS en mkinitcpio.conf y recrear initramfs con

mkinitcpio -g /boot/initrd -k YOUR_KERNEL_VERSION

Para saber qué escribir en lugar de YOUR_KERNEL_VERSION, ejecute

ls /lib/modules

Si actualiza el kernel, DEBE volver a crear initramfs ANTES de reiniciar.

Luego, debe modificar los archivos de arranque de RPi.

En cmdline.txt, debe tener

root=/dev/mmcblk0p2 initrd=0x01f00000 rootfstype=btrfs

y en config.txt, debe agregar

initramfs initrd 0x01f00000

Una vez que haya hecho todo eso y haya iniciado con éxito su sistema btrfs RAID1, lo único que queda es configurar la limpieza periódica (cada 3-7 días) ya sea con systemd timer (preferido) o cron (dcron) así:

btrfs scrub start /

Se ejecutará en su sistema de archivos comparando las sumas de verificación de todos los archivos y corrigiéndolos (reemplazándolos con la copia correcta) si encuentra algún daño.

La combinación de BTRFS RAID1, medio único y Raspberry Pi hace que este material sea bastante arcano. Tomó algo de tiempo y trabajo juntar todas las piezas, pero aquí está.


Iría por otro camino y simplemente usaría un sistema de archivos de solo lectura. Nunca obtengo mi raspberry pi lo suficientemente estable cuando uso un sistema de archivos raíz de lectura y escritura en la tarjeta SD. Puede iniciar su raíz a través de kernel cmdline (ro) o usar un initramfs con piggyback que incluye su sistema completo.

Ambos son posibles de crear con mi sistema de compilación casero OpenADK.(http://www.openadk.org)


Bueno, el almacenamiento flash es más deseable que el almacenamiento magnético, por varias razones, pero para esta aplicación diré principalmente porque no hay partes móviles. Dicho esto, no creo que exista un sistema de archivos 'a prueba de corrupción', pero existen algunos sistemas de archivos robustos (ext4 es uno), así como algunas tácticas para ayudar a mitigar la corrupción.

Disco RAM

Si la imagen del RPi no tiene para cambiar, y parece que no lo hace, si nada intentará (o debería intentar) escribir en el disco, intente usar un sistema de archivos raíz creado para descomprimirse en la RAM. La idea aquí es que tiene un sistema de archivos raíz comprimido en el arranque que se descomprime en la RAM. Todos los cambios ocurren en el disco RAM, por lo que efectivamente no se escribe nada en la tarjeta SD, solo se lee en el arranque. esto debería reducir las lecturas/escrituras en su disco, preservando su vida útil. Esto es similar a lo que se hace cuando arranca Linux desde un CD, y es una de las primeras cosas que suceden cuando arranca Linux.


Linux
  1. 4 herramientas para construir sistemas Linux embebidos

  2. Use 'pushd' y 'popd' para la navegación eficiente del sistema de archivos en Linux

  3. Linux:¿habilitar Iommu en el kernel para el paso de tarjetas gráficas?

  4. Cómo ajustar el sistema de archivos Btrfs para un mejor rendimiento

  5. ¿Cómo monitorear la incursión del sistema de archivos BTRFS en busca de errores?

5 aplicaciones de productividad para Linux

Una introducción a bpftrace para Linux

Elegir una impresora para Linux

Una introducción rápida al sistema de archivos de Linux para usuarios de Windows.

Zorin OS para principiantes de Linux

Los 15 mejores gestores de arranque de Linux para el hogar y sistemas integrados