我想对某些外部硬盘驱动器逐个扇区进行全面的物理检查。据我所知,chkdsk
不提供此选项。
是否有解决方法chkdsk
,或有好的替代方法?我在这台机器上使用Windows 7,但也欢迎使用实时CD中的Linux解决方案。
谢谢,
亚当·马坦(Adam Matan)
我想对某些外部硬盘驱动器逐个扇区进行全面的物理检查。据我所知,chkdsk
不提供此选项。
是否有解决方法chkdsk
,或有好的替代方法?我在这台机器上使用Windows 7,但也欢迎使用实时CD中的Linux解决方案。
谢谢,
亚当·马坦(Adam Matan)
Answers:
在Windows NT / XP / Vista / 7中,您可以打开CMD提示符并使用
chkdsk /r x:
其中x是USB驱动器的驱动器号,假设该驱动器已分区并且已为其分配了驱动器号。
我建议获取Ubuntu Live CD并启动到Linux,然后使用Badblock扫描物理缺陷。
使用sudo fdisk -l
到列表中的所有驱动器及其分区。对于每个驱动器:
sudo badblocks -nvs /dev/sdx
您的硬盘驱动器是/ dev / sdx。这将对磁盘执行非破坏性的读/写测试,而无需执行文件系统检查。
如果您不关心数据,则可以改为执行此操作,以进行更彻底的扫描:
sudo badblocks -wvs /dev/sdx
-w选项告诉badblocks写入一个已知的模式,然后回读数据以确保它与该模式匹配。它使用模式0xaa,0x55、0xff和0x00(将0和1,然后是全1,然后是全0)交替执行4次。请注意,这将覆盖驱动器上的所有数据并擦除所有分区。
如果驱动器上恰好有Linux文件系统,则可以检查文件系统错误并同时运行坏块。首先,获取所有驱动器及其分区的列表:
sudo fdisk -l
然后对于每个分区:
sudo e2fsck -fcc /dev/sdx#
同样,/ dev / sdx是要扫描的硬盘驱动器。#是分区号(例如/ dev / sdb1)。两次指定c将强制fsck运行,并将使用badblocks进行无损读写测试。如果只使用一次c选项,badblocks将执行只读测试。
在投入使用之前,我在购买的每个新硬盘上运行badblocks -wvs。
-c
命令行arg。除了,很好的答案。
诸如Western Digital和Seagate之类的许多驱动器制造商都提供了可以进行这种检查的工具。通常是Windows工具。
任何现代驱动器都会自动重新映射不可读/困难的块。除非该块确实不可读,否则操作系统通常不会获得对该块的读取失败,并且对该块进行写操作将导致驱动器对其进行重新映射。仅当驱动器的备用块用完时才会失败,在这种情况下,该更换驱动器了!
结果是,以磁盘扫描方式标记“坏块”的操作系统通常毫无意义。
话虽如此,我将使用SMART扩展自测。smartmontools应该工作。您还可以获取重新映射的块数。
请注意,在linux中dd if=/dev/sdx of=/dev/null
,sdx是磁盘的块设备,它将对磁盘进行完整的逻辑读取。如果有任何不可读的块,则会出现错误。如果您不介意破坏数据,则可以dd if=/dev/zero of=/dev/sdx
覆盖整个磁盘,从而使驱动器根据需要重新映射。
我从来都不热衷于USB外置驱动器,因为在编写一些最佳工具(如ScanDisk)时它们并不存在。我特别喜欢Windows 98 SE随附的ScanDisk版本。
因此,如果它是外部驱动器,则应该将其放入计算机中,然后fsck -f
从Linux LiveCD在驱动器上运行,例如 PLD Rescue CD)。