IT技术博客大学习 共学习 共进步

SSD磨损数据的分析报告

Hello Database 2011-06-22 00:11:28 浏览 5,021 次

    我们都知道,SSD存在一个磨损的问题,虽然厂商提供的数据都显示企业级的SSD产品是可靠的,SSD内置的损耗均衡的算法,可以保证磨损是均衡的,不会出现反复擦写某个单元导致SSD损坏的情况。但是我们依然很担心,磨损对可靠性的影响究竟有多大?最近,我们对线上系统的SSD进行了分析,得到了一些关于磨损的数据,分享给大家。

    S.M.A.R.T.(Self-Monitoring, Analysis, and Reporting Technology)是磁盘的诊断工具,其中也包括SSD的磨损数据。但是因为我们的SSD做了RAID,因为RAID卡屏蔽了SSD的信息,所以要直接读取SSD的SMART信息有些困难。通过厂商和社区的努力,现在已经有了解决方案。

    Smartmontools是一套监控,诊断,分析SMART信息的工具包,包括两个工具:smartctl和smartd。

    目前支持的RAID卡包括以下型号:

RAID-Controller Option/

     Directive

Supported in OS
Linux FreeBSD MS-Windows NetBSD/

     OpenBSD

Solaris MacOS/

     Darwin

3ware SATA RAID controller -d 3ware,N Yes 1 Yes 2 Yes 3 ? ? ?
Areca SATA RAID controller -d areca,N Yes 4 No No ? ? ?
HighPoint RocketRAID SATA RAID controller -d hpt,L/M/N Yes 5 Yes 6 No ? ? ?
CCISS (HP/Compaq Smart Array Controller) -d cciss,N Yes 7 Yes No ? ? ?
LSI MegaRAID SAS RAID controller

     Dell PERC 5/i,6/i controller

-d megaraid,N Yes 8 Yes 9 No ? ? ?
Intel ICHxR RAID

     (Intel Rapid/Matrix Storage driver)

csmi[0-9],N

     (device name)

? ? Yes 10 ? ? ?

    我们使用的DELL服务器采用LSI的RAID控制器,包含一个Megacli的工具包,可以到LSI的官方网站上下载并安装。通过这两个工具就可以读取SSD的SMART信息了,具体方法可以参考这篇文章:利用smartctl获取Inte SSD寿命

    SSD磨损数据分析:

    SLC的SSD可以擦除10万次,MLC的SSD可以擦除1万次,Intel X25-E的官方数据:

Mean Time Between Failures (MTBF):2,000,000 Hours
Write Endurance:2 petabyte of random writes (64 GB)

    真实的状况如何呢?我们有一套数据库集群,配置如下:DELL R710,Intel X25-E(64G),硬件RAID5(512M cache),我们读取了SSD的SMART数据,主要有以下三个指标:

    1. Media Wearout Indicator

    定义:表示SSD上NAND的擦写次数的程度,初始值为100,随着擦写次数的增加,开始线性递减,递减速度按照擦写次数从0到最大的比例。一旦这个值降低到1,就不再降了,同时表示SSD上面已经有NAND的擦写次数到达了最大次数。这个时候建议需要备份数据,以及更换SSD。

    解释:直接反映了SSD的磨损程度,100为初始值,0为需要更换,有点类似游戏中的血点。

    结果:磨损1点

    2. Re-allocated Sector Count

    定义:出厂后产生的坏块个数,如果有坏块,从1开始增加,每4个坏块增加1

    解释:坏块的数量间接反映了SSD盘的健康状态。

    结果:基本上都为0

    3. Host Writes Count

    主机系统对SSD的累计写入量,每写入65536个扇区raw value增加1

    解释:SSD的累计写入量,写入量越大,SSD磨损情况越严重。每个扇区大小为512bytes,65536个扇区为32MB

    结果:单块盘40T

    从上述数据分析,SSD写入40T数据,磨损消耗仅为1%,而且基本没有坏块。这是在系统没有做任何优化的情况下,即将所有数据文件都放在SSD上的结果,这证明SSD的损耗均衡算法是很靠谱的。如果磨损是线性的,根据数据可以计算得出,单块SSD(64G)可以写入4PB的数据,与厂商提供的数据相符。而且,40T的数据大部分是系统测试时写入的,真实系统上线后写入的数据量很小,根据计算,我们的SSD如果磨损耗尽,可能还需要几十年的时间。

    我们也使用了一些MLC的SSD,比如Intel X25-M,测试结果表明,SLC耐磨损度要远大于MLC,但是也在安全的范围之内。根据我们的实践经验和数据分析,企业级的SSD还是非常可靠的,并不需要特别担心磨损的问题。

    读取SSD的SMART信息的最大的意义在于,我们能够提前检测SSD的磨损状况,发现SSD磨损即将耗尽时,可以提前更换,预防同一批次的SSD同时大规模损坏,这样就可以保证系统的可靠性。

建议继续学习

  1. 我对技术方向的一些反思 (阅读 11,144)
  2. SSD的主要缺陷及Wear Leveling技术详解 (阅读 10,023)
  3. 基于SSD的数据库性能优化 (阅读 8,664)
  4. SSD 寿命的检查和健康判断 (阅读 7,161)
  5. Linux 中对 SSD 的优化 Discard,类 TRIM 的功能 (阅读 4,981)
  6. SSD的随机写一定很慢吗? (阅读 4,183)
  7. SSD 想说爱你不容易 (阅读 3,381)
  8. 不同SSD盘组合搜索引擎单机性能测试[2013年版] (阅读 3,182)
  9. 数据的存储介质-固态存储SSD (阅读 2,823)