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
每月下载量169次
125KB
2.5K SLoC
disktest - 固态硬盘(SSD)、非易失性存储器(NVMe)、硬盘(HDD)、U盘、SD卡等的测试器...
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