2016-04-28

USB-Festplatte auf Fehler prüfen bzw. reparieren


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.
  1. Mit dem Disk Utilitydie Disk-ID ermittelt:
    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
    Meine Seagate-Harddisk hatte also die Disk-ID disk1. (Das kann sich nach jedem Abziehen ändern.)

  2. 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:
    
  3. 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)
Wie gesagt, das Disk Utility hat bei der Prüfung keine Fehler gefunden und erlaubt auch keine Prüfung aller Blöcke

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.
    admin$ diskutil randomDisk 1 rdisk1
    Randomly erasing the disk 1 times
    Started erase on disk1
    [ \ 0%................................................... ]  1% 26:27:57 
    
    Das 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.
Leider hat die Platte auch nach dieser Lese- und Schreib-Aktion immer noch 2 I/O-Error, wenn ich sie erneut mit dd wie oben beschrieben überprüfe. Deshalb habe ich Kontakt mit Seagate aufgenommen. Nachdem ich meine Amazon-Rechnung für die Platte an Segate gemailt habe wurde mir die Garantie auf 2 Jahre verlängert.



Fußnote
[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.