Comment simuler la corruption du système de fichiers ext3?

Je voudrais simuler la corruption du système de fichiers dans le but de tester la façon dont nos systèmes embarqués y réagissent et de les faire échouer aussi rapidement que possible. Nous utilisons différents types de stockage flash émulé par périphérique en mode bloc pour les données qui sont souvent modifiées et inadaptées au stockage en NAND / NOR.

Depuis, 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 comme une sorte de dernier recours pour tenter de mettre en place le système et de signaler qu’il est en très mauvais état. J’aimerais beaucoup provoquer des erreurs qui déclencheraient des réparations de fsck afin d’étudier l’effet sur la capacité des systèmes à se relever.

dd if=/dev/random n’est pas assez précis pour mon objective car il ne peut pas être facilement 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?

Si vous savez déjà quoi modifier, dd peut lire un fichier contenant les octets que vous voulez écrire, et vous lui dites où les écrire.

Pour savoir où écrire, debugfs du package e2fsprogs pourrait vous aider.

Il devrait être possible d’utiliser un fuzzer d’images de système de fichiers Linux pour provoquer la corruption:

ou l’une des techniques d’injection de pannes de disque Linux (par exemple, dm-flakey en mode corruption) décrite dans https://unix.stackexchange.com/a/144200 .