Estou desenvolvendo um aplicativo em uma placa embarcada Linux (executa Debian), por exemplo, Raspberry Pi, Beagle Board / Bone ou olimex. As placas funcionam em um ambiente em que a eletricidade é cortada inesperadamente (é muito complicado colocar PSU etc.) e isso acontecia todos os dias duas vezes. Gostaria de saber se os cortes de energia inesperados causariam falha / problema no sistema operacional Linux? Se é algo que eu deveria me preocupar, o que você sugeriria para evitar danos no sistema operacional contra cortes de energia inesperados?
PS. O aplicativo precisa gravar alguns dados no meio de armazenamento (cartão SD), acho que não seria adequado montá-lo como somente leitura.
Respostas:
Cortes de energia inesperados podem causar corrupção nos dados do sistema de arquivos - por exemplo, se um processo começou a gravar em um arquivo, mas ainda não terminou de escrevê-lo, o arquivo pode terminar apenas pela metade. Agora imagine se o corte de energia acontecer quando você estiver no meio de uma atualização do kernel ...
Como o l0b0 escreveu, o uso de um sistema de arquivos com registro em diário ajudará, pois será capaz de acompanhar o que realmente foi feito. Além às informações wikipedia que l0b0 ligada, você pode estar interessado em /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure bem .
Você, como programador, obviamente precisa considerar cuidadosamente como lidar com a gravação em arquivos, para que se torne um processo atômico (ou seja, totalmente feito ou não, mas nunca pela metade). É uma questão bastante complexa.
fonte
Para ajudar a minimizar a possibilidade de corrupção do sistema operacional, provavelmente é melhor ter partições "sistema" e "dados" separadas no cartão SD. Dessa forma, você pode montar a partição "system" somente leitura e usar um FS altamente resiliente na partição "data".
Além disso, a maioria dessas placas possui requisitos de energia muito baixos, portanto, é possível um backup de bateria. A placa "LiPo rider" do Raspberry Pi pode ser usada como um no-break básico para fornecer um desligamento limpo em caso de perda de energia.
fonte
Isso dependeria de
Considere, por exemplo, um aplicativo que processa um arquivo e grava os resultados à medida que são computados (uma linha de saída por linha de entrada) em outro arquivo. Se a energia for cortada durante o processamento e o mesmo aplicativo for executado após a reinicialização, ele não poderá simplesmente reiniciar o processamento desde o início do arquivo de entrada - isso significaria que o arquivo de saída conteria informações duplicadas.
Pode ser muito difícil dizer algo definitivo sobre um sistema complexo hipotético, mas o software Linux mais estável parece capaz de lidar com falhas de maneira bastante agradável.
fonte
Como ninguém mencionou nenhum sistema de arquivos específico: os sistemas de arquivos mais modernos (ext3, ext4, ntfs) são capazes de lidar com falhas muito melhor do que os sistemas de arquivos mais antigos (ext2, ext, fat32) devido ao registro no diário .
Supondo que o disco rígido não trava e não mente , uma falha de energia completa não deve corromper o sistema de arquivos. Arquivos individuais que estavam sendo gravados ainda podem estar corrompidos; portanto, se você estava no meio da atualização do sistema operacional quando ocorreu a falha de energia, ainda é possível desativar o sistema operacional.
fonte