Come posso simulare la corruzione del filesystem ext3?
-
02-07-2019 - |
Domanda
Vorrei simulare la corruzione del filesystem allo scopo di testare come i nostri sistemi embedded reagiscono ad esso e alla fine farli fallire nel modo più grazioso possibile. Utilizziamo diversi tipi di memoria flash emulata da dispositivi a blocchi per i dati che vengono modificati spesso e non sono adatti per la memorizzazione in NAND / NOR.
Dal momento che ho una buona idea della frequenza con cui i dati vengono modificati in diverse parti dell'albero dei file e dove vengono archiviati i dati sensibili. Vorrei iniettare errori in aree specifiche e non solo in modo casuale.
In caso di emergenza usiamo fsck -y
come una sorta di ultima risorsa per tentare di far apparire il sistema e segnalare che si trova in uno stato pessimo. Mi piacerebbe molto causare errori che inducono fsck a tentare riparazioni al fine di studiare l'effetto sulla capacità dei sistemi di tornare indietro.
dd if = / dev / random
non è abbastanza preciso per il mio scopo poiché non può essere facilmente utilizzato per iniettare errori controllati. Ci sono altri strumenti o metodi che si adattano meglio alle mie esigenze o devo inventare i miei?
Soluzione
Se sai già cosa modificare, dd può leggere un file contenente i byte che vuoi scrivere e gli dici dove scriverli.
Per capire dove scrivere, debugfs dal pacchetto e2fsprogs potrebbe aiutarti.
Altri suggerimenti
Dovrebbe essere possibile usare un fuzzer di immagini del filesystem Linux per causare corruzione:
- e2fuzz da e2fsprogs
- http://people.redhat.com/sgrubb/files /fsfuzzer-0.7.tar.gz
- http://projects.info-pull.com/mokb/fsfuzzer -0.6.tgz
- http://www.cccmz.de/~snakebyte /fsfuzzer-0.6-lmh2.tar.bz2
- http://thread.gmane.org/gmane.comp .file-systems.ext4 / 32167 (usa zzuf)
o una delle tecniche di iniezione di errori del disco Linux (ad es. dm-flakey in modalità corruzione) descritta in https: //unix.stackexchange .com / a / 144200 .