Das Dienstprogramm „badblocks“ meldet ständig „letzter Block ungültig“

Das Dienstprogramm „badblocks“ meldet ständig „letzter Block ungültig“

Ich versuche, es auf einem Laufwerk mit einer einzelnen Partition auszuführen badblocks. Das Laufwerk enthält ein FreeBSD-Dateisystem.

Ich boote mit einem Linux Live-USB-Laufwerk. Das Laufwerk ist ausgehängt. Die Ausgabe fdisk -llautet:

   Device  Boot     Start          End    Id     System
/dev/sda1     *        63   976773167+    a5     FreeBSD

Also führe ich aus:

# badblocks -v /dev/sda1

Und es heißt:

badblocks: invalid last block - /dev/sda1

Ich kann dazu keine nützlichen Informationen finden. Benutze ich das badblocksDienstprogramm hier richtig? Oder ist dies ein Hinweis darauf, dass mit dem Laufwerk etwas nicht stimmt?

Antwort1

Nein, das ist kein Hinweis darauf, dass etwas mit dem Laufwerk nicht stimmt. Sie erhalten diesen Fehler, weil badblocks /dev/sda1 als letztes Blockargument akzeptiert, anstatt es als Gerät zu akzeptieren.

Die Syntax in Ihrer Frage scheint mir korrekt zu sein. Versuchen Sie, das letzte Blockargument nach dem Gerät anzugeben:
badblocks -v /dev/sda1 976773167

Wenn das nicht funktioniert, versuchen Sie, auch den ersten Block hinzuzufügen:
badblocks -v /dev/sda1 976773167 63

Nur um sicherzustellen, dass dies kein Hinweis darauf ist, dass mit Ihrem Laufwerk etwas nicht stimmt, ist hier die Ausgabe, wenn ich ein ungültiges Last-Block-Argument „nope“ hinzufüge:

sudo badblocks -v /dev/sdb1 nope
badblocks: letzter Block ungültig – nope


Hier ist ein Beispiel aus meinem Bash-Verlauf vom letzten Mal, als ich Badblocks verwendet habe (für den Zugriff auf diese Laufwerke auf meinem System ist Sudo-Zugriff erforderlich):
sudo badblocks -v /dev/sdb1

Ausgabe:

Überprüfung der Blöcke 0 bis 976751967.
Überprüfung auf fehlerhafte Blöcke (Nur-Lese-Test):

Wenn ich den Vorgang nach einer Weile mit Strg+C abbreche, ist die Ausgabe:

Unterbrochen bei Block 7470720

Hier ist die Syntax zum Fortsetzen des Vorgangs (siehe man badblocks):
badblocks -v Gerät [ letzter Block ] [ erster Block ]

Der „letzte Block“ ist der letzte Block, der auf dem Gerät gelesen werden soll, und der „erste Block“ ist der Block, bei dem mit dem Lesen begonnen werden soll. Beispiel:
sudo badblocks -v /dev/sdb1 976751967 7470720

Ausgabe:

Überprüfung der Blöcke 7470720 bis 976751967. Überprüfung auf fehlerhafte Blöcke (Nur-Lese-Test):

Antwort2

Der Befehl „badblocks“ auf moderner Festplattenhardware lohnt sich heutzutage kaum noch. Dies liegt daran, dass die Laufwerkssteuerplatine fehlerhafte Blöcke intern erkennt und automatisch aus einer anfänglich zugewiesenen Anzahl „Ersatzblöcke“ ersetzt. Wenn Ihnen diese Ersatzblöcke ausgegangen sind und Sie Probleme mit fehlerhaften Blöcken haben, würde ich DRINGEND empfehlen, die Festplatte auszutauschen, da die Hardware defekt ist.

Wenn Sie den Zustand des Laufwerks ermitteln möchten, unterstützen die meisten modernen Laufwerke die SMART-Laufwerksschnittstelle, um den Zustand des Laufwerks zu melden. Es gibt viele Dienstprogramme, die den Status und die Informationen zum Zustand des Laufwerks anzeigen. Probieren Sie eines davon aus.

Antwort3

Sie haben Ihren Befehl von einer Webseite kopiert. Der Bindestrich wurde durch ein anderes Bindestrichzeichen in -v ersetzt. (etwas länger als der normale Bindestrich) Geben Sie den Befehl ein oder korrigieren Sie ihn irgendwie.

Antwort4

Wenn dieser Fehler trotz korrekter Syntax auftritt und Sie große Festplatten (z. B. mehrere TB) mit kleiner Blockgröße (z. B. 512 Byte) verwenden, stoßen Sie möglicherweise auf die badblocksEinschränkung bei der Verwendung von 32 Bit für Blocknummern.

Als Workaround können Sie einen größeren Block verwenden. Um die minimale Blockgröße zu finden, badblocksmit der Sie arbeiten können, können Sie einfach badblocksmit unterschiedlichen Werten für -bund ohne Start-/Endblock arbeiten. Wenn Sie einen Fehler wie diesen erhalten

badblocks: Wert zu groß für definierten Datentyp ungültiger Endblock: muss ein 32-Bit-Wert sein

dann versuche die Blockgröße zu erhöhen (z.B. -b 512auf -b 1024oder -b 2048), bis es klappt. Damit verbrauchst du zwar etwas Auflösung, aber es ist besser als nichts.

ddrescueSie können an dieser Stelle auch verwenden oder den Betreuer von kontaktieren badblocks, um das Problem in der nächsten Version zu beheben.

verwandte Informationen