Você está usando uma versão de 64 bits do Linux com muita memória? Nesse caso, o problema poderia ser que o Linux pode bloquear por minutos em grandes gravações em dispositivos lentos como para exemplo cartões SD ou pendrives. É um bug conhecido que deve ser corrigido em novos kernels.
Veja link
Solução alternativa: como problema raiz:
echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes
Eu adicionei-o ao meu arquivo /etc/rc.local
em minhas máquinas de 64 bits.
TANSTAAFL ; Essa alteração pode (e provavelmente irá) reduzir sua taxa de transferência para esses dispositivos - é um compromisso entre latência e velocidade. Para voltar ao comportamento anterior, você pode
echo 0 > /proc/sys/vm/dirty_background_bytes
echo 0 > /proc/sys/vm/dirty_bytes
... que são os valores padrão, o que significa que o comportamento de write-back será controlado pelos parâmetros dirty_ratio
e dirty_background_ratio
.
Nota para os não-tão-especialistas-com-linux: os arquivos em /proc
são pseudofiles --- apenas canais de comunicação entre o kernel e o espaço do usuário. Nunca use um editor para mudar ou olhar para eles; Em vez disso, obtenha um prompt de shell - por exemplo, com sudo -i
(tipos do Ubuntu) ou su root
e use echo
e cat
).
Atualização 2016/04/18 parece que, afinal, o problema ainda está aqui. Você pode olhar para isto em LWN.net , em isto artigo sobre filas de write-back .