Verwenden von "Badblocks" auf modernen Festplatten

21

Ich möchte Badblocks verwenden, um meine Festplatten zu überprüfen, und würde es begrüßen, wenn die Funktionsweise geklärt würde.

Kann mir bitte jemand die besten Optionen für -bund erklären -c? Ich habe ihre Definitionen von der Manpage übernommen, bin mir aber nicht sicher, ob größere Formate für moderne Festplatten mit 64 MB RAM und 4 KB Sektoren von Vorteil sind.

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

Zweitens möchte ich wissen, ob der Schreibmodus-Test gründlicher ist als der zerstörungsfreie Lese- / Schreibmodus.

Wie viele Neuzuweisungen für den SMART-Sektor sind zulässig / sollten Laufwerke mit einer Neuzuweisungsanzahl ungleich Null sofort ersetzt werden?

Yoren
quelle
3
für den 2. Teil: Sobald Sie anfangen, Badblocks zu sehen, bedeutet dies, dass etwas schief gelaufen ist. Dies ist wahrscheinlich ein gutes Zeichen, dass Sie die Festplatte ersetzen sollten, bevor Sie sie überhaupt nicht lesen können. In jedem Fall sollten Sie jedoch vor einem Ausfall immer 2 Sicherungen wichtiger Daten (1 lokale, 1 ferne) zusätzlich zur Arbeitskopie haben. Details zu meiner Antwort finden Sie dort: superuser.com/a/528181/174998
Olivier Dulac
4
Für die Blockgröße: Diese sollte die tatsächliche Blockgröße widerspiegeln, die Ihr Betriebssystem zum Speichern von Daten auf dieser Festplatte verwendet hat (je nach verwendetem Dateisystem). Es geht nicht darum, Dinge zu beschleunigen, sondern es markiert einen Block als "schlecht". Dieser Block ist in der Tat 1 Block und nicht 1/2 oder 1/4 oder sogar 2 (oder mehr) Blöcke.
Olivier Dulac

Antworten:

21

Frage 1:

In Bezug auf die -bOption: Dies hängt von Ihrer Festplatte ab. Moderne, große Festplatten haben 4-KB-Blöcke. In diesem Fall sollten Sie diese festlegen -b 4096. Sie können die Blockgröße vom Betriebssystem abrufen , und diese erhalten Sie normalerweise auch, indem Sie entweder die Datenträgerinformationen vom Etikett ablesen oder die Modellnummer des Datenträgers googeln. Wenn Sie einen -bWert festlegen, der größer als Ihre Blockgröße ist, kann die Integrität der badblocksErgebnisse beeinträchtigt werden (dh Sie können falsche Negative erhalten: Es werden keine fehlerhaften Blöcke gefunden, wenn sie möglicherweise noch vorhanden sind). Wenn Sie einen -bWert festlegen, der kleiner als die Blockgröße Ihres Laufwerks ist, badblockskann die Ausführungsgeschwindigkeit beeinträchtigt werden. Ich bin nicht sicher, aber es kann andere Probleme mit der Einstellung geben-bDa die Integrität eines gesamten Blocks nicht überprüft wird, ist es möglicherweise immer noch möglich, falsche Negative zu erhalten, wenn der Block zu klein eingestellt ist.

Die -cOption entspricht, wie viele Blöcke gleichzeitig überprüft werden sollen. Batch-Lesen / Schreiben im Grunde. Diese Option wirkt sich nicht auf die Integrität Ihrer Ergebnisse aus, wirkt sich jedoch auf die Ausführungsgeschwindigkeit aus badblocks. badblocksschreibt (optional), liest, puffert, prüft und wiederholt für alle N Blöcke, wie durch angegeben -c. Wenn -cdie Einstellung zu niedrig ist, badblocksdauern Ihre Durchläufe viel länger als gewöhnlich, da das Einreihen und Verarbeiten einer separaten E / A-Anforderung mit einem Mehraufwand verbunden ist und der Datenträger möglicherweise zusätzlichen Mehraufwand pro Anforderung verursacht. Wenn -czu hoch eingestellt ist, ist badblocksmöglicherweise nicht genügend Speicher verfügbar. Wenn dies passiert, badblockswird ziemlich schnell nach dem Start fehlschlagen. Zu den weiteren Überlegungen gehören parallele badblocksLäufe: Wenn Sie laufenbadblocksBei mehreren Partitionen auf derselben Festplatte (schlechte Idee) oder bei mehreren Festplatten über denselben E / A-Kanal sollten Sie wahrscheinlich auf -ceinen vernünftig hohen Wert abstimmen, wenn der verfügbare Speicher vorhanden ist, badblocksdamit die parallelen Läufe nicht um die E / A-Bandbreite kämpfen und kann auf vernünftige Weise parallelisieren.

Frage 2:

Im Gegensatz zu den anderen Antworten ist der -wSchreibmodus-Test nicht mehr oder weniger zuverlässig als der zerstörungsfreie Lese- / Schreibtest, aber doppelt so schnell, und zwar auf Kosten der Zerstörung aller Ihrer Daten. Ich erkläre warum:

Im zerstörungsfreien Modus wird badblocksFolgendes ausgeführt:

  1. Lesen Sie vorhandene Daten, prüfen Sie sie (lesen Sie sie gegebenenfalls erneut) und speichern Sie sie im Speicher.
  2. Schreiben Sie ein vorbestimmtes Muster (das mit der -pOption überschrieben werden kann , aber normalerweise nicht erforderlich ist) in den Block.
  3. Lesen Sie den Block zurück und stellen Sie sicher, dass die gelesenen Daten mit dem Muster übereinstimmen.
  4. Schreiben Sie die Originaldaten zurück auf die Festplatte.
    • Ich bin mir nicht sicher, aber es wird wahrscheinlich erneut gelesen und überprüft, ob die ursprünglichen Daten erfolgreich geschrieben wurden, und es werden immer noch Prüfsummen für dasselbe ausgegeben.

Im destruktiven ( -w) Modus werden badblocksnur die obigen Schritte 2 und 3 ausgeführt. Dies bedeutet, dass sich die Anzahl der Lese- / Schreibvorgänge, die zum Überprüfen der Datenintegrität erforderlich sind, halbiert. Wenn ein Block fehlerhaft ist, sind die Daten in beiden Modi fehlerhaft. Wenn Sie sich für die auf Ihrem Laufwerk gespeicherten Daten interessieren, sollten Sie natürlich den zerstörungsfreien Modus verwenden, da dadurch -walle Daten gelöscht und badblocksstattdessen Muster auf die Festplatte geschrieben werden.

Caveat: Wenn ein Block geht schlecht, ist aber noch nicht ganz verschwunden, können einige Lese- / Schreib - Verifizierungspaar arbeiten, und einige können nicht. In diesem Fall liefert der zerstörungsfreie Modus möglicherweise einen zuverlässigeren Hinweis auf die "Mushiness" eines Blocks, da er zwei Sätze von Lese- / Schreibüberprüfungen durchführt (möglicherweise - siehe Aufzählungszeichen unter Schritt 4). Auch wenn der zerstörungsfreie Modus auf diese Weise zuverlässiger ist, ist er nur zufällig zuverlässiger . Die richtige Methode, um nach Blöcken zu suchen, die nicht vollständig fehlerhaft sind, aber nicht mehrere Lese- / Schreibvorgänge unterstützen, besteht darin badblocks, mit der -pOption mehrere Male dieselben Daten zu verarbeiten .

Frage 3:

Wenn SMART Sektoren neu zuordnet, sollten Sie wahrscheinlich in Betracht ziehen, das Laufwerk so schnell wie möglich zu ersetzen. Laufwerke, die einige Sektoren verlieren , verlieren sie nicht immer , aber die Ursache ist normalerweise ein stark beanspruchtes Laufwerk, das magnetisch matschig wird, oder ein Versagen der Köpfe / Motoren, was zu ungenauen oder fehlgeschlagenen Lese- / Schreibvorgängen führt. Die endgültige Entscheidung liegt natürlich bei Ihnen: Auf der Grundlage des Werts der Daten auf dem Laufwerk und der Zuverlässigkeit, die Sie von den Systemen benötigen, auf denen Sie sie ausführen, können Sie entscheiden, ob Sie weiterarbeiten möchten. Ich habe einige Laufwerke mit bekannten fehlerhaften Blöcken, die sich seit Jahren mit SMART-Warnungen in meinem Dateiserver drehen, aber sie werden nach einem Zeitplan gesichert, sodass ich einen Totalausfall ohne große Schmerzen bewältigen kann.

Zac B
quelle
4
Irgendeine Idee, warum -bstandardmäßig 1024? Das kommt mir irgendwie komisch vor. Warum nicht 512?
Ryan J
6
@RyanJ 1024 ist die minimale Blockgröße für ext2. badblocks ist Teil von e2fsprogs und sollte ursprünglich die Liste der fehlerhaften Blöcke eines ext2-Dateisystems auffüllen. Sie müssen es mit derselben Blockgröße wie die FS ausführen, um die Zahlen im richtigen Format für mkfs.ext2 zu erhalten. TL; DR: historische Gründe, mit denen Sie sich nicht befassen sollten.
Sourcejedi
BUUUTT, @Zac B sagte: "Wenn -b auf etwas eingestellt ist, das größer als Ihre Blockgröße ist, kann die Integrität der Badblock-Ergebnisse beeinträchtigt werden." Aber vielleicht sollte es angepasst werden: "Wenn -b auf etwas größer als Ihre Blockgröße und nicht auf ein Vielfaches davon eingestellt ist, kann die Integrität von Badblocks-Ergebnissen beeinträchtigt werden." Was sagen Sie Original-Poster, andere Leute schlauer als ich?
Billy C.
4

1) Wenn Ihre moderne Festplatte eine andere Sektorgröße als 512b verwendet, müssen Sie diese Größe mit der -bOption (dh -b 4096) einstellen . Ohne diese Option wird Ihre Prüfung viel langsamer ausgeführt, da jeder reale Sektor mehrmals versucht wird (achtmal im Fall eines 4k-Sektors). Auch wie Olivier Dulac im Kommentar zur Frage erwähnt -block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

Option -clegt fest, wie viele Sektoren gleichzeitig versucht werden. Dies kann Auswirkungen auf die Leistung haben, und der Wert dieser Leistung kann von einem bestimmten Festplattenmodell abhängen.

2) write-mode test- Nach meinem Verständnis wird nur geprüft, ob Sie einen Hard-Bad-Fehler oder einen Soft-Bad-Fehler haben (auch bekannt als Silent Data Degradation, Bit Rot, Verfall von Speichermedien, UNC-Sektoren).

3) Ich würde SMART Report zum Zeitpunkt nicht vertrauen. Es ist wichtiger, wie sich Werte mit der Zeit ändern. Hier finden Sie auch Untersuchungen von Google zu Fehlertrends bei einer großen Festplattenpopulation. Hier finden Sie einige Erläuterungen dazu. Hier ist zitiert aus der Forschung:

Trotz dieser hohen Korrelation ist es unwahrscheinlich, dass Modelle, die nur auf SMART-Parametern basieren, für die Vorhersage einzelner Laufwerksausfälle nützlich sind.

In Bezug auf Erwähnungen von anderen zum Ersetzen von Festplatten - Möglicherweise liegt kein Problem mit der Festplatte vor, sondern die stille Datenverschlechterung (Bit Rot, Verfall von Speichermedien, UNC-Sektoren). In diesem Fall hat es keinen Sinn, die Festplatte zu ersetzen. Stattdessen ist es nützlich, das Lesen / Schreiben derselben Daten auf die Festplatte durchzuführen. Du könntest hier nachsehen , wie es gelöst werden könnte.

Wenn ein schwerwiegender Fehler vorliegt, können Sie versuchen, das Laufwerk so neu zu partitionieren, dass sich der fehlerhafte Bereich außerhalb der Partitionen befindet. Für mich war dieser Ansatz nützlich und solch ein schlechter Antrieb wurde lange Zeit ohne Probleme verwendet.

Broomerr
quelle
Der erste Satz ist falsch, -bstandardmäßig 1024. Wenn Ihre Festplatte eine andere Sektorgröße als 1024 verwendet, was außerhalb von ext2-Dateisystemen häufig vorkommt, sollten Sie dies angeben.
Hashim
1

Ich würde -b und -c als Standardeinstellung belassen, es sei denn, Sie haben einen bestimmten Grund, sie zu ändern. Sie könnten wahrscheinlich -b auf 4096 setzen, wenn Ihre Festplatte 4k Blockgrößen hat.

Ich würde vorschlagen, dass Sie zuerst Badblocks mit zerstörungsfreiem RW-Test ausführen. Wenn fehlerhafte Sektoren gefunden werden, ist die Festplatte defekt und sollte ersetzt werden. Wenn es KEINE fehlerhaften Blöcke auf nicht destruktiv findet, Sie jedoch immer noch vermuten, dass es fehlerhafte Blöcke gibt, führen Sie den destruktiven RW-Test aus.

Wie viele Neuzuweisungen für den SMART-Sektor sind zulässig / sollten Laufwerke mit einer Neuzuweisungsanzahl ungleich Null sofort ersetzt werden?

Ich würde das Laufwerk ersetzen, sobald Sektoren ersetzt werden.

Thomas
quelle
2
Ich würde das Laufwerk ersetzen, sobald Sektoren ersetzt werden. Woher wissen Sie, dass Blöcke im normalen Betrieb schlecht werden? Bekommst du irgendwie ein Signal?
Alexis Wilke
5
Sie müssen SMART-Protokolle überwachen.
Ярослав Рахматуллин
1
es sei denn, Sie haben einen bestimmten Grund, sie zu ändern . Wie wäre es mit einer Blockgröße, die sich von der Standardgröße von 1024 unterscheidet?
Carcamano
1

Diese Art von geht auf den Unterschied zwischen Badblocks-Lesemodus (nicht destruktiv) und Schreibmodus (destruktiv):

Ein Laufwerk weist nur dann einen fehlerhaften Sektor neu zu, wenn ein Schreibvorgang fehlschlägt. Lesefehler für Dateien werden nur dann "korrigiert", wenn versucht wird, die Datei neu zu schreiben. Andernfalls. Der fehlerhafte Block bleibt Teil der Datei, vorausgesetzt, Sie können möglicherweise etwas wiederherstellen. Lesefehler für Partitionstabellen können nur "korrigiert" werden, indem fehlerhafte Blöcke im Schreibmodus ausgeführt und die Partition neu erstellt werden

Der Lesemodus zeigt Ihnen also, wo sich die fehlerhaften Blöcke befinden, kann aber nichts dagegen tun. Der Schreibmodus testet den Zustand jedes Sektors und veranlasst die Festplatte, einen fehlerhaften Block neu zuzuweisen, jedoch auf Kosten der Zerstörung der Daten. Treffen Sie Ihre Wahl.

David Miller
quelle
0

Die Beantwortung Ihrer zweiten Frage zu neu zugeordneten Sektoren hängt davon ab. Ich spreche aus dem Kontext eines Heimanwenders, der (gelegentlich) solche Dinge überwacht.

  • Wie kritisch sind die auf dem Laufwerk gespeicherten Daten?
  • Was geht verloren, wenn die Festplatte plötzlich hochfährt?
  • Werden die Daten an anderer Stelle gesichert?
  • Ist das Laufwerk ein RAID-Mitglied, bei dem der Verlust des Laufwerks nur minimale Auswirkungen hat?
  • Wächst die Anzahl der neu zugeordneten Sektoren?

Hier sind zwei Situationen, mit denen ich konfrontiert war. Ich hatte ein RAID5 von 6 200 GB-Laufwerken. Nach einem Stromausfall, der zu flackernden Lichtern führte, wurden auf einem Laufwerk 14 neu zugeordnete Sektoren angezeigt und mehrere Fehler protokolliert. Ich habe das Laufwerk beobachtet und es wurden keine Fehler mehr protokolliert und die Anzahl der neu zugeordneten Sektoren blieb stabil. Ich kam zu dem Schluss, dass der Antrieb aufgrund eines Stromausfalls litt und ansonsten nicht ausfiel. Ich habe es jahrelang weiter benutzt. Das ursprüngliche RAID5 wurde ausgemustert, aber ich habe zwei dieser Laufwerke mit einer Betriebsdauer von etwa 10 Jahren. Sie haben eine Handvoll neu zugeordneter Sektoren. Ich verwende zwei davon gespiegelt, um inkrementelle Backup-Dumps von meiner primären Sicherung zu speichern. Auf diese Weise sieht die Hauptsicherung (meistens) Leseoperationen und die Schreibvorgänge werden auf verschiedene Geräte übertragen. Wenn einer dieser alten Antriebe ausfällt, sollte der andere weiterarbeiten. Wenn beide fehlschlagen, Ich ersetze sie durch etwas anderes und führe das Backup-Skript erneut aus. Auswirkung, wenn eines dieser Laufwerke ausfällt, ist nahe Null, sodass ich mir keine Gedanken über neu zugeordnete Sektoren mache.

Ich hatte eine 2-TB-Festplatte, die zu einem Paar gespiegelter Laufwerke gehörte und die anfing, die Anzahl der neu zugeordneten Sektoren zu erhöhen. Zuerst waren es Dutzende, dann Hunderte, dann Tausende. Dies war über einen Zeitraum von Jahren. Das andere Laufwerk des Paares blieb fehlerfrei, und tatsächlich wurde die langsam ausfallende Ableitung nicht vom Array gelöscht. Irgendwann habe ich beide Laufwerke durch 6-TB-Laufwerke ersetzt, und die wachsende Anzahl neu zugeordneter Sektoren war kein Problem mehr. Ich habe immer noch das Laufwerk und es "funktioniert" auch mit etwa 4500 neu zugeordneten Sektoren. Ich habe Laufwerke wie dieses in ein Testsystem (als RAID-Mitglied) eingebaut, um zu sehen, was passiert, wenn eines tatsächlich stirbt. Ich hatte ein paar Möglichkeiten, damit zu arbeiten, und unter allen Umständen verlief der Ersatz ohne Drama.

Auf meinem primären Sicherungsdateiserver ist ein Laufwerkfehler aufgetreten. Es wurde keine erweiterte Warnung ausgegeben, sondern nur auf SATA-Befehle reagiert. Es war ein Mitglied eines ZFS RAIDZ2 und ich ersetzte es ohne Drama. Tatsächlich habe ich auf meinem Testserver fehlerhafte Laufwerke ausgetauscht, ohne den Server aus- und wieder einzuschalten oder neu zu starten.

Ein weiterer Punkt zu beachten, ich habe vor Ort und außerhalb des Standorts Backups aller wichtigen Daten. Wenn ein System verloren geht, gibt es an anderer Stelle zwei Kopien der Daten.

HankB
quelle