O sistema congela / não responde / não pode ser usado ao copiar arquivos grandes para USB

51

Ontem, eu estava copiando um único arquivo de 8 GB para um USB com uma velocidade de gravação lenta de 7 MB / s, enquanto minha RAM é de 3 GB. Ao copiar o sistema congelou, até o ponto em que eu não conseguia nem mover o cursor.

Eu consegui entrar no console de texto e executei iotop, ele mostrou que um processo chamado kswapd0estava ocupando 99,99% do IO.

Existem soluções alternativas para que copiar um arquivo grande não torne meu sistema inutilizável?

sashoalm
fonte
13
Este bug é tão ridículo ...
king_julien
Sim, isso não acontece apenas com o Ubuntu, mas também em outros sabores do Debian. Eu também vi o mesmo problema no Kali Linux e no Parrot OS. Kali tem o pior cenário, enquanto o papagaio o torna suave, mas mesmo assim trava para tamanhos muito grandes. Eu acho que é o problema no kernel do Linux e como ele está escrito. Este é e continuará sendo o pior pesadelo do Linux de todos os tempos.
Mohith7548 4/11

Respostas:

33

De acordo com este relatório de bug, eu o resolvi adicionando as seguintes linhas

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

em /etc/sysctl.conf

e correndo

sudo sysctl -p
Philippe Gachoud
fonte
12
Importa-se de explicar o que as linhas acima fazem?
Nsane
3
@ nisargshah95 muito, mas não tenho uma pista, procurar-se ;-)
Philippe Gachoud
4
@ nisargshah95 Os detalhes do problema são explicados nos dois artigos do LWN vinculados em unix.stackexchange.com/a/107722/52205
Rmano
1
Obrigado, acabei de descobrir que meu Ubuntu 16.04 não pode gravar dois arquivos de 1,4 GB no USB sem essas duas linhas, fiquei congelado por horas, esse problema resolvido, quem se importa com o que faz, às vezes você só deseja copiar arquivos e mover em.
Mike
1
I teve valores de 5 e 60. Estes controlo da percentagem de memória utilizado para operações, ao mesmo tempo dirty_background_bytese dirty_bytesutilizar absolutos valores bytes. Eu já resolveu esse problema com a segunda resposta, mas para torná-lo persistente add-lo para sysctl.conf, veja esta resposta . Portanto, ao usar valores percentuais, ajuste-os ao atualizar a memória.
peterm
20

Corri para o problema semelhante. O meu é o Ubuntu 14.04 de 64 bits. Então, depois de uma longa luta, encontrei uma resposta que resolve meu problema. Para facilitar o uso, adicionei os comandos abaixo usados ​​na resposta acima mencionada . Verifique a resposta para obter explicações detalhadas.

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

Depois de usar o comando acima, o sistema começou a funcionar normalmente na cópia de arquivos.

Agradecemos a @Rmano .

Mahendran Sakkarai
fonte
2
As configurações de proporção não ajudaram no meu sistema 12.04 com um compartilhamento NAS lento. Mas, depois de definir os bytes diretamente, conforme sugerido aqui, meu sistema pode ser utilizado novamente ao copiar para o NAS.
mivk
6
Esta pergunta tem 3 anos e ainda é necessária para evitar a obtenção de um sistema inutilizável ao copiar para o pendrive. Algumas informações: se o pendrive é formatado usando um servidor Linux como ext4, isso não acontece. Quando eu disse "sistema inutilizável", eu realmente quis dizer isso, o ponteiro do mouse não responde e você precisa insistir em movê-lo pela tela, olha o monitor do sistema e não há uso anormal de recursos. As pessoas do kernel estão usando CPUs Intel de sexta geração e unidades SSD? Como é que eles não percebem isso durante o teste.
Hatoru Hansou 22/02
3
@HatoruHansou Sinto o mesmo, acabei de instalar o Debian Stretch novo e esse erro também está presente aqui. Eu sei que isso não depende da distribuição, mas das fontes do kernel, mas homens, como é que isso ainda não foi corrigido?
Marecky 19/05
1
@ Marecky Depois de algumas leituras, parece que os dirty_bytes não são uma coisa do USB. Eles afetam todas as E / S; portanto, depois de fazer o eco, você está alterando o sistema globalmente, não apenas para pendrives. Apenas para a sessão atual, eu acho. Parece que os valores atuais do kernel são aprimorados pensando em dispositivos de armazenamento mais recentes. Pendrives lentos sofrem como efeito colateral. Desculpe, não há link, mas isso deve ser fácil de encontrar no Google.
Hatoru Hansou
3
Veja esta resposta para torná-lo persistente
peterm
5

Estou enfrentando um problema semelhante com o congelamento do sistema ao copiar para uma unidade flash. Enviei um relatório de bug sobre o assunto: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1267648

Como solução alternativa, descobri que desativar a troca elimina completamente o problema.

Vladimir Rutsky
fonte
1
Infelizmente isso não funcionou para mim no Ubuntu 16.04.
Programster
Também não funcionou para mim no Ubuntu 16.04.3 LTS - isso em um laptop Alienware 17 R2.
AnthonyK
4

Sim, existem configurações do kernel que você pode ajustar especificando quantos dados devem ser marcados como gravados antes de serem gravados no disco. Procure aqui uma descrição bastante abrangente deles. Em particular, você desejará encontrar um valor de dirty_ratio que funcione bem para você (geralmente é muito alto para desktop / laptop por padrão, mas não há um número mágico que funcione para todos).

Bandrami
fonte
2
Ei, você poderia me sugerir quais números eu preciso definir com base nas especificações do meu laptop? consulte askubuntu.com/questions/713723/…
2

Acabei de ter exatamente o mesmo problema (em 2019), no ubuntu 19.10, ao copiar grande número de arquivos do disco USB para o disco SATA. Ambos os sistemas de arquivos são ext4. Quando desliguei a troca, o problema desapareceu. Parece um bug na alocação de memória para buffers de disco - aparentemente, o kernel tenta alocar tanta memória para buffers de disco quanto possível em tal situação, o que não faz sentido (criar buffers de disco em swap ...) ou calcula erroneamente o tamanho da memória que pode ser usado para armazenar em cache ...

chaker
fonte
Alguma das soluções aqui funcionou para você? Comecei a sofrer com esse problema também depois de atualizar para 19.10 e também atualizando o kernel. No meu caso, isso acontece quando copio um arquivo grande da partição A para B do mesmo SSD. Desativar o SWAP "corrige" o problema.
stackofrocks
1

Eu tive problemas semelhantes ao copiar arquivos para uma exfatunidade. Eu tive menos problemas ao usar um ext4sistema de arquivos no meu disco rígido USB.

maça
fonte
1
Tive esse problema no ext4 também
peterm
O Fedora 27 (kernel 4.17.5-100) copia da ferrugem giratória conectada a USB para o flash stick conectado a USB. Isso parece ir até o congelamento do bloqueador de tela no meio do desbotamento. :-( ~~~
David Tonhofer