全物理高清检查


17

我想对某些外部硬盘驱动器逐个扇区进行全面的物理检查。据我所知,chkdsk不提供此选项。

是否有解决方法chkdsk,或有好的替代方法?我在这台机器上使用Windows 7,但也欢迎使用实时CD中的Linux解决方案。

谢谢,

亚当·马坦(Adam Matan)


您正在运行什么操作系统?由于您提到chkdsk,因此我假设它是Windows NT,XP,Vista,7,Server 2003或Server2008。–
抢劫

Answers:


28

在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。


1
我不认为chkdsk / r会真正扫描每个块...它的运行速度比我期望读取每个单个块的速度快得多。可能要注意badblocks的非破坏性测试选项,以防他已经在磁盘上有数据了。
davr

@davr:谢谢;我已经在fsck命令中提到了badblocks非破坏性测试,但是我已经添加了一个明确的badblocks -vs,以便更全面。chkdsk / r检查坏块并在运行时花了相当长的时间,但可能不如badblocks -w详尽。您确定您没有考虑chkdsk / f或chkdsk / p,它们只会修复文件系统错误,但不会扫描坏块吗?

@davr:我确实想到了一件事情……chkdsk可能不检查启动记录或分区表。由于它仅使用卷名(即驱动器号,安装点或卷名)作为参数,因此建议您仅检查逻辑卷是否存在介质错误,并且忽略指定卷(分区)之外的所有内容。但是,在扫描速度方面,这并没有太大的区别。那是你在说什么吗?
抢劫

1
您对fsck的使用实际上是对e2fsck的引用。库存fsck不包含-c命令行arg。除了,很好的答案。
DaveParillo

是的,戴夫。谢谢; 自从他运行Windows以来,我已经将badblocks指令提前移到了前面,但是修复了e2fsck指令并将其移至所有在此运行并运行Linux的人的末尾。

5

我想对某些外部硬盘驱动器逐个扇区进行全面的物理检查。

下载并运行HD Tune,从下拉菜单中选择要扫描的驱动器,单击选项卡Error Scan(确保已清除Quick Scan框),然后点击Start

在此处输入图片说明

HD Tune免费提供给个人使用和便携式(无需安装)。


1
免费软件?15天试用!只是HD Tune是免费软件。
罗伦·佩希特尔

道歉,对帖子进行了编辑……虽然并没有太大的区别,因为您要从屏幕截图中看出,我所指的功能是免费版本。

1

诸如Western Digital和Seagate之类的许多驱动器制造商都提供了可以进行这种检查的工具。通常是Windows工具。


据我所知,这只是运行SMART自检,而不是完整的驱动器扫描。
endlith 2009年

endolith-WD semm进行的测试超越了SMART。免费下载,如果您有WD驱动器
Dave M

1

在Windows上,我将使用免费版本的HDTune扫描坏扇区。但是,Linux程序BadBlocks更好,它为您提供了每个坏块的确切列表,并且支持读和写检查(尽管写操作具有破坏性)。


2
badblocks还具有无损写测试。它读取块,写入新值,检查新值,然后将原始块写回。因此它不会破坏磁盘上的任何有效数据。缺点是额外的操作使其运行速度慢得多。
davr

1

任何现代驱动器都会自动重新映射不可读/困难的块。除非该块确实不可读,否则操作系统通常不会获得对该块的读取失败,并且对该块进行写操作将导致驱动器对其进行重新映射。仅当驱动器的备用块用完时才会失败,在这种情况下,该更换驱动器了!

结果是,以磁盘扫描方式标记“坏块”的操作系统通常毫无意义。

话虽如此,我将使用SMART扩展自测。smartmontools应该工作。您还可以获取重新映射的块数。

请注意,在linux中dd if=/dev/sdx of=/dev/null,sdx是磁盘的块设备,它将对磁盘进行完整的逻辑读取。如果有任何不可读的块,则会出现错误。如果您不介意破坏数据,则可以dd if=/dev/zero of=/dev/sdx覆盖整个磁盘,从而使驱动器根据需要重新映射。


1
与其使用“ dd”,不如使用专门为此任务设计的Linux命令“ badblocks”。
davr

1
我的观点是,“这项任务”与“坏块”的概念一样过时。
Segfault上尉,09年

硬盘驱动器不会修复坏块,直到您将其写入。写入它们的一种好方法是在非破坏性模式下使用坏块。:D
endolith

我希望这是真的。您正在将内部磁盘与USB外部磁盘混淆。USB驱动器机箱需要带有SMART报告的更好的固件,而大多数都是缺少的。
Nicolay77

@endolith一些硬盘也会在读取时重定位suspicios块。至少有一些企业级硬盘。
罗兰·皮拉卡斯

-1

我从来都不热衷于USB外置驱动器,因为在编写一些最佳工具(如ScanDisk)时它们并不存在。我特别喜欢Windows 98 SE随附的ScanDisk版本。

因此,如果它是外部驱动器,则应该将其放入计算机中,然后fsck -f从Linux LiveCD在驱动器上运行,例如 PLD Rescue CD)


1
磁盘扫描程序已过时。fsck -f将强制fsck运行,但不会进行物理介质测试。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.