É perigoso remontar uma partição rw / ro com freqüência?

1

Estou desenvolvendo um sistema Linux embutido rodando em um cartão SD.

Para proteger o SD contra danos usei um sistema de arquivos raiz somente de leitura, bem como uma partição extra onde eu montei / home, também no modo somente leitura. Está em / home onde o programa é executado e realiza operações de leitura e gravação.

Quando o software precisa gravar alguns dados no disco, ele ecoa esses dois comandos e salva os dados entre eles:

mount -o remount,rw /dev/mmcblk0p3 /home
mount -o remount,ro /dev/mmcblk0p3 /home

Estou fazendo isso para garantir que a prevenção máxima contra a corrupção se a energia cair. Mas não sei se a cura pode ser pior que a doença.

É perigoso para o sistema de arquivos ou o cartão SD realizar uma remontagem de partição tão frequente sempre que eu quiser salvar alguns dados?

Outra questão. É perigoso remontar uma partição onde um programa está sendo executado? Quero dizer, não escrevendo dados no disco, apenas rodando com as próprias variáveis do programa.

    
por fmoralesalcaide 05.03.2014 / 12:13

3 respostas

1

Para proteger contra corrupção, basta chamar sync para confirmar todas as alterações no disco (quando necessário). Além disso, os sistemas de arquivos com journalled são bastante resilientes e você realmente não precisa fazer isso.

Caso contrário, isso não é perigoso (sincroniza e altera os sinalizadores dentro do kernel, não faz muito para o drive em si), mas é irritante fazer o tempo todo e não é realmente necessário.

    
por 05.03.2014 / 12:20
1

A própria remontagem deve ser razoavelmente segura, embora, é claro, seja um caminho menos testado no kernel do que, digamos, write(2) . Você pode estar causando algumas gravações extras (para marcar o sistema de arquivos sujo / limpo, etc.) Você pode usar o recurso de despejo de bloco ( /proc/sys/vm/block_dump ) para descobrir se está causando gravações extras.

Também é possível, se você estiver fazendo muito isso, que você esteja forçando gravações menores do que ocorreria (por exemplo, de maneira alguma uma gravação pode ser combinada em dois ciclos rw-ro). Isso pode significar que você causa mais erros no flash. (Claro, se você está fazendo isso com frequência, então os fs dificilmente serão usados, e isso é inútil).

Isso pressupõe que você precisa se preocupar com a corrupção dessas gravações - se o seu controlador de flash manuseia powerfail durante o uso do nivelamento (etc.) corretamente, então você não precisa fazer isso. Um sistema de arquivos com diário evitará danos, desde que você use a semântica de atualização que ele suporta. Claro, o journaling amplifica as gravações.

    
por 05.03.2014 / 13:02
1

Eu acho que você está pensando demais. Eu tenho usado o Linux há 20 anos e sistemas Unix para mais do que isso. Eu só vi um ou dois sistemas de arquivos corrompidos nesse tempo (e eu sou um administrador do UNIX pelo comércio, então eu lido com dezenas de sistemas por dia).

Agora, se você está falando de segurança, há algo nisso.

Ter a maior parte do sistema somente leitura é um bom esquema de proteção. No seu cenário, porém, onde você acessa? Você precisa ter uma partição de log gravável disponível.

Criar / somente leitura em casa e forçar o aplicativo a alternar entre somente leitura e gravável realmente parece um excesso e uma sobrecarga.

    
por 05.03.2014 / 19:14