cool tool
This commit is contained in:
parent
eb199c69ff
commit
44e63dcf58
Binary file not shown.
|
@ -0,0 +1,180 @@
|
|||
H2testw -- by Harald Bögeholz / c't Magazin für Computertechnik
|
||||
Integritätstest für USB-Sticks und andere Datenträger
|
||||
Version 1.4, Copyright (C) 2008 Heise Zeitschriften Verlag GmbH & Co. KG
|
||||
========================================================================
|
||||
|
||||
H2testw wurde entwickelt, um USB-Sticks auf einwandfreie Funktion zu
|
||||
testen. Es eignet sich aber auch für beliebige andere Datenträger wie
|
||||
Speicherkarten, interne und externe Festplatten und sogar
|
||||
Netzwerklaufwerke.
|
||||
|
||||
Die Exe-Datei H2testw.exe ist ohne Installation direkt lauffähig. Das
|
||||
Programm wurde entwickelt für Windows XP und Vista; unter Windows 2000
|
||||
sollte es auch funktionieren, wurde jedoch nicht getestet. Windows
|
||||
9x/ME wird nicht unterstützt; als Alternative bietet sich das ältere
|
||||
Kommandozeilenprogramm H2test an.
|
||||
|
||||
Das Funktionsprinzip von H2testw ist einfach: Es füllt den gewählten
|
||||
Speicherort mit Testdateien, liest diese anschließend wieder ein und
|
||||
überprüft, ob die gelesenen Daten mit den ursprünglich geschriebenen
|
||||
übereinstimmen.
|
||||
|
||||
H2testw überschreibt oder löscht grundsätzlich keine bestehenden
|
||||
Dateien. Es greift nicht tief ins System ein, sondern legt als
|
||||
gewöhnliches Anwendungsprogramm Dateien an; Administratorrechte sind
|
||||
daher nicht erforderlich. Wenn die Hardware korrekt arbeitet, wird
|
||||
H2testw also keine bestehenden Daten gefährden.
|
||||
|
||||
ABER: _Wenn_ ein Hardwarefehler vorliegt, dann kann H2testw diesen zum
|
||||
Vorschein bringen und dadurch eventuell auch bestehende Daten
|
||||
beschädigen. Daher der Rat: WENN SIE EINEN USB-STICK ODER SONSTIGEN
|
||||
DATENTRÄGER IM VERDACHT HABEN, NICHT RICHTIG ZU ARBEITEN, LEEREN SIE
|
||||
IHN ZUNÄCHST UND TESTEN IHN DANN VOLLSTÄNDIG MIT H2TESTW. Nur wenn ein
|
||||
Datenträger leer ist, kann H2testw ihn vollständig testen. Für
|
||||
reproduzierbare Ergebnisse empfehlen wir, den Datenträger frisch zu
|
||||
formatieren (Schnellformatierung genügt) und dann zu testen.
|
||||
|
||||
H2testw schreibt an den gewählten Speicherort jeweils bis zu 1 GByte
|
||||
große Dateien mit den fortlaufenden Namen 1.h2w, 2.h2w, 3.h2w usw.
|
||||
Wenn am Zielort bereits ein gültig aussehender Satz solcher Dateien
|
||||
vorliegt, bietet H2testw an, diese zu prüfen; existieren irgendwelche
|
||||
anderen Dateien mit Namen *.h2w, verweigert es die Arbeit. Löschen Sie
|
||||
in diesem Falle alle Dateien *.h2w und drücken Sie den Knopf
|
||||
"Aktualisieren".
|
||||
|
||||
Nach getaner Arbeit bleiben die Testdateien auf dem Datenträger
|
||||
liegen. Sie können sie nach Belieben löschen oder -- im Falle eines
|
||||
USB-Sticks zum Beispiel an einem anderen Rechner -- nochmals
|
||||
überprüfen.
|
||||
|
||||
Die Checkbox "Prüfen als Dauertest" versetzt H2testw in eine
|
||||
Endlosschleife, in der es die Testdateien immer wieder einliest und
|
||||
überprüft, bis ein Fehler auftritt. Diese Option ist dafür gedacht,
|
||||
sporadisch auftretende Übertragungsfehler zu entdecken.
|
||||
|
||||
Eine Anmerkung zur Restzeitschätzung: Bei intakten
|
||||
Flash-Speichermedien sollte die Schätzung sehr genau stimmen, weil die
|
||||
Datenrate konstant ist. Bei defekten Flash-Medien haben wir starke
|
||||
Einbrüche in der Übertragungsrate beobachtet, die dazu führen, dass
|
||||
die Schätzung ständig nach oben korrigiert wird. Festplatten erzielen
|
||||
grundsätzlich im Innenbereich eine niedrigere Datenrate als außen,
|
||||
daher ist die Schätzung prinzipbedingt ungenau.
|
||||
|
||||
Bei Fragen oder Anregungen zu H2testw wenden Sie sich bitte per E-Mail
|
||||
an Harald Bögeholz <hwb@heise.de> (in Deutsch oder Englisch).
|
||||
|
||||
|
||||
Was tun im Fehlerfall?
|
||||
----------------------
|
||||
|
||||
Wenn H2testw beim Überprüfen Datenfehler meldet, dann heißt das, dass
|
||||
das Speichermedium nicht alle Daten so zurückgeliefert hat, wie sie
|
||||
geschrieben wurden. Wahrscheinlich handelt es sich um ein defektes
|
||||
Speichermedium, es kommen aber auch andere Fehlerquellen in Betracht.
|
||||
Sie sollten daher im Fehlerfalle den Test wiederholen und dabei
|
||||
Folgendes beachten:
|
||||
|
||||
* Medium nach Möglichkeit frisch formatieren
|
||||
|
||||
* Keine USB-Verlängerungskabel oder USB-Hubs verwenden
|
||||
|
||||
* USB- oder FireWire-Geräte versuchsweise an einem anderen Anschluss
|
||||
testen (manchmal sind die USB-Ports an der ATX-Blende besser als die
|
||||
Front-Anschlüsse).
|
||||
|
||||
* Bei externen Platten auch mal ein anderes Kabel probieren, falls
|
||||
möglich.
|
||||
|
||||
|
||||
Ausgabe im Fehlerfall
|
||||
---------------------
|
||||
|
||||
Wenn beim Überprüfen Fehler auftreten, schlüsselt H2testw die Anzahl
|
||||
der fehlerhaften Sektoren auf in
|
||||
|
||||
* solche, die durch andere überschrieben wurden (siehe oben unter
|
||||
Adressierungsfehler),
|
||||
|
||||
* solche, die nur leicht verfälscht wurden (weniger als 8 abweichende
|
||||
Bits pro Sektor)
|
||||
|
||||
* komplett fehlerhafte bzw. stärker verfälschte ("Datenmüll").
|
||||
|
||||
Im Falle überschriebener Sektoren versucht H2testw herauszufinden, wie
|
||||
viel Speicher in dem betroffenen Bereich real vorhanden ist und weist
|
||||
diese Datenmenge als "mehrfach genutzt" aus (ohne Gewähr!).
|
||||
|
||||
Für den ersten gefundenen Fehler gibt das Programm schließlich den
|
||||
Offset innerhalb des Datenbestands, den dort erwarteten (Soll) und den
|
||||
tatsächlich vorgefundenen Wert (Ist) aus.
|
||||
|
||||
Tipp: Der Text der Fehlermeldung lässt sich markieren und mit
|
||||
Kopieren und Einfügen zum Beispiel in eine E-Mail übernehmen.
|
||||
|
||||
|
||||
Typische Fehlerbilder
|
||||
---------------------
|
||||
|
||||
Die Testdaten von H2testw sind so konstruiert, dass man typische
|
||||
Fehler voneinander unterscheiden kann. Sie fallen in drei Kategorien:
|
||||
|
||||
* Adressierungsfehler: Beim Schreiben eines Sektors landet der Inhalt
|
||||
nicht an der gewünschten Adresse, sondern an einer anderen,
|
||||
überschreibt also einen anderen Sektor. Dieser Fehler tritt bei
|
||||
einigen manipulierten USB-Sticks auf. Weiteres prominentes Beispiel:
|
||||
Eine Festplatte über 128 GByte an einem Rechner, dessen BIOS
|
||||
und/oder Betriebssystem noch nicht die dafür nötige Adressierungsart
|
||||
beherrscht. Dann erfolgen alle Zugriffe modulo 128 GByte: Daten, die
|
||||
man an der 128-GByte-Grenze schreibt, überschreiben also wieder den
|
||||
Anfang der Festplatte.
|
||||
|
||||
* Daten werden gar nicht gespeichert: Diesen Fehler haben wir im
|
||||
Zusammenhang mit fehlerhaften USB-Sticks beobachtet. Statt der
|
||||
geschriebenen Daten liefert ein Sektor beim Lesen nur Nullen oder
|
||||
Einsen zurück -- ein typisches Anzeichen dafür, dass auf nicht
|
||||
bestückten Speicher zugegriffen wurde.
|
||||
|
||||
* Einzelne Bits werden verfälscht: Das deutet auf
|
||||
Übertragungsstörungen auf dem Signalweg vom Prozessor zum
|
||||
Speichermedium hin. Ebenfalls denkbar, aber noch nicht beobachtet:
|
||||
Theoretisch könnte in einem Flash-Speicher auch mal ein Bit
|
||||
"umkippen".
|
||||
|
||||
|
||||
Aufbau der Testdaten
|
||||
--------------------
|
||||
|
||||
H2testw schreibt und liest die Testdaten megabyteweise. Auch wenn man
|
||||
die Option wählt, den Datenträger ganz zu füllen, bleibt daher am Ende
|
||||
bis zu 1 MByte Verschnitt übrig, wobei mit 1 MByte 1048576 Byte
|
||||
gemeint sind (1024 KByte). Um auch mit FAT-Dateisystemen zu
|
||||
funktionieren, hält H2testw einen respektvollen Abstand von der
|
||||
4-GByte-Grenze und fängt nach jeweils einem Gigabyte (1024 MByte) eine
|
||||
neue Datei an.
|
||||
|
||||
Innerhalb einer Datei beginnt jeder 512-Byte-Sektor mit einem
|
||||
64-Bit-Wort (8 Byte), in dem der Offset innerhalb der gesamten
|
||||
Testdaten (nicht nur innerhalb der Datei) abgelegt ist, und zwar
|
||||
Intel-typisch im Format Little-Endian, also niederwertiges Byte
|
||||
zuerst.
|
||||
|
||||
Die Datei 1.h2w beginnt also mit der Bytefolge
|
||||
|
||||
00 00 00 00 00 00 00 00,
|
||||
|
||||
der nächste Sektor mit
|
||||
|
||||
00 02 00 00 00 00 00 00,
|
||||
|
||||
der nächste mit
|
||||
|
||||
00 04 00 00 00 00 00 00
|
||||
|
||||
und so weiter. Die Datei 2.h2w beginnt mit der Bytefolge
|
||||
|
||||
00 00 00 40 00 00 00 00
|
||||
|
||||
(Offset 1 GByte = 0x40000000).
|
||||
|
||||
Der Rest eines jeden Sektors ist mit einer Pseudo-Zufallszahlenfolge
|
||||
aufgefüllt.
|
|
@ -0,0 +1,160 @@
|
|||
H2testw -- by Harald Bögeholz / c't Magazin für Computertechnik
|
||||
Data integrity test for USB sticks and other media
|
||||
Version 1.4, Copyright (C) 2008 Heise Zeitschriften Verlag GmbH & Co. KG
|
||||
========================================================================
|
||||
|
||||
H2testw was developed to test USB sticks for various kinds of errors.
|
||||
It can also be used for any other storage media like memory cards,
|
||||
internal and external hard drives and even network volumes.
|
||||
|
||||
The executable file H2testw.exe needs no installation and can be
|
||||
directly run. It was developed for Windows XP and Vista. It should
|
||||
also work under Windows 2000 but was only tested on XP and Vista.
|
||||
Windows 9x/ME is not supported. You can use the older command line
|
||||
program H2test under these operating systems.
|
||||
|
||||
The function of H2testw is quite simple: It fills the chosen target
|
||||
directory with test data and then reads it back and verifies it.
|
||||
|
||||
H2testw does not overwrite or erase any existing data. It doesn't
|
||||
do any low-level tricks so administrator privileges are not required.
|
||||
If your hardware is working properly H2testw will not harm any
|
||||
existing data.
|
||||
|
||||
BUT: _If_ the hardware is defective then H2testw is designed to find
|
||||
that defect and might as a side effect damage existing files.
|
||||
Therefore: IF YOU SUSPECT A USB STICK OR OTHER STORAGE MEDIA TO BE
|
||||
DEFECTIVE, EMPTY IT AND TEST IT COMPLETELY WITH H2TESTW. Only empty
|
||||
media can be fully tested with H2testw. In order to be able to
|
||||
reproduce the results we recommend to format the media (quick format
|
||||
will do) and then test it.
|
||||
|
||||
H2testw writes files of up to 1 GByte to the chosen destination and
|
||||
names them 1.h2w, 2.h2w, 3.h2w and so on. If the target directory
|
||||
alread contains such a set of files H2testw will offer to verify them.
|
||||
If there are any other files named *.h2w it will refuse to work. In
|
||||
that case please erase all files *.h2w and hit the Refresh button.
|
||||
|
||||
After it is done the software leaves its test files on the medium.
|
||||
You can erase them if you like or verify them again -- if it's a USB
|
||||
stick for instance with another PC.
|
||||
|
||||
The check box "endless verify" does just that: It puts the verify
|
||||
routine in an endless loop that stops only if an error is found. This
|
||||
is meant to be used as a long-time test to find sporadic data transfer
|
||||
errors.
|
||||
|
||||
A remark on the estimated time remaining: For intact flash memory the
|
||||
estimate should be pretty exact since it has a constant data rate.
|
||||
With defective media we have seen massive drops in the transfer rate
|
||||
resulting in the estimate increasing instead of decreasing. Hard
|
||||
drives are slower on the inner tracks than on the outer tracks so when
|
||||
testing a hard drive the estimate is never precise.
|
||||
|
||||
If you have any questions or suggestions for H2testw please send an
|
||||
email to Harald Bögeholz <hwb@heise.de> (in German or English).
|
||||
|
||||
|
||||
What to do in case of errors
|
||||
----------------------------
|
||||
|
||||
If H2benchw finds errors while verifying the data it means that the
|
||||
media has not returned all data exactly as it was written. It is
|
||||
likely that the media is defective, but there are other possible
|
||||
causes for data corruption. In case of error you should therefore
|
||||
repeat the test and
|
||||
|
||||
* Format the media immediately before testing
|
||||
|
||||
* Don't use USB extension cords
|
||||
|
||||
* If testing USB or FireWire devices, try a different port (sometimes
|
||||
USB ports at the back of the PC are better than those at the front)
|
||||
|
||||
* For exteral drives try another cable if possible
|
||||
|
||||
|
||||
Error messages
|
||||
--------------
|
||||
|
||||
When the verifying process detects any errors it outputs some
|
||||
statistics differentiating the various error types:
|
||||
|
||||
* sectors that have been overwritten by others due to addressing
|
||||
errors (see above)
|
||||
|
||||
* sectors that have been altered only slightly (less than 8 differing
|
||||
bits per sector)
|
||||
|
||||
* completely corrupted sectors.
|
||||
|
||||
In the case of overwritten sectors H2testw tries to find out how much
|
||||
real memory exists in the overwritten area and outputs that amount as
|
||||
"aliased memory" (no guarantee here).
|
||||
|
||||
Finally it outputs the offset of the first error with regard to the
|
||||
total amount of test data along with the expected and found value at
|
||||
that offset.
|
||||
|
||||
Hint: You can copy&paste the error message, for instance to send it in
|
||||
an email.
|
||||
|
||||
|
||||
Typical errors
|
||||
--------------
|
||||
|
||||
The test data of H2testw is made up so as to be able to discern
|
||||
certain typical errors. There are three types:
|
||||
|
||||
* Addressing errors: When writing a sector its contents are not
|
||||
written to the correct address but overwrite another sector. We have
|
||||
seen this error on certain manipulated USB sticks. It also happens
|
||||
if you use a hard drive larger than 128 GByte on a machine whose
|
||||
BIOS or OS doesn't know about 48-bit addressing. In this case all
|
||||
addresses are taken modulo 128 GByte. When crossing the 128 GByte
|
||||
boundary you overwrite data at the beginning of the drive.
|
||||
|
||||
* Data is not saved at all. We have encountered this with defective
|
||||
USB sticks. Instead of the data written to it a sector returns only
|
||||
ones or zeroes when reading it. This is typical when accessing
|
||||
nonexisting memory.
|
||||
|
||||
* Only few bits of data are changed. That might happen if the
|
||||
connection between the PC and the storage media is faulty.
|
||||
|
||||
|
||||
Technical details about the test data
|
||||
-------------------------------------
|
||||
|
||||
H2testw writes data in chunks of 1 megabyte. So even if you choose to
|
||||
completely fill the media you will end up with up to 1 megabyte of
|
||||
free space. Although technically not correct H2testw uses the
|
||||
Windows convention that 1 MByte equals 1024 KByte or 1,048,576 Byte.
|
||||
In order to avoid problems with the 4 GByte limitation of the FAT file
|
||||
system, H2testw begins a new data file after each gigabyte (1024
|
||||
MByte).
|
||||
|
||||
Inside a data file each 512-byte sector begins with a 64-bit word (8
|
||||
byte) containing the offset with regard to the whole data set. It is
|
||||
stored in little-endian format, least significant byte first.
|
||||
|
||||
So the file 1.h2w begins with
|
||||
|
||||
00 00 00 00 00 00 00 00,
|
||||
|
||||
the next sector with
|
||||
|
||||
00 02 00 00 00 00 00 00,
|
||||
|
||||
the next with
|
||||
|
||||
00 04 00 00 00 00 00 00
|
||||
|
||||
and so on. The file 2.h2w begins with
|
||||
|
||||
00 00 00 40 00 00 00 00
|
||||
|
||||
(offset 1 GByte = 0x40000000).
|
||||
|
||||
The rest of each sector is filled with a pseudo random number
|
||||
sequence using the offset word as a seed.
|
Loading…
Reference in New Issue