A perda de energia inesperada pode prejudicar uma instalação do Linux?

22

Estou desenvolvendo uma aplicação em uma placa embutida Linux (roda 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 a PSU, etc.) e isso aconteceria todos os dias algumas vezes. Gostaria de saber se os cortes de energia inesperados causariam pane / problema no sistema operacional Linux? Se é algo que eu deveria me preocupar, o que você sugeriria para evitar os danos no sistema operacional contra os cortes inesperados de energia?

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.

    
por Breakthrough 25.06.2013 / 13:03

4 respostas

14

Reduções de energia inesperadas podem causar danos nos dados do sistema de arquivos - por exemplo, se um processo tiver começado a gravar em um arquivo, mas ainda não tiver terminado de escrevê-lo, o arquivo poderá terminar apenas pela metade. Agora imagine se o corte de energia acontece quando você está no meio de uma atualização do kernel ...

Como l0b0 escreveu, usar um sistema de arquivos com registro no diário ajudará, já que será capaz de rastrear o que realmente foi feito. Além das informações da Wikipedia que l0b0 vinculadas, você pode estar interessado em link também.

Você, obviamente, como programador, precisa considerar cuidadosamente como lidar com a escrita em arquivos para que ela se torne um processo atômico (isto é, seja totalmente feito ou não feito, mas nunca feito pela metade). É uma questão bastante complexa.

    
por 25.06.2013 / 13:20
10

Para ajudar a minimizar a possibilidade de corrupção do sistema operacional, provavelmente é melhor ter partições "de sistema" e "de 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 tem requisitos de energia muito baixos, portanto, é possível um backup de bateria. A placa "LiPo rider" para o Raspberry Pi pode ser usada como um no-break básico para fornecer um desligamento limpo da perda de energia.

    
por 25.06.2013 / 13:55
5

Isso dependeria de

  1. se você está usando um sistema de arquivos com registro no diário e
  2. quão bem os aplicativos podem manipular o processamento interrompido.

Considere, por exemplo, um aplicativo que processa um arquivo e grava os resultados à medida que são calculados (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 a partir do início do arquivo de entrada - isso significaria que o arquivo de saída conteria informações duplicadas.

Poderia ser muito difícil dizer algo definido sobre um sistema complexo hipotético, mas a maioria dos softwares Linux estáveis parece ser capaz de lidar bem com falhas.

    
por 25.06.2013 / 13:16
0

Como ninguém mencionou nenhum sistema de arquivos específico: sistemas de arquivos mais modernos (ext3, ext4, ntfs) são capazes de lidar com falhas muito melhor do que sistemas de arquivos antigos (ext2, ext, fat32) devido a registro no diário .

Supondo que o disco rígido não trave e não minta , 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ê estiver no meio da atualização do sistema operacional quando a falha de energia ocorrer, ainda será possível desativar o sistema operacional.

    
por 25.06.2013 / 18:09