Estou usando f3
um script Bash personalizado para testar a memória flash USB em grandes quantidades.
Um problema comum que encontro é que algumas unidades defeituosas fariam com que todas as unidades saudáveis ficassem sem IO, efetivamente parando o processo de teste.
Por exemplo - ao deixar 50 unidades USB para teste, geralmente descubro depois de uma hora que 48 não estão fazendo nada e 2 estão piscando seus LEDs. A remoção dessas duas unidades de repente retoma o teste de todas as outras unidades.
Às vezes, há situações mais complexas em que 24 unidades estão paradas e o restante parece funcionar bem. Exceto que algumas unidades não fazem nenhum progresso após 20 minutos. Você os conecta, o resto está voltando à vida e o teste continua.
No entanto - eu também descobri que é suficiente parar de testar as unidades defeituosas para fazer o resto ganhar vida.
Estou procurando uma maneira de descobrir quais unidades estão causando esse bloqueio de operação de arquivo em outras pessoas para que eu possa interrompê-las automaticamente no meu script.
Estive assistindo atop
, iostat
, htop
e dmesg
tentando encontrar um fator de discriminação, mas não consigo ver nada. Descobri que existe a chamada usbmon
interface de depuração do kernel, embora seja tão de baixo nível que eu realmente não saiba como usá-la. Os pacotes USB brutos não me dizem nada.
Existem outras ferramentas que eu poderia usar para saber quais unidades estão se comportando mal?
Eu uso f3write
e f3read
programas para testar as unidades. O f3write
programa cria arquivos de 1 GB que o f3read
programa lê identificando qualquer dano de dados ocorrido no processo.
Além disso - é estranho, mas quando uma unidade com mau comportamento está presente, o restante das unidades "saudáveis" terminará seu trabalho no arquivo atual. Diga - escrever ou ler um arquivo de 1 GB - mas não criará um novo arquivo até que as unidades com mau comportamento sejam removidas. É como abrir um novo arquivo se tornasse impossível na presença de uma unidade "IO hog".
O que posso fazer para diferenciá-los?