HDD-Test mit badblocks (Perl-Script)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: HDD-Test mit badblocks (Perl-Script +update)

Beitrag von linuxCowboy » 07.07.2013 02:33:09

Nach dem Erfolg mit USB habe ich mir das doch nochmal angeschaut. Wieso findet smartctl CRC-Errors wenn ich sonst Terabyte fehlerfrei schreibe und prüfe? Vielleicht gehen die Test-Bytes gar nicht als Daten übers Kabel, sondern nur als kurzer Befehlscode. Etwa "schreibe einen Block 0xFF" statt 4096 mal FF. Oder gleich "schreibe ganzen Puffer FF".

badblocks hat einen Test "random". Damit muss er jedes Byte einzeln übertragen.

Also den Test ins Script eingebaut und - jede Menge badblocks! Zigtausend. Über eSATA und über USB.

Damned. Alles nur Schrott!

Dann fiel mir auf, dass da gerade Zahlen vorkommen, 4000 Blocks oder 8000 Blocks. Außerdem stellte ich fest, dass die Größe des blocks_at_once-Parameter das Ergebnis beeinflußt wenn er durch 8 teilbar ist (bs & ~7). Das sollte aber nicht mein Problem sein und schon gar nicht diese Fehler verursachen.

Also habe ich mir von sourceforge die neueste Version kompiliert und voila, Schrott wieder okay.

Die e2fsprogs fackeln übrigens nicht lange und setzen sich mit "make install" in die erste Reihe mit /sbin, /bin usw. und überschreiben ihre buggy-Vorgänger.

Jetzt läuft also der random Test genauso wie die Mustertests.

Nächste Woche schließe ich eSATA mal normgerecht mit unter 1m Gesamtlänge an.

Außerdem habe ich bei dem Script noch den hdparm-Ausdruck angepasst, denn über USB herrscht da schon die nächste Eiszeit:

drive temperature (celsius) is: under -20
drive temperature in range: yes

(zum Glück ist das drive ja bis -40 Grad spezifiziert ;)

Und die Status-Ausgabe enthält jetzt auch die Anzahl gelesener Blocks, damit sie bequem mit der Anzahl eventueller bad blocks verglichen werden kann.

Code: Alles auswählen

Checking for bad blocks in read-write mode
From block 709549655 to 709793843
Testing with random pattern: done                                                 
Reading and comparing: done                                                 
Pass completed, 0 bad blocks found. (0/0/0 errors)
30/30: 953MB (244.189 blocks) in 64s ==> 14MB/s  [0:48:58]
44 degrees Celsius
Das "0/0/0 errors" ist von der neuen badblocks-version. [read errors / write errors / data- corruptions]

bb-test-2013-07-06.pl NoPaste-Eintrag37278

Wieso aber smartctl CRC-Fehler meldet und dann trotzdem sinnvolle Daten ausgibt bleibt mir weiterhin schleierhaft!
-der_linux_cowboy --- Besser werden! ... f*** w$$

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: HDD-Test mit badblocks (Perl-Script +update)

Beitrag von cirrussc » 11.07.2013 18:02:15

linuxCowboy hat geschrieben:Wieso findet smartctl CRC-Errors wenn ich sonst Terabyte fehlerfrei schreibe und prüfe? Vielleicht gehen die Test-Bytes gar nicht als Daten übers Kabel, sondern nur als kurzer Befehlscode. Etwa "schreibe einen Block 0xFF" statt 4096 mal FF. Oder gleich "schreibe ganzen Puffer FF".
Das SMART der HDD loggt die CRC Fehler als absoluten Zähler aller bisherigen Fehlerereignisse. Wenn also aus irgend einem Grund (meist temporäre Signalstörungen) Bus-Übertragungsfehler (CRC) aufgetreten sind, dann werden diese (sollten) im SMART Attributt DMA_CRC_Error_Count aufgeführt. Sind diese also einmal angefallen, muss das nicht bedeutet, dass sie permanent auftreten.

Die Daten werden Sektorweise (ungeachtet der FS-Blockgröße) von der HDD gelesen und auf sie geschrieben, egal ob da nur ein einziges Bit verändert wird. Das funktioniert nicht anders.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: HDD-Test mit badblocks (Perl-Script)

Beitrag von linuxCowboy » 05.03.2014 16:59:59

fix off-by-one bug:

bb-test-2014-03-05.pl: NoPaste-Eintrag37697

Man kann damit auch sehr gut 100% eines USB-Sticks püfen.
-der_linux_cowboy --- Besser werden! ... f*** w$$

Antworten