Disktest is a tool to check Hard Disks, Solid State Disks, USB sticks, SD cards or similar storage media for errors.
It does so by writing a pseudo random sequence to the device and then reading it back and verifying it to the expected pseudo random sequence.
This tool can be used to:
The random number stream is generated by the following algorithm:
OUTPUT_DATA := CHACHA20(PBKDF2(SEED | THREAD_ID))
If more than one thread is used, then each thread generates such a random number stream, which are then interleaved in a regular pattern.
Download the latest version of disktest from crates.io and install it to $HOME/.cargo/bin:
cargo install disktest
Build disktest and install it to $HOME/.cargo/bin:
cd path/to/source/package
cargo install --path .
Build and run disktest in place without installing it:
cd path/to/source/package
cargo run --release -- DISKTEST_OPTIONS_HERE
See below for a description of the available disktest options.
Please run either of the following commands to show more information about the available command line options.
cargo run --release -- --help cargo run --release -- -h disktest --help disktest -h
The following table shows some example speed measurements of disktest in various operation mode on different hardware.
These speed tests don’t write to an actual disk, but only to the /dev/null device, which is a device that does nothing. So these speed test results do not include the speed limits of any actual disk hardware.
Command | Algorithm | Hardware | Data rate written |
---|---|---|---|
disktest -j4 -ACHACHA20 -w /dev/null | ChaCha20 | Intel i5-3320M; 2+2 cores 2.6 GHz | 2.0 GiB/s |
disktest -j4 -ACHACHA12 -w /dev/null | ChaCha12 | Intel i5-3320M; 2+2 cores 2.6 GHz | 3.1 GiB/s |
disktest -j4 -ACHACHA8 -w /dev/null | ChaCha8 | Intel i5-3320M; 2+2 cores 2.6 GHz | 4.2 GiB/s |
disktest -j6 -ACHACHA20 -w /dev/null | ChaCha20 | AMD Phenom II X6 1090T; 6 cores 3.2 GHz | 3.0 GiB/s |
disktest -j6 -ACHACHA12 -w /dev/null | ChaCha12 | AMD Phenom II X6 1090T; 6 cores 3.2 GHz | 3.9 GiB/s |
disktest -j6 -ACHACHA8 -w /dev/null | ChaCha8 | AMD Phenom II X6 1090T; 6 cores 3.2 GHz | 4.5 GiB/s |
disktest -j4 -ACHACHA20 -w /dev/null | ChaCha20 | Raspberry Pi 4; 4 cores 1.5 GHz | 300 MiB/s |
disktest -j4 -ACHACHA12 -w /dev/null | ChaCha12 | Raspberry Pi 4; 4 cores 1.5 GHz | 400 MiB/s |
disktest -j4 -ACHACHA8 -w /dev/null | ChaCha8 | Raspberry Pi 4; 4 cores 1.5 GHz | 500 MiB/s |
The read data rates are similar, because the algorithm used is exactly the same.
Note: The default rust compiler shipped with Raspberry Pi OS is too old to compile Disktest. A newer Rust compiler must be used on Raspberry Pi.
Copyright (c) 2020 Michael Buesch <m@bues.ch>
Licensed under the terms of the GNU General Public License version 2, or (at your option) any later version.