CN108509275B - 一种目录迁移方法和元数据负载均衡方法 - Google Patents
一种目录迁移方法和元数据负载均衡方法 Download PDFInfo
- Publication number
- CN108509275B CN108509275B CN201810272978.1A CN201810272978A CN108509275B CN 108509275 B CN108509275 B CN 108509275B CN 201810272978 A CN201810272978 A CN 201810272978A CN 108509275 B CN108509275 B CN 108509275B
- Authority
- CN
- China
- Prior art keywords
- subdirectory
- catalogue
- queue
- migrated
- file number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Abstract
本申请提供了一种目录迁移方法,包括:应用于分布式文件系统中元数据的目录迁移,其特征在于,该方法包括:获取待迁移目录包含的当前文件数;当所述待迁移目录包含的当前文件数大于设定阈值时,将所述待迁移目录划分为多个子目录,每一个所述子目录包括的当前文件数小于或等于所述设定阈值;将各个所述子目录向目标节点迁移,直到所述待迁移目录包含的当前文件数小于或等于所述设定阈值时,将所述待迁移目录迁移到所述目标节点。
Description
技术领域
本申请涉及通信技术领域,具体而言,涉及一种目录迁移方法和元数据负载均衡方法。
背景技术
Ceph作为一种分布式文件系统,通过将多台设备的资源组织起来,对外提供统一的、大容量、高性能和高可靠的文件服务,满足了大规模应用的要求。通常分布式文件系统大多都是将数据和元数据分开管理(数据流和控制流分离)来获得更高的性能和系统扩展性。因此,元数据管理模型至关重要,直接影响系统的性能、扩展性和可靠性。
Ceph的元数据管理方式主要分为两种集中存储分布式处理和分布式存储分布式处理。集中存储分布式处理是将元数据保存在共享的存储设备中,元数据与元数据服务器(Metadata Server,MDS)之间的对应关系是动态划分的,每个MDS负责缓存一部分元数据的目录子树,并处理相应的元数据请求操作,这样,在出现热点数据或MDS负载过高时可以很方便第进行目录子树的复制和迁移,易于扩展MDS和维持MDS的负载均衡,但是实现起来比较复杂;分布式存储分布式处理是按照静态子树划分或哈希方法将元数据分布到各MDS中,每个MDS负责处理存储在其上的元数据请求,元数据与MDS的对应关系一旦确定将不会发生改变,这种方式实现简单,但是,由于目录子树不是均衡增长,静态子树划分容易出现MDS负载不均衡,而哈希方法虽然可以使得元数据在各MDS分布均匀,但是在增加或减少MDS时,需要重新调整哈希函数。上述两种方式在进行元数据负载均衡时,会将负载过多的MDS中的大量数据迁走,而在数据迁移过程中,客户端无法访问元数据,导致客户端等待时间较长,同时,也严重影响Ceph的性能。
发明内容
有鉴于此,本申请的目的在于提供一种目录迁移方法和元数据负载均衡方法,用于解决现有技术中在进行MDS负载均衡时由于大量数据迁移导致的客户端等待时间过长的问题。
第一方面,本申请实施例提供了一种目录迁移方法,应用于分布式文件系统中元数据的目录迁移,该方法包括:
获取待迁移目录包含的当前文件数;
当所述待迁移目录的当前文件数小于或等于设定阈值时,直接将所述待迁移目录迁移至目标节点;
当所述待迁移目录包含的当前文件数大于设定阈值时,将所述待迁移目录划分为多个子目录,每一个所述子目录包括的当前文件数小于或等于所述设定阈值;
将各个所述子目录向目标节点迁移,直到所述待迁移目录包含的当前文件数小于或等于所述设定阈值时,将所述待迁移目录迁移到所述目标节点。
可选地,所述将各个所述子目录向目标节点迁移,直到所述待迁移目录包含的当前文件数小于或等于所述设定阈值时,将所述待迁移目录迁移到所述目标节点,包括:
当待迁移目录包含的当前文件数大于设定阈值时,依所述待迁移目录的各级子目录由高至低的级别顺序,逐级确定每个所述子目录包含的当前文件数是否小于或等于所述设定阈值;
分别对各个所述子目录进行分类处理,将包含的当前文件数小于或等于所述设定阈值的所述子目录划分到该所述子目录的父目录的待处理队列;
若与当前所述子目录属于同一父目录的同级各个所述子目录均被划分到该父目录的所述待处理队列后,以该父目录的所述待处理队列作为当前迁移队列,将所述当前迁移队列中的各个所述子目录向目标节点进行迁移处理,直到该父目录包含的当前文件数小于或等于所述设定阈值;
由当前所述子目录的该父目录向前递归进行分类处理和迁移处理,直到所述待迁移目录全部迁移至所述目标节点。
可选地,还包括:
若当前所述子目录包含的当前文件数大于所述设定阈值,且当前所述子目录无下级子目录而仅包含文件,或者,当前所述子目录包含下级子目录和与该下级子目录同级的文件,则对当前所述子目录进行目录分片,使目录分片得到的各逻辑子目录包含的当前文件数小于或等于所述设定阈值,使各所述逻辑子目录取代当前所述子目录。
可选地,所述逐级确定每一个所述子目录包含的当前文件数是否小于或等于所述设定阈值,包括:
若确定当前所述子目录包含的当前文件数大于所述设定阈值时,将所述当前所述子目录划分至父目录的待优化队列并向前递归处理,直到所述当前所述子目录属于同一父目录的同级各个所述子目录分别被划到该父目录的所述待优化队列或该父目录的所述待处理队列;
分别以该父目录的所述待优化队列的各个所述子目录的下级子目录作为当前所述子目录,确定当前所述子目录包含的当前文件数是否小于或等于所述设定阈值。
可选地,所述分别对各个所述子目录进行分类处理,将包含的当前文件数小于或等于所述设定阈值的所述子目录划分到该所述子目录的父目录的待处理队列,包括:
当确定当前所述子目录包含的当前文件数小于或等于所述设定阈值时,将当前所述子目录划分到该当前所述子目录的父目录的待处理队列;
向前递归进行分类处理,直到当前所述子目录的父目录的上一级目录的所述待优化队列为空。
可选地,所述将所述当前迁移队列中的各个所述子目录向目标节点进行迁移处理,直到该父目录包含的当前文件数小于或等于所述设定阈值,包括:
根据所述当前迁移队列中的各个所述子目录包含的当前文件数进行排序;
按包含的当前文件数由多至少的顺序,将所述当前迁移队列中的各个所述子目录依次向所述目标节点迁移,直到所述当前迁移队列中剩余的各个所述子目录包含的当前文件数小于或等于所述设定阈值。
第二方面,本申请实施例提供了一种元数据负载均衡方法,应用于分布式文件系统的各个节点的动态元数据管理,每个所述节点包括一个元数据服务器,所述方法包括:
当前所述节点确定自身负载超出所述分布式文件系统中全部所述节点的平均负载且持续设定时长时,由当前所述节点自身包括的各目录中确定至少一个所述目录作为待迁移目录;
当前所述节点选定自身之外的至少一个所述节点作为目标节点,采用如上所述的目录迁移方法将所述待迁移目录迁移至所述目标节点。
第三方面,本申请实施例提供了一种计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面,本申请实施例提供了一种计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本申请实施例提出的目录迁移方法,在确定待迁移目录包含的当前文件数小于或等于设定阈值,则直接迁移待迁移目录,在确定待迁移目录包含的当前文件数大于设定阈值后,将待迁移目录划分为多个子目录,使得每个子目录包含的当前文件数小于或等于设定阈值,进一步,将各个子目录向目标节点迁移。这样,在将待迁移目录划分为多个子目录后,根据待迁移目录的当前文件数对待迁移目录进行迁移过程中,每次迁移子目录包含数据量相对于直接迁移整个待迁移目录变少了,因此,减少了客户端访问正在迁移的子目录的等待时间,提高了用户的体验。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例涉及的分布式文件系统中MDS负载信息的示意图;
图2为本申请实施例涉及的分布式文件系统中MDS中目录迁移的示意图;
图3为本申请一实施例提供的一种目录迁移方法的流程示意图;
图4为本申请一实施例提供的另一种目录迁移方法的流程示意图
图5为本申请一实施例提供的一种待迁移目录的结构的示意图;
图6为本申请一实施例提供的又一种目录迁移方法的流程示意图;
图7为本谁请一实施例提供的一种目录迁移装置的结构示意图;
图8为本申请一实施例提供的一种计算机设备800的结构示意图;
图9为本申请一实施例提供的一种计算机设备900的结构示意图。
具体实施方式
对于分布式文件系统来说,各个MDS节点需要周期性保证自身负载均衡,即,各个MDS节点每隔10s进行一次心跳交互,心跳信息包含有各个MDS节点的负载信息(如,元数据热度),当MDS节点发现自身负载持续一段时间超过集群平均负载一定范围时,就需要发起子树迁移来均衡集群负载。
例如,如图1所示,当前存在有6个MDS节点的分布式文件系统,MDS节点分别为MDS0、MDS1、MDS2、MDS3、MDS4和MDS5,进行一次心跳交互后各个MDS节点均获取到其它MDS节点的负载信息,集群各个MDS负载信息,集群平均元数据热度(下称平均负载)为20000,因此,MDS2和MDS5节点会行负载均衡,MDS2和MDS5的负载均衡过程相同,以MDS2为例进行说明。
MDS2节点会根据获取到各个MDS节点的元数据热度,将负载高于平均负载的MDS节点分为一类,将上述节点作为迁出节点,将负载低于平均负载的MDS节点分为一类,将上述节点为迁入节点。
将平均负载作为目标,迁出节点的负载减去平均负载就是迁出节点需要迁出的负载值,平均负载减去迁入节点的负载就是迁入节点能够迁入的负载值,将迁出节点按照负载从大到小进行排列,迁入节点按照负载从小到大进行排列,依次匹配,确定MDS2需要迁往MDS3负载18000,迁往MDS1负载2000,选择合适负载大小的目录子树迁往目标节点。
在迁移目录子树时,参考图2,MDS2将需要迁移的目录分别迁往MDS3和MDS1。参考上述过程对MDS5中的目录进行迁移,完成最终的负载均衡。但是,在迁移过程中是以一条信息流的方式将整个目录树的元数据发送给目标节点,并且在迁移过程中冻结正在迁移的整个目录树,在此期间,若客户端需要访问正在迁移的目录树中的文件,且正在迁移的目录树中包含大量的文件,客户端需要等到整个目录树迁移完毕才可以访问,导致客户端等待时间比较长。
与上述技术不同,本申请实施例在确定待迁移目录包含的当前文件数小于或等于设定阈值,则直接迁移待迁移目录,在确定待迁移目录包含的当前文件数大于设定阈值后,将待迁移目录划分为多个子目录,使得每个子目录包含的当前文件数小于或等于设定阈值,进一步,将各个子目录向目标节点迁移。这样,在将待迁移目录划分为多个子目录后,根据待迁移目录的当前文件数对待迁移目录进行迁移过程中,每次迁移子目录包含数据量相对于直接迁移整个待迁移目录变少了,因此,减少了客户端访问正在迁移的子目录的等待时间,提高了用户的体验。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请做进一步详细的说明。
本申请实施例提供了一种目录迁移方法,如图3所示,应用于分布式文件系统中元数据的目录迁移,该方法包括以下步骤:
S301,获取待迁移目录包含的当前文件数;
这里,待迁移目录对应的当前文件数一般指待迁移目录当前包含的各级子目录的数目和各子目录包含的文件的数目的和值,如,若待迁移目录中未迁移任何子目录,则当前文件数为获取到待迁移目录时的文件数,若待迁移目录中存在子目录被迁移到了目标节点,则当前文件数为获取到待迁移目录时的文件数与迁移的子目录包含的文件数的差。
S302,当所述待迁移目录的当前文件数小于或等于设定阈值时,直接将所述待迁移目录迁移至目标节点;
这里,设定阈值一般是预先设置的,如,设定阈值可以为10000,在实际应用中可视实际情况确定;目标节点可以为分布式文件系统中除当前节点外的其它的节点,节点可以为分布式文件系统中的元数据服务器。
S303,当所述待迁移目录包含的当前文件数大于设定阈值时,将所述待迁移目录划分为多个子目录,每一个所述子目录包括的当前文件数小于或等于所述设定阈值;
S304,将各个所述子目录向目标节点迁移,直到所述待迁移目录包含的当前文件数小于或等于所述设定阈值时,将所述待迁移目录迁移到所述目标节点。
本申请实施例提供了另一种目录迁移方法,如图4所示,各个所述子目录向目标节点迁移,直到所述待迁移目录包含的当前文件数小于或等于所述设定阈值时,将所述待迁移目录迁移到所述目标节点,具体包括以下步骤:
S401,当待迁移目录包含的当前文件数大于设定阈值时,依所述待迁移目录的各级子目录由高至低的级别顺序,逐级确定每个所述子目录包含的当前文件数是否小于或等于所述设定阈值;
这里,待迁移目录中的根目录的级别顺序为高,从根目录向该根目录之后的每一级子目录的级别顺序依次降低。
在具体实施中,获取的待迁移目录的结构参考图5,Dir0包含的总文件的数目为37008个,当前文件数大于设定阈值,从Dir0向之后的每一级子目录,逐级确定每个子目录包含的文件的当前文件数。
若当前所述子目录包含的当前文件数大于所述设定阈值,且当前所述子目录无下级子目录而仅包含文件,或者,当前所述子目录包含下级子目录和与该下级子目录同级的文件,则对当前所述子目录进行目录分片,使目录分片得到的各逻辑子目录包含的当前文件数小于或等于所述设定阈值,使各所述逻辑子目录取代当前所述子目录。
这里,在进行目录分片过程时,不能对正在分片的目录执行目录迁移方法,需要等待目录分片完成再执行目录迁移方法,因此,在目录迁移方法执行之前对当前文件数大于设定阈值的子目录进行分片,这样,可以避免在迁移过程中目录分片导致的时间浪费。
在具体实施中,参考图5,Dir3包含有20000个文件(大于设定阈值),且Dir3没有下级子目录,根据Ceph默认的分片方法,如,3位分片法,将Dir3划分为8个逻辑子目录,逻辑子目录的名称从Dir3.000、Dir3.001、Dir3.010到Dir3.111,每个逻辑子目录作为当前的子目录,以便后续进行迁移处理。若Dir3中除了包含20000个文件外,还包含下级子目录Dir3-1和Dir3-2,其中,Dir3-1和Dir3-2均可以视作为文件,此时, Dir3包含有10002个文件(大于上述设定阈值),依然根据Ceph默认的分片方法进行分片,分片方法与上述方法相同,此处不再进行过多说明。
S402,分别对各个所述子目录进行分类处理,将包含的当前文件数小于或等于所述设定阈值的所述子目录划分到该所述子目录的父目录的待处理队列。
在执行步骤S402时,分别对各个所述子目录进行分类处理,将包含的当前文件数小于或等于所述设定阈值的所述子目录划分到该所述子目录的父目录的待处理队列,包括以下步骤:
当确定当前所述子目录包含的当前文件数小于或等于所述设定阈值时,将当前所述子目录划分到该当前所述子目录的父目录的待处理队列;
向前递归进行分类处理,直到当前所述子目录的父目录的上一级目录的所述待优化队列为空。
在具体实施中,在将当前子目录划分到该当前子目录的父目录的待处理队列后,返回该当前子目录的父目录的上一级目录,判断返回的上述目录的待优化队列是否为空,由于当前子目录可能存在同级的子目录,因此,判断上述目录的待优化队列可能不为空,此时,继续对上述目录的待优化队列中的子目录进行上述处理,也就是对当前子目录的属于同一父目录的同级子目录进行处理,即,判断同级子目录包含的当前文件数是否小于设定阈值,若确定同级子目录包含的当前文件数据小于设定阈值,将上述同级子目录划分到上述父目录的待优化队列中,返回该当前子目录的父目录的上一级目录,直到上一级目录的待优化队列为空。
在具体实施中,参考图5,当前子目录为Dir1_1_1,Dir1_1_1的父目录为Dir1_1,Dir1_1的父目录为Dir1,Dir1_1_1的同级子目录为Dir1_1_2,Dir1_1_1包含的当前文件数为8000,Dir1_1_2包含的当前文件数为3000,Dir1_1属于Dir1的待优化队列,在确定Dir1_1_1包含的当前文件数小于设定阈值,将Dir1_1_1划分到Dir1_1的待处理队列,返回判断Dir1的待优化队列是否为空,此时,Dir1的待优化队列中还包括Dir1_1中的Dir1_1_2,确定Dir1_1_2包含的当前文件数小于设定阈值,将Dir1_1_2划分到Dir1_1的待处理队列,返回判断Dir1的待优化队列是否为空,确定Dir1的待优化队列为空后,执行后续的迁移处理。
S403,当若与当前所述子目录属于同一父目录的同级各个所述子目录均被划分到该父目录的所述待处理队列后,以该父目录的所述待处理队列作为当前迁移队列,将所述当前迁移队列中的各个所述子目录向目标节点进行迁移处理,直到该父目录包含的当前文件数小于或等于所述设定阈值。
在确定与当前子目录属于同一父目录的同级各个子目录均被划分到该父目录的待处理队列后,将所述当前迁移队列中的各个所述子目录向目标节点进行迁移处理,直到该父目录包含的当前文件数小于或等于所述设定阈值,包括:
根据所述当前迁移队列中的各个所述子目录包含的当前文件数进行排序;
按包含的当前文件数由多至少的顺序,将所述当前迁移队列中的各个所述子目录依次向所述目标节点迁移,直到所述当前迁移队列中剩余的各个所述子目录包含的当前文件数小于或等于所述设定阈值。
在具体实施中,在当前子目录的父目录的待优化队列为空时,按照当前文件数据由多到少的顺序,对上述父目录的待处理队列中的子目录进行排序,首先,迁移排序最靠前的子目录,在迁移完上述子目录后,判断上述父目录的待处理队列包含的当前文件数是否小于设定阈值,若上述父目录的待处理队列包含的当前文件数大于设定阈值,则迁移当前排序最靠前的子目录,直到上述父目录的待处理队列包含的当前文件数小于设定阈值,停止迁移。
S404,由当前所述子目录的该父目录向前递归进行分类处理和迁移处理,直到所述待迁移目录全部迁移至所述目标节点。
这里,向前递归处理为目录级别由低到高进行递归处理。
如图6所示,本申请实施例提供了又一种目录迁移方法,该方法包括以下步骤:
S601,获取待迁移目录;
S602,判断待迁移目录包含的当前文件数是否小于或等于设定阈值,若是,则执行S603,若否则执行S604.
S603,直接将所述待迁移目录迁移至所述目标节点。
S604,分别对各个所述子目录进行分类处理,执行S605。
S605,判断当前子目录包含的当前文件数是否小于或等于设定阈值,若是则执行S606,若否则执行S607。
S606,将当前子目录划分到该当前子目录的父目录的待处理队列,以便执行后续的迁移操作。
S607,将当前子目录划分到该当前子目录的父目录的待处理队列,进一步执行S608。
S608,判断当前子目录属于同一父目录的同级各个子目录是否被划分到该父目录的待优化队列或待处理队列,若是,则执行S609,若否,则将当前子目录的属于同一父目录的任一同级子目录作为当前子目录执行S605。
S609,分别以当前子目录的父目录的待优化队列的各个子目录的下级子目录作为当前子目录,确定当前子目录包含的当前文件数是否小于或等于设定阈值。
这里,向前递归处理为由目录级别低向目录级别高进行递归处理。
每个子目录均包括待优化队列和待处理队列,待优化队列中的子目录包含的文件的当前文件数据大于设定阈值,需要进一步进行处理,待处理队列中的子目录包含的文件的当前文件数小于或等于设定阈值,则可以直接进行迁移处理。
在具体实施中,在确定当前子目录包含的当前文件数大于设定阈值后,将当前子目录划分至父目录的待优化队列,依次判断与当前子目录属于同一父目录的同级的各个子目录包含的当前文件数是否大于设定阈值,将大于设定阈值的子目录划分到该父目录的待优化队列,将小于设定阈值的子目录划分到该父目录的待处理队列。
将当前子目录的父目录的待优化队列的各个子目录的下级子目录作为当前子目录,执行上述操作,直到目录级别低于当前子目录的任一子目录的下一级子目录均被划分到上述任一子目录的待处理队列。
参考图5,若确定当前子目录为Dir1_1,与Dir1_1同级的子目录为Dir1_2,Dir1_1包含的当前文件数为11000,将Dir1_1划分到Dir1的待优化队列,Dir1_2包含的当前文件数为4000,将Dir1_2划分到Dir1的待处理队列,针对Dir1_1包括的下一级子目录进行分类处理,Dir1_1_1包含的当前文件数为8000,Dir1_1_2包含的当前文件数据为3000,将Dir1_1_1和Dir1_1_2划分到Dir1_1的待处理队列。
为了总体阐述本申请的目录迁移方法,参考图5,在一个实施例中,Dir0的目录包含文件数超过设定阈值(mds_mig_optimize_size),对Dir0的子目录Dir1、Dir2和Dir3进行分类,Dir1包含有15000个文件、Dir2包含有2000个文件、Dir3包含有10000个文件,该次分类结果如下表。其中,bigger队列为待优化队列,export为待处理队列。
目录 | bigger队列 | export队列 | 文件总数 | 已经迁移数量 |
Dir0 | Dir1,Dir3 | Dir2 | 37008 | 0 |
在确定Dir0的bigger队列中存在Dir1和Dir3后,针对Dir0的bigger队列的每个子目录进行优化处理,以对Dir1进行优化处理为例进行说明。
将Dir1的子目录Dir1_1包含有11000个文件、Dir1_2包含有4000个文件,对Dir1的子目录进行分类后的结果,如下表所示。
目录 | bigger队列 | export队列 | 文件总数 | 已经迁移数量 |
Dir0 | Dir1,Dir3 | Dir2 | 37008 | 0 |
Dir1 | Dir1_1 | Dir1_2 | 11002 | 0 |
随后,对Dir1的bigger队列中的Dir1_1进行优化处理,Dir1_1包含的子目录Dir1_1_1包含有8000个文件、Dir1_1_2包含有3000个文件,将Dir1_1_1、Dir1_1_2划分到export队列中,并将Dir1_1的export队列中的子目录按照文件数由大到小的顺序进行排序,依次是Dir1_1_1、Dir1_1_2,以便后续进行迁移处理,可参考下表。
目录 | bigger队列 | export队列 | 文件总数 | 已经迁移数量 |
Dir0 | Dir1,Dir3 | Dir2 | 37008 | 0 |
Dir1 | Dir1_1 | Dir1_2 | 15004 | 0 |
Dir1_1 | Dir1_1_1,Dir1_1_2 | 11002 | 0 |
在对Dir1_1进行迁移之前,确定Dir1_1中包含的当前文件数大于mds_mig_optimize_size,此时,将Dir1_1_1包含的8000个文件迁移到目标节点。在将Dir1_1_1迁移到目标节点后,判断Dir1_1中包含的当前文件是否大于上述mds_mig_optimize_size,此时,发现Dir1_1中剩余文件数已经小于mds_mig_optimize_size,返回处理Dir1。可参考下表。
目录 | bigger队列 | export队列 | 文件剩余 | 已经迁移数量 |
Dir0 | Dir1,Dir3 | Dir2 | 29007 | 8001 |
Dir1 | Dir1_1,Dir1_2 | 7003 | 8001 |
在返回Dir1后,首先,检测到Dir1的bigger队列为空,在Dir1的bigger队列为空后,判断Dir1的export队列包含的当前文件数是否小于mds_mig_optimize_size,在确定Dir1的export队列包含的当前文件数小于mds_mig_optimize_size后,返回Dir0进行处理,可参考下表。
目录 | bigger队列 | export队列 | 文件剩余 | 已经迁移数量 |
Dir0 | Dir3 | Dir2,Dir1 | 29007 | 8001 |
在返回Dir0后,检测Dir0的bigger队列是否包含子目录,在确定Dir0的bigger队列包含Dir3后,进一步,对Dir0的bigger队列中的Dir3目录进行分类处理。
由于Dir3包含的逻辑子目录为Dir3.000 ,Dir3.001,Dir3.010,Dir3.011,Dir3.100,Dir3.101,Dir3.110, Dir3.111,每个逻辑子目录包含的当前文件数均为2500,均小于mds_mig_optimize_size,因此,上述逻辑子目录划分到Dir3的export队列中,可参考下表。
目录 | bigger队列 | export队列 | 文件剩余 | 已经迁移数量 |
Dir0 | Dir3 | Dir2,Dir1 | 29007 | 8001 |
Dir3 | Dir3.000 … Dir3.111 | 20000 | 0 |
在将Dir3进行分类处理并确定Dir3的bigger队列为空后,对Dir3的export队列中的子目录按照当前文件数据由大到小的顺序进行排序。对Dir3的export队列进行迁移处理,在迁移完Dir3.000、Dir3.001、Dir3.010和Dir3.011后,判断Dir3的export队列的当前文件数是否等于mds_mig_optimize_size,可参考下表。
目录 | bigger队列 | export队列 | 文件剩余 | 已经迁移数量 |
Dir0 | Dir3 | Dir2,Dir1 | 19007 | 18001 |
Dir3 | Dir3.100,Dir3.101,Dir3.110,Dir3.111 | 10000 | 10000 |
在确定Dir3的export队列的当前文件数等于mds_mig_optimize_size后,返回Dir0进行处理,参考下表。
目录 | bigger队列 | export队列 | 文件剩余 | 已经迁移数量 |
Dir0 | Dir2,Dir1,Dir3 | 19007 | 18001 |
在对Dir0进行处理之前,判断Dir0的export队列的当前文件数是否小于mds_mig_optimize_size,在确定Dir0的export队列的当前文件数大于mds_mig_optimize_size后,此时,Dir0的export队列中包含Dir1、Dir2、Dir3,其中,Dir3包含的当前文件数为10000,Dir1包含的当前文件数为7003,Dir2包含的当前文件数为2001,对Dir0包含的子目录按照当前文件数由大到小的顺序进行排序,依次是Dir3(10000),Dir1(7003),Dir2(2001),迁移Dir3,可参考下表。
目录 | bigger队列 | export队列 | 文件剩余 | 已经迁移数量 |
Dir0 | Dir1,Dir2 | 9006 | 28002 |
在迁移完成后,判断Dir0的export队列包含的当前文件数是否小于mds_mig_optimize_size,在确定Dir0的export队列包含的当前文件数小于mds_mig_optimize_size后,直接将Dir0迁移到目标节点,迁移结束。
这样,在待迁移目录迁移过程中,若存在客户端需要访问Dir2中的文件,由上述处理流程来看,客户端只需要等待迁移Dir0中9006个文件的冻结时间,若直接迁移待迁移目录,客户端需要等待迁移待迁移目录中的37008个文件的等待时间,大大减少可客户端访问待迁移目录的阻塞时间。
本申请实施例提供了一种元数据负载均衡方法,应用于分布式文件系统的各个节点的动态元数据管理,每个所述节点包括一个元数据服务器,所述方法包括:
当前所述节点确定自身负载超出所述分布式文件系统中全部所述节点的平均负载且持续设定时长时,由当前所述节点自身包括的各目录中确定至少一个所述目录作为待迁移目录;
当前所述节点选定自身之外的至少一个所述节点作为目标节点,采用如上目录迁移方法将所述待迁移目录迁移至所述目标节点。
本申请提供了一种目录迁移装置,如图7所示,该装置包括:
获取模块71,用于获取待迁移目录包含的当前文件数;
划分模块72,用以当所述待迁移目录包含的当前文件数大于设定阈值时,将所述待迁移目录划分为多个子目录,每一个所述子目录包括的当前文件数小于或等于所述设定阈值;
迁移模块73,用于将各个所述子目录向目标节点迁移,直到所述待迁移目录包含的当前文件数小于或等于所述设定阈值时,将所述待迁移目录迁移到所述目标节点;以及当所述待迁移目录的当前文件数小于或等于所述设定阈值时,直接将所述待迁移目录迁移至所述目标节点。
可选地,所述迁移模块73包括:
第一处理模块731,用于当待迁移目录包含的当前文件数大于设定阈值时,依所述待迁移目录的各级子目录由高至低的级别顺序,逐级确定每个所述子目录包含的当前文件数是否小于或等于所述设定阈值;
第二处理模块732,用于分别对各个所述子目录进行分类处理,将包含的当前文件数小于或等于所述设定阈值的所述子目录划分到该所述子目录的父目录的待处理队列;
第三处理模块733,用于若与当前所述子目录属于同一父目录的同级各个所述子目录均被划分到该父目录的所述待处理队列后,以该父目录的所述待处理队列作为当前迁移队列,将所述当前迁移队列中的各个所述子目录向目标节点进行迁移处理,直到该父目录包含的当前文件数小于或等于所述设定阈值;
第四处理模块734,用于由当前所述子目录的该父目录向前递归进行分类处理和迁移处理,直到所述待迁移目录全部迁移至所述目标节点。
可选地,所述迁移模块73还包括:
第五处理模块735,用于若当前所述子目录包含的当前文件数大于所述设定阈值,且当前所述子目录无下级子目录而仅包含文件,或者,当前所述子目录包含下级子目录和与该下级子目录同级的文件,则对当前所述子目录进行目录分片,使目录分片得到的各逻辑子目录包含的当前文件数小于或等于所述设定阈值,使各所述逻辑子目录取代当前所述子目录。
可选地,所述第一处理模块731具体用于:
若确定当前所述子目录包含的当前文件数大于所述设定阈值时,将所述当前所述子目录划分至父目录的待优化队列并向前递归处理,直到所述当前所述子目录属于同一父目录的同级各个所述子目录分别被划到该父目录的所述待优化队列或该父目录的所述待处理队列;
分别以该父目录的所述待优化队列的各个所述子目录的下级子目录作为当前所述子目录,确定当前所述子目录包含的当前文件数是否小于或等于所述设定阈值。
可选地,所述第二处理模块732具体用于:
当确定当前所述子目录包含的当前文件数小于或等于所述设定阈值时,将当前所述子目录划分到该当前所述子目录的父目录的待处理队列;
向前递归进行分类处理,直到当前所述子目录的父目录的上一级目录的所述待优化队列为空。
可选地,所述第三处理模块733具体用于:
根据所述当前迁移队列中的各个所述子目录包含的当前文件数进行排序;
按包含的当前文件数由多至少的顺序,将所述当前迁移队列中的各个所述子目录依次向所述目标节点迁移,直到所述当前迁移队列中剩余的各个所述子目录包含的当前文件数小于或等于所述设定阈值。
本申请实施例还提供了一种节点,所述节点用于:
确定自身负载超出所述分布式文件系统中全部节点的平均负载且持续设定时长时,由所述节点自身包括的各目录中确定至少一个所述目录作为待迁移目录;
选定自身之外的至少一个节点作为目标节点,采用如上述目录迁移方法将所述待迁移目录迁移至所述目标节点。
如图8所示,本申请一实施例提供了一种计算机设备800,用于执行中目录迁移方法,该设备包括存储器801、处理器802及存储在该存储801上并可在该处理器802上运行的计算机程序,其中,上述处理器802执行上述计算机程序时实现上述目录迁移方法的步骤。
具体地,上述存储器801和处理器802能够为通用的存储器和处理器,这里不做具体限定,当处理器802运行存储器801存储的计算机程序时,能够执行上述目录迁移方法,用于解决现有技术中在进行MDS均衡时由于大量数据迁移导致的客户端等待时间过长的问题,在确定待迁移目录包含的当前文件数小于或等于设定阈值,则直接迁移待迁移目录,在确定待迁移目录包含的当前文件数大于设定阈值后,将待迁移目录划分为多个子目录,使得每个子目录包含的当前文件数小于或等于设定阈值,进一步,将各个子目录向目标节点迁移。这样,在将待迁移目录划分为多个子目录后,根据待迁移目录的当前文件数对待迁移目录进行迁移过程中,每次迁移子目录包含数据量相对于直接迁移整个待迁移目录变少了,因此,减少了客户端访问正在迁移的子目录的等待时间,提高了用户的体验。
如图9所示,本申请一实施例提供了一种计算机设备900,用于执行元数据负载均衡方法,该设备包括存储器901、处理器902及存储在该存储901上并可在该处理器902上运行的计算机程序,其中,上述处理器902执行上述计算机程序时实现上述元数据负载均衡方法的步骤。
具体地,上述存储器901和处理器902能够为通用的存储器和处理器,这里不做具体限定,当处理器902运行存储器901存储的计算机程序时,能够执行上述元数据负载均衡方法,用于解决现有技术中在进行MDS均衡时由于大量数据迁移导致的客户端等待时间过长的问题,在确定待迁移目录包含的当前文件数小于或等于设定阈值,则直接迁移待迁移目录,在当前节点确定自身负载超出分布式文件系统中全部节点的平均负载且持续设定时长时,由当前节点自身包括的各目录中确定至少一个所述目录作为待迁移目录,从除当前节点外的其它节点中选定至少一个节点作为目标节点,采用目录迁移方法将待迁移目录迁移至目标节点。这样,在当前节点将待迁移目录划分为多个子目录后,根据待迁移目录的当前文件数对待迁移目录进行迁移过程中,每次迁移子目录包含数据量相对于直接迁移整个待迁移目录变少了,因此,减少了客户端访问正在迁移的子目录的等待时间,提高了用户的体验。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种目录迁移方法,应用于分布式文件系统中元数据的目录迁移,其特征在于,该方法包括:
获取待迁移目录包含的当前文件数;
当待迁移目录的当前文件数小于或等于设定阈值时,直接将所述待迁移目录迁移至目标节点;
当所述待迁移目录包含的当前文件数大于设定阈值时,将所述待迁移目录划分为多个子目录,各个所述子目录包括的当前文件数小于或等于所述设定阈值;
依待迁移目录的各级子目录由高至低的级别顺序,逐级确定各个所述子目录包含的当前文件数是否小于或等于所述设定阈值;
分别对各个所述子目录进行分类处理,将包含的当前文件数小于或等于所述设定阈值的所述子目录划分到所述子目录的父目录的待处理队列;
若与当前所述子目录属于同一父目录的同级各个所述子目录均被划分到该父目录的所述待处理队列后,以该父目录的所述待处理队列作为当前迁移队列,将所述当前迁移队列中的各个所述子目录向目标节点进行迁移处理,直到该父目录包含的当前文件数小于或等于所述设定阈值;
由当前所述子目录的该父目录向前递归进行分类处理和迁移处理,直到所述待迁移目录全部迁移至所述目标节点。
2.如权利要求1所述的方法,其特征在于,还包括:
若当前所述子目录包含的当前文件数大于所述设定阈值,且当前所述子目录无下级子目录而仅包含文件,或者,当前所述子目录包含下级子目录和与该下级子目录同级的文件,则对当前所述子目录进行目录分片,使目录分片得到的各逻辑子目录包含的当前文件数小于或等于所述设定阈值,使各所述逻辑子目录取代当前所述子目录。
3.如权利要求1或2任一项所述的方法,其特征在于,所述逐级确定各个所述子目录包含的当前文件数是否小于或等于所述设定阈值,包括:
若确定当前所述子目录包含的当前文件数大于所述设定阈值时,将当前所述子目录划分至父目录的待优化队列并向前递归处理,直到当前所述子目录属于同一父目录的同级各个所述子目录分别被划到该父目录的所述待优化队列或该父目录的所述待处理队列;
分别以该父目录的所述待优化队列的各个所述子目录的下级子目录作为当前所述子目录,确定当前所述子目录包含的当前文件数是否小于或等于所述设定阈值。
4.如权利要求3所述的方法,其特征在于,所述分别对各个所述子目录进行分类处理,将包含的当前文件数小于或等于所述设定阈值的所述子目录划分到所述子目录的父目录的待处理队列,包括:
当确定当前所述子目录包含的当前文件数小于或等于所述设定阈值时,将当前所述子目录划分到当前所述子目录的父目录的待处理队列;
向前递归进行分类处理,直到当前所述子目录的父目录的上一级目录的所述待优化队列为空。
5.如权利要求1或2任一项所述的方法,其特征在于,所述将所述当前迁移队列中的各个所述子目录向目标节点进行迁移处理,直到该父目录包含的当前文件数小于或等于所述设定阈值,包括:
根据所述当前迁移队列中的各个所述子目录包含的当前文件数进行排序;
按包含的当前文件数由多至少的顺序,将所述当前迁移队列中的各个所述子目录依次向所述目标节点迁移,直到所述当前迁移队列中剩余的各个所述子目录包含的当前文件数小于或等于所述设定阈值。
6.一种元数据负载均衡方法,应用于分布式文件系统的各个节点的动态元数据管理,各个所述节点包括一个元数据服务器,其特征在于,所述方法包括:
当前节点确定自身负载超出所述分布式文件系统中全部所述节点的平均负载且持续设定时长时,由当前节点自身包括的各目录中确定至少一个目录作为待迁移目录;
当前节点选定自身之外的至少一个所述节点作为目标节点,采用如权利要求1至5任意一项所述的目录迁移方法将所述待迁移目录迁移至所述目标节点。
7.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至5任一项所述的方法的步骤。
8.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求6所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810272978.1A CN108509275B (zh) | 2018-03-29 | 2018-03-29 | 一种目录迁移方法和元数据负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810272978.1A CN108509275B (zh) | 2018-03-29 | 2018-03-29 | 一种目录迁移方法和元数据负载均衡方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108509275A CN108509275A (zh) | 2018-09-07 |
CN108509275B true CN108509275B (zh) | 2019-11-12 |
Family
ID=63377882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810272978.1A Active CN108509275B (zh) | 2018-03-29 | 2018-03-29 | 一种目录迁移方法和元数据负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108509275B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109343138B (zh) * | 2018-09-29 | 2020-09-25 | 深圳市华讯方舟太赫兹科技有限公司 | 一种安检系统的负载均衡方法和安检设备 |
CN110008174A (zh) * | 2019-04-11 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种目录导出方法、系统及相关装置 |
CN110389940B (zh) * | 2019-07-19 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种数据均衡方法、装置和计算机可读存储介质 |
CN112347036B (zh) * | 2019-08-09 | 2023-03-14 | 浙江宇视科技有限公司 | 一种云存储系统的云间迁移方法及装置 |
CN110825698B (zh) * | 2019-11-07 | 2021-02-09 | 重庆紫光华山智安科技有限公司 | 元数据管理方法及相关装置 |
CN111190863B (zh) * | 2019-12-29 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种目录管理方法、装置、设备、介质 |
CN112162964B (zh) * | 2020-10-15 | 2024-04-05 | 苏州交驰人工智能研究院有限公司 | 一种自适应数据同步方法、装置、计算机设备及存储介质 |
CN112199355B (zh) * | 2020-12-09 | 2021-04-16 | 北京易真学思教育科技有限公司 | 数据迁移方法、装置、电子设备及存储介质 |
CN113382040B (zh) * | 2021-05-08 | 2022-09-13 | 深圳市科思科技股份有限公司 | 负载均衡方法、电子设备及计算机可读存储介质 |
CN113360455B (zh) * | 2021-07-16 | 2024-02-02 | 北京天融信网络安全技术有限公司 | 一种超融合系统的数据处理方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315547A (zh) * | 2017-07-18 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种读取分布式元数据文件的方法及装置 |
CN107766159A (zh) * | 2017-11-13 | 2018-03-06 | 郑州云海信息技术有限公司 | 一种元数据管理方法、装置和计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8442955B2 (en) * | 2011-03-30 | 2013-05-14 | International Business Machines Corporation | Virtual machine image co-migration |
-
2018
- 2018-03-29 CN CN201810272978.1A patent/CN108509275B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315547A (zh) * | 2017-07-18 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种读取分布式元数据文件的方法及装置 |
CN107766159A (zh) * | 2017-11-13 | 2018-03-06 | 郑州云海信息技术有限公司 | 一种元数据管理方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108509275A (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108509275B (zh) | 一种目录迁移方法和元数据负载均衡方法 | |
US10489343B2 (en) | Cluster file system comprising data mover modules having associated quota manager for managing back-end user quotas | |
US20200117569A1 (en) | Graphical user interface for visual correlation of virtual machine information and storage volume information | |
US10581957B2 (en) | Multi-level data staging for low latency data access | |
AU2014212780B2 (en) | Data stream splitting for low-latency data access | |
US10579272B2 (en) | Workload aware storage platform | |
CN105320773B (zh) | 一种基于Hadoop平台的分布式重复数据删除系统和方法 | |
CN105429776B (zh) | 一种虚拟化网络功能管理的方法和系统 | |
US9250965B2 (en) | Resource allocation for migration within a multi-tiered system | |
CN104462185B (zh) | 一种基于混合结构的数字图书馆云存储系统 | |
CN107436813A (zh) | 一种元数据服务器动态负载均衡的方法及系统 | |
CN104603774A (zh) | 迁移目的地文件服务器和文件系统迁移方法 | |
US9471657B1 (en) | Range query capacity allocation | |
CN102523158A (zh) | 一种基于权重的元数据服务器集群负载均衡方法 | |
US20080177948A1 (en) | Method and apparatus for managing placement of data in a tiered storage system | |
CN106161120A (zh) | 动态均衡负载的分布式元数据管理方法 | |
Xu et al. | Drop: Facilitating distributed metadata management in eb-scale storage systems | |
US9612766B2 (en) | Systems and methods for shadow migration progress estimation | |
CN102930056B (zh) | 云存储系统的检索方法及设备 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
RU2005130414A (ru) | Система и способ для определения переключения при неоптимальности целевого объекта назад и приоритета целевого объекта для распределенной файловой системы | |
US9330158B1 (en) | Range query capacity allocation | |
CN107465729B (zh) | 基于访问次数排名的虚拟节点副本调整系统及方法 | |
CN105893542A (zh) | 一种云存储系统中的冷数据文件重分布方法及系统 | |
US20160085750A1 (en) | Storage apparatus and storage apparatus control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |