Hintergrund
Nach einem kürzlichen Zusammenstoß mit einem Festplattenausfall wollte ich ein HOWTO zusammenstellen, wie man eine Festplatte spiegeln kann, wobei Fehler unter Linux ignoriert werden. Es ist wichtig sicherzustellen, dass diese Befehle korrekt ausgegeben werden und dass die richtigen Laufwerks- und Gerätenamen verwendet werden. dd bietet keine Eingabeaufforderung und Bestätigung - mit Vorsicht verwenden!
Die Wiederherstellung von Festplattendaten bei defekten Sektoren ist in der Regel nicht allzu kompliziert.
Spiegelung
Zuerst müssen wir die optimale I/O-Größe bestimmen, um unsere Lese- und Schreibgeschwindigkeit zu maximieren:
fdisk -l /dev/sda|grep "E/A-Größe"
In meinem Fall zeigt das Ergebnis 512 Bytes. Angenommen, unser ausgefallenes Laufwerk ist /dev/sdb und unser neues Laufwerk /dev/sdc, starten wir die Spiegelung wie folgt:
dd if=/dev/sdb of=/dev/sdc conv=sync,noerror bs=512
Das noerror-Flag wird übergeben, um dd anzuweisen, bei Lesefehlern nicht zu beenden
Fortschrittsprüfung
dd druckt beim Empfang des USR1-Signals eine Statusprüfung aus. Geben Sie in einem separaten Terminal Folgendes aus:
kill -USR1 $(pidof dd)
Wird fortgesetzt
Nach einer Reihe fehlerhafter Sektoren sinkt die Übertragungsgeschwindigkeit von dd häufig und bleibt gedrosselt. Um dies abzumildern, stoppen Sie zuerst die Übertragung mit Strg-C, damit dd den aktuellen Fortschritt ausdrucken kann:
6002656+0 records in 6002656+0 records out 3073359872 bytes (3.1 GB) copied
Stellen Sie nun sicher, dass alle Daten geleert sind:
synchronisieren
Wenn Sie fertig sind, entfernen Sie das Laufwerk und schließen Sie es wieder an, bevor Sie dort weitermachen, wo dd zuletzt aufgehört hat:
dd if=/dev/sdb of=/dev/sdc bs=512 conv=sync,noerror seek=6002656 skip=6002656
Wenn Sie fertig sind, sollten Sie die Dateisysteme des neuen Laufwerks scannen, um Dateisystemfehler und -beschädigungen zu erkennen und zu reparieren.
Links
IO Digital Sek.