我的系统可能有一个磁盘损坏,但该磁盘通过了各种诊断。我无法确认该磁盘是否损坏。我有什么选择?
我可以更换磁盘,但是因为这种情况与我遇到的另一种更严重的情况非常相似(说来话长),所以我想真正做出正确的诊断,而不是随机地更换硬件。
问题和历史是这样的:
- 我有一台 Debian Linux PC(500 MHz P3)充当路由器、nagios 和 munin。
- 它每隔几周就会崩溃一次。无法获取任何日志或 dmesg(因为它是一台老款 Compaq,只有将其配置为无键盘时才会启动,因此启动后再连接键盘就不可能了)。
- 当时我以为是硬件出了问题,就换了一台 Compaq(P4 2.4 GHz)电脑,但还是每隔几周就死机一次。
- 不同之处在于,在这台电脑上,我仍然可以通过 SSH 进入。它在 hda 上显示各种错误。
我想确认磁盘坏了,但我无法通过任何方式证实这一点:
- SMART 错误日志未显示任何错误。通常,当磁盘开始出现故障时,SMART 会通过,但它仍会在错误日志中记录读取错误。
- SMART 自检 (
smartctl -t long /dev/sda
) 完成且没有错误。 - 重新分配的扇区数(一个明显的参数)一直都是 31,即使几年前磁盘还在我台式电脑上使用时也是如此,现在也是如此。这个数字从未改变过。
dd if=/dev/sda of=/dev/null bs=4096
顺利通过。
我还能做什么来评估驱动器的健康状况?
再说一次,这并不是为了让这个路由器再次完全发挥作用,这是一个磁盘取证问题,因为碰巧我有另一台服务器可能存在同样的问题,知道这个问题的答案可能会对我有很大帮助。
为了记录,下面是日志等。
这是smartctl -a
输出:
smartctl 5.40 2010-07-12 r3124 [i686-pc-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.7 and 7200.7 Plus family
Device Model: ST3120026A
Serial Number: 5JT1CLQM
Firmware Version: 3.06
User Capacity: 120,034,123,776 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 6
ATA Standard is: ATA/ATAPI-6 T13 1410D revision 2
Local Time is: Mon Jul 1 21:18:33 2013 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 24) The self-test routine was aborted by
the host.
Total time to complete Offline
data collection: ( 430) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
No General Purpose Logging support.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 85) minutes.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 050 046 006 Pre-fail Always - 47766662
3 Spin_Up_Time 0x0003 097 096 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 10
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 31
7 Seek_Error_Rate 0x000f 084 060 030 Pre-fail Always - 820305
9 Power_On_Hours 0x0032 048 048 000 Old_age Always - 46373
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 605
194 Temperature_Celsius 0x0022 036 065 000 Old_age Always - 36
195 Hardware_ECC_Recovered 0x001a 050 046 000 Old_age Always - 47766662
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 196 000 Old_age Always - 6
200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
202 Data_Address_Mark_Errs 0x0032 100 253 000 Old_age Always - 0
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Aborted by host 80% 46361 -
# 2 Extended offline Completed without error 00% 46358 -
# 3 Short offline Completed without error 00% 12046 -
# 4 Extended offline Completed without error 00% 10472 -
# 5 Short offline Completed without error 00% 10471 -
# 6 Short offline Completed without error 00% 10471 -
# 7 Short offline Completed without error 00% 6770 -
# 8 Extended offline Aborted by host 90% 5958 -
# 9 Extended offline Aborted by host 90% 5951 -
#10 Short offline Completed without error 00% 5024 -
#11 Extended offline Aborted by host 80% 5024 -
#12 Short offline Completed without error 00% 3697 -
#13 Short offline Completed without error 00% 237 -
#14 Short offline Completed without error 00% 145 -
#15 Short offline Completed without error 00% 69 -
#16 Extended offline Completed without error 00% 68 -
#17 Short offline Completed without error 00% 66 -
#18 Short offline Completed without error 00% 49 -
#19 Short offline Completed without error 00% 29 -
#20 Short offline Completed without error 00% 29 -
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
这是崩溃时的 dmesg 错误(针对一系列不同的扇区重复出现):
[1755091.211136] sd 0:0:0:0: [sda] Unhandled error code
[1755091.211144] sd 0:0:0:0: [sda] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[1755091.211151] sd 0:0:0:0: [sda] CDB: Read(10): 28 00 08 fe ad 38 00 00 08 00
[1755091.211166] end_request: I/O error, dev sda, sector 150908216
答案1
你不能可靠地。
或者更确切地说,您已经利用您可用的选项完成了这件事。
作为一项研究谷歌发现了,故障磁盘不一定显示异常的 SMART 值(但反过来更可靠:当它们显示异常时,它们将要失败)。
暂且不谈这一点,请记住,尽管计算中很多内容都是标准化的,但实际上硬件和软件中都存在错误,错误幅度会累积起来,等等。现实世界并不完美,硬盘与特定控制器不兼容的情况也屡见不鲜- 反之亦然。有时是固件故障,有时是一些完全不同的系统组件不工作,例如低于标准的 PSU 在特定负载峰值时会发出故障。甚至是温度变化、老化……这个列表几乎可以随意扩展。
因此,这里的标准程序是将磁盘放入明显不同的系统配置中并重新运行测试 - 但由于您已经在完全更改系统的情况下完成了此操作,因此您正确地得出结论,磁盘一定有故障。(除非正如您告诉我们的那样,您并没有改变其他一切 - 我想到的是电缆/HBA,在这种情况下假设不成立)。
编辑:我刚刚意识到只剩下一个选项;您可以搜索是否有比当前特定驱动器上更新的固件版本可用于此磁盘驱动器。如果有,您可以查看更改日志,指出您的情况中可能存在的问题。
总之,为了完全有信心(在这种特殊情况下!)确定驱动器行为异常,您需要将其送回制造商。
答案2
我认为这是一个坏的控制器。您可以做更多的事情来检查磁盘和控制器...
在驱动器上运行“badblocks”。这类似于您运行的“dd”。取另一个具有良好 SMART 状态的驱动器并将其放入计算机中。如果此磁盘出现类似行为,则您知道是磁盘以外的硬件给您带来了问题。在这种情况下,我认为是控制器。您确实提到您更换了系统,但仍然给您带来问题,因此,说到底,我仍然认为一定有一个共同的组件导致系统不稳定。您还可以查看:
- 电缆损坏(电缆是否与驱动器一起交换到第二台机器?)
- 系统配置不良(您是否使用不同的硬件设置了相同的系统?)
答案3
SF 提出这个问题是因为它很“值得注意”,所以我不想漏掉新的见解,即磁盘扫描。它读取磁盘并绘制扇区的延迟图,假设损坏的扇区需要重试。
以下是我手头上的一块 Seagate 磁盘通过所有传统测试的结果:
您可以看到有几个区域的延迟非常高,这显然是一个问题。
还有另一块磁盘,西部数据的:
有趣的是,使用 擦除后dd
,SMART 状态又恢复正常:没有待处理或重新分配的扇区。这是 的后续重新运行diskscan
:
所以这个 WDC 磁盘应该又好了。我运行了smartctl -t long
它,然后它再次显示磁盘读取失败。
结论:diskscan
有帮助,但是当然没有什么是 100% 可靠的。