基于对象存储的负载均衡存储策略
2012-07-27熊安萍刘进进
熊安萍,刘进进,邹 洋
(重庆邮电大学 计算机科学与技术学院,重庆400065)
0 引 言
近年来,随着处理器和网络等基础设备性能取得飞速发展,高性能并行技术的应用领域由石油勘探、气象预测、科学研究等计算密集型领域扩展到国际金融、电信业务等数据密集型领域。需要处理的数据量极大增长的同时,对海量存储系统的性能也提出了巨大挑战。
基于对象存储是一种高性能、为解决海量数据存储而设计的分布式并行存储技术。基于对象存储体系结构由客户端(简称Client)、元数据服务器(MDS)、对象存储服务器(OST)(也称“存储节点”)3部分构成。将数据通路(读和写)和控制通路(元数据)分离的策略,每个对象存储设备智能地管理自身设备上的数据对象分布,对象存储体系结构很好地实现了在元数据和文件数据之间的并行性、文件数据在对象存储设备上的并行性,提高了系统I/O性能。在大文件并行存储的同时,需要分配各种计算机资源,并且存储节点性能的差异,作业到达的随机性,都会导致系统各节点负载和存储空间的动态变化,为了适应这种无序变化,文件在对象存储设备上如何均衡、高效存储,进而提高系统I/O性能,成为学术界研究的热点。
本文分析了对象存储技术现有文件存储策略与机制的优缺点,针对对象存储体系结构的特性、数据并行存储的特点提出了一种负载均衡存储策略,综合考虑了影响系统存储性能的因素,并在现有对象存储文件系统中设计和实现了该存储策略。实验表明,该策略在现有异构存储集群环境下,能一定程度上避免因部分节点过载的再次分配,同时,保证了数据的均衡、高效存储,提高了系统整体读写性能。相比现有存储策略,本文的存储负载策略具有更加广泛的适用性。
1 现有文件存储策略
目前对象存储技术普遍采用以下两种策略将文件数据分配到不同的存储节点。
第一种策略是顺序分配方式,也称为轮询放置策略。元数据服务器按照某种规则将存储节点顺序编号,选择有效的存储节点,将文件数据划分成一定大小的数据片轮询放置到各个存储节点上。
第二种策略是哈希分配方式,也称为随机分配策略。该策略利用哈希函数确定文件的存储节点。
以上策略均为静态分配策略,没有考虑各个对象存储设备本身负载的实时变化,具体存在以下3个方面的问题:
(1)默认了存储环境是同构的,但是对象存储系统往往构建在异构集群环境下。在集群环境下,随机分配I/O任务时,所有集群节点接受任务的概率相等,在异构环境下,性能较差节点处理任务的能力相对较弱,在任务量一定的情况下,就会出现性能较差节点任务满载或者超载,性能较好节点相对空闲,影响客户端响应时间,系统资源得不到充分利用。
(2)未考虑所选存储节点的I/O负载,假设轮询或者HASH的方式选择了一个正在进行大量I/O处理的超载节点,则会大大影响客户端响应时间。
(3)未考虑所选节点的存储空间负载的变化。存储节点通过删除、创建、修改等操作,会出现文件数据不均衡的分布在各存储节点中,部分节点存储空间占用率高,部分节点存储空间占用率低。而静态分配方式,仍然会选择存储空间满载的节点,造成分配失败,导致数据的迁移或者重新分配,增加系统开销。
总之,当前的数据分配策略没有综合考虑对象存储设备的空间、I/O等负载的实时变化,会导致整个存储系统性能下降。
2 基于对象存储的负载均衡存储策略
本文基于对象存储的负载均衡存储策略基本思想综合考虑了存储对象节点的动态负载,包括存储空间、I/O负载。由元数据服务器全局地维护对象存储节点存储空间等负载信息。客户端以2.1节理论为基础,决定存储的节点集合,客户端从元数据服务器获取该集合中各存储节点负载信息,选择剩余空间最大且I/O负载较小的存储节点进行文件存储。
2.1 存储节点数
对象存储体系结构中的数据分配机制,使得一个完整的数据文件分布存储在多个存储设备上,一个客户端可以同时访问一个文件的多个部分,同样,多个客户端可以同时访问一个文件的不同部分,提高了系统的整体并行性[3]。但是建立连接的系统开销对系统整体性能有负面影响,首先,数据同步和文件片段重新拼装也将花费不少CPU时间;其次,一个客户端与多个OST交互增加了协议处理开销[4]。基于此,文献[2]提出了柔性对象分布策略,从理论上分析了文件分割与网络传输时延的关系,数据文件应该被分割的对象数
式中:Tp——数据文件并行传输的时间开销;T——数据文件串行传输的时间开销;n——数据文件被划分的对象数;a——在客户端划分数据、建立连接等的开销因子;b——数据传输时间,b=数据大小/网络带宽;c—— 一个常数,表示数据校验、身份认证等额外时间开销。
该公式的意义是:传输数据文件时,总时延为总开销因子与传输时间之和。并行传输时,需要建立连接、数据分片等时间开销是串行传输时的n倍,但是数据并行传输带宽是串行传输的n倍。Tp/T值越小,说明Tp相对于T而言值越小,并行传输的时延相对而言越短,性能相比而言越好。因此求出函数(2)的最小值就是节点n的最优解
考虑到实际应用中,有效的存储节点数不一定恰好满足该最优解,例如,可能会有存储节点因为各种故障而失效,为此,本文对存储对象节点数目的取值进行以下修正:
取分配节点数n的取值为:
其中:N为存储体系结构中有效存储节点个数。[x]表示不大于x的最大整数。
由此可见,当数据文件很小时,a值即在客户端建立连接等开销应该很小,不适合分片存储,因此对小文件而言,无需分片存储。
2.2 负载因素
对象存储负载涉及到CPU、内存、网络、I/O量、硬盘容量等。针对不同作业类型,选择能准确反映节点综合负载的负载因素,是设计调度策略时考虑的必要前提。
对象存储体系结构针对大数据文件采取分片存储及并行读写策略,存储节点的读写操作属于I/O类作业,需要进行频繁的磁盘读写,并且磁盘I/O读写速率与CPU及主存速率之间的差异容易导致I/O成为系统的瓶颈。对象存储体系环境中,读写操作都会涉及到批量数据的读写及其在网络中的传输,因此磁盘I/O量和网络带宽是影响系统性能的主要因素,而CPU在对象存储节点中主要完成操作流控制和地址转换功能,只需进行较少的计算。基于以上分析,本文选择存储节点的磁盘剩余空间及I/O负载作为主要负载因素。
2.3 基于对象存储的负载均衡存储策略
假定我们已经为某个文件确定了n个存储节点。设OST={OST0,OST1,OST2,…,OSTn-1}是该存储节点集合,S={S0,S1,S2,S3,…,Sn-1}是该存储节点剩余存储容量集合。A={A0,A1,A2,…,-An-1}是存储节点剩余空间所占总剩余空间比例。L={Load0,Load1,Load2,…,Loadn-1}表示存储节点的I/O负载量
式(3)表示存储节点剩余磁盘空间占总磁盘剩余空间的比例。
将所有存储节点存储空间虚拟为一个逻辑整体,每个存储节点可用空间是对象存储系统可用空间的一部分。存储节点剩余空间比例Ai是整体剩余空间的一部分,存储节点Ai越大,剩余空间相对其它节点可用空间而言越大。为了均衡利用存储空间资源、平衡存储空间负载,优先选择Ai大的存储节点
式(4)表示存储节点I/O负载量,其中 MEMi、IOi、Ni分别代表存储节点OSTi的内存负载、I/O量和网络负载。其中wi(i=1,2,3)表示对应负载因素在影响整个I/O负载情况的重要程度。其中
服务器性能犹如电压功率一样,也有自己的I/O负载额定值 MAX(i),定义ui=LOAD(i)/MAX(i)表示存储节点OSTi的I/O负载与负载额定值的比例即I/O负载参量。如果ui>1,说明系统I/O负载大于额定值,该存储节点的I/O负载处于超载状态;如果ui=1,说明存储节点I/O负载处于饱和状态;如果ui<1,说明存储节点I/O负载小于额定值,表示存储节点处于相对空闲状态。随着系统的运行,任何一个节点的I/O负载状态将在这3种状态中转换,当系统达到稳定平衡时,各节点应该处于I/O负载饱和状态或者接近饱和状态。
理论上I/O负载额定值是对系统性能的评估,但是可以在实际运行中根据实际情况动态调整该参数,满足当前系统运行需求,当某个时刻所有节点都满负荷了,此时可以适当的增大MAX(i)的值,可以尽可能多的接纳用户的任务量,当系统整体负载较轻时,可以适当降低MAX(i),此时更多节点趋于饱和平衡状态。动态调整这个参数,动态调整系统运行的状态,系统运行状态随着系统的运行情况而动态变化,不断满足用户需求,实现了应对系统I/O负载的弹性化处理机制,尽量提高系统的吞吐率。
3 基于对象存储的负载均衡存储策略实现
基于以上对对象存储体系中文件存储策略和异构系统负载特征的研究和分析,结合基于对象存储系统的特征和负载性质,设计并实现了一种基于对象存储的负载均衡存储策略,该实现模块结构如图1所示。
图1 实现模块结构
3.1 模块设计
对象存储体系结构中,负载信息的采集和存储由元数据服务器全局维护,各个对象存储节点智能的管理和维护自身负载信息,并且实时的向元数据服务器反馈,客户端依据这些信息决策所选存储节点集合,符合软件设计的模块化原则,均衡了处理逻辑的任务分布。整个数据分配流程更加合理、灵活、高效。
(1)剩余空间信息链表:存储空间负载监控模块发现当前存储节点剩余空间变化较大时,主动通知元数据服务器MDS并且捎带最新的剩余空间信息,MDS相应的存储空间负载监控模块收到消息后,触发负载信息处理模块更新该链表信息,将链表节点信息按照存储节点剩余空间比例从大到小排序。与传统的主动接受信息相比,该方法节约了网络带宽,保证了存储空间信息的实时性。
(2)I/O负载信息数组:MDS的I/O负载收集模块周期性的向各存储节点发送I/O负载信息请求,存储节点的I/O负载监控模块将最新的负载信息反馈给 MDS,触发MDS运行负载信息处理模块更新各节点负载信息。
(3)当某个节点失效或者添加节点时,触发MDS负载信息管理模块将在剩余空间信息和负载信息从链表和数组中删除或者增加相应节点,并且这种操作对客户端完全透明,实现了数据存储的可扩展性。
(4)元数据服务器将存储空间信息和负载信息分别维护,提高了系统的灵活性和信息的可靠性。
3.2 实现算法描述
其基本思想是:基于本文2.1节理论,决定数据文件的分割粒度,选择剩余空间最大且负载较轻节点,将数据文件按照给定的放置算法放置到选定的存储节点上。
输入:SIZE数据文件大小;B网络带宽;N有效存储节点个数;
输出:选择存储节点集合Q;
步骤1 从MDS获取各个有效节点剩余空间信息链表和负载信息数组;
步骤2 如果SIZE小于数据块两倍,选择存储节点数设为1,跳转至步骤6;否则,从步骤3开始
步骤3 计算数据传输时间b=SIZE/B;
步骤5 依据N与n的大小,决定所选存储节点个数M;
步骤6 遍历存储节点剩余空间链表,基于存储节点索引值从负载信息数组中取出负载参量值,判断其是否小于1,如果小于1,将存储节点索引号加入集合Q中,否则继续遍历,直到集合大小为M,算法结束。客户端与所选存储节点进行数据分配存储。
3.3 算法实现
算法实现所需的核心数据结构:
存储节点剩余可用空间数据结构,由各对象存储节点维护:
存储节点剩余可用空间数据结构,元数据服务器节点维护:
算法所需要的部分函数和链表:
Dist_info_linklist链表:用于存放有效存储节点存储容量信息,MDS服务器按照剩余空间比例字段从大到小排序。
Load_info信息表:用于存放有效存储节点I/O负载相关信息。
Get_ratio(idx):从I/O负载信息数组中得到索引号为idx的存储节点相应I/O负载参量。
Add_To_Set(idx,Q):将索引号为idx的存储节点添加到节点所选集合Q中。
M:选择存储节点数。
STRIPE_SIZE:两倍的数据块大小。
客户端负载均衡存储策略伪代码如下所示:
输入:数据文件大小SIZE,网络带宽B,有效存储节点个数N。
算法输出:选择的存储节点集合OST_SET={},初始化为空,集合个数为count,初始化为0
算法开始:
4 实验及结果分析
测试平台搭建1个MDS服务器,10个OST服务器,6个客户端,在对象存储文件系统Lustre1.4.7版本上实现负载均衡存储策略,使用IOzone作为文件系统读写性能测试工具。
比较现有数据分配算法(TDAA)与本文基于对象存储的负载均衡算法(OBSLBA),设置数据块大小固定值为256K,3个客户端测试大小为64M、128M、256M、1024M、2048M的数据文件的写性能,在测试过程中,通过不断的删除、创建、修改文件、播放视频等操作模拟系统资源的无序动态变化,最后求其平均值。
实验结果如图2所示,本文的负载均衡存储算法的写性能比传统的数据分配算法写性能要好,系统写的数据文件越大,两者性能差异越大。主要原因是现有数据分配算法没有充分考虑系统存储资源和系统I/O负载的动态变化,导致数据不合理的分配,部分节点超载或者饱和仍然会收到大量的读写任务,影响系统的写性能,数据文件越大,系统资源需求越大,数据越不均衡的分配,导致系统整体性能越低,相比本文基于对象存储的负载均衡存储策略,差别就越明显。
图2 写性能比较
设置数据块大小为256K,分别采用1、2、4、6个客户端并发写2G的数据文件,在测试过程中,通过不断的删除、创建、修改文件、播放视频等操作模拟系统资源无序的动态变化进行测试。
实验结果如图3所示,随着客户端数量的增加,系统写性能下降,主要原因是客户端并发写时,对系统资源需求越大,系统负载将会越大,影响系统整体吞吐率。本文基于对象存储负载均衡算法灵活、方便的数据分配机制能均衡使用存储资源的同时,避免负载不均衡分配,尽量提高了系统的整体性能,并且客户端越多,相对现有数据分配算法而言,这种优越性越容易体现。
图3 不同客户端并发访问时写性能比较
由此可见,本文实现的基于对象存储的负载均衡存储策略能较好适应系统存储资源、负载的动态变化,客户端能够灵活选择合理的存储节点,保证对象存储系统写性能的高效性。
5 结束语
本文研究了基于对象存储技术的数据分配策略,重点分析了这类策略在系统动态变化时的不足,给出了灵活、简单、高效、并且能满足存储资源和I/O负载无规律变化环境的基于对象存储的负载均衡存储策略。实验结果表明,该策略能均衡使用系统的存储资源,能避免I/O负载超载节点的再次分配,提高了系统的吞吐量,保证了系统高效的读写性能,尤其是写性能。
[1]YU Zhanwu,ZHENG Sheng,LI Zhongmin,et ak.Massive spatial data storage and management based on object-based storage[J].Geomatics and Information Science of Wuhan University,2008,33(5):528-532(in Chinese).[喻占武,郑胜,李忠民,等.基于对象存储的海量空间数据存储与管理[J].武汉大学学报:信息科学版,2008,33(5):528-532.]
[2]WANG Fang,ZHANG Shunda,FENG Dan,et al.Hybrid object allocation policy for object storage systems[J].J Huazhong Univ of Sci &Tech:Nature Science Edition,2007,35(3):46-48(in Chinese).[王芳,张顺达,冯丹,等.对象存储系统中的柔性对象分布策略[J].华中科技大学学报:自然科学版,2007,35(3):46-48.]
[3]Yu Weikuan,Jeffrey Vetter,Shane Canon R,et al.Exploiting lustre file joining for effective collective IO[C].Rio De Janeiro,Brazil:Seventh IEEE International Symposium on Cluster Computing and the Grid.American:IEEE Computer Society,2007:267-274.
[4]Jeremy Logan,Phillip Dickens.Towards an understanding of the performance of MPI-IO in lustre file systems[C].Tsukuba:International Conference on Cluster Computing.American:IEEE,2008:330-335.
[5]Sumit Narayan,John A Chandy.Parity redundancy in a clustered storage system[C].San Diego,CA:Fourth International Workshop on Storage Network Architecture and Parallel I/Os.American:IEEE Computer Society,2008:17-24.
[6]LING Yun,ZHOU Huafeng.Researches on dynamic Loadbalancing technique for heterogeneous cluster system[J].Computer Engineering and Design,2008,29(12):3068-3070(in Chinese).[凌云,周华锋.面向异构集群系统的动态负载均衡技术研究[J].计算机工程与设计,2008,29(12):3068-3070.]
[7]WANG Fang,LV Song,FENG Dan,et al.A general-purpose,intelligent RAID-based object storage device[G].Lecture Notes in Computer Science 2820:Proceedings of the Second international conference on Embedded Software and Systems,2005:747-756.
[8]Mesnier M,Ganger G,Riedel E.Object-based storage:Pushing more functionality into storage[J].Potentials,IEEE:2005,24(2):31-34.
[9] WEI Li,ZHOU Yuezhi,XIA Nan.Approach to allocate storage space dynamically in network storage system[J].Computer Engineering,2008,34(5):33-35(in Chinese).[韦理,周悦芝,夏楠.用于网络存储系统的存储空间动态分配方法[J].计算机工程,2008,34(5):33-35.]
[10]ZHAO Tiezhu,Verdi March,Dong Shoubin,et al.Evaluation of a performance model of lustre file system[C].Guangzhou,Guangdong China:The Fifth Annual ChinaGrid Conference.A-merican:IEEE Computer Society,2010:191-196.
[11]ZHAO Tiezhu,HU Jinlong.Performance evaluation of parallel file system based on lustre and grey theory[C].Nanjang,Jiangsu,China:Ninth International Conference on Grid and Cloud Computing.American:IEEE Computer Society,2010:118-123.
[12]LING Bo,WANG Xiaoyu,ZHOU Aoying,et al.A collaborative web caching system based on Peer-to-Peer architecture[J].Chinese Journal of Computers,2005,28(2):170-178(in Chinese).[凌波,王晓宇,周傲英,等.一种基于Peerto-Peer技术的 Web缓存共享系统研究[J].计算机学报,2005,28(2):170-178.]
[13]Andrew S Tanenbaum,Maarten Van Steen.Distributed systems principles and paradigms[M].2nd ed,XIN Chunsheng,CHEN Zongbin,transl.Beijin:Tsinghua University Press,2008:358-360(in Chinese).[Andrew S Tanenbaum,Maarten Van Steen.分布式系统原理与范性[M].2版.辛春生,陈宗斌,译.北京:清华大学出版社,2008:358-360.]
[14]Ananth Rao,Karthik Lakshminarayanan,Sonesh Surana,et al.Load balancing in structured P2Psystems[G].Lecture Notes in Computer Science 2735:Ion Stoica in PeertoPeer Systems II,2003:68-79.
[15]WANG Fei,XI Hongsheng,YANG Jian.Optimized fileblocking storage scheme in clustered VoD system[J].Computer Engineering,2008,34(21):213-215(in Chinese).[王飞,奚宏生,杨坚.集中式VoD系统中文件分块存储策略[J].计算机工程,2008,34(21):213-215.]