September 2021

Defekte Festplatte

Alte HDD: 37800 h (2006) · UDMA_CRC_Error_Count

Nun ist es passiert: Eine von zwei Festplatten ist defekt gegangen! Es war ein Backup-Medium, 500 GB groß. Verwendet seit 2006, etwa 37800 Betriebsstunden. Glücklicherweise hat die Festplatte ihre Funktion nicht schlagartig von einer zur nächsten Sekunde eingestellt, sondern sie wurde allmählich madig. Die Haupt-Festplatte hat etwa 32600 Betriebsstunden und ist 1 TB groß. Sie wurde später angeschafft. Es wurde nun eine neue HDD 2 TB als Ersatz gekauft. Alle Festplatten sind WD Gold Enterprise 24/7. Der betroffene alte PC muß noch etwa 1 Jahr benutzt werden, bevor alle Komponenten für einen neuen PC am Markt verbreitet sind (Alder Lake).

Die defekte HDD bewirkte seit etwa sechs Wochen sporadisch seltsame Fehlererscheinungen. Beispielsweise wurde ihr Boot-Manager vom BIOS aufgerufen, statt der der Haupt-Platte. Oder es wurden beim Boot endlos Zeichen # ausgegeben. Es schlossen sich in vier Schüben S.M.A.R.T.-Fehler UDMA_CRC_Error_Count an. Das Betriebssystem fror dabei jeweils längere Zeit ein, während der nicht gearbeitet werden konnte. Zwischendurch schaltete sich die Platte grundlos alle 5 bis 10 Sekunden AUS und EIN. Dabei fror die Bedienung des Betriebssystems jeweils 3 Sekunden lang ein. Diese Fehler zeigten sich erst nach jeweils mehreren Stunden Betriebszeit. Die Platte mußte sich offenbar erst voll durch-erwärmen. Windows 10 will nicht mehr starten - dauerhaft! Die drei Platten mit 500, 1000, 2000 GB entwickeln Temperaturen von 54, 47, 42 °C, wobei keine einen Grenzwert erreicht. Die Temperatur der nun defekten Platte ist dennoch auffällig hoch.

Die defekte Festplatte funktioniert immer noch, wenn sie außerhalb des PC-Gehäuses kalt in Betrieb gesetzt wird, einige Stunden lang. Auf diese Art konnte Datenrettung von ihr vorgenommen werden. Das Backup-System hatte nämlich große Datenmengen nicht von der Haupt-Platte auf die Backup-Platte kopiert, sondern diese lagen ohne Backup dauerhaft auf der nun defekten Platte. Da es neuerdings 3 TB HDD-Speicher statt 1,5 TB gibt, konnte das Backup-System stark erweitert werden, das zuvor nur die wichtigsten Daten per rsync auf Speicherkarte und zweite HDD kopierte. Dieses wird unter FreeBSD betrieben. Als drittes Medium ist vor wenigen Monaten eine Cloud mit 100 GB hinzugekommen.

Die neue Festplatte mit 2 TB ist logischerweise die neue Haupt-Platte. Sie ist technologisch deutlich besser als die nun defekte Platte, und merkbar besser als die mittlere Platte. Es sind auch jetzt noch ungefähr 400 GB Daten ohne Backup vorhanden. Diese stammen vom ehemaligen DVD-Hobby (mit SCART): DVD mit Menü, und sie sind nicht sonderlich wichtig. Die nun defekte Platte hatte (vor einem Jahr) bei Backup-Vorgängen eine Geschwindigkeit von 38 MB/s Spitzenwert erbracht. Dieser Wert wurde in der letzten Zeit nicht mehr beobachtet. Die beiden anderen Platten als neues Backup-Doppel schafften hingegen 103 MB/s Spitzenwert. Es muß hierbei bedacht werden, daß diese Geschwindigkeiten den Zeitbedarf für das Lesen und das Schreiben umfassen.

safeu   safecard32 /u; safe /u
safeh   safecard32 /home; safe /home
safes   safe2hd s /usr/S
safef   safe2hd f /fat

rcopy   rsync -aHAXivh --stats --progress --modify-window=5 !*

Vorstehend vier Alias-Definitionen, mittels derer ein Backup-Vorgang schnell und einfach manuell ausgelöst werden kann. Desweiteren ein Alias, das eine Verwendung von rsync als Kopierprogramm für lokale Daten erleichtert.

if (-e /dev/ada1s3d && ! -e /dev/hu)  then
   ln -sv /dev/ada1s3d /dev/hu
endif
if (-e /dev/ada1s3e && ! -e /dev/s)  then
   ln -sv /dev/ada1s3e /dev/s
endif
if (-e /dev/ada1s3f && ! -e /dev/x)  then
   ln -sv /dev/ada1s3f /dev/x
endif
if (-e /dev/ada1s3g && ! -e /dev/f)  then
   ln -sv /dev/ada1s3g /dev/f
endif
foreach verz (hu s x f win dvd card)
   if (-e /$verz && ! -d /$verz)  then
      echo "/$verz" 'ist kein Verzeichnis!'
      continue
   endif
   if (! -e /$verz)  mkdir -v /$verz
end

Da der Inhalt des Verzeichnisses /dev nicht mehr statisch ist, sondern bei jedem System-Start generiert wird, die vorstehenden csh-Anweisungen, die von der Login-Shell einmal ausgeführt werden.

/dev/ada0             /dev/ada1
/dev/ada0s1           /dev/ada1s1
/dev/ada0s2           /dev/ada1s2           /dev/ada1s3
/dev/ada0s2a          /dev/ada1s2a          /dev/ada1s3d
/dev/ada0s2b          /dev/ada1s2b          /dev/ada1s3e
/dev/ada0s2d          /dev/ada1s2d          /dev/ada1s3f
/dev/ada0s2e          /dev/ada1s2e          /dev/ada1s3g
/dev/ada0s2f          /dev/ada1s2f
/dev/ada0s2g          /dev/ada1s2g
/dev/ada0s2h          /dev/ada1s2h
/dev/ada0s3
/dev/ada0s4

# /dev/ada0s2:
8 partitions:
#          size     offset    fstype   [fsize bsize bps/cpg]
  a:         5G         16    4.2BSD        0     0     0
  b:        10G          *      swap                    
  c:          *          0    unused        0     0     # "raw" part, don't edit
  d:        15G          *    4.2BSD        0     0     0  #/var
  e:        15G          *    4.2BSD        0     0     0  #/tmp
  f:          *          *    4.2BSD        0     0     0  #/usr
  g:        15G          *    4.2BSD        0     0     0  #/home
  h:        20G          *    4.2BSD        0     0     0  #/u

# /dev/ada1s3:
# bsdlabel -R [-B] -m amd64 /dev/ada1s3 diese_datei
# newfs -j -U -L label /dev/xyz
8 partitions:
#          size     offset    fstype   [fsize bsize bps/cpg]
  c:          *          0    unused        0     0     # "raw" part, don't edit
  d:        40G         16    4.2BSD        0     0     0  #/hu
  e:       250G          *    4.2BSD        0     0     0  #/s
  f:       200G          *    4.2BSD        0     0     0  #/x
  g:          *          *    4.2BSD        0     0     0  #/z

Vorstehend eine Liste der Festplatten-Devices und die Tabellen für das Kommando bsdlabel, welches die innere Partitionstabelle erzeugt. Die Positionen d e f g h sind für freie Dateisysteme nutzbar. Position a steht für das Wurzelsystem / und c für die Angabe der Größe von z.B. ada0s2, die aus der äußeren Partitionstabelle stammt. Die Sterne * fordern das Kommando auf, an den betreffenden Positionen den jeweiligen Wert selbst auszurechnen bzw. einzusetzen.

WDC WD5000YS-01MPB0:
  1 Raw_Read_Error_Rate     POSR--   200   200   051    -    0
  3 Spin_Up_Time            PO----   253   206   021    -    3400
  4 Start_Stop_Count        -O--CK   093   093   000    -    7004
  5 Reallocated_Sector_Ct   PO--CK   200   200   140    -    0
  7 Seek_Error_Rate         POSR--   200   200   051    -    0
  9 Power_On_Hours          -O--CK   049   049   000    -    37795
 10 Spin_Retry_Count        PO--C-   100   100   051    -    0
 11 Calibration_Retry_Count -O--C-   100   100   051    -    0
 12 Power_Cycle_Count       -O--CK   095   095   000    -    5763
194 Temperature_Celsius     -O---K   253   253   000    -    54
196 Reallocated_Event_Count -O--CK   200   200   000    -    0
197 Current_Pending_Sector  -O--C-   200   200   000    -    0
198 Offline_Uncorrectable   ----C-   200   200   000    -    0
199 UDMA_CRC_Error_Count    -OSRCK   200   200   000    -    12     ***
200 Multi_Zone_Error_Rate   P--R--   200   200   051    -    0

WDC WD1002FBYS-01A6B0:
  1 Raw_Read_Error_Rate     POSR-K   200   200   051    -    0
  3 Spin_Up_Time            POS--K   253   253   021    -    1250
  4 Start_Stop_Count        -O--CK   096   096   000    -    4654
  5 Reallocated_Sector_Ct   PO--CK   200   200   140    -    0
  7 Seek_Error_Rate         -OSR-K   100   253   000    -    0
  9 Power_On_Hours          -O--CK   056   056   000    -    32593
 10 Spin_Retry_Count        -O--CK   100   100   000    -    0
 11 Calibration_Retry_Count -O--CK   100   100   000    -    0
 12 Power_Cycle_Count       -O--CK   096   096   000    -    4619
192 Power-Off_Retract_Count -O--CK   200   200   000    -    683
193 Load_Cycle_Count        -O--CK   199   199   000    -    4654
194 Temperature_Celsius     -O---K   106   096   000    -    47
196 Reallocated_Event_Count -O--CK   200   200   000    -    0
197 Current_Pending_Sector  -O--CK   200   200   000    -    0
198 Offline_Uncorrectable   ----CK   200   200   000    -    0
199 UDMA_CRC_Error_Count    -O--CK   200   200   000    -    0
200 Multi_Zone_Error_Rate   ---R--   200   200   000    -    0

WDC WD2005FBYZ-01YCBB3:
  1 Raw_Read_Error_Rate     POSR-K   200   200   051    -    0
  3 Spin_Up_Time            POS--K   181   181   021    -    3941
  4 Start_Stop_Count        -O--CK   100   100   000    -    5
  5 Reallocated_Sector_Ct   PO--CK   200   200   140    -    0
  7 Seek_Error_Rate         -OSR-K   100   253   000    -    0
  9 Power_On_Hours          -O--CK   100   100   000    -    15
 10 Spin_Retry_Count        -O--CK   100   253   000    -    0
 11 Calibration_Retry_Count -O--CK   100   253   000    -    0
 12 Power_Cycle_Count       -O--CK   100   100   000    -    5
 16 Unknown_Attribute       -O---K   000   200   000    -    595036768
183 Runtime_Bad_Block       -O--CK   100   100   000    -    0
192 Power-Off_Retract_Count -O--CK   200   200   000    -    0
193 Load_Cycle_Count        -O--CK   200   200   000    -    22
194 Temperature_Celsius     -O---K   113   106   000    -    42
196 Reallocated_Event_Count -O--CK   200   200   000    -    0
197 Current_Pending_Sector  -O--CK   200   200   000    -    0
198 Offline_Uncorrectable   ----CK   100   253   000    -    0
199 UDMA_CRC_Error_Count    -O--CK   200   200   000    -    0
200 Multi_Zone_Error_Rate   ---R--   100   253   000    -    0

Vorstehend die SMART-Tabellen für die Festplatten 500, 1000, 2000 GB.

Dieser PC stammt von 2006. Somit ist es kein UEFI-System. Die neue Festplatte hat 512 Byte native Sektorgröße und die Anzahl Sektoren kann für 2 TB im MBR gerade noch dargestellt werden. Es kann auch noch fdisk benutzt werden. Das neue Kommando für diesen und weitere Zwecke ist gpart.

Mit Erstaunen wurde eine negative Zahl bei fdisk beobachtet. Nämlich bei der Anzeige der aktuellen Sektor-Anzahl bei der Eingabe der neuen Sektor-Anzahl: angezeigt wurde [-729800704] statt [3565166592]. In der Darstellung der Partitions-Tabelle wird hingegen der korrekte positive Wert angezeigt.

Es ist offenbar sehr schwer und die Übergangszeit dauert vielleicht 40 Jahre, um die obsoleten Sichtweisen von Vorzeichen-Behaftung zu korrigieren. Beispielsweise wurden schon in den 1980ern Byte-Zeichensätze nur mit 256 Zeichen definiert (außer ASCII), numeriert von 00…FF - eine Domäne der Vorzeichenlosigkeit. Auch der Typ char in C, der ausdrücklich für Zeichenketten-Konstanten "aäbcdefg" gilt, wird plattform-spezifisch voreingestellt als signed char definiert, was logisch nicht nachvollziehbar ist. Das ä würde bei Entnahme durch die int-Promotion ein negativer int-Wert sein. Negative Anzahlen von Bytes, Sektoren, und ähnlich kann es schlicht nicht geben!

Zum Thema paßt, daß das Kommando newfs_msdos eine Meldung abgab, daß ein Parameter korrigiert wurde, damit dessen Wert durch 63 Sektoren ohne Rest teilbar wird. Es wird (folglich) immer noch mit CHS und Verwandtem gearbeitet.



Copyright © 2021 - Helmut Schellong

defekt festplatte hdd smart backup 54 47 42