最近有一份smartclt
关于 Seagate“Iron Wolf”ST4000VN008-2DR166 的报告,其中有以下内容引起了我的注意,因为 Command_Timeout 处于开启状态Backblaze 的列表即将发生磁盘故障的 SMART 指标。
188 Command_Timeout -O--CK 100 099 000 - 4295032833
进一步深入研究一下,这个Smartmontools.org 票这表明其他 Seagate 驱动器可能将此字段用作三个打包的 2 字节整数,解释为
[0:1] Command Timeout Occurred
[2:3] Command Timeout Occurred, command was in queue >5 seconds
[4:5] Command Timeout Occurred, command was in queue >7.5 seconds
请注意,此票的提交者没有表明此解释的来源。
正如票中所建议的,我使用了-v 188,raw16
这个结果,这似乎更有意义
188 Command_Timeout -O--CK 100 099 000 - 1 1 1
查看 Smartmontools.org驱动器数据库该驱动器列为
{ "Seagate IronWolf", // tested with ST3000VN007-2E4166/SC60, ST4000VN008-2DR166/SC60,
// ST6000VN001-2BB186/SC60, ST6000VN0033-2EE110/SC60, ST6000VN0041-2EL11C/SC61,
// ST8000VN0022-2EL112/SC61, ST10000VN0004-1ZD101/SC60,
// ST12000VN0007-2GS116/SC60, ST12000VN0008-2JH101/SC60
"ST(1|2|3|4|6|8|10|12)000VN00(0?[2478]|1|22|33|41)-.*",
"", "",
"-v 18,raw48,Head_Health "
"-v 200,raw48,Pressure_Limit "
"-v 240,msec24hour32"
},
维护人员已测试该驱动器并确定了一些需要特定格式的值(18,200,240),但不需要值 188。
Seagate 的页面“我该如何解读 SMART 诊断实用程序的结果?”表明其 SMART 值的解释是专有的
请记住,这些第三方程序无权访问 Seagate 硬盘信息,因此通常会提供不一致且不准确的结果。
这Smartmontool 的维基Seagate Drives 不包括参数 188。
在这种情况下,是否有其他来源可以提供有关解释此数据值的权威信息?如果没有,我将使用“raw16”解释并研究如何与驱动器数据库维护人员共享此信息。
更新我已将此提交给 smartmontools 邮件列表,但由于不是会员,因此提交内容会被审核。查看他们的积压工作和常见问题解答,似乎短期内不会纳入此内容。
我临时更新了我的代码,以检查型号,并在本地为该特定驱动器添加选项
更新 2:删除了下面代码片段中的引号${SC_Opts}
,因为当没有设置选项时,空的引号字符串会被解释为非选项参数,并导致 smartctl 失败。
while [[ ! -z "$1" ]]
do
DRIVE="$1"
shift
[[ -b "$DRIVE" ]] || { echo "'${DRIVE}' is not a block device"; continue; }
MODEL=$(sudo hdparm -i "$DRIVE" | sed -n '/Model/s/ Model=\(.*\), Fw.*/\1/p')
case "${MODEL}" in
"ST4000VN008-2DR166" ) SC_Opts="-v 188,raw16";;
esac
STATS=$(sudo smartctl -a ${SC_Opts} "${DRIVE}" | sed -n '
/5 Reallocated_Sector_Ct/s/^.\{87\}\([0-9]*\).*/REALOC=\1;/p
/9 Power_On_Hours/s/^.\{87\}\([0-9]*\).*/HRS=\1;/p
/184 End-to-End_Error/s/^.\{87\}\([0-9]*\).*/EEErr=\1;/p
/187 Reported_Uncorrect/s/^.\{87\}\([0-9]*\).*/RPTIncor=\1;/p
/188 Command_Timeout/s/^.\{87\}\([0-9]*\).*/CMDTO=\1;/p
/197 Current_Pending_Sector/s/^.\{87\}\([0-9]*\).*/PENDING_S=\1;/p
/198 Offline_Uncorrectable/s/^.\{87\}\([0-9]*\).*/OFL_UNCOR=\1;/p
/199 UDMA_CRC_Error_Count/s/^.\{87\}\([0-9]*\).*$/CRCE=\1;/p
/241 Total_LBAs_Written/s/^.\{87\}\([0-9]*\).*$/LBAW=\1;/p
/242 Total_LBAs_Read/s/^.\{87\}\([0-9]*\).*$/LBAR=\1;/p
')
eval ${STATS}
...
答案1
Seagate SMART 属性规格: http://t1.daumcdn.net/brunch/service/user/axm/file/zRYOdwPu3OMoKYmBOby1fEEQEbU.pdf
3.11 属性 ID 188:命令超时计数
标准化命令超时计数 = 100 - 命令超时计数。
此属性跟踪由 HRESET 和 COMRESET 或 SRST 或其他命令中断的活动命令所定义的命令超时次数。
仅当命令数在 10^3 到 10^4 范围内时,才会计算归一化值。当命令数达到 10^4 时,CommandCount 和 ErroCount 将被清除。用于计算归一化值的错误计数未在属性原始值中报告。它在属性扇区的供应商信息区域中报告,即字节 474:475。
如果命令超时计数 > 99,则报告标准化值 1。作为特殊情况,初始最差值设置为 0xFD。
原始用法
Raw [1 - 0] = 命令超时总数,最大保持时间为 FFFFh
Raw [3 - 2] = 完成时间 > 5 秒的命令总数,包括完成时间 > 7.5 秒的命令
原始 [5 - 4] = 完成时间 > 7.5 秒的命令总数
所以 4295032833 -> HEX = 0x100010001。我认为 0x0001, 0x0001, 0x0001 = 1, 1, 1。一切正常。
编辑:做了一个简单的在线计算器转换一些 Seagate 值。