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 wirdmke2fs
. Daher ist die-c
Option zumke2fs
eine viel einfachere und weniger fehleranfällige Methode, eine Festplatte vor dem Formatieren auf fehlerhafte Blöcke zu prüfen, damke2fs
automatisch die richtigen Parameter an das Programm übergeben werdenbadblocks
.
Lassen Sie uns also Folgendes untersuchen man 8 badblocks
:
Wichtiger Hinweis: Wenn die Ausgabe von an die Programme oder
badblocks
weitergeleitet 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 .e2fsck
mke2fs
badblocks
-c
e2fsck
mke2fs
Darin wird Folgendes erwähnt e2fsck
(auch fsck.ext4
im Fall von ext4), also schauen wir es uns an man 8 e2fsck
[Hervorhebung von mir]:
-c
Diese Option bewirkt,e2fsck
dassbadblocks(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 mke2fs
und e2fsck
Teile desselben Toolkits sind,erwarten -c
auf die gleiche Weise zu mke2fs
funktionieren, 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.