Eu tive problemas semelhantes antes, mas não me lembro de como resolvi isso.
Quando tento copiar algo para o pendrive, com o FAT, ele para no final, às vezes a 100%. E, claro, quando transfiro o cartão de memória para outro lugar, ele não contém o arquivo completo. (arquivo é um filme!)
Eu tentei montar o dispositivo com mount -o flush, mas eu recebo o mesmo problema.
Além disso, eu formatei o pendrive com a nova partição FAT ...
Alguma idéia de que frio eu faço?
ps Eu acredito que não está relacionado ao sistema operacional, que é o Debian, e acredito que lidar com a unidade SSD não a impede.
Respostas:
A razão pela qual isso acontece é que o programa diz "grave esses dados" e o kernel do linux os copia em um buffer de memória na fila para ir para o disco e depois diz "ok, pronto". Então o programa pensa que copiou tudo. Em seguida, o programa fecha o arquivo, mas de repente o kernel o faz esperar enquanto esse buffer é enviado para o disco.
Portanto, infelizmente, o programa não pode dizer quanto tempo levará para liberar o buffer, porque ele não sabe.
Se você quiser experimentar alguns truques para usuários avançados, poderá reduzir o tamanho do buffer usado pelo Linux configurando o parâmetro kernel
vm.dirty_bytes
para algo como15000000
(15 MB). Isso significa que o aplicativo não pode ter mais de 15 MB à frente de seu progresso real. (Você pode alterar os parâmetros do kernel rapidamente,sudo sysctl vm.dirty_bytes=15000000
mas fazê-los permanecer em uma reinicialização requer a alteração de um arquivo de configuração, como o/etc/sysctl.conf
que pode ser específico para sua distribuição.)Um efeito colateral é que seu computador pode ter uma taxa de transferência de gravação de dados mais baixa com essa configuração, mas, no geral, acho útil ver que um programa está em execução por um longo tempo enquanto grava muitos dados versus a confusão de ter um O programa parece ter sido concluído com o seu trabalho, mas o sistema está muito atrasado, pois o kernel faz o trabalho real. Definir
dirty_bytes
um valor razoavelmente pequeno também pode ajudar a impedir que o sistema deixe de responder quando você está com pouca memória livre e executa um programa que repentinamente grava muitos dados.Mas, não o ajuste muito pequeno! Uso 15 MB como uma estimativa aproximada de que o kernel pode liberar o buffer para um disco rígido normal em 1/4 de segundo ou menos. Isso evita que meu sistema fique "atrasado".
fonte
Pergunta antiga, mas parece que o problema ainda aparece. Definir o buffer para 15 MB, conforme sugerido aqui , não funcionou no Ubuntu 19.04 e interrompeu meu sistema.
Eu estava tentando copiar um arquivo de 1,5 GB em uma unidade de 16 GB FAT32 vazia (recém-formatada). Deixei funcionar por cerca de 10 minutos apenas para ver se terminaria, sem sorte.
A reformatação para NTFS permite que a operação seja concluída em menos de 10 segundos. Não sei por que isso importaria porque o FAT32 deveria permitir algo abaixo de 2 GB, mas parecia funcionar muito bem. Não é uma correção ideal para as unidades que você deseja usar com o MacOS, mas uma solução fácil para todos os outros casos de uso. Eu imagino que o exFAT teria funcionado da mesma forma, mas eu não testei.
fonte