Simulare un dispositivo blocco errato con errori di lettura?
-
18-09-2019 - |
Domanda
Sto cercando un modo più semplice per testare la mia applicazione contro i dispositivi a blocchi difettosi che generano i / o errori di lettura quando alcuni blocchi vengono letti. Cercando di utilizzare un disco rigido fisico con blocchi danneggiati noto è un dolore e vorrei trovare una soluzione software, se ne esiste uno.
Ho trovato il Linux Disk Failure Simulation Driver di che permette di creare un'interfaccia che può essere configurato per generare errori quando determinati intervalli di blocchi vengono letti, ma è per il kernel Linux 2.4 e non è stato aggiornato per la 2.6.
Quale sarebbe perfetta sarebbe un autista losetup e ciclo che anche permesso di configurarlo per restituire errori di lettura quando si tenta di leggere da un dato insieme di blocchi.
Soluzione
Non è un dispositivo di loopback che stai cercando, ma piuttosto device-mapper.
dmsetup
per creare un dispositivo sostenuta dal " errore di target". Mostrerà in /dev/mapper/<name>
.
Pagina 7 del presentazione Device mapper (PDF) ha esattamente quello che 're alla ricerca di:
dmsetup create bad_disk << EOF
0 8 linear /dev/sdb1 0
8 1 error
9 204791 linear /dev/sdb1 9
EOF
O lasciare le parti sdb1
da e per mettere il bersaglio "errore" come dispositivo per i blocchi 0 -. 8 (invece di sdb1
) per fare un disco di errore di puro
Si veda anche Il Device Mapper appendice da "RHEL 5 Logical Volume Manager Administration".
Altri suggerimenti
Sembra che Linux di funzionalità integrate di iniezione colpa sarebbe una buona idea di utilizzare.
Blog: http://blog.wpkg.org/2007 / 11/08 / usando-fault-iniezione /
Riferimento: https://www.kernel.org/doc/Documentation /fault-injection/fault-injection.txt
Il modo più semplice per giocare con i dispositivi a blocchi è utilizzando NBD .
Scarica i sorgenti userland da git: //github.com/yoe/nbd.git modificare nbd-server.c
a fallire in lettura o scrittura su qualunque aree si vuole fallire su, o di fallire in un pattern casuale in modo controllato, o fondamentalmente tutto quello che vuoi.