为什么此SSD驱动器因坏扇区而出现故障,并且可以预测?


15

注意:此问题先前已关闭为题外。您可以阅读讨论内容。我在这里询问的原因是:

  • 该驱动器位于赞比亚农村地区学校的脱机内容缓存服务器中。
  • 服务器是从磁盘映像创建的,所有内容都是可替换的。
  • 它必须便宜,因为赞比亚的学校预算有限,而且会有很多。
  • 它也必须可靠,因为在恶劣的道路上每次更换可能需要8个小时。
  • 在这里,我不允许问哪些驱动器不是“超低价垃圾”。
  • 因此,我们正在对满足这些条件的驱动器进行自己的研究和实验。
  • 我无法通过覆盖坏扇区(自动重新分配)来修复坏扇区,这违背了我的假设,我想知道为什么。
  • 我以为“安全擦除”可能会修复坏道,但是在我浪费掉硬盘之前,想征询其他人的意见。
  • 我以为我可能错过了SMART数据中可能预知失败的信息。

这是一个Kingston 240GB SSD磁盘,在现场可以正常工作约3个月,并且突然出现了坏道:

smartctl 5.41 2011-06-09 r3365 [i686-linux-3.2.20-net6501-121115-1cw] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     KINGSTON SVP200S3240G
Serial Number:    50026B7228010E5C
LU WWN Device Id: 5 0026b7 228010e5c
Firmware Version: 502ABBF0
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ACS-2 revision 3
Local Time is:    Tue Mar  5 17:10:24 2013 CAT
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:  (0x02) Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
                    without error or no self-test has ever 
                    been run.
Total time to complete Offline 
data collection:        (    0) seconds.
Offline data collection
capabilities:            (0x7b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    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.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    (  48) minutes.
Conveyance self-test routine
recommended polling time:    (   2) minutes.
SCT capabilities:          (0x0021) SCT Status supported.
                    SCT Data Table supported.

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   084   084   050    Pre-fail  Always       -       10965286670575
  5 Reallocated_Sector_Ct   0x0033   100   100   003    Pre-fail  Always       -       16
  9 Power_On_Hours          0x0032   000   000   000    Old_age   Always       -       46823733462185
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       127
171 Unknown_Attribute       0x0032   000   000   000    Old_age   Always       -       0
172 Unknown_Attribute       0x0032   000   000   000    Old_age   Always       -       0
174 Unknown_Attribute       0x0030   000   000   000    Old_age   Offline      -       131
177 Wear_Leveling_Count     0x0000   000   000   000    Old_age   Offline      -       1
181 Program_Fail_Cnt_Total  0x0032   000   000   000    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   000   000   000    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   000   000   000    Old_age   Always       -       49900
194 Temperature_Celsius     0x0022   033   078   000    Old_age   Always       -       33 (Min/Max 21/78)
195 Hardware_ECC_Recovered  0x001c   120   120   000    Old_age   Offline      -       235163887
196 Reallocated_Event_Count 0x0033   100   100   003    Pre-fail  Always       -       16
201 Soft_Read_Error_Rate    0x001c   120   120   000    Old_age   Offline      -       235163887
204 Soft_ECC_Correction     0x001c   120   120   000    Old_age   Offline      -       235163887
230 Head_Amplitude          0x0013   100   100   000    Pre-fail  Always       -       100
231 Temperature_Celsius     0x0013   100   100   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0000   000   000   000    Old_age   Offline      -       363
234 Unknown_Attribute       0x0032   000   000   000    Old_age   Always       -       208
241 Total_LBAs_Written      0x0032   000   000   000    Old_age   Always       -       208
242 Total_LBAs_Read         0x0032   000   000   000    Old_age   Always       -       1001

SMART Error Log not supported
SMART Self-test Log not supported
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.

现在,我在磁盘上的某些位置出现了坏块:

root@iPad2:~# badblocks /dev/sda -v
Checking blocks 0 to 234431063
Checking for bad blocks (read-only test): 8394752 done, 1:15 elapsed
8394756 done, 1:21 elapsed
8394757 done, 1:23 elapsed
8394758 done, 1:24 elapsed
8394759 done, 1:27 elapsed
...
190882871one, 29:49 elapsed
190882888one, 29:53 elapsed
190882889one, 29:54 elapsed
190882890one, 29:56 elapsed
190882891one, 29:58 elapsed
done                                
Pass completed, 80 bad blocks found.

它们似乎是可重复的,并且自动重新分配失败,因此无法通过写入以下内容来解决:

root@iPad2:~# badblocks /dev/sda -wvf 8394756 8394756
/dev/sda is apparently in use by the system; badblocks forced anyway.
Checking for bad blocks in read-write mode
From block 8394756 to 8394756
Testing with pattern 0xaa: 8394756
done                                
Reading and comparing: done                                
Testing with pattern 0x55: done                                
Reading and comparing: done                                
Testing with pattern 0xff: done                                
Reading and comparing: done                                
Testing with pattern 0x00: done                                
Reading and comparing: done                                
Pass completed, 1 bad blocks found.

而且我在系统日志中收到这样的错误:

ata1.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x0
ata1.00: irq_stat 0x40000000
ata1.00: failed command: READ FPDMA QUEUED
ata1.00: cmd 60/08:00:08:30:00/00:00:01:00:00/40 tag 0 ncq 4096 in
         res 51/40:08:08:30:00/00:00:01:00:00/40 Emask 0x409 (media error) <F>
ata1.00: status: { DRDY ERR }
ata1.00: error: { UNC }
ata1.00: configured for UDMA/133
sd 0:0:0:0: [sda] Unhandled sense code
sd 0:0:0:0: [sda]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 0:0:0:0: [sda]  Sense Key : Medium Error [current] [descriptor]
Descriptor sense data with sense descriptors (in hex):
        72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
        01 00 30 08 
sd 0:0:0:0: [sda]  Add. Sense: Unrecovered read error - auto reallocate failed
sd 0:0:0:0: [sda] CDB: Read(10): 28 00 01 00 30 08 00 00 08 00
end_request: I/O error, dev sda, sector 16789512
Buffer I/O error on device sda, logical block 2098689
ata1: EH complete

现在,我不明白为什么此磁盘上的自动重新分配失败。在smartctl输出都看起来好像没什么问题。仅重新分配了16个扇区,数量并不多。我看不出该驱动器拒绝重新分配扇区的任何合理原因。这种型号的SSD刚刚损坏或设计不良吗?

笔记:

  • 根据Kingston的文档,属性174是“意外的功率损耗”。
  • 131意外的功率损耗是相当糟糕的。
  • 属性187(Reported_Uncorrect)为49900(可能的最大值为65535)
  • 最高温度高达78'C

金士顿在此驱动器上隐藏了最有趣的SMART计数器。但是我们可以从属性196推断出备用扇区的数量。Reallocated_Event_Count,其归一化值具有以下公式:

100 -(100* RBC / MRC)
RBC = Retired Block Count (Grown)
MRE = Maximum reallocation count

由于归一化值为100,这意味着RBC << MRE,所以我们距离用尽所有可用扇区进行重新分配还差得很远。


3
您的SMART数据并不表示任何重大问题。您是否在使用不同电缆的其他控制器上测试了该磁盘,以消除出现硬件问题的其他可能性?
迈克尔·汉普顿

1
我尚未尝试使用其他控制器/电缆,因为某些扇区可重复读取良好,而另一些扇区则可重复错误。我据此推断出故障出在驱动器上,而不是控制器或电缆上。
qris

1
您的推论是错误的,因为如果控制器或电缆损坏,可能会发生完全相同的事情(尽管电缆应该更不稳定,但仍然值得尝试)。
gparent

3
@gparent推论不一定是错误的;只是得出结论的逻辑。动力很可能是罪魁祸首,但是他的思考理由却没有任何依据。无论如何,他应按照建议在另一个控制器/电缆上进行测试。
克里斯S

是的,这就是我刚才说的。我认为您可以放心地将任何差异视为语言障碍的一部分,因为我完全同意您的意见。
gparent

Answers:


2

廉价的SSD似乎存在严重的质量问题。您会发现许多用户在使用特定驱动器时遇到问题。但是,我认为供应商也以相同的标签出售不同的驱动器(例如,与其他NAND芯片/控制器一起使用)。因此,每个驱动器的行为可能有所不同。

SMART值不表示驱动器即将失效。以我的经验是一样的:突然发生驱动器错误,然后磁盘出现故障。

您使用SSD的原因是什么?我看到了SSD的优点,因为它没有机械部件,而且防尘,发热量少。但是,我也看到很多缺点。

例如,在繁忙的卷上(例如,当您使用带有日志记录的文件系统时),即使有磨损均衡,也可以快速达到对单个存储单元的写入次数。

电子设备也受高湿度或高温的影响-与传统硬盘驱动器相同。

为什么不使用更便宜的常规硬盘驱动器,并且(如果不需要RAID的话)将不带备用驱动器的服务器运送到服务器,直到需要将它们替换为备用驱动器(已经存在于服务器机壳中或安装在热交换笼中,以便该磁盘可以在不同的服务器中使用)。然后可以通过现场或远程(如果可能)的脚本进行准备。

只要不打开常规硬盘驱动器,到目的地的传输就很困难。

如果有多个学校服务器/永久客户端和可靠/冗余的网络,也许分布式文件系统也可以帮助创建故障安全缓存服务器(例如,使用glusterfs)。


谢谢Brian,我接受了这个答案,因为我没有更好的答案了。我在硬盘上的经验是可以重新分配扇区,因此可以恢复。您对使用SSD的原因是正确的。防尘是赞比亚的一个大问题。驱动器不会经常写入,大部分内容都是静态的。固态电子产品受热和湿气的影响要比旋转生锈少。RAID硬盘发生在我们身上,但是我们希望SSD更加可靠,从而节省资金。也许我们错了。而且学校的连通性很差,因此无法使用glusterf。
qris
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.