Desejo martelar o io de alguns discos por um longo período de tempo e ficar ciente sempre que não consigo ler um bloco (ou algum outro sintoma que me informe sobre um problema com o armazenamento de back-end). Existem algumas ferramentas de benchmarking que escrevem por alguns segundos e mostram os resultados, mas quero fazer testes de longo prazo.
Até agora, o que consigo pensar é gravar no disco via dd e ler desse arquivo para /dev/zero . Eu precisaria fazer um loop para continuar lendo e escrevendo depois de terminar a execução inicial. Quanto a ter uma ideia da integridade do disco, suponho que o dd possa terminar se não conseguir ler ou gravar. Caso contrário, posso não saber se há um problema.
A outra ideia é executar o bonnie++ em loop. É difícil dizer o que está acontecendo em segundo plano e quanta memória RAM ele está realmente usando em vez de disco (parece que eles tentam contornar isso dizendo para você ter uma grande quantidade de dados gravados; maior que sua alocação de memória RAM). Então, a saída fornecida é muito difícil de ler. Mas isso deve ser suficiente para escrever e ler se eu usar um loop bash para executá-lo constantemente.
Pensamentos?
Responder1
Que tal umfio
trabalho com verificação e uma carga de trabalho baseada em tempo? Estou pensando em algo como
fio --name=2h --direct=1 --filename=/dev/sdz --verify=crc32c-intel --verify_fatal=1 --time_based=1 --runtime=2h --rw=write
Isso fará uma gravação aleatória de /dev/sdz ignorando o cache do bloco (destruindo assim o conteúdo de /dev/sdz). Após o /dev/sdz ter sido totalmente escrito, seu conteúdo será lido e verificado. Este processo continuará por duas horas e as etapas anteriores serão repetidas cada vez que terminarem. Isto é obviamente imperfeito (por exemplo, não há garantia de que mesmo a primeira passagem de escrita tenha sido concluída até o final das duas horas, etc.), mas dá algumas idéias...
Se você estiver fazendo algum tipo detestes de E/S de armazenamento, então vale a pena dar uma olhada no fio.