Meu dispositivo linux incorporado usa um cartão SD para salvar certos dados de diagnóstico, copiosos demais para o flash interno.
O problema é que, se o dispositivo for desligado inesperadamente, o sistema de arquivos (FAT32) no cartão está corrompido.
Não há como evitar falhas de energia inesperadas ou desligá-lo pelo usuário dessa maneira, e o dispositivo deve ser relativamente livre de manutenção. Pior ainda, os dados são gravados continuamente, de modo que as corrupções são muito frequentes, e o Linux, ao detectar FS defeituoso, o remonta apenas para leitura silenciosamente.
Quais métodos você sugeriria para mitigar isso? A execução do fsck.vfat automaticamente na inicialização é suficiente?
Mais algumas informações:
- O cartão não deve ser considerado removível pelo usuário. É para ser pensado como disco interno. Quaisquer dados armazenados nele estarão acessíveis para download na rede ou em uma unidade USB, e o sistema limpa automaticamente as entradas mais antigas. Isso significa que não precisa ser legível no seu PC comum.
- O sistema atualmente suporta FAT, yaffs e jffs2. É possível adicionar outros sistemas de arquivos ao kernel, mas se existirem outros caminhos, preferimos primeiro.
- A gravação pode ser suspensa sob demanda, mesmo por vários minutos, sem perda de dados.
- perda parcial de dados ou corrupção menor é aceitável. A parada completa do log não é.
- os eventos de desligamento são completamente imprevisíveis na maioria das vezes.
- o sistema está sendo executado em ARM9, 200MHZ, 64MB de RAM, 32MB de flash interno e consome a maior parte da energia da CPU em sua função principal. Leve isso em consideração ao pensar em soluções sofisticadas e pesadas em recursos.