想要和作者孙殿国还有全世界的大牛讨论SSD及存储相关技术?加nanoarch为微信好友,拉你进ssdfans微信群
作者介绍
孙殿国
十余年IT领域工作经验,历任联想集团高性能计算主管工程师,中国惠普高性能计算解决方案经理,戴尔中国企业级解决方案资深架构师,Greenliant(绿芯)半导体亚太区产品市场总监。并行计算领域技术专家,热爱旅行与宠物。
主题简介
- SSD的基本原理
- SSD的构成与分类
- SSD控制器的主要功能
-
SSD使用中的注意事项和风险
正文
大家都知道,长久以来,CPU速度越来越快,内存带宽越来越高,但基于磁介质的硬盘性能成为了整个系统的瓶颈。在消费类市场上,随着几年前超极本的推广,SSD硬盘大行其道,企业级市场也有了相应的产品。
先给大家讲几个小故事,也都是发生在我们身边的真实案例。
【故事1】上周有个朋友问,他的笔记本电脑配了SSD硬盘,刚买来的时候速度很快,他挺满意的,用了一年多以后发现速度大不如前,以为是OS的问题,结果费了半天劲重装了系统,更新了驱动以及各种软件,折腾完发现IO速度还是没有以前快。
【故事2】还有个朋友,给自己的电脑换了一块240GB的SSD,在一次意外断电后,这块SSD的数据竟然全部丢失,可用容量竟然只能识别到8MB。而厂商技术人员的回复是:这是一个产品缺陷,如果想找回原有数据,则需要人为造成意外断电,会有千分之一的几率恢复数据。-_-!
【故事3】朋友的互联网公司购买了一批PCIE闪存卡作为数据库加速应用。上线以后发现系统资源占用率很高,而且系统很不稳定,导致业务受到很大影响,厂商也束手无策。应用部门相当恼火,选型部门和采购也十分无奈,只好全部撤换。各种协调宕机时间也让各部门头疼不已。
【故事4】有个朋友比较土豪,把自己的移动硬盘也更新成了SSD。我问他:你多久备份一次数据呢?答:每年都会备一次。问:会经常用移动硬盘里的数据么?答:也不经常,几个月可能读一次吧,都是些照片和老电影。我说:那小心吧,因为你的数据可能会消失!会消失!会消失!
是不是很扯?但实际上这些真实事件全都是在闪存使用过程中可能会遇到的坑!
首先我们先简单介绍一下SSD闪存的基本技术,以上的问题就比较好理解了。
鉴于时间考虑,我们这次分享只对部分技术做简单介绍,如果大家有兴趣可以线下交流,或者我们弄个专题搞下一轮分享。
SSD 基本原理
其实闪存简单来说就是由电子击穿隔离栅,保存电位的一个存储过程。
大家现在都知道SSD闪存盘是有使用寿命的,这是为什么呢?
我们知道传统的机械磁盘是把01数据位用磁头写到磁介质上,数据可以长久保存。
而SSD由于介质的特性,隔离栅反复被电子击穿后会愈来愈薄,最后导致无法保存住电位,这个Cell也就失效了。
那闪存的寿命如何来计算呢?厂商一般会提供两个参数,第一个叫P/E Cycles(Program/Erase Cycles),全盘擦写周期。第二个叫DWPD(Disk Write per Day),即每天全盘擦写多少次,可以写多久。
比如一块240GB的SSD,标称的PE值为3000,则它的寿命就是240GB*3000=720TB。也就是说这块SSD最多可以写入720TB的总数据量。
假如一个1.8TB的PCIe闪存卡,DWPD为10,保修五年。则代表这块闪存卡可以写入的数据总量为:1.8TB*10*365*5=32.8PB。
SSD 主要构成及分类
构成一个SSD硬盘或PCIe闪存卡的主要关键技术大致包括:主控制器(简称主控),NAND颗粒,接口技术,DDR RAM buffer缓存,电容或电池,以及一些底层技术如PCB,封装技术等。
根据NAND颗粒的不同,有SLC,eMLC,MLC,TLC,QLC等。
SLC(Single-Level Cell)每个单元只有1个电压判断点,可以保存1bit数据,因此成本高,容量小,但它的速度很快,寿命也最久。
MLC(Multi-Level Cell)每个单元有3个电压判断点,可以保存2bit数据,所以MLC相对于SLC价格较低,容量大。但因为需要判断的电压增多,因此出错的概率也就增加了很多。
TLC和QLC根据名字大家也能脑补出和前两种的差距来,这里就不多说了。
需要提一句的是eMLC。在NAND Flash工厂制造处理过程中,Flash裸晶元的质量是可知的。厂商把晶元上最好的那部分挑出来,用企业级的标准来检测它的数据完整性和耐久度。
检测完成后,这些裸晶元被取下来改变内部些许参数,再进行比标准MLC更加苛刻的测试。当这些晶元通过测试后,就被工厂定义成为eMLC级别,余下的就成为MLC级别了。
这里给大家一个参考值,SLC可擦写次数大约是10万次的级别,eMLC在1万次,MLC在3000-5000次,TLC在500-1000次。
当前市场上可选择的闪存形态非常多,除了消费类的优盘,SSD硬盘,M.2 SSD(MacBook)外,企业级市场还有SAS SSD,SATA SSD,PCI-e闪存卡,基于NVMe的闪存卡,基于NVMe的SFF-8639 SSD等等。
而未来的发展上看,主要以3D-Nand工艺及NVMe标准为主。当然这出于个人判断,毕竟现在新材料新技术出的也不少,但从市场化的时间进度上看还是这样的。之所以NVMe未来会成为主流,是因为它的特性决定的。
通过图片大家可以看到,传统的AHCI协议在处理IO请求的时候,是由CPU的core0进行的。这也是为什么core0的负载在大IO的时候会比其它core高的原因。而NVMe协议则是并行处理IO请求,延迟也更低。
在企业级应用中,PCIe闪存卡的比重也逐渐增多起来。这种PCIe闪存卡现在有两种主要架构,一种叫Host-Based,一种叫Device-Based。
两种架构各有特点,而二者最大的区别在于:Device-Based PCIe卡的FTL(Flash Translation Layer) 是在PCIe板卡内部进行处理的,而Host-Based PCIe 闪存卡的FTL 是在驱动端完成的。
前面【故事3】中的就是一种Host-Based PCIe闪存卡,在主机端实现FTL的代价就是会直接消耗大量内存以及CPU资源,与应用争夺资源,自然结果就是系统整体效率降低了。
控制器部分的主要功能
控制器是闪存系统的核心部件,它就是闪存的CPU,是连接主机与NAND的桥梁。闪存控制器有很多的闪存管理功能,主要包括:ECC校验,磨损平衡,坏块管理,读写干扰管理,垃圾回收,预留空间管理等。
这里主要聊一下ECC和OP,其它就不展开了,如果大家有兴趣可以另搞专题。
ECC是一种用于NAND的差错检测和修正算法。由于NAND Flash的物理特性及工艺决定了其并不能保证在NAND生命周期中保持性能的可靠,因为在NAND的生产以及使用过程中会产生一些坏块。
NAND出错的时候一般不会造成整个Block或是Page全部出错,而是整个Page中只有一个或几个bit出错,这时候ECC就能发挥作用了。
当闪存随着使用时间和数据量的增长,坏块会逐渐增加,会产生大量的ECC Error,这时如果主控能力不够,设备性能和可靠性会大幅度下降,对应用性能和数据安全带来影响。
这时
就会像【故事1】里的情况一样,闪存在使用一段时间后,坏块增多,ECC校验随之倍增,进而造成性能下降。因为主控卖力的去做很多ECC校验了,IO处理也就慢了下来。
那如何解决这个问题呢?有的厂商做的比较有技巧,因为有足够的研发能力,在产品设计的时候采用分布式ECC校验,在每一个NAND颗粒中都封装一个ECC控制器,并且只负责NAND颗粒内部的ECC校验工作。
这样主控制器的运算能力就被其它ECC控制器给分摊了,性能自然不会衰减。但这样做的缺点就是——贵!同时性能上因为处理层级多,也会有一定的下降。当然这也就看用户的选择了,是要长期的可靠性和稳定性,还是前期的性能。
所有的SSD都有冗余空间提供,即OP(over provisioning),主要是为了给坏掉的Block做补充用的。只不过冗余空间有的多,有的少。这也就是为什么各个品牌的SSD盘容量各不相同,有240GB的,还有256GB的,其实主要就是OP不同。
此外,基于NAND结构的容量是1024*1024*1024=1GB,而一般厂商的SSD标称容量1G 基于1000*1000*1000,所以,就算是消费级的SSD,也至少有1024*1024*1024-1000*1000*1000 ,即大约7%的OP。
最后,了解了以上的内容,在运维工作中如果遇到闪存组件,相信各位已经有了一定的概念。
首先我们要通过厂商提供的监控软件或标准参数来时刻监控闪存的运行状态,比如SMART信息,当
前环境温度,剩余使用寿命等。
如果发现带有闪存的应用出现性能下降,则需要特别注意,是否其坏块量过多,导致ECC校验
大幅增加而导致性能整体下降。如果确认为此问题,需要考虑更换该闪存。
因为闪存的这些特性,在选择上一定要注意,应该根据实际应用读写特点来进行选购,即根据数据量的读写数量,选取不同DWPD级别的闪存产品。
在运维中还会遇到的一个问题就是文件丢失,这种情况最多的是出现在系统意外断电后。如同前面提到过的【故事2】一样,在系统意外断电后,甚至是连续多次断电后,数据能否安全的保存,对闪存来说是一种极大的技术考验。
由于各个厂商的算法和逻辑结构不同,因此对待意外断电的处理也不同。如果在采购SSD硬盘或PCIe闪存卡之前能够有条件进行测试,建议多进行这种连续的断电模拟测试。
毕竟在实际应用环境中是可能出现连续断电情况的,因此多做这种测试,对业务的数据安全可以有更好的保障。
另外,在运维中环境温度也很重要,这个环境温度不仅仅是运行时的温度,还包括关机时的温度。是不是很神奇?为什么还要关心关机温度?因为这两个温度涉及到闪存的数据保存率。
根据JEDEC(电子工程设计发展联合会, 是微电子产业的领导标准机构)的定义,SSD在不通电的状态下,要达到JEDEC规定的“数据保存率“,消费级SSD是30 °C下1年,企业级SSD则是40°C下3个月。
这也就是【故事3】提到的如果长期断电的情况下,闪存中的数据是有丢失的可能性的。即便是在极端情况下才会发生,但毕竟是有几率的。所以重要数据还是老老实实的备份在传统磁盘里吧,理论上更靠谱儿。
当然,今天说了这么多闪存的问题,但我们不能忽略闪存带来的巨大性能优势。安全性要靠我们从整体架构和软件的层面去考虑,毕竟没有绝对的安全。
从目前闪存技术的演进上看,一直是向着容量更大,速度更快,价格更低的方向去努力的,因此只要大家选择得当,运维得力,闪存完全可以为我们的业务系统提供稳定而优异的IO加速服务。
本文转载自“高效运维“公众号
“高效运维“公众号(如下二维码)值得您的关注,作为高效运维系列微信群的唯一官方公众号,每周发表多篇干货满满的原创好文:来自于系列群的讨论精华、运维讲坛线上精彩分享及群友原创。“高效运维“也是互联网专栏《高效运维最佳实践》及运维2.0官方公众号。
重要提示:除非事先获得授权,请在本公众号发布2天后,才能转载本文。尊重知识,请必须全文转载,并包括本行。