Como escrever um padrão para um dispositivo para usá-lo com badblocks com a opção -t test_pattern

2

Comprei recentemente um disco rígido de 4 TB e quero fazer um teste badblocks de leitura-gravação antes de começar a usá-lo. Como a execução da opção badblocks with -w demoraria 4TB, pensei em primeiro gravar um padrão no disco e usar a opção -t para ler esse padrão por meio de badblocks , completando em horas do que em dias.

O problema é que não consegui entender como funciona a opção -t de badblocks e não obtive resultados de pesquisa ao pesquisar na web por um exemplo do uso da opção badblocks with -t . A partir da página man, o padrão de teste é um valor numérico entre 0 e ULONG_MAX-1 (estou supondo que ULONG_MAX é 2^32 ), mas não sei como fornecer o padrão (decimal? Hexadecimal? Binário? String ASCII com comprimento < 2^(32/8) ?). E o tamanho do padrão está relacionado ao tamanho do bloco?

A outra parte do problema é escrever um script para preencher o disco rígido com o padrão. Eu posso escrever um script Ruby para fazer isso, mas um comando bash de um forro canalizado através de pv seria legal!

    
por Vikrant Chaudhary 22.09.2014 / 16:25

3 respostas

2

Deixar badblocks escrever o padrão em primeiro lugar não deve ser mais lento do que escrevê-lo de outra maneira. Especialmente se você usar as opções -b block-size e -c blocks-at-once para não fazer pequenas leituras / gravações.

Este exemplo substitui o disco por um padrão "aleatório" em blocos de 1 Mi:

badblocks -v -w -t random -b 4096 -c 256 /dev/thedisk

Se houver um problema com a velocidade, ela deverá ter outra causa ...

    
por 22.09.2014 / 17:06
1

Escrever um padrão com uma ferramenta e lê-lo com badblocks não será muito mais rápido do que executar badblocks com um único padrão, imagino.

O padrão precisa ser especificado em hexadecimal, pelo menos é o que eu entendo a partir disso:
badblocks -t 0x55 -w [...]

Fonte: link

    
por 22.09.2014 / 17:05
0

Então, depois de mais algumas pesquisas, descobri uma maneira de utilizar a opção -t de badblocks (mas você deve preferir frostschutz's answer (De alguma forma, eu não percebi a opção -c enquanto fazia esta pergunta).

Escreva 42 em todo o disco rígido.

yes 4 | tr '\n' 2 | pv -pterb -s 4000G > /dev/sdx

Verifique através de badblocks

badblocks -vs -t 0x3432 /dev/sdx
    
por 22.09.2014 / 17:43