存储介质的层次组织结构
技术领域
本发明涉及元数据服务器领域,更具体地,涉及用于元数据服务器的层次组织结构。
背景技术
元数据服务器是并行文件系统的大脑,对象所在的数据服务器及磁盘都是由元数据服务器决定的。并且在实际使用中,对磁盘选择的需求又是多种多样的,例如在一个存储系统中,对各个数据服务器及磁盘的使用最好是均衡的;系统动态运行过程中可能发生磁盘及ds(数据服务器)故障,选盘要避开故障点;如果某个磁盘或ds已经达到容量使用阈值则不能再选择;为了便于控制,要求某个文件的所有对象必须限制在固定的某些ds上(其被称为分区,人为地对系统内的ds进行分区);为了提高访问效率,要对数据进行分级,热点数据存放在高速存储设备上(如SSD),冷点数据存放在低速设备上(如SATA或者TAPE);未来可能对磁盘选择还有其他要求等等。同时,对并行文件系统而言,动态扩容也是非常重要的,即存储介质的内存组织方法还应该考虑对磁盘及ds的动态添加/删除的有效支持。
综上所述,并行文件系统对元数据服务器中存储介质的组织方式提出了很高的要求,不仅要考虑支持以上要求,还应该考虑未来需求,方便扩展。
在现有的组织方式中,利用静态数组作为存储介质的内存组织方式对节点动态添加有很大限制,当添加的节点数达到预先留的上限后就不能再动态添加;动态数组没有这个问题,可以重新分配,但是删除节点后需要移动数组成员以保持连续。除上述缺点外,数组方式及链表方式最大的缺点是不利于新的节点选择策略及属性的加入,诸如分区和分级的需要,其中分区即要求文件内所有对象必须放在某些固定节点上以便于故障定位(如果不加限制,则某个磁盘坏所有文件都有坏的可能),分级即根据对象的冷热程度而选择不同的存储介质。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对数组及链表存储方式的缺点以及对存储介质组织方式便于选择策略调整和节点动态扩展等需求,本发明提出一种树状层次组织结构,其能够轻松实现磁盘选择的多种需求,并且具有非常好的扩展性。
根据本发明的实施例,提供了一种存储介质的层次组织结构,该层次组织结构包括作为根节点的接入层、多个介质分类层和介质层,其中,多个介质分类层中的每一层都代表一种介质分类方式,从而在每一介质分类层中根据预定的分类方式将多个介质分为多组,每一组中包括多个相同种类的节点。
优选地,多个介质分类层包括节点间介质层、逻辑分区层、机柜层、数据服务器层、节点内介质层。
优选地,多个介质分类层中的每一层都具有独立的哈希表。
优选地,每一个分类层中的每一个节点均链入自己的父节点。
优选地,该层次组织结构具有一个读写锁,并且每一个分类层中的每一个节点均具有独立的自旋锁。
优选地,在动态添加或删除一个节点时,对层次组织结构加写锁并在完成后解锁。
优选地,每一个分类层都预先注册独立的函数组。
优选地,函数组至少包括初始化函数、节点选择函数。
优选地,在进行介质选择时,加层次组织结构的读锁,从所述根节点开始逐层调用下一层的节点选择函数,直到成功选择了从所述根节点到叶节点的每一层的节点。
优选地,如果遍历了层次组织结构所有节点都没有找到符合要求的节点,则本次选择失败。
本发明通过采用树状层级存储组织结构,能够实现磁盘选择的多种需求并且可以灵活实现多种选择策略。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的层次组织结构的示意图;以及
图2是根据本发明实施例的进行介质选择的方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
针对数组及链表存储方式的缺点以及对存储介质组织方式便于选择策略调整和节点动态扩展等需求,本发明的发明人提出了树状层次存储组织结构(hsm,层次存储管理),即,利用层次方式存储介质,其中每层代表介质的一种分类方法。
以下参照图1和图2详细对本发明进行描述。
图1是根据本发明实施例的层次组织结构的示意图。
参照图1,hsm组织方式如下:最上层为接入层,也是组织树的根节点;最下层为最终的介质;中间为介质的分类,每一层代表一种分类,这些分类可以根据实际需要进行调整。例如,中间层可以包含节点间介质层(介质类型,如高速、中速、低速、混合)、分区层(人为划分的分区,将数据节点分成不同的分区)、机柜层(数据节点所在的机柜,同一机柜的节点比机柜间节点通讯速度快)、ds层、节点内介质层(数据节点的内部介质,如高速、中速、低速)等。
应该注意,图1中所示出的分类层只是示例性的,本领域技术人员完全可以根据实际应用和需求增加其他的分类方式或者删除图1所示的任意分类方式。
在本发明的hsm的每一层中都具有独立的hash表,同时每个节点也要链入自己的父节点或者根据需要添加其他检索方式。整个hsm结构有一个读写锁,用来保护拓扑结构,每个节点有独立的spinlock(自旋锁),以应对线程并发访问(对象均匀分布的需要)。
此外,每层都可以注册独立的函数组,如初始化函数、节点选择函数等。这些函数都是预先设定好的,并且可以根据需要增加或删除一些函数,从而可以方便地进行节点的动态添加、删除,并且还可以方便地加入新的需求策略,只需要注册新的选择函数并添加对应的选择控制函数即可,这对已有的策略没有任何影响。
在这种存储方式下,如果要动态添加或删除节点,需要加hsm的写锁与其他访问互斥,完成后解锁。而当进行介质选择时,加hsm的读锁,从根接入点开始,逐层调用下层起始节点获取函数及选择函数,直到成功选择了从根到叶结点的每层节点或者遍历了所有路径后选择失败,以下参照图2描述进行介质选择的方法。
图2是根据本发明实施例的进行介质选择的方法的流程图。
参照图2,首先获取根节点,并调用第0层的注册函数来获取下层的起始选择节点,并进入下一层,即第1层。
之后,调用该层的节点选择函数来进行介质选择,如果选择成功则调用下一层的注册函数来获取下一层的起始节点。
对每一层都进行类似的处理,直到成功选择了从根节点到叶节点的每一层节点为止。
如果没有找到合适的路径,则本次选择失败。
从上可以看出,由于选择函数按层注册并且每层都表示一种分类方式,所以层次存储树状结构可以轻松地实现磁盘选择的多种需求,诸如节点分区、分级等需要。
此外,本发明的hsm还具有非常好的扩展性,可以方便地进行节点的动态添加、删除。并且新的需求选择策略也可以方便加入,只需要注册新的选择函数并添加其对应的选择控制函数即可,对已有策略没有任何影响。
综上所述,借助于本发明的上述技术方案,通过存储介质内存组织方式采用树状层次结构,每层表示一种分类方法,并且节点选择函数等按层次注册,可以轻松实现磁盘选择的多种需求并且灵活实现多种选择策略。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。