#disk #sdcard #ssd #hdd #flash #hardware-devices #hard-drive

app disktest

固态硬盘、非易失性存储器、硬盘、U盘、SD卡等的测试器

18个稳定版本

1.15.0 2024年8月22日
1.14.0 2024年3月18日
1.13.0 2024年2月17日
1.11.1 2023年9月4日
1.3.0 2020年11月29日

文件系统类别中排名第70

Download history 5/week @ 2024-06-27 106/week @ 2024-07-04 149/week @ 2024-07-25 20/week @ 2024-08-01

每月下载量169

MIT/Apache

125KB
2.5K SLoC

disktest - 固态硬盘(SSD)、非易失性存储器(NVMe)、硬盘(HDD)、U盘、SD卡等的测试器...

主页

Git仓库

Github仓库

crates.io网站

Disktest是一款检查固态硬盘、非易失性存储器、硬盘、U盘、SD卡或其他存储介质错误的工具。

它通过向设备写入伪随机序列,然后读取并验证它是否与相同的伪随机序列相匹配来实现。

此工具可用于:

  • 检查磁盘的硬件错误(例如,盘片错误、闪存错误等)。
  • 使用强伪随机流覆盖存储介质。这既可以用于删除磁盘上的现有数据,也可以用于为加密准备磁盘。
  • 测试篡改的媒体,这些媒体声称具有比实际物理存储空间更大的存储区域。有时这些媒体以低价由欺诈卖家出售。
  • 测量读写速度。
  • ...可能还有许多其他任务。

随机数流由以下算法生成

OUTPUT_DATA := CHACHA20(PBKDF2(SEED | THREAD_ID | ROUND_ID))

如果使用多个线程,则每个线程生成这样的随机数流,然后以交替的模式交织。

安全

默认算法ChaCha20是一个强加密随机数生成器。这意味着如果种子是保密的,那么随机序列就不能被其他人预测或重建。

有关更多信息,请参阅--seed选项下的--help

Linux示例

以下disktest调用将安全序列写入磁盘设备/dev/sdc,然后从磁盘设备读取并验证该序列。

disktest --write --verify -j0 /dev/sdc

对于NVMe

disktest --write --verify -j0 /dev/nvme0n1

对于SD / MMC

disktest --write --verify -j0 /dev/mmcblk0

警告:这将不可逆地覆盖存储设备上的所有数据!在开始命令之前,请务必确保设备路径正确。您无法恢复数据。

您可能需要root权限才能写入原始磁盘设备(/dev/sdX/dev/nvmeXn1/dev/mmcblkX)。

目标 设备 不必是实际的硬件设备节点。它可以是在任何文件系统上的任何文件路径。例如,您可以将U盘文件系统挂载并写入该文件系统上的文件。然而,请注意,这将在U盘的内存中留下一些未测试的小区域,这些区域是保留给文件系统的。另外,请参阅下面的 Windows 部分。

Windows 示例

在Windows中,disktest可以写入任何挂载的存储媒体或原始磁盘上的文件。

如果您的测试存储媒体是E驱动器,那么以下命令将在E驱动器上写入一个测试文件并验证它

disktest --write --verify -j0 E:\testfile.img

但请注意,像上面这样的文件系统级别的测试并不测试整个设备。它会省略文件系统内部使用的磁盘区域。因此,您可能希望使用以下Windows原始驱动器表示法写入E驱动器的原始磁盘

disktest --write --verify -j0 \\.\E:

disktest --write --verify -j0 \\.\PhysicalDrive2

这样做将完全清除该磁盘上的所有数据(包括文件系统)。

始终确保您选择了正确的驱动器。特别是在 \\\\.\PhysicalDriveX 表示法中,很容易意外覆盖错误的驱动器。因此,推荐使用 \\\\.\X: (其中X是驱动器字母)表示法。

依赖关系

  • Rust 1.65.0 或更高版本。
  • 箱依赖项将由cargo自动下载。

从crates.io安装

crates.io下载最新版本的disktest,并将其安装到 $HOME/.cargo/bin

cargo install disktest

从源包安装

构建disktest并将其安装到 $HOME/.cargo/bin

cd path/to/source/package
cargo install --path .

从源包运行而不安装

在不安装的情况下就地构建并运行disktest

cd path/to/source/package
cargo run --release --  DISKTEST_OPTIONS_HERE

下面是关于可用的 disktest 选项的描述。

Disktest 命令行选项

请运行以下任一命令以显示有关可用命令行选项的更多信息。

cargo run --release -- --help
disktest --help

速度

以下表格显示了disktest在不同硬件和不同操作模式下的一些示例速度测量值。

这些速度测试不会写入实际磁盘,而只是写入 /dev/null 设备,这是一个什么也不做的设备。因此,这些速度测试结果不包括任何实际磁盘硬件的速度限制。

命令 算法 硬件 写入数据速率
disktest -j12 -ACHACHA20 -w /dev/null ChaCha20 AMD Ryzen 5 5500U; 6x2 核心 8.1 GiB/s
disktest -j12 -ACHACHA12 -w /dev/null ChaCha12 AMD Ryzen 5 5500U; 6x2 核心 8.2 GiB/s
disktest -j12 -ACHACHA8 -w /dev/null ChaCha8 AMD Ryzen 5 5500U; 6x2 核心 8.3 GiB/s
disktest -j12 -ACRC -w /dev/null CRC AMD Ryzen 5 5500U; 6x2 核心 8.4 GiB/s
disktest -j4 -ACHACHA20 -w /dev/null ChaCha20 Intel i5-3320M; 2x2 核心 2.1 GiB/s
disktest -j4 -ACHACHA12 -w /dev/null ChaCha12 Intel i5-3320M; 2x2 核心 3.2 GiB/s
disktest -j4 -ACHACHA8 -w /dev/null ChaCha8 Intel i5-3320M; 2x2 核心 4.4 GiB/s
disktest -j4 -ACRC -w /dev/null CRC Intel i5-3320M; 2x2 核心 7.5 GiB/s
disktest -j4 -ACHACHA20 -w /dev/null ChaCha20 Raspberry Pi 4; 4 核心 1.5 GHz 420 MiB/s
disktest -j4 -ACHACHA12 -w /dev/null ChaCha12 Raspberry Pi 4; 4 核心 1.5 GHz 670 MiB/s
disktest -j4 -ACHACHA8 -w /dev/null ChaCha8 Raspberry Pi 4; 4 核心 1.5 GHz 920 MiB/s
disktest -j4 -ACRC -w /dev/null CRC Raspberry Pi 4; 4 核心 1.5 GHz 2.5 GiB/s

读取数据速率相似,因为使用的算法完全相同。

许可证

版权所有(c)2020-2024 Michael Büsch [email protected]

根据您的选择,许可协议为Apache许可证版本2.0或MIT许可证。

依赖关系

~10–21MB
~389K SLoC