本文《在网存储系统研究综述》系统地综述了在网存储系统的研究进展,首先介绍了可编程网络设备的硬件结构与性能特征,并基于此总结了构建高性能在网存储系统面临的2大挑战:软硬件分工以及系统容错. 然后根据可编程网络设备执行的任务(缓存、协调、调度、聚合)对现有的在网存储系统进行分类和阐述,并以多个在网存储系统为实例分析对应的设计难点以及软件技术。
最后指明了在网存储系统进一步研究中需要着重探索的问题,包括交换机与网卡的协同、安全、多租户以及自动卸载。
首先介绍了可编程网络设备的硬件结构与性能特征,并基于此总结了构建高性能在网存储系统面临的2大挑战。
然后根据可编程网络设备执行的任务对现有的在网存储系统进行分类和阐述。
最后指明了在网存储系统进一步研究中需要着重探索的问题。
存储系统基础知识
存储技术的研究发展现状及趋势
分布式存储趋势及对云存储规划影响
分布式存储:企业IT市场增长点 网络存储技术浅论 SDS(软件定义存储)市场分析及展望 SAN与NAS的区别 《中国企业级SSD行业技术合集》
现有智能网卡配备的可编程芯片主要分为4种:ARM CPU、网络处理器(network processor,NP)、专用集成电路(application specific integrated circuit,ASIC)以及现场可编程门阵列(field-programmable gate array,FPGA),它们在性能、易用性和表达能力方面各有优劣,如表1所示.
在网络硬件扩展方面,存在一系列研究工作提升可编程网络设备的表达能力,可具体分为3类,如表2所示.
如图2所示:当可编程交换机收到客户端发送的数据更新请求时,将内容记录在交换机的持久性日志区,然后便可提前返回完成消息给客户端,而服务器异步地处理数据更新请求;通过该协议,客户端的请求延迟可以减半. RedPlane则采用数据复制的方式进行可编程网络设备的容错:在RedPlane系统中,当可编程交换机需要修改内存状态时,它会生成包含修改数据的复制请求,并发送至多台服务器;这些服务器将修改数据存储到本地的DRAM中,以此容忍可编程交换机的崩溃.
基于可编程网络设备的在网存储系统支持在数据传输路径上执行存储任务,颠覆了传统以CPU为核心的存储系统架构思想. 根据可编程网络设备执行的任务,我们将在网存储系统分为4类:在网数据缓存系统、在网数据协调系统、在网数据调度系统以及在网数据聚合系统. 本节将依次介绍这4类在网存储系统,并详细分析典型的系统实例. 表3对这4类系统在多方面进行了对比.
图3展示了NetCache的架构. NetCache系统由4个组件构成:1)存储服务器,将键值数据存储在DRAM中;2)客户端服务器,用于发送键值请求,包括查询(Get)、更新(Put)和删除(Del);3)可编程交换机,缓存热点键值对以服务Get操作,并进行热点键值数据的统计;4)交换机控制器,用于向交换机中添加或删除键值对. 后端存储服务器、可编程交换机以及交换机控制器位于同一个机架中,因此所有的客户端请求均会流经该交换机.
得益于交换机的极高聚合带宽,NetCache在Get操作密集的倾斜负载下能提高系统吞吐一个数据量级. 但NetCache只支持单个机架,具有扩展性问题;后续工作DistCache通过独立缓存分配和2次随机选择策略将NetCache扩展到大规模集群. 此外,除了负载均衡场景,研究者们设计了高可靠的键值存储系统NetChain. NetChain通过链式复制协议(chain replication protocol)将每份键值对存储在多台交换机的SRAM上,存储方式与NetCache类似. 表4对 NetCache,DistCache,NetChain这3个基于可编程交换机的缓存系统进行了总结对比.
分布式共享内存系统Concordia由清华大学提出,利用可编程交换机加速缓存一致性协议. 基于高速网络(如RDMA)的分布式共享内存系统能支持图计算等大规模内存计算应用. 尽管目前网络带宽很高(如100Gbps),但仍低于本地内存的访问,且网络延迟远高于内存延迟;因此,在分布式共享内存系统中,为了减少数据的远程访问,每台服务器一般具有本地缓存. 如何保证不同服务器缓存之间的一致性是个极具挑战的问题,而现有的缓存一致性协议需要服务器之间进行昂贵的分布式协调,极大地降低了系统在数据共享时的性能:基于目录的缓存一致性协议引入多次网络往返,且当热点数据存在时,服务器会成为系统瓶颈;基于广播的缓存一致性协议会导致网络和CPU资源的消耗,这是由于每次缓存一致性请求需要被广播到所有的服务器被处理. Concordia利用可编程交换机在网络中枢上的位置优势,设计了高效的在网分布式缓存一致性协议. 图4展示了其架构.
除了Concordia,还有一些研究工作也利用可编程交换机保证不同服务器的数据之间的一致性. 华盛顿大学提出了分布式对象系统Pegasus以解决负载不均衡问题;与NetCache使用缓存的方式不同,Pegasus将热点的对象复制至多台服务器,以均摊相应的访问. 在Pegasus系统中,可编程交换机记录热点对象所在的服务器列表,当发生写请求时更新列表,以保证后续的读操作能获得最新数据. 此外,耶鲁大学提出的Mind系统针对的是分离式内存场景,即多个计算节点访问远程内存池,并将数据缓存至本地. Mind利用可编程交换机保证不同计算节点的缓存之间处于一致的状态. 此外,约翰霍普金斯大学提出NetLock,通过交换机实现高性能的锁管理器,用于上层应用保证数据一致性. NetLock将锁资源存储在交换机的内存中,因此相比于传统基于服务器的设计,能够提高吞吐一个数量级;NetLock在交换机中为锁请求维护了队列结构,以保证能够公平地服务冲突的锁请求,降低上层应用的尾延迟. 表5对上述在网缓存一致性系统进行了总结对比.
清华大学提出了可扩展的在网分布式事务系统SwitchTx,将分布式事务协调过程抽象为多次“收集-分发”操作的组合,并将这些操作卸载到集群中的多个可编程交换机中. 相较于Eris系统,SwitchTx系统避免了单点瓶颈问题. 图6展示了SwitchTx系统的组件构成以及事务处理流程.
此外,华盛顿大学提出了分布式事务系统Xenic,利用基于ARM CPU的on-path智能网卡进行2个方面的卸载:事务的协调任务以及数据并发索引. 具体地,Xenic在客户端网卡存储事务的临时状态,完成事务协调任务,减少协调过程中的通信时延. Xenic的服务端网卡利用网卡内存存储热点数据以及锁信息,消除远程数据访问的PCIe开销;同时利用智能网卡的ARM CPU处理复杂数据访问,以减少服务端CPU开销. Xenic设计了智能网卡内存与主机内存协同的Robin hood哈希索引结构,减少网卡处理远程数据访问请求时的DMA次数. 事务执行过程中的副本操作也完全由网卡执行,这进一步降低了主机CPU的消耗. 除了事务系统,一些分布式文件系统也将副本操作卸载至智能网卡. 表6对上述在网分布式事务系统进行了总结对比.
R2P2和RackSched系统虽然支持在服务器之间进行负载均衡调度,但忽略了数据一致性,即在存储系统中,某些数据的最新版本只存储在某些服务器中,因此交换机无法对相关RPC请求进行任意调度. Harmonia和FLAIR这2个系统利用可编程交换支持保证数据一致性的请求调度. 具体地,它们针对的场景是副本协议,1份数据通过共识协议被冗余地存储在不同服务器(包括1个主副本服务器以及多个从副本服务器),交换机将客户端的读请求高效地调度至具有最新版本数据的服务器上. 这里的主要设计难点在于交换机如何与共识协议结合,识别哪些服务器具有读请求所需的最新数据. Harmonia在可编程交换机中维护了细粒度哈希表,用于实时记录哪些数据存在并发的写请求,对于这些数据的读请求只能被路由至主副本,对于其余数据的读操作可被调度至任一从副本. FLAIR将整个数据范围切分成大量的分区,在交换机中记录每个分区的稳定状态:当某个分区存在进行中的写请求时,则被标记成不稳定,对应的读请求只能被路由至主副本;对于稳定分区的读请求能以负载均衡的方式被调度至某一从副本. 表7对本节涉及的在网数据调度系统进行了总结对比.
微软研究院提出了SwitchML系统,将机器学习训练过程中的模型参数聚合卸载至可编程交换机. 针对可编程交换机不支持浮点数计算的问题,SwitchML设计了服务器与交换机协同设计的方法:服务器将需要聚合的浮点参数进行量化,转换成定点数,因此交换机只需进行定点数的聚合. 此外,清华大学提出了ATP系统,利用多台交换机协同加速机器学习的训练任务,且能高效支持多个训练任务共同运行的多租户场景;沙特阿拉伯阿卜杜拉国王科技大学提出了针对稀疏训练任务的数据聚合系统OmniReduce,并将部分聚合算法卸载至可编程交换机;其他工作如iSwitch和Flare设计了加速数据聚合的定制化交换机硬件架构,其中iSwitch采用了FPGA硬件,Flare采用了PsPIN硬件. 此外,Flare进一步支持用户自定义聚合操作处理的数据类型. 表8对上述在网数据聚合系统进行了对比总结.
总结与展望
本文首先从可编程网络硬件(包括可编程交换机和智能网卡)的特性出发,展开分析了构建在网存储系统面临的挑战,并通过对现有研究工作进行了详细地分类与剖析. 现有研究工作利用可编程网络硬件对存储系统的不同模块进行加速,包括数据缓存、协调、调度以及聚合,能够显著提高存储系统的性能. 然而,研究人员仍然需要在以下4个方面进行深入探索,才能让在网存储系统广泛普及到数据中心和超算中心.
1. 交换机与网卡协同
现有的在网存储系统大多孤立地使用可编程交换机或者智能网卡,无法做到全方位的存储功能卸载.
2. 多租户
当在网存储系统被部署至云环境时,需高效地支持多租户,即多租户之间要进行资源的共享和隔离.
3. 安全
目前越来越多的网络数据为了安全考虑被加密,此时就需要可编程交换机和智能网卡能够高效地处理加密的数据.
4. 自动卸载
从头构建可商用的高可靠在网存储系统极其困难,需要大量的工程代码和测试验证. 如果能够将现有成熟的存储系统如Memcached,Ceph中的某些模块自动卸载至可编程交换机和智能网卡,就能既利用现有的系统代码,又能享受到可编程网络设备带来的性能红利。
汪庆, 李俊儒, 舒继武. 在网存储系统研究综述[J]. 计算机研究与发展. doi: 10.7544/issn1000-1239.202220865.
编辑:黄飞
评论
查看更多