SSD在无盘使用中的寿命研究
SSD寿命想必是大家特别关注的话题,而且在无盘上的应用,其寿命是否能得到保证!对此,我们探讨了SSD的工作原理,以及MLC与SLC SSD在性能和可靠性上的差异,实际上,Intel在针对SSD的可靠性和使用寿命上,也有一些保障措施。
成倍写入机制与智能磨损均衡
在深入解析SSD MLC与SLC的性能差异中,我们对SSD工作原理的描述。SSD最小记录的单元是Page(4K),最小擦除单元是block(512K)。当我们保存该文件时,它会以2 pages的形式保存在闪存记忆体中;将其删除时,SSD会标记pages为无效,但实际上并不会删除该block。SSD将等到block中一定比例的pages被标记为无效时,才会复制一些有效的数据到新的pages里去并擦除该block。SSD这样做是为了限制了每个block擦除的次数,从而延长驱动器寿命。
并不是所有的SSD句柄删除都通过相同的方式,如何删除和何时删除一些包含无效页面的块,成为SSD寿命的关键。
写入放大率
对于一些质量不好的SSD来说,如果你只是想更换一个16KB的文件,控制器可能会错误地将整个block读取到主记忆体,然后更换4个页面,从SSD中擦除块,然后把4个改变页写入到新的块中。使用英特尔固态盘的页面/块,就意味着如果只写入16KB新数据,却相当于将512KB写入了SSD ——写入放大了32倍。
我们暂时没有其他SSD控制器的数据可以显示它们是如何处理这样的情况的,但英特尔指出,传统的SSD控制器写入放大在20–40倍的范围内,这就减少了它们驱动器的寿命。
写入放大控制需要快取
这就是 Intel SSD 的控制器需要 DRAM 缓存的原因,它用來当做储存资料的临时记忆体,所以比传统闪存控制器更有效率的执行写入动作;传统闪存控制器通常是每一次都触发写入动作,即使存储比较小的区块时也会写入放大到大容量的区域中。
先天设计上的优势
Intel 考虑了写入放大与磨损平均因子,以简单的方程式計算 NAND 闪存周期,磨損平均因子告訴你平均磨损与最大磨损的使用率差异,英特尔 宣称,由于控制器可感知闪存记忆体的区块大小而启用用命令序列功能,因此其他产品的因子为 3 (3x),X25-M 仅有 1.1x;这代表所有储室的使用率几乎相等,这有助提高SSD的预期寿命。
对于典型客户的工作量来说,其写入放大系数小于1.1倍,换句话说,比你的实际需要多写入了不到10%的数据。写入放大系数本身并没有多大意义,重要的是驱动器的寿命,此外还有一个因素起作用,我们已经证实,对于闪存来说,写入block的次数有限,之后它就会失去存储数据的能力。SSD相当智能,会使用均衡损耗算法分散block在整个驱动器中的使用。记住,对于SSD来说,无论写入什么地方,其性能将始终如一,这一点不同于其它机械磁盘,在英特尔磨损均衡效率上,所有使用的block几乎是相同的数值。
因此,SDD试图将数据均匀地写入驱动器的所有block里。例如,假设您下载一个2MB的文件到您新的、从未使用过的SSD中,然后保存到block 10、11、12、13中。您意识到下载错了文件并删除它,然后去下载正确的文件。
闪存控制器不是将新文件写入block 10 、11、12、13中,而是写入block 14、15、16、17 中。事实上,block 10、11、12、13这四个block无法再次使用,直到驱动器上每隔一个block都已写入了一次。所以,尽管您的MLC SSD可能只有10,000次周期的寿命,但由于智能均衡损耗算法,它将能使用相当长的一段时间,坏的磨损均衡,大概在现存的SSD上,一些blocks比其他的blocks更多的被使用。
英特尔SSD大约会有4%空间是均衡损耗算法不能控制的的,这意味着,英特尔SSD上 4%的block将比其他的block更易磨损。通过超低写入放大率及稳定成熟的平均磨损技术,从根本上延长了硬件寿命!
SSD的寿命通常是可以量化的,一个block在不能继续使用之前,可以通过其可擦除的次数或者设计周期进行衡量,因为我们在前面MLC的周期一般为10,000次,SLC的周期一般为100,000次,这些数值一般都不是非常显著的,用户往往更愿意通过SSD自身能够写多少块的数据作为衡量标准。通过我们对网吧无盘目前最主流的软件系统-锐起无盘XP 3.1,一台负载一百台客户机工作的无盘服务器的跟踪分析,我们发现在普遍情况下,平均24小时写入服务器回写盘的数据总量大约在200G周围;我们假设在偏极端情况下写入400G总数据量,同时我们研究发现在该系统下随即数据产生的写放大率平均为1.4,我们同样考虑极端情况将该放大率放大为3,这样计算下来,一片INTEL MLC 160G SSD 可以支持写入时间为4年左右,做了如此大量的放大考虑,INTEL SSD 都完全超出了网吧无盘服务器硬件使用年限!
SSD在无盘应用后会带来怎样的提升
假如一个服务器带100个工作站,每个工作站每秒钟向服务器中硬盘发出一个64KB文件的读或写,那么服务器的硬盘需要响应100次,如果每台机器每秒发出10次64kb资料的读取,服务器硬盘每秒就要响应1000次,即每秒要读取约64M, 然而在 15000转的SAS随机读取64KB数据块,测试中,硬盘也只能响应160次左右,平均响应时间,在6.0 毫秒(见图A),SSD可以响应 3000次,平均响应时间,0.4毫秒左右(见图B),这是个多么惊人的数字。
根据以上测试结果可以看出,要解决工作站的速度首先要解决硬盘的I/O处理速度,否则再怎么升级CPU,扩大内存,换主机板,都不会有很好的作用,目前很多服务器为了提高I/O处理速度做磁盘阵列,而要达到SSD固态硬的性能,最极端情况下需要使用10-20个目前最高级别的机械硬盘做磁盘阵列,当然在无盘服务器中是不可能用这么多盘做阵列,同时也不需要这么高性能, SSD 在无盘上应用,省去了多块硬盘做阵列来解决I/O 瓶颈!