#disk #sdcard #ssd #flash #hdd #hard-drive #read-write

disktest-lib

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

2 个稳定版本

新版本 1.1.0 2024 年 8 月 22 日
1.0.0 2024 年 3 月 18 日

#778文件系统

Download history 2/week @ 2024-06-07 2/week @ 2024-06-14 3/week @ 2024-06-28 16/week @ 2024-07-05 16/week @ 2024-07-26 3/week @ 2024-08-02 53/week @ 2024-08-16

72 每月下载次数
disktest 中使用

MIT/Apache

130KB
3K SLoC

disktest - 固态硬盘(SSD)、非易失性内存存储(NVMe)、硬盘(HDD)、USB 棒、SD 卡等测试工具

主页

Git 仓库

GitHub 仓库

crates.io 网站

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

它通过向设备写入伪随机序列并读取回来验证相同的伪随机序列来完成。

此工具可用于

  • 检查磁盘的硬件错误(例如盘片错误、闪存错误等)。
  • 用强加密伪随机流覆盖存储介质。这可以用来删除磁盘上的现有数据,或者为加密做准备。
  • 测试声称有更多物理存储空间的篡改介质。有时这类媒体以低价出售。
  • 测量读写速度。
  • ... 可能还有许多其他任务。

随机数流是通过以下算法生成的

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

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

安全性

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

有关更多详细信息,请参阅 --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)。

目标 设备 不一定必须是实际硬件设备节点。它可以是任何文件系统上的任何文件路径。例如,您可以挂载USB闪存驱动器的文件系统并写入该文件系统上的文件。但是请注意,这会在USB闪存器的内存中留下一些未经验证的微小区域,这些区域被文件系统保留。有关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.75.0 或更高版本。
  • Crate 依赖项将由 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
~384K SLoC