如何在活动驱动器上完成 SMART 离线测试?

如何在活动驱动器上完成 SMART 离线测试?

我想在我的一个硬盘(内置 SATA)上运行 SMART 离线测试。机器运行的是 Ubuntu 14.04,所以我只需smartctl -t offline /dev/sdb(以 root 身份)执行即可。它会启动测试并给出预计完成时间。

有问题的驱动器保存着系统的根文件系统,因此它被积极(但不是大量)使用。因此,当我稍后运行 时smartctl -a /dev/sdb,即使过了预计时间,我也会看到“脱机数据收集状态:(0x04)脱机数据收集活动被主机的中断命令暂停。”目前尚不清楚测试是否会完成。

我的理解是,离线测试本质上是检查磁盘上的每个扇区,看它是否可以读取。当计算机访问磁盘时,测试会暂停,并在命令完成后恢复。但似乎发送的命令足够多,以至于测试花费的时间很少,因此测试进展非常缓慢或根本没有进展。(我还想知道在命令完成和测试恢复之间是否有故意的延迟,以避免过于频繁地来回切换。)

有没有什么方法可以以某种方式提高 SMART 测试的优先级,以便它以合理的速度取得进展,同时仍保持磁盘可访问? 只要系统仍能运行,磁盘访问速度较慢也没关系。我知道强制模式-C,但这会使系统在测试运行时无法使用。我当然可以从另一个磁盘启动并在sdb未安装的情况下运行 SMART 测试,但这也会使系统在测试期间实际上无法使用(而且它需要物理访问机器,这很不方便)。

我看见SMART 测试永无休止,但这似乎是相反的问题:磁盘没有活动并进入待机模式。我在这里没有看到这种情况的证据,因为磁盘处于活动状态。我还看到了RAID1 的所有驱动器的 SMART 短离线测试永不结束在 ServerFault 上,但答案表明控制器或电缆存在问题,我没有理由怀疑,因为驱动器通常工作正常。

(作为旁白: 有没有什么办法可以检查离线测试的进度? 这会让我了解测试是否有机会在合理的时间内完成。)

答案1

如果命令

sudo smartctl -c /dev/sdb

Offline data collection capabilities:
  Suspend Offline collection upon new command.

那么你的测试应该可以顺利完成。也许你smartd在后台运行了一些偶尔的命令?

你可以将你的-t offline区块分成更小的区块范围。例如,

sudo smartctl -t select,0+10000 /dev/sdb

完成后,重复此命令并等待每个结果:

sudo smartctl -t select,next+10000 /dev/sdb

相关内容