2.3 高性能用户态存储软件栈:HSAK
NVMe SSD是一种高性能存储设备,它采用NVMe协议进行数据传输,具有高性能、低延迟、高可扩展性和高可靠性等特点,已经成为许多应用的首选存储解决方案,包括高性能计算、大规模数据中心等。
存储级内存(Storage Class Memory,SCM)是一种新型的存储介质,它结合了传统的内存和闪存存储的特性。SCM具有非常低的访问延迟和高吞吐量,这使其成为处理器与传统存储介质之间的高速缓存层。常见的SCM存储介质有英特尔Optane(3D XPoint)、相变存储器(Phase Change Memory,PCM)和电阻式随机存取存储器(Resistive RAM)。
随着NVMe SSD、SCM等存储介质性能的不断提升,介质层在I/O栈中的时延开销不断缩减,软件栈的开销现在已经成为瓶颈,急需重构内核I/O数据面,以减少软件栈的开销。
混合存储加速套件(Hybird Storage Acceleration Kit,HSAK)针对新型存储介质,提供高带宽、低时延的I/O软件栈,相对于传统I/O软件栈,其提供的软件栈开销降低50%以上。HSAK用户态I/O引擎是在开源的SPDK基础上开发的,对外提供统一的接口,屏蔽开源接口的差异;在开源的基础上新增了I/O数据面的一些增强特性,如数据完整性字段(Data Integrity Field,DIF)功能、磁盘格式化、I/O批量下发、trim特性等;提供特有的磁盘设备管理能力,如磁盘信息查询、动态增删磁盘等。
HSAK的架构如图2-5所示。HSAK继承了SPDK丰富的南向用户态驱动,包括HHD用户态驱动Linux AIO、SSD用户态驱动NVME PCIe Driver及ceph server磁盘用户态驱动ceph RBD,新增了一套北向接口HSAK API,为用户屏蔽底层协议差异,同时新增了丰富的工具集HSAK Tool,以方便用户对磁盘进行管理。同时,在原有的数据面中实现了丰富的存储服务:磁盘垃圾回收(Garbage Collection,GC)、I/O校验码处理[循环冗余校验码(Cyclic Redundancy Check,CRC)]、xCache和存储管理,其中存储管理包括磁盘I/O时延统计、I/O错误注入、盘健康查询等功能,用户可以通过HSAK API接口或者HSAK Tool二进制工具来利用这些存储管理能力。
HSAK具有以下特征:
(1)丰富的存储管理能力,有利于提升I/O软件栈的可靠性。
● 提供I/O统计和I/O时延查询接口,评估磁盘性能。
● 提供错误注入对异常场景进行测试;支持磁盘上下电,实现动态扩容。
● 支持磁盘健康信息查询,及时发现磁盘异常,避免磁盘故障导致数据丢失。
图2-5 HSAK的架构
(2)通过SPDK提供用户态、异步、无锁、轮询方式的高性能NVMe设备的I/O软件栈,进一步增强以下功能。
● 提供磁盘GC功能,定期清理无用数据,减少I/O触发的写放大影响,减少历史敏感数据被发现的风险。
● 提供I/O校验功能,对I/O进行CRC计算和校验,提升数据可靠性。
(3)提供I/O缓存加速能力,支持使用高性能的存储介质加速慢速介质,提升存储设备性价比,这主要通过以下关键技术来实现。
● I/O缓存和预取策略:I/O缓存将频繁被访问的数据保存在高速介质中,使大部分I/O在高速介质中被命中,提升存储性能。I/O预取策略是通过将即将被访问的数据提前写入高速介质,提升I/O在高速介质中的命中率,提升存储性能。
● I/O特征分类:通过I/O特征分类算法识别I/O的类型,并结合介质的特征来决定I/O调度策略。
● I/O QoS(Quality of Service,服务质量):提供I/O QoS策略框架,实现I/O队列优先级策略、I/O负载均衡和I/O调度,支持通过注入应用定制的QoS策略。
(4)存储介质分级管理:提供对SCM/NVMe SSD介质的高效访问路径,实现对SCM介质的高效元数据管理结构。