我已开始使用以下命令读取扫描磁盘:
smartctl -t select,10-11 -t afterselect,on -t pending,45 /dev/sda
然而,它似乎会降低磁盘性能。我预计当有磁盘活动时,读取扫描会(就像测试一样)被暂停。
我还预计读取扫描(如测试)将在服务器上无负载的情况下运行,但据了解,iostat -x -d 1
读取测试似乎通过控制器。
这是正常的吗?当磁盘处于活动状态时,我可以暂停读取扫描吗(例如,仅在空闲 500 毫秒时才运行读取扫描)?
答案1
根据 smartctl 手册页,您可以使用 中止非强制测试smartctl -X /dev/sda
。根据该页面,您的选择性测试是非强制测试,因为您没有使用该-C
选项。
但请注意,所有测试都会损害性能。尽管它们仅在磁盘空闲一段时间(我怀疑是几毫秒)时运行,但它仍然将磁盘头移动到另一个位置,因此磁盘必须寻找更多的真实数据活动。在繁忙的服务器上,我只能运行short
测试,因为long
测试需要数周时间,并且性能会一直受到影响。
答案2
很抱歉添加到这样一个旧线程,但我认为重要的是要注意固态硬盘运行自检可能不会减少。 SSD 没有可移动的读写磁头,并且自检可能是比服务 PC 发出的读或写请求更低优先级的任务。
我的 Windows PC 有一个 Crucial MX500 ssd C:,并且该电脑不间断地运行一个定期运行的脚本,smartctl -t select,0-MAX -t pending,0 C:
以便 SSD 自测试几乎不间断地运行。 SSD性能并没有降低。
(这些自测试的目的是减轻导致过度写入放大的关键错误,该错误与一个更广为人知的名为“Bogus Current Pending Sectors”的关键错误相关,您可以通过谷歌搜索该错误。显然,该错误的进程是优先级较低的后台任务自测试过程中,因此 SSD 对其自身的错误写入仅在自测试之间的短暂暂停期间发生。暂停的目的是允许 SSD 偶尔运行对 SSD 的健康至关重要的低优先级进程。例如,磨损均衡。)
当我通过自测试运行 CrystalDiskMark 基准测试时,我发现 SSD 的性能略高于 Crucial 为全新 MX500 发布的速度规格。因为自测试会阻止 SSD 进入低功耗模式(这可以通过观察自测试对 SSD 开机时间智能属性的影响来推断),所以我的理论是,自测试可以让 SSD 节省一点时间在处理 PC 读或写请求时必须从低功耗模式切换到正常模式。