Demora *muito* muito tempo para ejetar meus flashdrives

Demora *muito* muito tempo para ejetar meus flashdrives

Estou executando uma nova instalação no Debian 8 e muitas vezes tenho que esperar um tempo ridículo antes que meus flashdrives sejam ejetados (variando de 1 a 10... 15 minutos). Durante esse período, não consigo acessar nada relacionado à unidade porque recebo o erroAn operation is already pending.

Parece que não tem nada a ver com o formato flashdrive (tentei FAT, ext4, NTFS), mas também parece iniciar quando começo a colocar arquivos neles. (nada pesado, ~ 500Mb).

O que poderia estar causando este problema? Existe algo que eu possa fazer para acelerar a ejeção?

Responder1

Embora eu não saiba se esta é a explicação/solução real para sua pergunta, acredito que este seja um problema com o USB em geral.

Se você copiar arquivos grandes ou muitos arquivos, o dispositivo USB enviará uma mensagem ao host dizendo "Estou prestes a enviar esses arquivos para você". O dispositivo enviará todos os arquivos de forma assíncrona e levará o tempo necessário para fazê-lo. Isso significa que quando você fizer isso, cp /my/flash/drive/foo.txt /home/bar/foo.txto dispositivo informará ao sistema operacional que os arquivos estão sendo copiados e depois os enviará.

A única maneira que conheço de verificar se todos os dados realmente foram transferidos é entrar syncdepois de executar um comando que copia/move ou exclui arquivos em uma unidade flash. O comando de sincronização será bloqueado até que a unidade termine de transferir os dados. Depois disso, será seguro desmontar/ejetar uma unidade flash USB.


[EDITAR]: Verifiqueesta postagempara observar o progresso da syncoperação: o número impresso quando você executa

watch grep -e Dirty: -e Writeback: /proc/meminfo

deve diminuir para zero à medida que ocorrem transferências de dados em segundo plano. Quando terminar, você syncestará concluído e seu flashdrive será ejetado.


Outro problema comum com a ejeção de dispositivos de armazenamento USB é que pelo menos o Debian não permitirá isso se houver um programa, terminal ou similar atualmente trabalhando em arquivos/pastas nessa unidade flash. Portanto, se você alterou o diretório para uma pasta naquele pendrive em um terminal e tentou ejetar o pendrive usando outro terminal, isso não será permitido até que você altere o diretório para outro lugar que não esteja no pendrive no primeiro terminal.

Responder2

Provavelmente, isso se deve ao acúmulo de gravações em cache que ainda não foram gravadas no dispositivo, conforme descrito em"O pernicioso problema de travamento do stick USB".

Como solução alternativa, você podelimitar a quantidade de memória sujadevido a IO pendente:

echo $((16*1024*1024)) | sudo tee /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) | sudo tee /proc/sys/vm/dirty_bytes

informação relacionada