Raspberry Pi: O sistema de arquivos grava arquivos, mas após a reinicialização os dados antigos estão de volta

3

Ok, esse é um problema muito estranho que ocorre em dois sistemas pi de framboesa com seus respectivos cartões de memória SD de 8 GB:

Exemplo simples: Quando escrevo arquivos no disco, parece que os arquivos estão escritos. Eu posso editar um arquivo vim test.dat , inserir texto nele, salvar.
ll irá listar o arquivo.
cat mostrará o conteúdo do arquivo. Após a reinicialização, o arquivo será removido.

Então o que eu acho que está acontecendo é que o ubuntu grava os arquivos no cache de disco do Ubuntu, mas ele não compromete os arquivos para o disco. Os programas do espaço do usuário podem continuar lendo os arquivos e usá-los, mas o cache retorna as listagens de diretório e o conteúdo do arquivo da memória RAM, e não do disco. Porque depois de uma reinicialização, o disco não possui nenhum dos novos dados.

Outro exemplo:

dd if=/dev/zero of=testfile.dat bs=1M count=1000

Cria um arquivo com tamanho de 1 GB. ll lista o arquivo. df -h mostra que 1GB a mais foi usado pelos dados no disco. Mas depois de uma reinicialização, o arquivo desapareceu e o df -h mostra o espaço disponível antigo.

Curiosidade: Eu sei que a velocidade máxima de gravação do cartão SD é de 9MB / s, que é o que recebo quando coloco a imagem de disco no meu computador usando meu laptop. Mas executando este comando dd no cartão SD no framboesa, dd informa a velocidade de gravação como 110MB / seg. Impossível. É por isso que acho que o sistema operacional está apenas escrevendo para a RAM e não se comprometendo com o disco.

Terceiro exemplo: Eu tenho um script que edita um arquivo chamado interfaces e, em seguida, copia-o, como raiz, sobre o arquivo / etc / network / interfaces, para alterar o IP do dispositivo. Então o script é reiniciado.

#!/bin/bash
cp /var/project/scripts/interfaces /etc/network/interfaces
/sbin/reboot

Após a reinicialização, o dispositivo ainda está no endereço IP antigo ... Estranho ...

Quarto exemplo: O framboesa executa um banco de dados percona. Eu tenho uma tabela que contém 186 entradas. Eu trunfo a mesa. Olhe para os dados usando o código php e também usando o webmin - a tabela está vazia como deveria ser. Após a reinicialização, os dados estão de volta. Realmente ... 186 entradas. Isso está me enlouquecendo.

Eu posso estar completamente errado. Alguma idéia?

Eu tenho trabalhado nesta instalação do ubuntu e fazendo backups periódicos clonando a imagem do disco após cada atualização de software principal. Eu tenho notado coisas estranhas (como o IP não mudar depois de executar o meu script), mas eu não percebi esse problema até hoje, parece que todas as imagens de disco clonado eu exibi este problema. Deve ter funcionado bem até certo ponto e então algo deu errado com o ubuntu no pi ...

Pergunta: O que posso fazer para o Ubuntu gravar no cartão SD?

    
por Francois Stark 07.04.2016 / 23:54

1 resposta

2

O que pareceu me ajudar foi usar o comando de sincronização:

sync

Da ajuda:

  

Forçar blocos alterados para o disco, atualize o super bloco.

Ele libera os buffers do sistema de arquivos em outras palavras. No entanto, eu esperaria que quando você faz um bom sudo reboot ao contrário de mim, isso não seria problema e, portanto, a sincronização pode não funcionar para você ..

Eu estava tendo problemas semelhantes com uma instalação chiadora raspbian. Ele possui uma partição ext4 contendo o sistema de arquivos que é somente leitura. E uma pequena partição de leitura / gravação com FAT32 contendo alguns arquivos de configuração. Quando eu mudei um arquivo de configuração e, em seguida, puxei o plugue de energia para reiniciar as alterações não eram persistentes. (fique avisado: sem um Pi só de leitura, puxar a ficha de alimentação não seria uma coisa inteligente para fazer de qualquer forma)

    
por Sebastian 26.08.2016 / 14:59