Conteúdo em cache na RAM ao gravar em disco - Linux

0

Estou enfrentando esse problema desde que comecei a usar o Linux Distros. Ao copiar / mover graficamente ou com cp um / muitos conteúdo grande (qualquer coisa como arquivo de texto grande, arquivo tar.gz, arquivo iso, filmes) alguma parte do conteúdo é gravada em disco, alguma parte armazenada em cache na memória (RAM ). Durante o tempo de cópia, a quantidade de memória compartilhada e armazenada em cache aumentou drasticamente (verificada com free -m ).

Após algum tempo, o gerenciador de arquivos (como o Dolphin, PCManFM) ou cp mostra que a cópia foi concluída, mas os dados realmente não foram gravados no disco até que eu execute sync

Acho que isso não é um problema de hardware.

  • Verificados com muitos discos rígidos internos e externos, unidades flash USB de várias marcas, mas todos com o mesmo resultado.

    • Nenhum problema de APM do disco rígido, eu sempre desabilito o gerenciamento de energia do disco rígido.

    • O problema é o mesmo com o dd e o cat, como dd if=live.iso of=/dev/sdb .

    • Não é um problema específico da distribuição, Chegou com o Debian, Fedora, Ubuntu, Slax, etc.

    • Não verificado com outros sistemas operacionais UNIX, se alguém tiver / teve o mesmo problema com o FreeBSD, o OpenBSD, etc., por favor me avise.

Então, qual é o problema e como resolvê-lo?

    
por Arnab 20.06.2015 / 07:24

2 respostas

1

Como comentei (e por óbvias razões de desempenho), o kernel está usando um cache de páginas . Então isso é uma característica, não um problema. Veja link para mais.

Você poderia (mas eu não recomendo fazer isso) usando algumas opções de mount (para desativar ou diminuir o uso do cache de páginas), e você precisa umount de qualquer dispositivo (por exemplo, uma chave USB ) antes de desconectar ou removê-lo. Então o kernel iria liberar todos os dados antes de desmontar.

Você também pode fazer um sync .

    
por 20.06.2015 / 11:13
2

É por design que o kernel informa aos utilitários de espaço de usuário que uma operação de arquivo foi concluída com êxito enquanto os caches estão em buffer.

Tente editar o /etc/hdparm.conf para desativar o cache de gravação com a opção write_cache = off . No entanto, isso reduzirá o desempenho, e geralmente é preferível usar sync se você quiser garantir que os buffers de gravação sejam liberados para o disco.

    
por 20.06.2015 / 07:34