Wie erzwinge ich die ext3-Partition in den Status "Fehler"?

7

Ich habe ein Skript, in dem fsck aufgerufen wird, falls sich das Dateisystem nur im Status "Fehler" befindet. Ich würde es gerne testen. Leider weiß ich nicht, wie ich den "Fehler" -Status auf der ext3-Partition erzwingen soll.

Die einzige Idee, die ich habe, ist, zuerst fsck auf einer gemounteten Partition auszuführen. Sobald eine Warnung angezeigt wird, dass das Dateisystem beschädigt werden kann, kann dies meiner Meinung nach hilfreich sein. Müssen versuchen. Kann in der Zwischenzeit jemand schon eine Antwort wissen?

user822834
quelle

Antworten:

10

Nun, hier ist es: debugfs -w -R "ssv state 2" / dev / sda1

debugfs ist Teil des e2fsprogs-Pakets, das für den Zugriff auf ext2 / 3-Dateisysteme auf niedriger Ebene vorgesehen ist.

-w - work in r/w;
-R - run one command and exit;
ssv - set superblock value, self-describing;
state - just a name of the field containing state of filesystem.

Codes sind:

0 - not clean
1 - clean
2 - not clean with errors
user822834
quelle
4

Ich habe kurz in einer VM damit herumgespielt. Mein erster Gedanke war, den primären Superblock der Partition zu zerstören. Dies führt nicht dazu, dass dumpe2fs einen "Dateisystemstatus" von "Fehler" meldet, aber es bricht (offensichtlich) Ihre Partition ("Schlechte magische Zahl im Superblock"). Vielleicht ist das alles, was Sie für Ihre Tests benötigen. Wenn Sie fsck für eine Partition in diesem $?Status ausführen und den Wert von überprüfen, wird der Status 8 (Betriebsfehler) angezeigt.

Auf jeden Fall ist dies gefährlich und ich würde nicht empfehlen, dies auf einem System zu tun, auf dem Sie Daten haben, die Sie interessieren. Versuchen Sie es in einer VM wie ich.

Sie können einige Informationen über das Dateisystem wie folgt erhalten:

dumpe2fs /dev/sda1 | egrep "state|superblock|Block size"

Sie werden sehen, dass das Dateisystem einen primären Superblock und einige Backup-Superblöcke hat. Wenn Sie bereit sind, Dinge zu beschädigen, beachten Sie einige Dinge in dieser Ausgabe:

  • "Blockgröße: X": Beachten Sie X.
  • "Primärer Superblock bei Y": Beachten Sie Y.
  • "Backup Superblock bei Z": Notieren Sie sich mindestens ein Z.

Zerstöre jetzt deinen primären Superblock:

dd if=/dev/zero of=/dev/sda1 bs=X count=1 seek=Y

Herzliche Glückwünsche! Ihr Dateisystem ist jetzt kaputt.

Hängen Sie es aus, wenn es montiert ist:

umount /dev/sda1

Führen Sie dann fsck aus und geben Sie den Speicherort eines der zuvor genannten Backup-Superblocks an:

fsck -b Z /dev/sda1

Hängen Sie jetzt irgendwo / dev / sda1 ein, und Sie sollten wieder im Geschäft sein.

loopforever
quelle
Vielen Dank für die Untersuchung. Eigentlich brauche ich den Status "Fehler", weil mein Skript dumpe2fs verwendet. Das Vorhandensein eines echten Schadens am Dateisystem spielt keine Rolle, sondern nur den Status.
user822834