Symptome
Vor zwei Tagen hat meine kaum benutzte, 1 Jahr alte, externe USB-Harddisk das Lesen einer großen Datei (4,36 GB DVD-ISO-Image) mit einem einen Input/Output Error abgebrochen. Das Disk Utility (dt. Festplattendienstprogramm) meldete nach Erste Hilfe / Volume überprüfen:
Das Volume SeagateHD ist anscheinend in Ordnung.Ich habe darauhin die betroffene Datei gelöscht und erneut kopiert und versucht eine MD5-Checksumme der Datei zu berechnen – wodurch die ganze Datei gelesen wird. Der Vorgang brach erneut mit einem I/O Error ab. Auch das neu Partitionieren und Formatieren brachte keine wirkliche Besserung. Nach dem erneuten Kopieren der Daten auf die Platte war allerdings eine andere Datei defekt. Auch das aus Auswechseln von USB-Adapter[1] und USB-Kabel brachte keine Besserung.
Kein S.M.A.R.T.
Leider kann man unter Mac OS X bei USB-Platten den S.M.A.R.T-Status nicht auslesen. Man müsste die Platte in den Macbook einbauen um den S.M.A.R.T-Status auslesen zu können. Mittlerweile habe ich eine Lösung für SMART am Mac gefunden, was ich aber lieber in einem neuen Blog-Eintrag erörtern möchte. Die Lösung ist die Installation des SAT-SMART-Driver.
Vermutliche Ursache
Ich bin zu dem Schluss gekommen, dass die Platte mehrere Oberflächenfehler hat und das bei meinen Formatier-/Kopier-Aktionen vom HDD-Controller als defekt erkannte Sektoren automatisch repariert worden sind (engl. Bad Sector Reallocation) als ich die Datei erneut überspielt habe. Allerdings sind nicht alle Fehler erkannt worden, weil meine Leseversuche vom Filesystem abgebrochen wurden sobald ein defekter Block anhand erkannt wurde. Die Datei hatte aber weitere fehlerhafte Blöcke von denen wiederum nur der erste bei erneuten Lesen erkennt wurde, weil der Lesevorgang sofort vom Filesystem abgebgrochen wird.
Intensive Prüfung
Um den Fehler genauer zu Untersuchen benutzt man unter Windows die Tools vom Festplattenhersteller. In meinen Fall wäre das SeaTools for Windows gewesen. Leider gelang es mir nicht die SeaTools for Windows auf einer Virtuellen Maschine (Parallels mit Windows XP SP3) zu installieren, das die Installation immer Stecken blieb. Da ich sonst keinen PC habe und mir auch keine BootCamp-Installation dafür antun wollte, habe ich das Problem wie folgt im Mac OS X Terminal angegangen.
- Mit dem Disk Utilitydie Disk-ID ermittelt:
Meine Seagate-Harddisk hatte also die Disk-ID disk1. (Das kann sich nach jedem Abziehen ändern.)admin$ diskutil list /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *128.0 GB disk0 1: EFI 209.7 MB disk0s1 2: Apple_HFS SSD128 127.7 GB disk0s2 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *1.0 TB disk1 1: EFI EFI 209.7 MB disk1s1 2: Apple_HFS SeagateHD 999.9 GB disk1s2
- Die Disk-ID habe ich dann verwendet, um die ganzen 1TB zu lesen, ohne das ein Fehler den Vorgang abbricht.
admin$ sudo dd if=/dev/rdisk1 of=/dev/null conv=noerror bs=131072 Password:
- Da der Befehl
dd
keine Fortschrittsanzeige hat, habe ich die Festplattenativität mit dem Utility (dt. Dienstprogramm) Activity Monitor (dt. Aktivitätsanzeige) von Mac OS X überwacht:
Die Einbrüche der Datenrate am Anfang und in der Mitte des Diagramms sind sehr schlecht. Wenn die Datenrate gegen Null geht wurde ein Fehler gefunden, der auch durch mehrmalige Leseversuche der Platte nicht korrigiert werden konnte:
Am Ende wurden dann auch Fehler wie folgende ausgegeben:
dd: /dev/rdisk1: Input/output error 1507+0 records in 1507+0 records out 395051008 bytes transferred in 20.936606 secs (18868914 bytes/sec) dd: /dev/rdisk1: Input/output error 3815477+1 records in 3815477+1 records out 1000204623360 bytes transferred in 11894.348695 secs (84090743 bytes/sec)
Selbstreparatur anstoßen
Moderne Festplatten merken sich die gefundenen Fehler und führen eine Bad Sector Reallocation durch, wenn die Platte angewiesen wird die defekten Sektoren neu zu beschreiben. Dafür haben moderne Platte einen Haufen ungenutzer Sektoren in reserve. Wenn also eine kaputte Datei gelöscht und der freigewordene Platz mit einer neuen Datei überschrieben werden soll, wird der ganze Sektor an mit dem defekten Block aussortiert und stattdessen einer der Reserve-Sektoren verwendet. Da er mühsam ist eine ganze Platte von Hand mit Daten zu füllen und ich auch die Partitionstabelle überschreiben wollte, habe ich wieder zum Terminal gegriffen.
- Mit dem
diskutil
kann man alle Blöcke löschen.
Dasadmin$ diskutil randomDisk 1 rdisk1 Randomly erasing the disk 1 times Started erase on disk1 [ \ 0%................................................... ] 1% 26:27:57
diskutil
hat netterwese eine Progressbar. Bei 26,5 Stunden auch nötig! 26,5 Stunden – WTF!
- Leider habe ich erst später festgestellt, dass das mit zeroDisk statt randomDisk 5-mal schneller ist.
[1] | Die Seagte Backup Plus Portable STBU1000200 (1 TB, 2½ Zoll, 5400 rpm) besteht aus USB 3.0 Adapter/Kabel und einem USM-Modul (Universal Storage Media) welches nur ein Gehäuse um eine 2½ Zoll Platte ist. Durch den abziehbaren Adapter kann man die Platte auch an andere Schnittstellen wie FireWire 800, eSATA oder Thunderbolt, wenn man einen entsprechenden Adapter hat. Leider gab es diese Adapter nur kurzzeitig und sehr teuer einzel zu kaufen. Und auch die USM-Module (Festplatten im USM-Gehäuse) waren eigentlich immer teurer als eine Platte inkl. USB-Adapter. Daher ist es kein Wunder das dieses von der Fachpresse gelobte Standard quasi tot ist. USM-Gehäuse für selbstgemachte USM-Module gibt es wohl nur noch von StarTech. Einen USB-3.0-Adapter bekommt man noch von MAIWO direkt aus China. |
Keine Kommentare:
Kommentar veröffentlichen