Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 为什么这个SSD驱动器出现坏扇区故障,是否可以预测?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

注意:此问题之前已被关闭为非主题.你可以阅读 discussion.我在这里问的理由是: >此驱动器位于赞比亚农村学校的离线内容缓存服务器中. >服务器是从磁盘映像创建的,所有内容都是可替换的. >它必须便宜,因为赞比亚学校的预算有限,而且会有很多. >它也必须可靠,因为在不良道路上可能需要8小时才能更换. >我不允许在这里询问什么驱动器不是“超便宜的垃圾”. >因此,我们正在对符合这些标准的驱动
注意:此问题之前已被关闭为非主题.你可以阅读 discussion.我在这里问的理由是:

>此驱动器位于赞比亚农村学校的离线内容缓存服务器中.
>服务器是从磁盘映像创建的,所有内容都是可替换的.
>它必须便宜,因为赞比亚学校的预算有限,而且会有很多.
>它也必须可靠,因为在不良道路上可能需要8小时才能更换.
>我不允许在这里询问什么驱动器不是“超便宜的垃圾”.
>因此,我们正在对符合这些标准的驱动器进行自己的研究和实验.
>我无法通过覆盖它们来修复坏扇区(自动重新分配)违背了我的假设,我想知道原因.
>我想也许一个安全删除可能会修复坏道,但在我废弃驱动器之前想要别人的意见.
>我以为我可能错过了可以预测失败的smaRT数据.

这是一款金士顿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.
@R_932_10586@l 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_@R_932_10586@l  0x0032   000   000   000    Old_age   Always       -       0
182 Erase_Fail_Count_@R_932_10586@l  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 @R_932_10586@l_LBAs_Written      0x0032   000   000   000    Old_age   Always       -       208
242 @R_932_10586@l_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刚刚破损或设计糟糕吗?

笔记:

>根据金斯顿的文档,属性174是“意外断电”.
> 131意外断电非常糟糕.
>属性187(Reported_Uncorrect)是可能的最大值65535中的49900
>最高温度在78’C时非常高

金士顿在这个驱动器上隐藏了最多的interesting SMART counters.但是我们可以从属性196推断出备用扇区的数量.Reallocated_Event_Count,它具有以下规范化值的公式:

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

由于归一化值是100,这意味着RBC << MRE,因此我们无法用尽所有可用的部门进行重新分配.

解决方法

廉价的SSD似乎有严重的质量问题.您会发现许多用户对您的特定硬盘有问题.但是我认为供应商也在同一标签下销售不同的驱动器(例如与其他NAND芯片/控制器).因此每个驱动器可能表现不同.

smaRT值不表示驱动器很快就会失效.根据我的经验,它是相同的:突然发生驱动器错误,然后磁盘发生故障.

你使用固态硬盘的原因是什么?我看到SSD的优势在于没有机械部件,因为它们防尘并且产生的热量更少.但是我也看到了很多缺点.

例如在繁忙的音量上可以快速达到对单个存储单元的写入次数,即使是耗损均衡也是如此.当您使用具有日记功能文件系统时.

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

为什么不使用更便宜的传统硬盘而且(如果不需要raid)将服务器与备用驱动器一起运送,直到它们需要作为替代品(已经存在于服务器机箱或安装在热插拔笼中,以便磁盘可以在不同的服务器中使用).然后他们可以通过现场或远程(如果可能)的脚本准备.

只要传统的硬盘没有通电,到目的地的运输就会很粗糙……

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

大佬总结

以上是大佬教程为你收集整理的linux – 为什么这个SSD驱动器出现坏扇区故障,是否可以预测?全部内容,希望文章能够帮你解决linux – 为什么这个SSD驱动器出现坏扇区故障,是否可以预测?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。