Wie funktioniert mkfs -c

Wie funktioniert mkfs -c

Ich habe ein fehlerhaftes 3-TB-Laufwerk. Es gibt viele fehlerhafte Blöcke, aber es sind immer noch etwa 2,6 TB nutzbarer Speicherplatz vorhanden und ich möchte es zum Speichern von Datenmüll (Musik, Videos usw.) verwenden. Zuerst bin ich auf das Handbuch eines Typen gestoßen. Er hat die Festplatte in mehrere Partitionen aufgeteilt und dann ein JBOD-RAID (Just Bunch of Disks) erstellt (falls Sie interessiert sind, gibt es einen Link (russisch): https://habr.com/ru/post/252211). Aber jemand hat in den Kommentaren zu diesem Artikel erwähnt, dass das gleiche mit dem mkfs selbst mit der Taste „-c“ erledigt werden kann. Und jetzt frage ich mich, wie das funktioniert. Ja, es gibt eine Manpage, die uns sagt:

-c Überprüft das Gerät auf fehlerhafte Blöcke, bevor das Dateisystem erstellt wird. Wenn diese Option zweimal angegeben wird, wird anstelle eines schnellen Nur-Lese-Tests ein langsamerer Lese-/Schreibtest verwendet.

Es gibt einen Arch-Wiki-Artikel, der fast das Gleiche sagt. Es prüft das Gerät auf fehlerhafte Blöcke, und was dann? Hier und da im Internet sagen Leute, dass es fehlerhafte Blöcke markiert und das Betriebssystem sie nicht verwendet. Wie kann ich das prüfen? Gibt es ein Dienstprogramm, das markierte Blöcke zur weiteren Verwendung anzeigt (vielleicht zur Erstellung zukünftiger Partitionen)?

Antwort1

Es stimmt, man mkfs.ext4( man 8 mke2fs) sagt, was Sie zitiert haben:

-c
Überprüfen Sie das Gerät auf fehlerhafte Blöcke, bevor Sie das Dateisystem erstellen. Wenn diese Option zweimal angegeben wird, wird anstelle eines schnellen Nur-Lese-Tests ein langsamerer Lese-/Schreibtest verwendet.

Aber es gibt auch -l:

-l filename
Lesen Sie die Liste der fehlerhaften Blöcke aus dem Dateinamen. Beachten Sie, dass die Blocknummern in der Liste der fehlerhaften Blöcke mit derselben Blockgröße generiert werden müssen, die von verwendet wird mke2fs. Daher ist die -cOption zu mke2fseine viel einfachere und weniger fehleranfällige Methode, eine Festplatte vor dem Formatieren auf fehlerhafte Blöcke zu prüfen, da mke2fsautomatisch die richtigen Parameter an das Programm übergeben werden badblocks.

Lassen Sie uns also Folgendes untersuchen man 8 badblocks:

Wichtiger Hinweis: Wenn die Ausgabe von an die Programme oder badblocksweitergeleitet werden soll , ist es wichtig, dass die Blockgröße richtig angegeben wird, da die generierten Blocknummern stark von der vom Dateisystem verwendeten Blockgröße abhängen. Aus diesem Grund wird dringend empfohlen, dass Benutzer nicht direkt ausführen, sondern die Option der Programme und verwenden .e2fsckmke2fsbadblocks-ce2fsckmke2fs

Darin wird Folgendes erwähnt e2fsck(auch fsck.ext4im Fall von ext4), also schauen wir es uns an man 8 e2fsck[Hervorhebung von mir]:

-c
Diese Option bewirkt, e2fsckdass badblocks(8)das Programm einen schreibgeschützten Scan des Geräts durchführt, um fehlerhafte Blöcke zu finden.Wenn fehlerhafte Blöcke gefunden werden, werden sie dem Inode für fehlerhafte Blöcke hinzugefügt, um zu verhindern, dass sie einer Datei oder einem Verzeichnis zugewiesen werden.Wenn diese Option zweimal angegeben wird, wird der Bad-Block-Scan mit einem zerstörungsfreien Lese-/Schreibtest durchgeführt.

Und da mke2fsund e2fsckTeile desselben Toolkits sind,erwarten -cauf die gleiche Weise zu mke2fsfunktionieren, auch wenn dies in der Beschreibung nicht explizit angegeben ist.

Um dann nach fehlerhaften Blöcken zu suchen, von denen das Dateisystem weiß, verwenden Sie dumpe2fs. Von man 8 dumpe2fs:

-b
Drucken Sie die Blöcke aus, die im Dateisystem als fehlerhaft reserviert sind.

(Anerkennung andiese Antwort).

Beachten Sie, dass die Informationen im Dateisystem gespeichert sind. Um sie für zukünftige Dateisysteme zu verwenden, müssen Sie sie speichern, bevor Sie das aktuelle löschen. Und wenn Sie die Partitionstabelle ändern oder eine andere Blockgröße für ein neues Dateisystem wählen, müssen Sie die Zahlen neu berechnen.

verwandte Informationen