我在 ebay 上买了一个二手 SSHD(Seagate Laptop SSHD - ST500LM000-1EJ162)。至于 SMART,磁盘可能以某种方式损坏了,我不确定。为了正确解释 SMART 值,我需要您的帮助。
关于 SMART,我有很多原始读取错误和查找错误。到目前为止,我已经阅读了许多关于该主题的不同帖子,我发现提到的这两个值几乎无关紧要,因为没有标准化需要发生哪种错误才能让这两个值(Raw-Read-Error 和 Seek-Error)升高。这是制造商决定的 - 一般来说:Seagate 的 Raw-Read 和 Seek-Errors 的 RAW 值往往较高,而 Western Digital 在此部分的 RAW 值往往较低。我读到,由于这个事实,试图解释这两个属性的 RAW 值是没有用的,相反,我应该将名为 VALUE 的列与 WORST 和 THRESHOLD 进行比较。这里出现了下一个问题。现在情况正好相反:VALUE 高于 THRESHOLD 是首选。
为了更清楚起见,请看smartctl -a /dev/sdb/
下面的代码片段
ID# ATTRIBUTE_NAME 标志值 最差阈值类型 已更新 WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 120 099 006 预失败始终 - 237676480
关于 SMART,我有一个 Raw_Read_Error_Rate,其 RAW 值为 237676480。这看起来很危险。但关于列,VALUE WORST THRESH
我有一个实际的(?)值为 120。最坏情况曾经是 099,并且如果它低于阈值 006,则应该认为磁盘已损坏。
同样如此重新分配的部门。与 THRESH 值相比,列值越低,磁盘状况越差。
因此,就下面的 SMART 代码片段而言,我的磁盘从来没有重新分配任何东西。
ID# ATTRIBUTE_NAME 标志值 最差阈值类型 已更新 WHEN_FAILED RAW_VALUE 5 Reallocated_Sector_Ct 0x0033 100 100 010 预故障始终 - 0
现在让我们看看已报告的未更正错误据我所知,只要磁盘无法重新分配坏扇区,导致存储在该扇区内的数据丢失,就会发生这些错误。
ID# ATTRIBUTE_NAME 标志值 最差阈值类型 已更新 WHEN_FAILED RAW_VALUE 187 Reported_Uncorrect 0x0032 099 099 000 Old_age 始终 - 1
根据上面的 SMART 代码片段,磁盘在其生命周期内有一个未校正扇区。根据 VALUE 和 WORST 列,无需担心任何磁盘故障。
另一个属性是气流-温度-电池。首先,我将磁盘安装在我 12 年前的笔记本电脑中,然后运行badblocks
检查磁盘。在badblocks
运行几个小时时,我检查了 SMART 温度值,发现 VALUE 列等于 WORST,并且两者都低于 THRESH。对于 RAW_VALUE,我有这样的语句:DISK IS FAILING。所以我决定关闭笔记本电脑,将 SSHD 安装在通风更好的家庭服务器中,然后重新启动badblocks
。所以现在检查这个 SMART 属性时,WORST 列描述的是前一天发生在我笔记本电脑中的情况,而 VALUE 列显示的是实际温度。将 VALUE 与 THRESH 进行比较,温度没有问题。尝试解释 RAW_VALUE 是我遇到的问题。这里是代码片段
ID# ATTRIBUTE_NAME 标志值 最差阈值类型 已更新 WHEN_FAILED RAW_VALUE 190 Airflow_Temperature_Cel 0x0022 068 037 045 Old_age 总是 In_the_past 32 (0 120 37 26 0
最后但同样重要的一点是,有一些 SMART 信息我一生中从未在任何 SMART 输出中读到过,而且我完全不知道如何解释这些信息:
磁盘开机时发生错误4 寿命:521小时(21天+17小时) 当导致错误的命令发生时,设备处于活动状态或空闲状态。 命令完成后,寄存器: ER ST SC SN CL CH DH -- -- -- -- -- -- -- 04 71 03 80 04 11 40 导致发生错误的命令是: CR FR SC SN CL CH DH DC 上电时间 命令/功能名称 -- -- -- -- -- -- -- -- -- ---------------- -------------------- ea 00 00 00 00 00 00 00 00:13:30.508 刷新缓存扩展 61 00 08 00 09 9c 40 00 00:13:30.507 写入 FPDMA 排队 61 00 08 78 e1 42 40 00 00:13:30.507 写入 FPDMA 排队 61 00 28 f0 44 9d 40 00 00:13:30.507 写入 FPDMA 排队 61 00 08 00 6f 71 47 00 00:13:29.805 写入 FPDMA 排队 磁盘通电时发生错误3 寿命:519小时(21天+15小时) 当导致错误的命令发生时,设备处于活动状态或空闲状态。 命令完成后,寄存器: ER ST SC SN CL CH DH -- -- -- -- -- -- -- 04 51 00 a0 25 e7 06 导致发生错误的命令是: CR FR SC SN CL CH DH DC 上电时间 命令/功能名称 -- -- -- -- -- -- -- -- -- ---------------- -------------------- ea 00 00 00 00 00 00 00:11:47.000 刷新缓存扩展 61 00 08 88 c4 a0 40 00 00:11:45.863 写入 FPDMA 排队 60 00 08 40 d4 08 49 00 00:11:45.863 读取 FPDMA 排队 61 00 08 00 09 9c 40 00 00:11:45.863 写入 FPDMA 排队 60 00 12 19 47 5a 40 00 00:11:45.863 读取 FPDMA 排队 磁盘通电时发生错误2 寿命:519小时(21天+15小时) 当导致错误的命令发生时,设备处于活动状态或空闲状态。 命令完成后,寄存器: ER ST SC SN CL CH DH -- -- -- -- -- -- -- 40 51 00 40 d4 08 09 错误:LBA 处的 WP = 0x0908d440 = 151573568 导致发生错误的命令是: CR FR SC SN CL CH DH DC 上电时间 命令/功能名称 -- -- -- -- -- -- -- -- -- ---------------- -------------------- 61 00 08 78 e1 42 40 00 00:10:28.019 写入 FPDMA 排队 61 00 08 e0 96 a0 40 00 00:10:27.914 写入 FPDMA 排队 61 00 08 98 95 a0 40 00 00:10:27.914 写入 FPDMA 排队 61 00 08 70 95 a0 40 00 00:10:27.914 写入 FPDMA 排队 61 00 08 58 95 a0 40 00 00:10:27.914 写入 FPDMA 排队 磁盘通电时发生错误1 寿命:426小时(17天+18小时) 当导致错误的命令发生时,设备处于活动状态或空闲状态。 命令完成后,寄存器: ER ST SC SN CL CH DH -- -- -- -- -- -- -- 04 71 03 80 04 11 40 导致发生错误的命令是: CR FR SC SN CL CH DH DC 上电时间 命令/功能名称 -- -- -- -- -- -- -- -- -- ---------------- -------------------- ea 00 00 00 00 00 00 00 00:35:26.857 刷新缓存扩展 61 00 08 00 09 9c 40 00 00:35:26.856 写入 FPDMA 排队 61 00 08 ff ff ff 4f 00 00:35:26.161 写入 FPDMA 排队 61 00 08 ff ff ff 4f 00 00:35:26.161 写入 FPDMA 排队 61 00 08 ff ff ff 4f 00 00:35:26.160 写入 FPDMA 排队
从我在不同论坛上看到的帖子来看,人们倾向于建议更换磁盘在情况开始恶化之前。我还读到过一些人们评论说,他们在去世前已经能够使用这种磁盘好几年了直到死亡。对我来说,这是新领域。我从来没有遇到过有这么多错误的磁盘。可能之前的所有者确实对磁盘的处理不当。例如,他的笔记本电脑摇晃得太厉害,或者 SATA 连接器不完美,也导致了错误。正如所说,我不知道如何解释这些参数。这就像我要用这个磁盘做的一个实验。
我检查了磁盘badblocks -wvs -b 4096 -o badblox.result /dev/sdb
并且没有错误 -不要复制并粘贴该 BADBLOCKS 命令!!!smartctl -a /dev/sdb
。但是,当比较运行前后的结果时,badblocks
Raw_Read_Error_Rate 和 Seek_Error_Rate 的数量增加了很多,而所有其他属性值保持不变。检查下面的代码片段:
跑步之前badblocks
。
ID# ATTRIBUTE_NAME 标志值 最差阈值类型 已更新 WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 104 099 006 始终预失败 - 6995776 7 Seek_Error_Rate 0x000f 059 055 030 始终预失败 - 107395771838
babdblocks
完成后。
ID# ATTRIBUTE_NAME 标志值 最差阈值类型 已更新 WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 120 099 006 预失败始终 - 237676480 7 Seek_Error_Rate 0x000f 059 055 030 始终预失败 - 107395783395
整个 SMART 输出可以在 PasteBin 上查看:
- 跑步前
badblocks
https://pastebin.com/d2Bg8htn - 跑步后
badblocks
https://pastebin.com/9U9f7TkM
我的问题是:
- 该磁盘损坏程度有多严重?
- 我对 Raw-Read 和 Seek-Error 的解释正确吗?
- 重新分配部门为零是好事吗?
- 只有一个未重新分配的错误还不算太糟糕吗?
- 运行时零错误
badblocks
就意味着磁盘状况良好? - 我该如何解释错误 1到错误 4?
smartctl -t long /dev/sdb
除了实际正在进行的自检之外,我还应该做其他测试吗?
答案1
很快:
原始值没有任何意义。它们可能因固件而异,除非您确切知道原始值对于特定硬件意味着什么,否则不要尝试解释它们。有时很明显(以摄氏度为单位的温度),但通常并非如此。
这些值以 100 为标准,越低越糟糕。如果值为 100 或以上,则无需担心。如果值低于 100,则硬盘有点磨损。如果值接近阈值或低于阈值,则需要担心。
所有硬盘都有原始读取错误。这是当今驱动器高密度化的结果,而这正是内置纠错功能的作用所在。
因此:您的原始读取率看起来不错。您的重新分配扇区率非常好,这意味着还没有发生什么严重的事情。一些重新分配的扇区无需担心。
由于某种原因,您的温度过高,请检查硬盘是否正确冷却。寻道错误率过高,这可能是由于温度过高导致金属膨胀,从而导致磁头位置偏离规格。
因此,您需要担心的一点是适当的冷却。如果您能做到这一点,寻道错误应该会减少,而我会保留硬盘。(但是,当然,您正在进行备份,不是吗?)
编辑
错误 1-4 来自 ATA 层上通信的最近五个错误的日志。通常您会得到类似这样的标题
SMART Error Log Version: 1
ATA Error Count: xxx (device log contains only the most recent five errors)
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
因此,人们可以查找 ATA 标准中的命令和功能值,以了解有关所发生情况的更多详细信息。但偶尔发生错误本身并没有什么可担心的:嵌入式控制器很复杂,与主机的交互很复杂,时间也很复杂;如果发生一些奇怪的情况,那就是出现错误的一种方式。其他方式是嵌入式控制器固件中的错误,仅在这些奇怪的情况下才会触发。
只有当错误频繁发生并且持续发生时才需要担心,尤其是当总是出现相同的错误时。
您有三个错误发生在缓存刷新之后,一个发生在写入(LBA = 逻辑块地址)之后。两个错误同时发生,可能是由于同一个问题导致的,前后两个错误因此而独立发生。换做您,我会完全忽略这些错误:导致它们的原因已经过去,不会再发生了。