王界兵 王文利 董迪马
摘 要:云平台中的对象存储是一种新型存储技术,结合传统文件存储和块存储的优点,向用户提供持久的数据存储服务。对象存储能够对数据进行快速读、写,支持分布式存储。随着云计算、大数据等技术的快速发展,现有的块存储技术已经受到了硬件存储资源的限制,随之而来便是各类应用环境的资源瓶颈问题。针对此问题,文中首先设计并研制出一款拥有自主产权的硬件加速卡—云芯一号(Cloud Core V1.0),然后结合开源云平台OpenStack提出基于对象存储组件Swift的对象存储架构。最后通过大量实验验证和性能指标表明,在纯文件压缩/
解压过程中,云芯一号的速度相比传统的软件压缩/解压速度快近10倍,在提出的对象加速存储架构中大幅度缩短了云平台中的对象存储时间。
关键词:OpenStack;对象存储;Swift;云芯一号;互联网;FPGA
中图分类号:TP311.5文献标识码:A文章编号:2095-1302(2019)08-00-04
0 引 言
隨着互联网行业的快速发展,各类应用和数据呈指数级增长,不仅对数据的大容量存储需求越来越多[1-2],互联网应用种类也越来越多,如云盘、视频点播、协作办公等都对数据存储有着严格的要求,因此数据存储在现有的大数据和云计算环境下,占有越来越重要的位置。在此基础上,云存储是一种基于云计算技术发展而来的服务类型,是云计算和传统存储的一种延伸和扩展[3-4],相关技术的主要目的是把传统的本地存储放在云端存储,但给用户带来的是与本地存储一样的服务体验。各类云存储中,对象存储(Object-based Storage,OS)是一种新的网络存储架构[5],基于对象存储技术的设备即对象存储设备[6](Object-based Storage Device,OSD)。对象存储综合NAS和SAN的优点[7-8],同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,可提供具有高性能、高可靠性、跨平台以及安全的数据共享存储体系结构[9]。为了提高服务器等硬件设备的计算能力和数据安全性[10],一些针对性强的硬件加速设备,如FPGA等被用来对数据进行预先处理。基于此,本文设计了一款拥有自主产权的硬件加速卡—云芯一号(Cloud Core V1.0),然后结合开源云平台OpenStack提出了基于对象存储组件Switft的对象存储加速架构。
1 云芯一号
1.1 硬件结构
本文设计的具有自主知识产权的FPGA加速芯片—云芯一号如图1所示。该芯片可以使用任何可用的12 V PCle 插槽供电。与此同时,芯片还支持8路双工收发器,可插入x8或更大的PCle 3.0插槽。所有和芯片之间的通信都必须通过芯片上的PCle接口进行。
1.2 软件架构
云芯一号主要由5个软件模块组成,包括服务助理基础设施(SAI)、API层、Frontsurf服务框架(FSF)、设备专用驱动程序(DSD)、软件库。具体如图2所示。
SAI模块主要为其他模块提供基础服务,由OS抽象层(OSAL)、日志和文件解析器组成。
对于API层而言,云芯一号提供Raw加速(原始)API对用户的各类应用程序进行连接。Raw Acceleration API可以利用Cloud-Core V1.0上的所有功能,包括文件压缩、文件加密、身份认证、RNG和PK等。
Frontsurf Service Framework(FSF)模块的功能是为云芯一号的API层提供算法加速。在Cloud Core V1.0中,所有与芯片组无关的代码都位于Frontsurf服务框架中。与之相反,所有与芯片组相关的代码位于设备专用驱动程序中。另外,Frontsurf服务框架(FSF)模块还管理所有使用设备特定驱动程序注册的会话、密钥和设备,从而使得云芯一号可以实现硬件加速和软件库操作。具体流程:FSF从API层检索操作请求,然后将这些操作转换为硬件命令,同时提交硬件命令给相应的硬件,检索命令,并将完成的操作反馈信息返回给API层。除此之外,FSF还管理云芯一号的负载平衡,会话上下文和密钥池。如果部署云芯一号的硬件不可用于数据操作,则FSF与软件库将一起工作以提供软件上的各种支持,例如文件软压缩、软件认证、文件软加密和PK,完成相关的软件操作,最大程度保障服务的正常运行。
设备专用驱动程序(DSD)是一个与芯片组相关的功能模块,其主要功能是为Frontsurf服务框架(FSF)提供统一的硬件接口,并且将每个设备的特定结构格式转换为与FSF相同的结构。
软件库执行软件中的压缩、认证、加密和公钥操作等。如果云芯一号芯片发生硬件错误或正处于从错误中恢复的状态,抑或在系统中没有可操作的Frontsurf设备,则软件库将作为设备特定的驱动程序来实现相关请求,通过模拟硬件完成用户的请求。云芯一号中的软件库类似一个容灾模块,在硬件设备和运行软件方面,为其部署的运行环境提供最大限度的服务保障。
2 OpenStack平台中的对象存储—Swift组件
2010年Rackspace公司开发的高可用分布式对象存储(Object-Storage)服务—Swift项目被共享给了OpenStack开源社区,并在同年成为OpenStack的核心子项目之一,其主要作用是为OpenStack平台中的计算组件Nova提供虚拟机镜像的对象存储服务。Swift的搭建无任何硬件环境的限制,可以直接搭建在较便宜的基础硬件设施之上,对于磁盘冗余阵列的要求不高,即使无RAID架构也可以提供相关服务。同时Swift在软件层面引入了一致性散列技术和数据冗余性技术,通过牺牲一定程度的存储数据一致性来达到云平台的高可用性和可伸缩一致性。另外Swift还支持OpenStack上的多租户模式,支持容器和对象的读写操作,适合解决互联网中各类应用场景的非结构化数据存储问题。OpenStack平台中的Swift 组件具体包括9个模块,分别为代理服务(Proxy Server)、认证服务(Authentication Server)、缓存服务(Cache Server)、账户服务(Account Server)、容器服务(Container Server)、对象服务(Object Server)、复制服务(Replicator)、更新服务(Updater)、审计服务(Auditor)、账户清理服务(Account Reaper)。
Swift具体架构如图3所示。
3 对象存储加速架构
基于开源云平台OpenStack中现有的对象存储架构,本文提出了基于云芯一号芯片的对象存储加速架构,对文件进入存储前进行硬件加速预处理,包括文件的硬件压缩和解压,从硬件层对文件的存储和读取进行全方面的加速处理,具体架构如图4所示。
从图中我们可以看出,在整个加速存储架构的上层,OpenStack平台通过硬件(比如F5)或者软件(比如HAProxy)负载均衡器将客户端的请求按照配置分配到无状态的Proxy Service。访问层(Proxy Server)负责向客户端提供REST API和无状态的WSGI服务,多个Proxy Server可以组成一个集群,将客户端的请求转发至某个对象存储节点上的Account,Container或Object。
在存储层(Capacity Tier),分配到存储节点进行存储的数据首先通过云芯一号芯片(Cloud Core V1.0)进行存储前压缩处理,之后通过该层的其他部分进行文件的分布式存储。
(1)Account Server提供Account操作的Rest API。
(2)Container Server提供Container操作的Rest API。
(3)Object Server 提供Object操作的Rest API。
(4)Consistency Servers提供包括Replicators,Updaters和Auditors等后天服务,用于保证Object的一致性。
4 实验对比
我们完成了基于云芯一号的对象存储加速架构的设计和实现,之后通过纯压缩测试对比实验和HDFS数据存储速度对比实验来验证所提出的加速存储架构的性能和优越性。
4.1 纯压缩测试
纯压缩测试是为了对比传统的基于CPU的各类HDFS软压缩特性和基于云芯一号芯片的硬件压缩能力。为此测试了一组随机大小(从最小数据(7.27 MB)到最大数据
(100 MB)),共88 132 MB的数据集的压缩速度,测试环境如下。
CPU:Intel? CoreTM i5-4590 CPU@3.30 GHz。
MEM:DDR3-1 333 MHz 64 GB。
结果如图5所示。
从图中可以看到,基于云芯一号硬件压缩的进程压缩速度约为1 508.7 MB/s(>1 500 MB/s)。与此同时,将该数据集在传统HDFS上的各类软压缩软件上进行了相同实验,得到的压缩性能对比见表1所列。
从表格中可以清楚地看出,基于硬件加速的云芯一号芯片在同样大小的原始文件上,无论是压缩速度、解压速度还是压缩后的文件大小都占据绝对优势。尤其是压缩速度和解压速度两个指标更是较普通的软件压缩高10倍。为了更直观地体现压缩速度的差异,将测试的随机大小文件集群的压缩速度进行了同一坐标对比,如图6所示。
4.2 存储速度对比测试
完成了云芯一号芯片的纯压缩解压测试后,我们将对比提出的对象存储加速方案和传统对象存储方案的存储效率。采用四组不同大小的数据集,分别为1 GB,10 GB,20 GB,50 GB,每组分别测试三次,取平均值,测试结果如图7
所示。
从图中可以看到不同大小的数据集存储速度,存储前通过云芯一号芯片加速后均体现出明显高效的存储效率,随着数据集的增大,存储时间的差异越来越大。可以预见,如果面对大额存储数据时,云芯一号芯片的加入会极大地缩短数据存储到Swift Storage Node中的时间,为后期的数据挖掘、分析等节约大量时间。
另外,为了更直观地体现压缩速度的对比,我们将测试的随机大小文件集群的压缩速度进行了同一坐标对比,如图7
所示。从图7中直观地看出,基于硬件加速的云芯一号芯片的压缩速度平均约为1 500 MB/s,而其他软件压缩文件速度几乎平均在50以内。
5 结 语
本文着力于传统OpenStack云平台中对象存储的存储效率和性能,在从存储空间以及存储调度上进行优化外,也思考从数据处理的平台架构和依托的硬件环境进行创新。因此,我们提出了基于云芯一号硬件加速卡的对象存储加速方案,在传统的OpenStack Swift Storage Node上进行硬件扩充和优化,对存储数据进入节点前进行压缩预处理。通过不同环境的实验结果对比,得出无论是在纯文件压缩上还是与传统OpenStack平台对象存储节点中数据的存储速度上,我们提出的方案均远远优于传统的存储方式,为后续工作带来更好的创新方向和架构支撑。
注:本文通讯作者为王界兵。
参 考 文 献
[1]贾向东,颉满刚,周猛.基于带内回程的全双工大规模MIMO异构网覆盖分析[J]. 计算机工程,2017,43(7):124-128.
[2]尤肖虎,潘志文,高西奇,等.5G移动通信发展趋势与若干关键技术[J].中国科学(信息科学),2014 (5):551-563.
[3] ANDREWS J G. Seven ways that Het-Nets are a cell ular paradigm shift [J]. IEEE communications magazine,2013,51(3):136-144.
[4] ZHENG Y,SUN S,RONG B,et al. Traffic aware power allocation and frequency reuse for green LTE-A heterogeneous networks [C]// Proceedings of IEEE International Conference on Communications. Washington C USA:IEEE Press,2015:3167-3172.
[5] MAHMUD A,HAMDI KA. A unified framework for the analysis of fractional frequency reuse techniques [J]. IEEE Transactions on Communications,2014,62 (10):3692-3705.
[6] NOVLANTD,GANTI R K,GHOSH A,et al. Analytical evaluation of fractional frequency reuse for heterogeneous cellular networks [J]. IEEE transactions on communications,2012,60(7):2029-2039.
[7] MOLTCHANOV D. Distance distributions in random networks [J]. Ad hoc networks,2012,10(6):1146-1166.
[8]張子凡.OpenStack部署实践[M].北京:人民邮电出版社,2014.
[9]汪楠.基于OpenStack云平台的计算资源动态调度及管理[M].大连:大连理工大学,2013.
[10]陈康,郑纬民.云计算:系统实例与研究现状[J].软件学报,2009(5):1337-1348.