Entfernen Sie den defekten EXT4-Inode ohne debugfs

843
zulus

Ich habe das Dateisystem in qnap beschädigt. Wenn ich versuche zu fsck, geht es in eine Endlosschleife an einer Inode. Leider hat qnap nicht den Befehl debugfs. Ist es möglich, Inode über dd zu entfernen (löschen)?

1
Zuerst möchte ich mich entschuldigen, weil dies nicht als Antwort gedacht wird. Aber ich weiß nicht, wie ich mit dem Autor in Kontakt treten soll, also kann ich einfach hier posten. Zulus, kannst du versuchen, den qnap-Support zu kontaktieren? Oder kontaktieren Sie mich einfach über kevinliao@qnap.com. Je nach verwendetem NAS-Modell stellen wir Ihnen die richtigen Debugfs zur Verfügung. Vielen Dank. Kevin Liao vor 7 Jahren 0
Ich habe Ihnen eine E-Mail geschickt und ein Ticket erstellt: JWZ-569-66890. Danke dir. zulus vor 7 Jahren 0

1 Antwort auf die Frage

2
Theodore Ts'o

Es ist möglich, aber es ist sehr gefährlich. Wenn Sie es vermasseln, könnten Sie am Ende mehr Schaden anrichten. Der Trick besteht darin, den Versatz zu der jeweiligen Inode zu berechnen, wenn dumpe2fs ausgegeben wird. Sobald Sie den Offset berechnet haben, ist es einfach:

dd if=/dev/zero of=/dev/BLOCKDEVICE seek=OFFSET bs=1 count=INODESIZE 

Siehe den Quellcode von debugfs für die Funktion do_imap:

Die Startposition der Inode-Tabelle (die von ext2fs_inode_table_loc () zurückgegeben wird) kann ebenso wie die Inode-Größe von der Ausgabe von dumpe2fs ermittelt werden. Wenn Sie die Blocknummer und den Versatz gefunden haben, können Sie den im Befehl dd verwendeten OFFSET wie folgt berechnen:

OFFSET = (block * BLOCKSIZE) + offset 

Dabei sind Block und Offset die von do_imap berechneten Werte.

Vielleicht möchten Sie üben, um zu sehen, ob Sie die Berechnung von do_imap von Hand korrekt replizieren können, indem Sie dumpe2fs üben und dann mit dem Befehl debapfs imap auf Ihrem Linux-System überprüfen (vorausgesetzt, Sie können Linux ausführen).

Trotzdem kann es nützlich sein, e2fsprogs von Grund auf für qnap zu kompilieren und dann die für qnap erstellten debugfs zu verwenden.

Ich habe mich gerade an einen qnap-Entwickler gewandt, der mir kürzlich auf der linux-ext4-Mailingliste entsprach. Ich zeigte auf diese Frage und fragte ihn, ob er einen Zeiger auf eine für qnap kompilierte Version von debugfs senden könnte. Vielleicht möchten Sie also ein wenig warten und ein wenig warten, um zu sehen, ob Kevin mit etwas stimmt, das sicherer und einfacher ist. Theodore Ts'o vor 7 Jahren 1