Estoy desarrollando una aplicación en una placa integrada de Linux (ejecuta Debian), por ejemplo, Raspberry Pi, Beagle Board / Bone u olimex. Los tableros funcionan en un entorno en el que la electricidad se corta inesperadamente (es muy complicado colocar PSU, etc.) y sucedería todos los días un par de veces. Me pregunto si los cortes de energía inesperados causarían un bloqueo / problema en el sistema operativo Linux. Si es algo de lo que debería preocuparme, ¿qué sugeriría para evitar los daños en el sistema operativo contra los cortes de energía inesperados?
PD. La aplicación necesita escribir algunos datos en el medio de almacenamiento (tarjeta SD), creo que no sería adecuado montarlo como de solo lectura.
linux
debian
operating-systems
power-supply
embedded-linux
Penetración
fuente
fuente
Respuestas:
Los cortes de energía inesperados pueden causar la corrupción de los datos del sistema de archivos; por ejemplo, si un proceso ha comenzado a escribir en un archivo, pero aún no ha terminado de escribirlo, el archivo puede terminar solo a la mitad. Ahora imagine si el corte de energía ocurre cuando está a la mitad de una actualización del kernel ...
Como escribió l0b0, el uso de un sistema de archivos de registro diario ayudará, ya que podrá realizar un seguimiento de lo que realmente se ha hecho. Además de la información de Wikipedia que enlazó l0b0, también puede estar interesado en /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure también .
Usted, como programador, obviamente debe considerar cuidadosamente cómo manejar la escritura en archivos para que se convierta en un proceso atómico (es decir, está completamente hecho o no está hecho en absoluto, pero nunca a la mitad). Es un tema bastante complejo.
fuente
Para ayudar a minimizar la posibilidad de corrupción del sistema operativo, probablemente sea mejor tener particiones separadas de "sistema" y "datos" en la tarjeta SD. De esa manera, puede montar la partición "sistema" de solo lectura y usar un FS altamente resistente en la partición "datos".
Además, la mayoría de esas placas tienen requisitos de energía muy bajos, por lo que es posible una batería de respaldo. La placa del "piloto de LiPo" para Raspberry Pi se puede utilizar como UPS básico para proporcionar un apagado limpio en caso de pérdida de energía.
fuente
Esto dependería de
Considere, por ejemplo, una aplicación que procesa un archivo y escribe los resultados a medida que se calculan (una línea de salida por línea de entrada) en otro archivo. Si se corta la alimentación durante el procesamiento, y la misma aplicación se ejecuta después de reiniciar, no puede simplemente reiniciar el procesamiento desde el inicio del archivo de entrada; eso significaría que el archivo de salida contendrá información duplicada.
Podría ser muy difícil decir algo definitivo sobre un sistema complejo hipotético, pero la mayoría del software estable de Linux parece ser capaz de manejar los bloqueos bastante bien.
fuente
Dado que nadie mencionó ningún sistema de archivos específico: los sistemas de archivos más modernos (ext3, ext4, ntfs) pueden manejar los bloqueos mucho mejor que los sistemas de archivos más antiguos (ext2, ext, fat32) debido al registro en diario .
Suponiendo que el disco duro no se bloquea y no miente , una falla de energía completa no debería dañar el sistema de archivos. Sin embargo, los archivos individuales que se estaban escribiendo aún pueden estar dañados, por lo que si estaba en medio de la actualización del sistema operativo cuando se produjo el fallo de alimentación, aún es posible desactivar el sistema operativo.
fuente