减少 Ubuntu 中的坏块重试/等待时间

Rya*_*sen 10 linux performance io badblocks hard-disk

如何减少 IO 等待时间和重试时间,以便操作系统不会不断尝试写入故障驱动器?

我有一个系统,用于制作演示内容的副本,这些副本可以借给客户使用到常规 SATA 台式机硬盘上。我们通过 SAS 一次连接多个驱动器,并使用脚本将内容复制到它们。

因为驱动器被借出,偶尔有些会损坏,但我不知道它们已损坏,所以下次在复制操作中重新使用该驱动器时,它会减慢其他驱动器的速度,因为系统会重试对该驱动器的 IO。有时可能需要几个小时才能注意到坏驱动器并将其删除。移除驱动器后,其余驱动器开始以正常速度写入。

我不在乎恢复坏驱动器。我只需要清除它们,这样它们就不会减慢其他一切。

我也在研究坏块和 smartmontools,并考虑在我开始编写之前对驱动器进行预检查。

操作系统:Ubuntu Linux (12.04 lts)

Bra*_*ley 7

我以前没有使用过这个可调参数,但您可能想要调整相关驱动器的eh_timeout(错误处理超时):

[root@localhost device]# cat /sys/block/sda/device/eh_timeout
10
[root@localhost device]# 
Run Code Online (Sandbox Code Playgroud)

上面的显示sda设置为 10 秒。来自红帽知识库:

在某些存储配置(例如,具有许多 LUN 的配置)中,SCSI 错误处理代码可能会花费大量时间向无响应的存储设备发出诸如 TEST UNIT READY 之类的命令。新的 sysfs 参数 eh_timeout 已添加到 SCSI 设备对象,它允许配置 SCSI 错误处理代码使用的 TEST UNIT READY 和 REQUEST SENSE 命令的超时值。这减少了检查这些无响应设备所花费的时间。eh_timeout 的默认值为 10 秒,这是添加此功能之前使用的超时值。