2 个稳定版本
新版本 1.1.0 | 2024 年 8 月 22 日 |
---|---|
1.0.0 | 2024 年 3 月 18 日 |
#778 在 文件系统 中
72 每月下载次数
在 disktest 中使用
130KB
3K SLoC
disktest - 固态硬盘(SSD)、非易失性内存存储(NVMe)、硬盘(HDD)、USB 棒、SD 卡等测试工具
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