2008-09-26 19 views
15

Je voudrais simuler la corruption du système de fichiers dans le but de tester comment nos systèmes embarqués réagissent et finalement les font échouer aussi gracieusement que possible. Nous utilisons différents types d'unités de stockage flash émulées pour les données qui sont souvent modifiées et ne peuvent pas être stockées en NAND/NOR.Comment simuler la corruption du système de fichiers ext3?

Depuis que j'ai une assez bonne idée de la fréquence à laquelle les données sont modifiées dans différentes parties de l'arborescence de fichiers et où les données sensibles sont stockées. Je voudrais injecter des erreurs dans des domaines spécifiques et pas seulement au hasard.

En cas d'urgence, nous utilisons fsck -y en dernier recours afin de tenter d'amener le système en panne et signaler un état très mauvais. J'aimerais beaucoup provoquer des erreurs qui amèneraient fsck à tenter des réparations afin d'étudier l'effet sur la capacité des systèmes à revenir.

dd if=/dev/random n'est pas assez précis pour mon usage car il ne peut pas facilement être utilisé pour injecter des erreurs contrôlées. Existe-t-il d'autres outils ou méthodes qui répondent mieux à mes besoins ou dois-je inventer le mien?

+0

Bonne question, mais je marquerais cette tolérance de faute au lieu de la dégradation gracieuse. –

Répondre

2

Si vous savez déjà quoi modifier, dd peut lire un fichier contenant les octets que vous voulez écrire, et vous lui dire où les écrire. Pour savoir où écrire, debugfs du paquet e2fsprogs pourrait vous aider.

1

Il devrait être possible d'utiliser une image de système de fichiers Linux fuzzer pour provoquer la corruption:

ou l'une des techniques d'injection de faute de disque Linux (par ex. dm-flakey en mode corruption) décrit dans https://unix.stackexchange.com/a/144200.