近日,Memblaze产品工程师黄辉在2020中国数据与存储峰会全闪存存储论坛就NVMe SSD在存储系统中的应用与技术创新这一话题发表主旨演讲,聚焦NVMe SSD功能与特性,结合应用场景介绍Memblaze为提高系统负载均衡以及运维效率所研发的多项新功能,同时与来自浪潮、宏杉科技、中存超为等企业的技术专家共同就全闪存技术发展趋势展开探讨。
Memblaze近十年来专注于企业级NVMe SSD设计和研发,2015年发布NVMe SSD——PBlaze4,此后相继发布PBlaze5系列多款NVMe SSD产品。
NVMe SSD在存储阵列中的应用已经越来越广泛,在SPC-1测试top10榜单中,基于NVMe SSD的全闪存阵列也逐渐占据主流。最近,支持NVMe协议的全闪存阵列宏杉MS7000G2-Mach完成了SPC-1测试,在8小时高负载压力下的稳定性测试中始终保持平稳,时延抖动在高压力测试中不超过7μs。另一方面,MS7000G2-Mach高压力时延为0.337ms,在SPC-1 TOP10榜单中最低。
MS7000G2-Mach使用的就是288块PBlaze系列NVMe SSD。SPC-1各项测试结果均来自Client端的应用,也被称为ASU,各项优异的测试成绩可以说明底层的NVMe SSD没有任何性能抖动,SSD的稳定性和延时表现都是很好的。从性能、延时和稳定性等指标上看,都印证了PBlaze系列NVMe SSD非常适合存储阵列使用。
存储阵列对NVMe SSD要求非常多,首先是双端口功能,双端口NVMe SSD支持单个主机内的两条数据路径,支持两个控制器访问同一NVMe SSD来实现冗余。
在另一种常见的应用场景中,两个主机系统也可以通过两条路径访问同一存储系统。如果在一条数据路径失效或者一个主机掉电,另一条可用的数据路径将继续运行,对业务连续无影响。
双端口提供了多个host访问NVMe SSD共享命名空间的能力,提供链路冗余以及基于端口的PCIe和NVMe寄存器管理。另一项技术Reservations则可以作为双端口模式下的仲裁机制,用于SSD访问和管理权限的分配。
另一个必备功能,端到端数据保护。在数据中心里,盘的介质损坏、电磁噪声,或者是软件Bug,都有可能产生静默错误,这种错误一旦发生就非常危险,因为系统没有报错并且不可能纠正过来。面对静默错误的问题,较好的方案是加上PI信息,把PI信息放在元数据里,保证写下去和读上来两个过程当中都是正确的。
PBlaze系列目前支持五种LBA fomat格式,其中第一个和第二个是512和4096是不含有PI信息,其他的都是可以带有8 byte的PI信息,还有4096加64,这是另外一种可以带有更多的元数据格式。
如果FORMAT 512加 8,来看两种方案DIF和DIX的区别,用户数据和元数据的PI信息组合方式不一样。DIF,用户数据和PI信息是连续存放的,比如发4K数据,每隔512B就加8 BYTE的PI信息,这样连续存储。DIX就是用户数据和PI信息是分开的,如果发4K数据,用户是4K数据和8个PI信息是分开进行发到SSD控制器上。当一切配置好之后,我们就可以用标准的NVMe命名进行发读写的IO。
第三个,非常基础也是非常重要的功能就是在线固件升级。存储阵列对于SSD的要求是非常严格的,不允许SSD有任何的升级固件还需要进行重启机器这样的操作。那么从SSD升级固件操作原理来看,一共有两部分,首先通过firmware Download命令把新固件镜像文件下载SSD的DRAM当中,第二个就是激活,把新的固件变成现有的固件进行激活。
目前PBlaze5 920系列全部支持在线固件升级功能,这里进行了一个测试,在这个测试当中对一个固件升级,在此过程当中,同时还跑了FiO,这个升级过程当中FiO性能占了一到两秒的时间,一到两秒可以看到性能是恢复的。结合存储系统的cache和raid等方案,可以保障上层业务连续,这样就可以弥补SSD固件升级1~2秒的性能中断问题,目前看停1~2秒是满足存储客户要求的。
在线固件升级是不需要重启服务器,甚至不需要停下业务,就可以达到一个升级固件的效果。今年发布的PBlaze5 920、PBlaze5 520及明年将发布的PBlaze 6系列都支持在线固件升级,这对服务器运维来讲是非常有价值的功能。
Memblaze做了一些新的功能,第一个是延时分布。延时分布功能可以将过去一段时间里发的所有IO做一个直方图,一共有98个区间,最后一个区间是4秒到正无穷,所有IO的延时都会统计后记录在不同的区间中。有了这个功能,就可以观察过去一段时间里设备延时的分布,这样对于设备运营状态包括系统的负载压力的变化,对于我负载的压力以及其他的系统运营状态都有一个非常综合的评估。这个功能在PBlaze5 920已经实现了,将在2021年发布的PBlaze 6系列将正式上线这项功能。
iostat这样非常常用的硬盘性能监控工具,它有一个问题,可能平均延时低于两毫秒,但是这个过程当中很有可能有少数IO延时非常高,这样异常的IO经过其他十几万甚至是几十万IO平均之后,整体的io平均延时可能很低。
为了追踪这些少数的高延时io,Memblaze做了一个功能——高延时打印,首先设置一个预值,比如100毫秒,可以将过去一段时间里,所有超过100毫秒的一个IO无信息打印出来,包括这样的时间戳,是什么类型的IO,另外QID、CID、数据量以及IO延时大小等等都被打印出来,有了这个信息,就很容易定位到异常的IO。
接下来是提高运维效率的功能就是Telemetry,他的用途是通过标准的NVMe命令来收集厂商自定义的Log。不同厂商、不同品牌的NVMe SSD接口和Log格式不尽相同。用户需要一个标准接口获取NVMe SSD的Log。当发生问题时,通过标准化的NVMe命令获取系统和NVMe SSD的Log。
最后一项功能是Weighted Round Robin(WRR),在PBlaze 5和PBlaze 4的控制器处理上层分下来的IO都是轮询的,在一个多核服务器里往往有多个提交队列同时往控制器上面发IO,发的时候对着不同的SQ,控制器使用一个类似轮询的机制,从不同SQ里取command。这样就会造成一个问题,有的关键应用的优先级比较高,我们希望能够尽早响应提交队列的命令,但是这Round Robin没有办法做到区别对待多个SQ, Weighted Round Robin可以给不同的SQ加上一个权重。
根据NVMe 协议,Weighted Round Robin先将IO权重划分为三级,第一级是Admin SQ发的IO,这些管理命令优先级是最高的。之后是Urgent级别的IO,这一级的IO权限虽然比管理命令的IO低,但是高于其他的IO,最后是带权重的普通的IO,这级又分高中低三个档次。
有了这个权重等级的划分,Controller就可以根据这些权重有选择性地处理IO了。目前新版本的Kernel都已经开始支持Weighted Round Robin,应用和不同的Core绑定,对不同的Core中的队列设置不同的优先级,还有一种方法是将应用和多个core中的队列进行绑定,然后多个队列分布在多个Core上,这种方案可以提高CPU的利用率,但是实现起来复杂。综合来讲,Weighted round robin可以让SSD更好的按需响应上层应用请求和调配资源,以达到高优先级应用的IO先响应的效果。
总的来看,Memblaze今年发布了两款新产品。
第一款是上半年发布的高性能的PBlaze5 920系列,采用96层3D NAND,有盘和卡两种形态,4k随机读可以达到97万IOPS,带宽可达5.9GB/s。这款产品支持双端口、reservation、在线固件升级以及端到端数据保护等功能。
第二款是低功耗的PBlaze5 520系列,采用96层3D NAND,支持NVMe 1.3标准,功耗12w,典型负载下功耗10w。这款产品同样也有盘和卡两种形态,支持双端口和端到端数据保护等功能。
2021年,Memblaze将发布两款PBlaze6 NVMe SSD,分别是PBlaze6 6920/6930和PBlaze6 6530,采用NVMe1.4标准。从这一代开始,Memblaze的产品将采用PCIe 4.0接口。
功能方面,PBlaze6也将更完善。高延时IO定位、Weighted Round Robin等功能都将加入到这款产品中,同时PBlaze6还将支持NVMe MI标准,使得服务器可以更灵活的管理PBlaze6,有关PBLaze6的更多信息也欢迎大家关注。