迁移对象的方法和系统的制作方法
【专利摘要】本发明提供了一种迁移对象的方法和系统,该方法包括以下步骤:统计多个对象存储设备OSD的负载,元数据服务器MDS定期查询多个OSD的负载信息;通过MDS分析多个OSD的负载并进行排序,选出负载较大的第一多个OSD和负载较小的第二多个OSD;以及将第一多个OSD上的部分对象迁移至第二多个OSD上。本发明能够实现对象的动态迁移,从而使得服务器的负载均衡,提高了服务器系统的整体服务能力,即使在访问集中的情况下,也能够使系统的服务能力保持较好的状态,有效降低了客户端的平均等待时间,提高了用户体验。
【专利说明】迁移对象的方法和系统【技术领域】
[0001]本发明涉及计算机领域,并且特别地,涉及一种迁移对象的方法和系统。
【背景技术】
[0002]在大规模的存储系统中,操作的文件往往具有局部性,当访问集中在某些对象存储设备OSD上时,会造成系统的服务能力快速下降,因此,在分布式系统中,需要动态平衡各个OSD的负载,提高系统的整体服务能力。
[0003]针对相关技术中分布式系统中负载分布不均,当访问集中时,系统的服务能力大大降低的问题,目前尚未提出有效的解决方案。
【发明内容】
[0004]为解决负载分配不均的问题,本发明提供了一种迁移对象的方法,包括以下步骤:统计多个对象存储设备OSD的负载,元数据服务器MDS定期查询多个OSD的负载信息;通过MDS分析多个OSD的负载并进行排序,选出负载较大的第一多个OSD和负载较小的第二多个OSD ;以及将第一多个OSD上的部分对象迁移至第二多个OSD上。
[0005]其中,对象为固定大小。
[0006]其中,对象的元数据存放在MDS上,对象存储在多个OSD上。
[0007]其中,定期更新MDS上对象的操作时间。
[0008]其中,当对象位于第一多个OSD内,且当操作时间位于预定范围内时,将对象加入到迁移列表中。
[0009]其中,元数据包括对象的位置信息,客户端通过在MDS中查询对象的位置信息而对相应OSD中的对象进行操作,并定期更新MDS上对象的操作时间。
[0010]其中,多个OSD对各自的网络负载、磁盘负载、和内存负载进行加权平均后计算出多个对象存储设备OSD的负载,供MDS定期查询。
[0011]此外,还提供了一种迁移对象的系统,包括:统计模块,用于统计多个对象存储设备OSD的负载,以使元数据服务器MDS定期查询多个OSD的负载信息;排序模块,用于通过MDS分析多个OSD的负载并进行排序,选出负载较大的第一多个OSD和负载较小的第二多个OSD ;以及迁移模块,用于将第一多个OSD上的部分对象迁移至第二多个OSD上。
[0012]其中,对象为固定大小。
[0013]其中,对象的元数据存放在MDS上,对象存储在多个OSD上。
[0014]本发明通过元数据服务器MDS分析多个OSD的负载并进行排序,并将负载较大的多个OSD上的部分对象迁移至负载较小的多个OSD上,能够使服务器负载均衡,提高系统的整体服务能力。
【专利附图】
【附图说明】
[0015]当结合附图进行阅读时,根据下面详细的描述可以更好地理解本发明。应该强调的是,根据工业中的标准实践,各种部件没有被按比例绘制。实际上,为了清楚的讨论,各种部件的尺寸可以被任意增加或减少
[0016]图1示出了根据本发明的示例性实施例的迁移对象的方法流程图;以及
[0017]图2示出了根据本发明的示例性实施例的迁移对象的系统框图;
[0018]图3示出了根据本发明的一个示例性实施例的迁移对象的方法流程图;
[0019]图4示出了根据本发明的一个示例性实施例的迁移对象的方法实现过程中对象的访问过程流程图;
[0020]图5示出了根据本发明的一个示例性实施例的迁移对象的方法实现过程中获取迁移对象的过程流程图;
[0021]图6示出了根据本发明的一个示例性实施例的迁移对象的方法实现过程中OSD上对象的迁移过程流程图。
【具体实施方式】
[0022]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0023]根据本发明的实施例,提供了 一种迁移对象的方法。
[0024]如图1所示,该方法包括以下步骤:
[0025]步骤SlOl,统计多个对象存储设备OSD的负载,元数据服务器MDS定期查询多个OSD的负载信息;
[0026]步骤S103,通过MDS分析多个OSD的负载并进行排序,选出负载较大的第一多个OSD和负载较小的第二多个OSD ;以及
[0027]步骤S105,将第一多个OSD上的部分对象迁移至第二多个OSD上。
[0028]其中,对象为固定大小。
[0029]并且,对象的元数据存放在MDS上,对象存储在多个OSD上。
[0030]此外,定期更新MDS上对象的操作时间。
[0031]并且,当对象位于第一多个OSD内,且当操作时间位于预定范围内时,将对象加入到迁移列表中。
[0032]其中,元数据包括对象的位置信息,客户端通过在MDS中查询对象的位置信息而对相应OSD中的对象进行操作,并定期更新MDS上对象的操作时间。
[0033]并且,多个OSD对各自的网络负载、磁盘负载、和内存负载进行加权平均后计算出多个对象存储设备OSD的负载,供MDS定期查询。
[0034]根据本发明的实施例,还提供了 一种迁移对象的系统。
[0035]如图2所示,该系统包括:
[0036]统计模块21,用于统计多个对象存储设备OSD的负载,以使元数据服务器MDS定期查询多个OSD的负载信息;
[0037]排序模块22,用于通过MDS分析多个OSD的负载并进行排序,选出负载较大的第一多个OSD和负载较小的第二多个OSD ;以及[0038]迁移模块23,用于将第一多个OSD上的部分对象迁移至第二多个OSD上。
[0039]其中,对象为固定大小。
[0040]并且,对象的元数据存放在MDS上,对象存储在多个OSD上。
[0041]例如,如图3所示,在一个实施例中,本发明的技术方案是这样实现的:
[0042]步骤S301,采用固定大小的对象存储文件;
[0043]步骤S303,文件的原数据存放在MDS上,对象存储在OSD上;
[0044]步骤S305,客户端操作对象时,定期更新MDS上文件的操作时间optime ;
[0045]步骤S307,OSD统计自身的负载,MDS定期查询各个OSD的负载信息;
[0046]步骤S309,MDS分析OSD的负载,在一定周期内,选出负载较大的N个0SD,和负载较小的M个0SD,通过指定的策略,将负载较大的OSD上的一部分对象迁移到负载较小的OSD 上。
[0047]整个方案的实现包括以下几个过程:
[0048]外部数据交互过程:用户通过客户端与系统进行数据读写,客户端提供通用文件系统接口,用户使用时与本地文件系统没有区别。
[0049]内部数据交互过程:
[0050]1.客户端向MDS获取对象的存储信息,向OSD发起操作请求;
[0051]2.0SD响应客户端的请求,客户端定期更新MDS上对象的操作时间optime。
[0052]OSD根据自身的网络负载、磁盘负载和内存负载,加权平均后计算出总体的负载,供MDS定期查询。MDS定期查询OSD上的负载,并进行记录,达到预设的周期时,根据记录,得出周期内各OSD的平均负载,并进行排序,得出前N个负载较大的OSD和后M个负载较轻的0SD,触发数据的迁移,使得各个OSD的负载均衡。
[0053]对象操作过程:
[0054]1.客户端访问文件时,向MDS获取文件的对象信息,得到需要访问的对象和对象所在的OSD ;
[0055]2.向OSD发起操作;
[0056]3.0SD处理客户端的操作,并应答客户端;
[0057]4.客户端检查更新周期,如果超过阈值,则主动更新MDS上文件的optime。
[0058]MDS周期统计OSD负载和触发对象迁移:
[0059]MDS周期向OSD查询负载信息,并将负载值记录到文件中,当周期次数达到一定阈值时,进行负载的汇总,选择出负载较大的N个OSD和负载较轻的M个0SD,触发数据迁移处理,待迁移处理完成后,进行下一轮的统计。
[0060]对象的迁移过程:
[0061]从负载较重的OSD上,查询每个对象的optime,选择最近访问的一批对象,在负载较轻的OSD上未对象选择目标磁盘,通知0SD,进行数据迁移,OSD设置对象的迁移标志,进行数据的拷贝操作,在迁移的过程中,有对象修改操作时,暂停对象的拷贝,根据修改的位置进行处理:仅修改未拷贝到的位置,则指修改本地,否则需要修改本地和远端。
[0062]如图4所示,对象的访问过程如下:
[0063]1.客户端首先从MDS上获取对象所在的OSD ;
[0064]2.向OSD发起对象的操作;[0065]3.客户端定期更新MDS上对象的optime。
[0066]如图5所示,获取待迁移对象的过程如下:
[0067]1.MDS定期查询OSD的负载信息,在指定的时机触发迁移过程;
[0068]2.选择负载较重的OSD ;
[0069]3.将OSD上的部分最近访问的对象选出来;
[0070]4.通知0SD,将对象从负载较重的OSD迁移到负载较轻的OSD上。
[0071]如图6所示,OSD上对象的迁移过程如下:
[0072]1.先将对象设置成迁移中标志,并等待当前的修改操作完成;
[0073]2.在目标设备上创建新对象;
[0074]3.向新对象拷贝数据,直到完成;
[0075]4.通知MDS,迁移完成;
[0076]5.在原对象上设置迁移完成标志,并将长度截断成O。
[0077]综上所述,借助于本发明的上述技术方案,通过元数据服务器MDS分析多个OSD的负载并进行排序,并将负载较大的多个OSD上的部分对象迁移至负载较小的多个OSD上,能够实现对象的动态迁移,从而使得服务器的负载均衡,提高了服务器系统的整体服务能力,即使在访问集中的情况下,也能够使系统的服务能力保持较好的状态,有效降低了客户端的平均等待时间,提高了用户体验。
[0078]上面论述了若干实施例的部件,使得本领域普通技术人员可以更好地理解本发明的各个方面。本领域普通技术人员应该理解,可以很容易地使用本发明作为基础来设计或更改其他用于达到与这里所介绍实施例相同的目的和/或实现相同优点的处理和结构。本领域普通技术人员也应该意识到,这种等效构造并不背离本发明的精神和范围,并且在不背离本发明的精神和范围的情况下,可以进行多种变化、替换以及改变。
【权利要求】
1.一种迁移对象的方法,其特征在于,包括以下步骤: 统计多个对象存储设备OSD的负载,元数据服务器MDS定期查询所述多个OSD的负载信息; 通过所述MDS分析所述多个OSD的负载并进行排序,选出负载较大的第一多个OSD和负载较小的第二多个OSD ;以及 将所述第一多个OSD上的部分对象迁移至所述第二多个OSD上。
2.根据权利要求1所述的方法,其特征在于,所述对象为固定大小。
3.根据权利要求1所述的方法,其特征在于,所述对象的元数据存放在所述MDS上,所述对象存储在所述多个OSD上。
4.根据权利要求1所述的方法,其特征在于,定期更新所述MDS上所述对象的操作时间。
5.根据权利要求4所述的方法,其特征在于,当所述对象位于所述第一多个OSD内,且当所述操作时间位于预定范围内时,将所述对象加入到迁移列表中。
6.根据权利要求3所述的方法,其特征在于,所述元数据包括所述对象的位置信息,所述客户端通过在所述MDS中查询所述对象的位置信息而对相应OSD中的所述对象进行操作,并定期更新所述MDS上所述对象的操作时间。
7.根据权利要求1所述的方法,其特征在于,所述多个OSD对各自的网络负载、磁盘负载、和内存负载进行加权平均后计算出所述多个对象存储设备OSD的负载,供所述MDS定期查询。
8.一种迁移对象的系统,其特征在于,包括: 统计模块,用于统计多个对象存储设备OSD的负载,以使元数据服务器MDS定期查询所述多个OSD的负载信息; 排序模块,用于通过所述MDS分析所述多个OSD的负载并进行排序,选出负载较大的第一多个OSD和负载较小的第二多个OSD ;以及 迁移模块,用于将所述第一多个OSD上的部分对象迁移至所述第二多个OSD上。
9.根据权利要求8所述的系统,其特征在于,所述对象为固定大小。
10.根据权利要求8所述的系统,其特征在于,所述对象的元数据存放在所述MDS上,所述对象存储在所述多个OSD上。
【文档编号】G06F3/06GK103823639SQ201410056841
【公开日】2014年5月28日 申请日期:2014年2月19日 优先权日:2014年2月19日
【发明者】付根希, 姜国梁, 彭成, 杨浩, 苗艳超 申请人:曙光信息产业(北京)有限公司