【编者按】

作者李炫辉,绿芯半导体系统科技有限公司副总裁。

闪存存储与软件定义存储(SDS)_数据

Oracle数据库专家,思科网络专家,云计算及存储系统专家,对闪存技术有深刻了解,国内早期闪存存储技术的实践者,参与了多个客户关键业务系统闪存存储架构设计与实施。加入绿芯半导体之前,先后在惠普以及戴尔工作,历任存储产品经理以及解决方案部高级技术经理。有技术情结,喜欢学习新技术,了解应用趋势,在大数据分析、机器学习以及人工智能方面均有探索。


本文节选自李炫辉参与编写的《软件定义存储:原理、实践与生态》一书的第22章,该章节共计1万多字,详细地介绍了闪存存储的技术原理、特性以及发展趋势,结合SDS的特点以及应用场景,详细阐述了SDS结合闪存存储搭建企业级存储系统,提供可靠稳定和高性能的存储解决方案,同时分析了当前闪存存储应用中存在的问题以及相关的研究进展,对新型存储技术做一些介绍。 


---Begin---


在存储的发展历史上,软件和硬件的创新交互推动着存储技术的发展,软件定义的存储(SDS)是一个不断进化的概念,在现阶段看来,SDS是指存储资源由软件自动控制,通过抽象、池化和自动化,将标准服务器内置存储、直连存储、外置存储或云存储等存储资源整合起来,实现应用感知,或者基于策略驱动的部署、变更和管理,最终达到存储即服务的目标。这是一种功能分层和资源池化的方式,闪存作为底层硬件资源,提供高性能和可靠的底层数据存储服务。闪存存储解放了SDS的性能需求,使其可以专注于存储功能设计,而SDS又拓展和加速了闪存存储的应用。


从半导体的角度来看,闪存属于非易失性存储,但是属于不可靠介质。因为闪存是采用电子驱动模式,因此具有电子元器件所固有的缺陷,如老化、电子泄露,衰减等等。


下面列出了传统磁盘和闪存存储的一些主要差别。


闪存存储与磁盘存储


闪存

磁盘

访问机制

电子驱动

机械驱动

IOPS

几万到几十万

几十到几百

延时

几十微秒到一百多微秒

几毫秒

稳定性

随时间和数据擦写量增长存在波动和衰减

无衰减

擦写次数

SLC 10万次, MLC  3000次

无限制

MTBF

与擦写次数相关

200万小时,与磁介质/传动系统相关

工作温度

温度高对寿命有负面影响

影响较小

工作功耗

7到25瓦或更高(与性能相关)

7到8瓦


我们可以看到闪存存储的性能要远远高于磁盘存储,但是在可靠性和稳定性方面却由很大差异,那么我们如何设计和生产出满足企业级应用环境的高可靠和高稳定性的闪存存储呢?


闪存写操作的最小单位是Page(页面),大小是4KB或8KB,256个Page或更多2的幂倍数的Page组成一个Block,Block是闪存擦除的最小单元。由于闪存不能覆盖写,需要擦除后才能再次存储信息,这个特性与磁盘介质完全不同。由于这种特性,它有一些独特的处理机制。


Wear Leveling(磨损平衡)

Wear Leveling,也即磨损平衡,也叫磨损均衡,或耗损平衡。

磨损平衡算法主要是针对Block级别进行处理的,依赖于逻辑和物理地址的转换。根据磨损平衡的处理机制,又分为动态磨损平衡,静态磨损平衡和全局磨损平衡三种方式。

合理完善的磨损平衡算法会带来闪存介质明显的寿命提升,但是会带来性能的下降。


Garbage Collection(垃圾回收)

当闪存存储进行数据修改的时候,通过磨损平衡算法将修改后的数据写入到新的页面中,原来的存储页面被标示为invalid(无效),当一个Block上的无效页面达到一定比率,系统会启动垃圾回收进程,将这个Block中的有效数据移至缓存中,然后对整个Block进行擦除,然后将这个Block标示为空白块,用于新数据的存储。随后移出的有效数据写回到Block。


企业级PCIe闪存存储架构设计

对于当前的操作系统,需要将闪存的地址转换为传统的磁盘逻辑地址结构,这就需要一个地址转换层,即FTL(Flash Translation Layer),如果FTL位于主机系统层面,那么这种闪存架构就是基于主机的架构(Host based Architecture),如果位于板卡层面那么就是基于设备的架构(Devicebased Architecture)。

NVMe协议技术是专为企业级和客户端系统设计的采用PCIe 固态硬盘的可扩展的主机控制器接口,其中包括优化的寄存器接口和命令集,针对闪存存储的特点,提供了低延时、高并发以及低功耗的特性。


闪存存储在SDS中的实践

闪存存储在SDS中主要的作用提供高性能的IO能力,主要有两种使用方式,一种是作为缓存来使用(读缓存或读写缓存),另外一种就是直接将闪存存储直接作为数据存储设备来使用。

在基于VMware VSAN存储系统上的双节点Oracle RAC的测试,采用4节点VSAN集群,每个节点一个磁盘组,每个磁盘组仅包含1块Greenliant G7101 NVMe Flash卡及4块SAS 600GB 15K转的磁盘,其中2个节点各运行1个OEL的虚拟机及Oracle数据库系统软件,组成Oracle RAC集群。在1000个并发用户下,平均性能可以达到17784 TPS,峰值可达到23000 TPS,完全可以支持核心关键的数据库应用。

而采用了Greenliant PCIe NVMe闪存的开源的Ceph存储架构,单节点的8k 随机读写性能可以达到40000 IOPS以上。


【编者按】

注:TPS和IOPS是两种不同的性能衡量标准。IOPS是每秒进行读写(I/O)操作的次数(Input/Output Operations Per Second);而TPS是每秒钟系统能够处理的交易或事务的数量(Transaction Per Second)。作者在“闪存存储在SDS中的实践”段落里提到的Oracle RAC在VSAN上的测试,是采用SwingBench(SwingBench是一个开源的Oracle压力测试工具,由Oracle一位资深的员工开发的)模拟一个电商业务应用的场景中进行的,在1000个并发用户下,同时进行着新用户注册,用户浏览产品,用户下订单,订单处理这四种电商业务的组合。




---End---


微信公众号平台"乐生活与爱IT"在目前阶段,主要是分享软件定义存储(SDS),及VMware VSAN相关的文章,偶尔也会分享虚拟化、云计算、大数据,甚至生活类的好文章。欢迎对SDS感兴趣的朋友,加入软件定义存储讨论 QQ群:122295009,可下载原创的一些文章,及其他有参考价值的文档。


欢迎您通过扫描关注微信公众号:“乐生活与爱IT”。

闪存存储与软件定义存储(SDS)_闪存_02

关注后,可以通过点击左下角的“文章目录”,通过输入三位数(记住!是三位数,目前第一位是0或者1)详细了解如何查看历史文章。