Pergunta

Eu estou procurando uma maneira mais fácil de testar minha aplicação contra dispositivos de blocos defeituosos que geram i / o erros de leitura quando certos blocos são lidos. Tentando usar um disco rígido físico com blocos ruins conhecidos é uma dor e eu gostaria de encontrar uma solução de software, se houver.

Eu fiz encontrar os Linux disco falha Simulação driver que permite a criação de uma interface que pode ser configurado para gerar erros quando certos intervalos de blocos são lidos, mas é para o Linux Kernel 2.4 e não foi atualizado para 2.6.

O que seria perfeito seria uma losetup e motorista loop que também permitiu que você configurá-lo para retornar erros de leitura ao tentar ler a partir de um determinado conjunto de blocos.

Foi útil?

Solução

Não é um dispositivo auto-retorno que você está procurando, mas sim device-mapper.

Use dmsetup para criar um dispositivo apoiado pela " erro" alvo. Ela vai aparecer em /dev/mapper/<name>.

Page 7 do href="http://mbroz.fedorapeople.org/talks/DeviceMapperBasics/dm.pdf" rel="noreferrer"> apresentação mapeador de dispositivos tem exatamente o que você 're procurando:

dmsetup create bad_disk << EOF
  0 8       linear /dev/sdb1 0
  8 1       error
  9 204791 linear /dev/sdb1 9
EOF

Ou deixar de fora as partes sdb1 de e para colocar o alvo "erro" como o dispositivo para blocos 0 -. 8 (em vez de sdb1) para fazer um erro de disco puro

Veja também O Dispositivo Mapper apêndice de "RHEL 5 Logical Volume Gerente de Administração".

Outras dicas

Parece que o Linux construído com recursos de injeção de falhas seria uma boa idéia para uso.

Blog: http://blog.wpkg.org/2007 / 11/08 / usando a falhas de injecção /
Referência: https://www.kernel.org/doc/Documentation /fault-injection/fault-injection.txt

A maneira mais fácil de jogar com dispositivos de bloco está usando nbd .

Faça o download das fontes userland de git: //github.com/yoe/nbd.git modificar nbd-server.c a falhar em ler ou escrever sobre o que áreas você quer que ele falhar em, ou a falhar em um padrão controlada aleatória, ou basicamente qualquer coisa que você quiser.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top