Laut smartd habe ich eine Festplatte mit einigen ausstehenden unlesbaren Sektoren. Was wäre der einfachste Weg, um die Festplatte neu zuzuordnen und zu verhindern, dass sich smartd beschwert?
Heute bekomme ich jede Stunde zwei davon:
10. September 23:15:35 hylton smartd [3353]: Gerät: / dev / sdc, 1 Derzeit nicht lesbare (ausstehende) Sektoren
Das System ist ein x86-System, auf dem Ubuntu Linux 9.10 (flott) ausgeführt wird. Die Festplatte ist Teil einer LVM-Gruppe. So identifiziert smartctl die Festplatte:
Modellfamilie: Western Digital Caviar Serial ATA-Familie der zweiten Generation Gerätemodell: WDC WD5000AAKS-00TMA0 Seriennummer: WD-WCAPW4207483 Firmware-Version: 12.01C01 Benutzerkapazität: 500.107.862.016 Byte
Antworten:
Ein ausstehender unlesbarer Sektor ist ein Sektor, der einen Lesefehler zurückgegeben hat und den das Laufwerk bei der ersten möglichen Gelegenheit zum erneuten Zuordnen markiert hat. Die Neuzuordnung kann jedoch erst durchgeführt werden, wenn eines von zwei Dingen eintritt:
Bis dahin steht der Sektor noch aus. Sie haben also zwei entsprechende Möglichkeiten, um damit umzugehen:
Offensichtlich ist (1) nicht destruktiv, daher sollten Sie es wahrscheinlich zuerst versuchen. Beachten Sie jedoch, dass ein kontinuierliches Lesen aus einem fehlerhaften Bereich wahrscheinlich zu einem schnelleren Ausfall führt, wenn das Laufwerk ernsthaft ausfällt . Wenn Sie viele ausstehende Sektoren und andere Fehler haben und sich um die Daten auf dem Laufwerk kümmern, empfehle ich, diese außer Betrieb zu nehmen und das hervorragende Tool ddrescue zu verwenden, um so viele Daten wie möglich wiederherzustellen. Entsorgen Sie dann das Laufwerk.
Wenn der betreffende Sektor Daten enthält, die Sie nicht interessieren oder die aus einer Sicherung wiederhergestellt werden können, ist das Überschreiben wahrscheinlich die schnellste und einfachste Lösung. Sie können dann die neu zugewiesenen und ausstehenden Zählungen für das Laufwerk anzeigen, um sicherzustellen, dass der Sektor versorgt wurde.
Wie finden Sie heraus, was der Sektor im Dateisystem entspricht? Ich habe hier einen ausgezeichneten Artikel auf der smartmontools -Website gefunden , obwohl er ziemlich technisch und spezifisch für ext2 / 3/4 und reiser-Dateisysteme ist.
Ein einfacherer Ansatz, den ich auf einem meiner eigenen (Mac) Laufwerke verwendet habe, besteht darin
find / -xdev -type f -print0 | xargs -0 ...
, jede Datei auf dem System zu lesen. Notieren Sie sich die ausstehende Anzahl, bevor Sie diese ausführen. Wenn sich der Sektor in einer Datei befindet, erhalten Sie eine Fehlermeldung von dem Tool, mit dem Sie die Dateien gelesen haben (z. B. md5sum), das Ihnen den Pfad dazu zeigt. Sie können sich dann darauf konzentrieren, nur diese Datei erneut zu lesen, bis sie erfolgreich gelesen wurde. Oft löst dies das Problem, wenn es sich um eine selten verwendete Datei handelt, die nur einige Male erneut gelesen werden musste. Wenn der Fehler behoben ist oder beim Lesen aller Dateien keine Fehler auftreten, überprüfen Sie die Anzahl der ausstehenden Dateien, um festzustellen, ob sie verringert wurden. Wenn ja, wurde das Problem durch Lesen gelöst.Wenn die Datei nach mehreren Versuchen (z. B. 20) nicht erfolgreich gelesen werden kann, müssen Sie die Datei oder den Block in der Datei überschreiben, damit das Laufwerk den Sektor neu zuordnen kann. Sie können ddrescue für die Datei (und nicht für die Partition) verwenden, um nur den einen Sektor zu überschreiben, indem Sie in eine temporäre Datei kopieren und dann erneut zurückkopieren. Beachten Sie, dass das Entfernen der Datei an dieser Stelle eine schlechte Idee ist, da der fehlerhafte Sektor in die freie Liste aufgenommen wird, in der es schwieriger ist, ihn zu finden. Es ist auch schlecht, es komplett zu überschreiben, da die Sektoren wieder in die freie Liste aufgenommen werden. Sie müssen die vorhandenen Blöcke neu schreiben. Die
notrunc
Optiondd
ist eine Möglichkeit, dies zu tun.Wenn keine Fehler auftreten und die Anzahl der ausstehenden Ereignisse nicht abgenommen hat, muss sich der Sektor in der freien Liste oder in einem Teil der Dateisysteminfrastruktur befinden (z. B. eine Inode-Tabelle). Sie können versuchen, den gesamten freien Speicherplatz mit zu füllen
cat /dev/zero >tempfile
, und dann die Anzahl der ausstehenden Speicherplätze überprüfen. Wenn es ausfällt, war das Problem in der freien Liste und ist jetzt verschwunden.Wenn sich der Sektor in der Infrastruktur befindet, haben Sie ein schwerwiegenderes Problem und es werden wahrscheinlich Fehler auftreten, wenn Sie nur den Verzeichnisbaum durchlaufen. In dieser Situation denke ich, dass die einzig sinnvolle Lösung darin besteht, das Laufwerk neu zu formatieren und optional ddrescue zu verwenden, um bei Bedarf Daten wiederherzustellen.
Behalten Sie das Laufwerk im Auge. Die Umverteilung des Sektors ist ein sehr guter Kanarienvogel in der Kohlenmine , der Sie möglicherweise frühzeitig vor einem Ausfall der Fahrt warnt. Durch frühzeitiges Handeln können Sie einen späteren katastrophalen und sehr schmerzhaften Erdrutsch verhindern. Ich schlage nicht vor, dass einige Sektorumverteilungen ein Hinweis darauf sind, dass Sie das Laufwerk verwerfen sollten. Alle modernen Laufwerke müssen neu zugewiesen werden. Wenn das Laufwerk jedoch nicht sehr alt ist (<1 Jahr) oder Sie häufig neue Neuzuweisungen erhalten (> 1 / Monat), empfehle ich Ihnen, es so schnell wie möglich auszutauschen.
Ich habe keine empirischen Beweise, um dies zu beweisen, aber meine Erfahrung zeigt, dass Festplattenprobleme durch gelegentliches Lesen der gesamten Festplatte, entweder durch eine
dd
der unformatierten Festplatten oder durch Lesen jeder Datei mitfind
. Fast alle Festplattenprobleme, die ich in den letzten Jahren hatte, sind zuerst in selten verwendeten Dateien oder auf Computern aufgetreten, die nicht viel verwendet werden. Dies ist auch heuristisch sinnvoll, da das Laufwerk bei häufigem erneuten Lesen eines Sektors die Möglichkeit hat, es neu zuzuweisen, wenn es zum ersten Mal ein geringfügiges Problem mit diesem Sektor feststellt, anstatt zu warten, bis der Sektor vollständig unlesbar ist. Das Laufwerk kann nichts mit einem Sektor tun, es sei denn, der Host greift irgendwie darauf zu, entweder durch Lesen oder Schreiben oder durch Ausführen eines der SMART-Tests.Ich möchte mit der Idee eines nächtlichen oder wöchentlichen Cron-Jobs experimentieren, der die gesamte Festplatte liest. Derzeit verwende ich ein "RAID" für arme Männer, bei dem ich eine zweite Festplatte im Computer habe und jede Nacht die Hauptfestplatte darauf sichern kann. In mancher Hinsicht ist dies tatsächlich besser als die RAID-Spiegelung, denn wenn ich versehentlich eine Datei vermassle und lösche, kann ich die gestrige Version sofort von der Sicherungsdiskette abrufen. Andererseits glaube ich, dass ein Hardware-RAID-Controller im Hintergrund viel gute Arbeit leistet, um Festplattenprobleme zu überwachen, zu melden und zu beheben, sobald sie auftreten. Mein aktuelles Sicherungsskript verwendet
rsync
, um das Kopieren von Daten zu vermeiden, die sich nicht geändert haben. Angesichts der Notwendigkeit, alle Sektoren erneut zu lesen, ist es möglicherweise besser, alles zu kopieren oder ein separates Skript zu erstellen, das jede Woche die gesamte unformatierte Festplatte liest.quelle
dd if=/dev/sda ...
und Sektoren stehen noch aus. Irgendeine Idee warum?Verwenden Sie die auf der Western Digital-Website verfügbare Data Lifeguard Diagnostic für DOS-Software (bootfähige CD)
quelle
dd if=/dev/zero of=/dev/sdc bs=4k
- dies wird alle Daten löschen auf/dev/sdc
quelle