为什么这款SSD硬盘不合格,是否可以预测?

注意:这个问题以前是closures的。 你可以阅读讨论 。 我在这里问的原因是:

  • 此驱动器位于赞比亚农村学校的离线内容caching服务器中。
  • 服务器是从磁盘映像创build的,所有的内容都是可以replace的。
  • 由于赞比亚学校的预算有限,而且会有很多这样的学校,所以它的价格必须便宜。
  • 它也必须是可靠的,因为在恶劣的道路上可能需要8个小时才能更换。
  • 我不能问在这里什么驱动器不是“超便宜的废话”。
  • 因此,我们正在对符合这些标准的驱动器进行自己的研究和实验。
  • 我无法通过覆盖他们(自动重新分配)来修复坏道,这违背了我的假设,我想知道为什么。
  • 我想也许一个安全擦除可能会修复坏道,但是在我破坏驱动之前就想要别人的意见。
  • 我想我可能错过了可以预测失败的SMART数据。

这是一个金士顿240GB固态硬盘,在现场工作约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的型号是刚刚坏了还是坏了devise?

笔记:

  • 根据金士顿的文档,属性174是“意外的电力损失”。
  • 意外的功率损失是非常糟糕的。
  • 属性187(Reported_Uncorrect)在可能的最大值65535之外是49900
  • 最高温度在78'C相当高

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

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

由于标准化值为100,这意味着RBC“MRE”,所以我们远没有用尽所有可用的部门来重新分配。

便宜的SSD似乎有严重的质量问题。 你会发现很多用户有你的特定驱动器的问题。 不过,我认为厂商也在同一个标​​签下销售不同的驱动器(例如与其他NAND芯片/控制器)。 所以每个驱动器可能performance不同。

SMART值没有指示驱动器很快就会失效。 根据我的经验,它是一样的:突然发生驱动器错误,然后磁盘失败。

你使用固态硬盘的原因是什么? 我看到固态硬盘的优点,因为没有机械部件,而且它们是防尘的,产生的热量更less。 但是我也看到很多的缺点。

例如,对于单个存储器单元的写入次数,即使在损耗均衡的情况下也可以在繁忙的卷上快速达到,例如,当您使用带日志的文件系统时。

而电子产品也受到高湿度或高温的影响 – 与传统硬盘相同。

为什么不使用更便宜的传统硬盘驱动器(如果不需要raid),则需要将备用驱动器(未连接的备用驱动器)作为replace件(已经存在于服务器shell中或安装在热插拔盒中)该磁盘可能用于不同的服务器)。 然后,他们可以通过现场的脚本或从远程(如果可能的话)做好准备。

只要传统的硬盘没有通电,到达目的地的运输可能会很艰难。

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