Mein Linux-System hat begonnen, SMART-Fehler in das Syslog zu werfen. Ich habe es aufgespürt und glaube, das Problem ist ein einzelner Block auf der Festplatte. Wie kann ich die Festplatte auf einfache Weise dazu bringen, diesen einen Block neu zuzuweisen? Ich möchte wissen, welche Datei dabei zerstört wurde. (Mir ist bewusst, dass, wenn ein Block auf einer Festplatte ausfällt, wahrscheinlich andere folgen werden. Ich habe ein gutes laufendes Backup und möchte nur versuchen, diese Festplatte funktionsfähig zu halten.)
Durchsuchen des Webs führt zum HOWTO für fehlerhafte Blöcke , in dem ein manueller Vorgang auf einer nicht bereitgestellten Festplatte beschrieben wird. Es scheint kompliziert und fehleranfällig. Gibt es ein Tool, um diesen Prozess unter Linux zu automatisieren? Meine einzige andere Option ist das Diagnosetool des Herstellers , aber ich gehe davon aus, dass der fehlerhafte Block blockiert wird, ohne dass gemeldet wird, was zerstört wurde. Im schlimmsten Fall handelt es sich möglicherweise um Dateisystem-Metadaten.
Der betreffende Datenträger ist die primäre Systempartition. Verwendung von ext3fs und LVM. Hier ist das Fehlerprotokoll von syslog und das entsprechende Bit von smartctl.
smartd[5226]: Device: /dev/hda, 1 Currently unreadable (pending) sectors
Error 1 occurred at disk power-on lifetime: 17449 hours (727 days + 1 hours)
... Error: UNC at LBA = 0x00d39eee = 13868782
Es gibt einen vollständigen Smartctl-Dump im Pastebin .
Antworten:
Du könntest es versuchen
hdparm --write-sector <LBA> /dev/ice
.Ich kenne keine andere Möglichkeit, dies zu tun - Sie müssen die LBA manuell in Dateisystemblöcke konvertieren (wie Sie bereits gefunden haben)
quelle
Ich habe früher Plattenfirmware für WD geschrieben und einmal die Firmware geschrieben, die fehlerhafte Blöcke neu zugewiesen hat.
Erstens werden die meisten fehlerhaften Blöcke beim Lesen und nicht beim Schreiben erkannt. Das Schreiben erfolgt blind, dh die Daten werden ohne Prüfung geschrieben. Wenn der Datenträger beim Schreiben fehlerhaft ist, werden Sie ihn nicht kennen, bis der Host einen Lesevorgang für diesen Sektor ausführt. Es gibt einen kleinen Teil des Sektors (den Sektor-Header), der beim Schreiben gelesen wird, um den richtigen Sektor zu lokalisieren. Wenn beim Lesen des Sektor-Headers ein Fehler auftritt, weist das Laufwerk den Sektor neu zu und schreibt ihn mit den empfangenen Daten aus dem Schreibbefehl. Die überwiegende Mehrheit der fehlerhaften Blöcke wird jedoch beim Lesen erkannt. Nur weil ein Schreibvorgang für einen Sektor erfolgreich ist, bedeutet dies nicht, dass der Datenträger in Ordnung ist oder der Sektor neu zugewiesen wurde.
Nun zur Neuzuweisung von fehlerhaften Blöcken (auch als Neuzuweisung bezeichnet). Ja, normalerweise versucht das Laufwerk, einen Sektor neu zuzuweisen, wenn der Fehler schwerwiegend genug ist (dh der ECC-Fehler ist schwerwiegend genug), aber das Laufwerk kann die Daten nach der ECC-Korrektur immer noch wiederherstellen. Normalerweise geschieht dies automatisch. Die einzige Ausnahme besteht darin, dass der Host das Laufwerk zuvor angewiesen hat, keine automatischen Neuzuordnungen vorzunehmen, dies wird jedoch selten durchgeführt.
Was passiert also, wenn das Laufwerk einen Lesevorgang durchführt und die Daten nicht wiederherstellen kann? Nichts. Der Fehler wird dem Host gemeldet, aber es wird keine Neuzuweisung vorgenommen. Das Problem ist, dass das Laufwerk den Sektor neu zuweisen könnte, aber nicht die geringste Ahnung hat, welche Daten in den neu zugewiesenen Sektor geschrieben werden sollen. Wenn nur eine Reihe von Nullen geschrieben und der Sektor dann erneut gelesen wird, werden alle Nullen zurückgegeben, ohne dass darauf hingewiesen wird, dass die Daten ungültig sind. Dies entspricht im Wesentlichen der Beschädigung von Daten. Das Laufwerk kann sich aus verschiedenen Gründen nicht darauf verlassen, dass der Host die Fehler protokolliert (z. B. wenn das Laufwerk auf einen neuen Host verschoben wurde). nicht wiederhergestellt werden.
Moderne Laufwerke speichern jedoch die Position des fehlerhaften Sektors, wenn er nicht neu zugeordnet werden kann. Die Anzahl der fehlerhaften Sektoren, die auf eine Neuzuweisung warten, können Sie den SMART-Daten entnehmen. Wenn in einen der fehlerhaften Sektoren, die auf eine Neuzuweisung warten, geschrieben wird, erfolgt die Neuzuweisung, da das Laufwerk nach der Neuzuweisung über gültige Daten zum Schreiben verfügt. Wenn die Leute sagen, das Schreiben in einen schlechten Sektor würde ihn neu zuordnen, ist das wirklich nur die halbe Wahrheit. Das Laufwerk muss zuerst gelesen werden, damit das Laufwerk alle fehlerhaften Sektoren erkennen kann, die nicht automatisch neu zugeordnet werden können. Auf diese Weise können Sie ein gesamtes Laufwerk schreiben, und die SMART-Daten geben an, dass keine fehlerhaften Sektoren auf eine Neuzuweisung warten. Sie haben jedoch nicht unbedingt alle fehlerhaften Sektoren aus dem Laufwerk entfernt. Wenn Sie also wirklich alle fehlerhaften Sektoren löschen möchten,
Es gibt andere Möglichkeiten, mit fehlerhaften Blöcken umzugehen, die nicht neu zugeordnet werden können. Wenn das Laufwerk Teil einer redundanten RAID-Konfiguration ist (dh nicht RAID 0), sollte die RAID-Software die Daten für einen fehlerhaften Sektor automatisch von den anderen Laufwerken wiederherstellen und in den neu zugewiesenen Sektor schreiben. SCSI-Datenträger verfügen über einen expliziten Befehl zum erneuten Zuweisen von Blöcken, mit dem der Host die Neuzuweisung erzwingen kann, selbst wenn keine gültigen Daten zum Schreiben in den Block vorhanden sind, die Verwendung jedoch recht gering ist.
quelle
hdparm -R
(unter der Annahme eines relativ aktuellen HDParms) aktiviert werden kann. Dies führt zu einer erheblichen Beeinträchtigung der Schreibleistung (etwa die Halbierung des Schreibdurchsatzes und des Schreib-IOPS, da jeder Schreibvorgang jetzt einen nachfolgenden Lesevorgang erfordert). Wenn Ihre Hardware dies jedoch unterstützt und Ihre Arbeitslast stark ausgelesen wird, kann dies eine sehr praktikable vorbeugende Maßnahme sein.Ich denke alles was Sie tun müssen ist:
Angenommen, / dev / hda1 ist die (nicht gemountete) Partition. Oder:
einen (langsameren) zerstörungsfreien Lese- / Schreibtest durchführen. Es muss noch abmontiert werden. Ich denke jedoch nicht, dass dies Ihnen Details über verlorene Daten geben wird.
quelle
Michael hat es richtig und in den meisten Fällen würde ich sagen, ersetzen Sie einfach das Laufwerk, sie sind billig. Wenn Sie jedoch keine Backups haben und keine wichtigen Daten vom Laufwerk abrufen können oder nur versuchen möchten, das Laufwerk zu reparieren, sollten Sie Spinrite auf höchster Ebene verwenden.
Ich hatte ein Laptop-Laufwerk, das vor ein paar Jahren anfing, Geräusche zu machen. Badblocks zeigten, dass auf dem Laufwerk 118 oder mehr fehlerhafte Blöcke für den Endbenutzer sichtbar waren. Da ich bereits eine Kopie von SpinRite besaß, entschloss ich mich, es vor dem Kauf eines neuen Laufwerks auszuprobieren. Nachdem Spinrite auf dem Laufwerk ausgeführt wurde, zeigten Badblocks 0 fehlerhafte Blöcke und die Geräusche hörten auf. Die Fahrt hatte seit über zwei Jahren gearbeitet.
quelle
Wenn Sie über Backups verfügen und wissen, dass dies ein logischer Fehler und kein physikalischer Fehler ist, ist es am besten, die Disc auf Null zu setzen.
Ich würde MHDD verwenden, es ist ziemlich einfach zu verwenden und solange Sie daran denken, Ihre Festplatte im BIOS auf IDE-Emulation und dann wieder auf AHCI zu setzen, wenn Ihre Arbeit erledigt ist, brauchen Sie sich keine Sorgen zu machen.
Sobald Sie mit MHDD gebootet haben, wählen Sie Ihren Laufwerkstyp im ERASE-Befehl aus und bestätigen Sie Ihre Auswahl.
Holen Sie sich Kaffee, das kann eine Weile dauern.
Nachdem das Laufwerk auf Null gestellt wurde, führen Sie einen Scan (F4) mit der Einstellung "Remap" auf "ON" (Standardeinstellung ist "Off") aus. Wenn es immer noch Probleme mit dem Laufwerk gibt (dies würde bedeuten, dass der Plattenteller physikalisch beschädigt ist und sich das Laufwerk in einem steilen Gefälle befindet), werden diese Probleme mit dieser Option "behoben", indem beschädigte Bereiche gesunden Teilen des Laufwerks zugeordnet werden.
Wenn es keine UNC-Fehler gibt, können Sie und Ihr Laufwerk noch viele Jahre lang befreundet sein.
quelle
Wenn die Festplatte defekt ist, ersetzen Sie sie. Es ist das Risiko nicht wert, dass es mehr auseinander fällt.
quelle