DOS 或 Windows 中是否存在与 Linux 上的 badblocks 一样全面的实用程序?
答案1
使用Windows Subsystem for Linux,您可以badblocks
在Windows 10+主机下直接运行。
有工作WSL2 安装
在控制台窗口中,识别磁盘在 Windows 中的物理路径:
wmic diskdrive list brief
复制相应驱动器的“DeviceID”:
Caption DeviceID Model Partitions Size
SMI USB DISK USB Device \\.\PHYSICALDRIVE6 SMI USB DISK USB Device 1 124654118400
挂载磁盘,以便 WSL2 可以看到它:
wsl --mount \\.\PHYSICALDRIVE6 --bare
在 WSL 内部,使用以下命令找到新添加的设备
lsblk
:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sde 8:64 0 12.8T 0 disk
└─sde1 8:65 0 12.8T 0 part
badblocks
针对设备运行:badblocks /dev/sde
完成后
badblocks
,不要忘记卸载磁盘,以便可以在 Windows 中再次使用它:wsl --unmount \\.\PHYSICALDRIVE6
答案2
我遇到过的用于测试硬盘坏道的最佳工具是 SpinRite:
SpinRite 6
http://www.grc.com/sr/spinrite.htm
它是由史蒂夫·吉布森 (Steve Gibson) (他的大部分代码都是用汇编语言编写的) 创建的,我记得在 1980 年代后期在 XT 计算机 (带有 4.77 MHz 8086/8088 处理器) 上使用它来从故障硬盘中恢复坏扇区。
当前版本也运行得很好(并且您还可以受益于 Steve Gibson 多年维护该软件的经验,以确保它能够在所有类型的硬盘上可靠地运行)。
它比 DOS 和 Windows 附带的 ScanDisk 或 ChkDsk 程序更加全面。
答案3
为 2014 年发现此问题的任何人更新这些答案:
chkdsk
使用/r
或/b
开关大致相当于默认只读模式下的坏块
SpinRite 在默认级别 2 下具有更好的数据恢复能力
在第 4 级运行时,它相当于 badblocks 非破坏性读写模式,但具有更好的数据恢复能力。
然而,它会因现代大型驱动器上的除法溢出而失败,您需要等待 SpinRite 6.1 来修复这个问题,根据 Steve Gibson 在 Security Now 网络广播中所说,6.1 的开发已经开始,但在他完成另一个项目时再次被暂停。
同时,最接近基于 Windows 的为大型驱动器重新创建非破坏性读/写坏块模式的方法需要拥有等于或大于被测试驱动器的存储空间,并将按如下方式进行:
下载并安装磁盘映像程序(Macrium reflect 免费版、Acronis True Image 商业版或驱动器制造商的免费版,或其他版本)
创建 WinPE 恢复磁盘(稍后您将需要)和驱动器映像,取消选中智能扇区复制,然后继续查找选中的坏扇区(两者都与默认设置相反)。这将重新创建读取过程。
使用驱动器制造商的 DOS 工具对驱动器进行零填充(大致相当于写入阶段)
使用恢复 CD 恢复步骤 2 中制作的映像,将您制作的映像恢复到其原始位置。(大致相当于写回数据阶段)
在上述情况下,或当使用坏块时,现代驱动器的内部逻辑将处理在尝试写入时发现的任何坏扇区重新映射。
要重新创建 badblocks 破坏性测试,您需要一个英国(而非美国)政府批准的商业驱动器擦除程序,并且您需要在更高的安全级别运行它,这会将模式反复写入驱动器并验证每次通过,就像 badblocks 一样。
因此,在 Spinrite 6.1 或更高版本发布之前,问题是,“你为什么想这么做?”
下载几乎任何 Linux 实时 CD/DVD 都会为您提供一个可启动的平台来运行坏块,这更便宜、更容易,并且对您的数据更安全,适用于您需要比只读测试更多内容的任何场景。
如果你想要只读测试,只需CHKDSK
使用/r
开关运行
如果您想CHKDSK /R
在 Vista 下的系统驱动器上运行,请注意它将忽略您告诉它运行并在重新启动时跳过测试,除非您还使用 FSUTIL 将文件系统标记为脏。
答案4
scandisk
(DOS)/ chkdsk
(Windows)也许?