解释 Seagate SMART 值 188“命令超时”数据格式

解释 Seagate SMART 值 188“命令超时”数据格式

最近有一份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 值。

在此处输入图片描述

相关内容