分布式存储系统中用户磁盘配额的动态分配方法转让专利

申请号 : CN201010118459.3

文献号 : CN101799797B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何连跃王晓川谭子军丁滟唐晓东黄辰林付松龄

申请人 : 中国人民解放军国防科学技术大学

摘要 :

本发明公开了一种分布式存储系统中用户磁盘配额的动态分配方法。技术方案是构建并初始化由元数据服务器和存储服务器组成的分布式存储系统;存储服务器接收的存储访问请求为存储数据时则增大用户本地磁盘配额,再执行用户数据存储操作,若存储访问请求类型为删除数据则执行用户数据删除操作,将用户本地磁盘配额设置为用户本地磁盘空间占用量,计算用户本地磁盘空间占用量的增量并将该增量发送给元数据服务器;元数据服务器计算新的用户磁盘配额余额并将该余额发送给所有的存储服务器。采用本发明可将各存储服务器的本地存储空间配额根据存储访问请求动态地扩大和缩小,既能适应用户数据变化的动态性,又能提高存储空间的利用率。

权利要求 :

1.一种分布式存储系统中用户磁盘配额的动态分配方法,其特征在于包括以下步骤:

第一步,构建并初始化分布式存储系统:

1.1 构建:分布式存储系统由元数据服务器和多台存储服务器组成,元数据服务器上安装操作系统软件和全局空间管理器,存储服务器上安装操作系统软件、文件系统软件、文件系统磁盘配额管理软件和局部空间管理器;

1.2 初始化:全局空间管理器为每个用户做如下初始化的工作:将用户磁盘配额初始化为管理员指定的值;将用户磁盘空间占用量初始化为0;将用户磁盘配额余额初始化为当前用户磁盘配额;全局空间管理器将所有用户的用户磁盘配额余额分发给各局部空间管理器;局部空间管理器为每个用户做如下初始化工作:将用户本地磁盘空间占用量初始化为0,将用户本地磁盘配额初始化为0,将用户磁盘配额余额初始化为全局空间管理器分发来的对应用户的用户磁盘配额余额;所述用户磁盘配额是指分布式存储系统给用户分配的磁盘总限额;所述用户磁盘空间占用量是指某用户在所有存储服务器中已占用的全部磁盘空间的总量;所述用户磁盘配额余额是指用户磁盘配额减去用户磁盘空间占用量所得的差值;所述用户本地磁盘空间占用量是指某用户在某台存储服务器中已占用的磁盘空间大小;用户本地磁盘配额是指分布式存储系统为某用户在某台存储服务器里分配的磁盘配额;

第二步,存储服务器接收用户的存储访问请求,根据请求类型做如下处理:

2.1 若请求类型为存储数据:

2.1.1 局部空间管理器增大用户本地磁盘配额,新的用户本地磁盘配额按公式(1)计算:用户本地磁盘配额=Min(用户磁盘配额余额,本地磁盘可用存储空间大小/本地并发访问用户数)+用户本地磁盘空间占用量 公式(1);

其中,Min(a,b)是求a和b中最小值的函数;

2.1.2 文件系统软件执行用户数据存储操作,同时文件系统磁盘配额管理软件负责限制用户本地磁盘空间占用量不超过最新的用户本地磁盘配额;

2.2 若请求类型为删除数据:文件系统软件执行用户数据删除操作;

第三步,局部空间管理器将用户本地磁盘配额设置为用户本地磁盘空间占用量;

第四步,局部空间管理器按公式(2)计算用户本地磁盘空间占用量的增量,将该用户的用户本地磁盘空间占用量的增量发送给元数据服务器上的全局空间管理器,用户本地磁盘空间占用量的增量=新用户本地磁盘空间占用量-原用户本地磁盘空间占用量 公式(2);

第五步,全局空间管理器按公式(3)计算出新的用户磁盘配额余额,

新的用户磁盘配额余额=原用户磁盘配额余额-用户本地磁盘空间占用量的增量

公式(3);

第六步,全局空间管理器将新的用户磁盘配额余额同步更新到所有的局部空间管理器。

2.如权利要求1所述的分布式存储系统中用户磁盘配额的动态分配方法,其特征在于所述元数据服务器的存贮空间中有一个全局空间管理表GSMT,GSMT的每个表项对应一个在元数据服务器中注册的用户,表项记录了该用户全局存储空间的信息,每个表项包括用户标识、用户磁盘配额、用户磁盘空间占用量、用户磁盘配额余额4个域;存储服务器的存贮空间中有局部空间管理表LSMT,LSMT的每个表项对应一个在元数据服务器中注册的用户,记录该用户的本地局部空间使用的信息,每个表项包括用户标识、用户本地磁盘空间占用量、用户本地磁盘配额、用户磁盘配额余额4个域;用户标识是用户的全局唯一标识;在进行磁盘配额动态分配时,全局空间管理器和局部空间管理器计算出新值并不断更新GSMT和LSMT。

说明书 :

分布式存储系统中用户磁盘配额的动态分配方法

技术领域

[0001] 本发明涉及计算机领域中分布式存储系统的用户磁盘配额的动态分配方法。

背景技术

[0002] 在传统的网络存储系统中,所有的数据和元数据都集中存放在存储服务器里,随着客户并发访问量的增加,单台服务器成为整个系统性能的瓶颈,无法满足大规模存储应用的需要。因此,分布式存储系统正成为存储领域新的发展趋势和研究方向。分布式存储系统采用可扩展的结构:采用多台存储服务器共同为用户提供数据存储服务,构成大容量的磁盘空间,用户的数据分散存放在不同的存储服务器上;采用元数据服务器为用户提供数据检索服务,同时负责管理整个分布存储系统的元数据和系统资源。这种体系结构不但提高了系统的可靠性、可用性和工作效率,还易于扩展和移植。
[0003] 对于单服务器存储系统来说,所有用户数据都存储在存储服务器里,用户磁盘配额管理由存储服务器文件系统的磁盘配额管理软件实现。而分布式存储服务系统中磁盘配额分配一般采用等分法、动态统计法等方法。等分法是将用户磁盘配额平均分割后再配给各个相关服务器。这种方法对于数据量较小的用户数据所在的存储服务器,就存在着空间的浪费,而那些用户数据占存储空间较大的存储服务器,用户再往里加入数据就有可能超出限额,让访问无法完成。相比之下,动态统计法能周期性地监测每个存储服务器中的用户数据改变量,然后以最近一段时期内用户数据量变化率为依据对其调整本地磁盘配额:变化率为正且较大的,说明用户数据增加得很快,必须预留更多的本地磁盘配额;变化率很大但为负的,说明用户数据减少得很快,就得剥夺更多的本地磁盘配额;而那些变化率较小的,说明用户数据量变化不大,为其预留或剥夺的本地磁盘配额也较少。这种方法动态适应性较强,比等分法更优越,但它毕竟是一种通过提前估计用户数据变化趋势而做出的决策,由于用户对数据的访问具有很大的不确定性,使得这种预测不一定准确。比如由于数据量下降得较快,存储服务器被剥夺了较大的空间,然后某段时间用户突然往里写入了大量的数据,所占空间一下子超出限额,造成用户访问无法成功,或者得等待系统做出分析,并在该存储服务器上增加用户的配额。由此可见,上述两种方法均不能很好的满足分布式存储服务系统用户对存储空间的需求变化。
[0004] 在分布式存储服务系统中,用户在各个存储服务器上所占存储空间大小各不相同,并且用户对数据的修改是随机而频繁的,使得不同存储服务器上的数据量会随时变化。因此,针对分布式存储服务系统,设计合理的与用户访问行为相关的分布式存储服务系统磁盘配额管理方案,对于适应用户数据变化的动态性,提高存储空间的利用率有着十分重要的意义。

发明内容

[0005] 本发明要解决的技术问题是针对分布式存储系统,提供一种用户磁盘配额的动态分配方法,既能适应用户数据变化的动态性,又能提高存储空间的利用率。
[0006] 为方便后文描述问题,下面给出分布式存储系统磁盘配额管理的几个重要定义:
[0007] 1)用户磁盘配额:分布式存储系统给注册用户分配的磁盘总限额,其大小由管理员决定,一般是固定不变的;
[0008] 2)用户磁盘空间占用量:某用户在所有存储服务器中已占用的全部磁盘空间的总量;
[0009] 3)用户本地磁盘配额:分布式存储系统为某用户在某台存储服务器里分配的磁盘配额,其大小是动态可变的,由该服务器文件系统磁盘配额管理软件强制实施;
[0010] 4)用户本地磁盘空间占用量:某用户在某台存储服务器中已占用的磁盘空间大小;
[0011] 5)用户磁盘配额余额:用户磁盘配额减去用户磁盘空间占用量所得的差值。
[0012] 本发明具体技术方案是:
[0013] 第一步,构建并初始化分布式存储系统:
[0014] 1.1 构建:分布式存储系统由元数据服务器和多台存储服务器组成。元数据服务器上安装操作系统软件和全局空间管理器,存储服务器上安装操作系统软件、文件系统软件、文件系统磁盘配额管理软件和局部空间管理器,其中,全局空间管理器和局部空间管理器为本发明的专用软件,其他软件均为通用软件。
[0015] 1.2 初始化:全局空间管理器为每个用户做如下初始化的工作:将用户磁盘配额初始化为管理员指定的值;将用户磁盘空间占用量初始化为0(表示还没有用户存储数据);将用户磁盘配额余额初始化为当前用户磁盘配额(此时还没有用户存储数据)。全局空间管理器将所有用户的用户磁盘配额余额分发给各局部空间管理器。局部空间管理器为每个用户做如下初始化工作:将用户本地磁盘空间占用量初始化为0,将用户本地磁盘配额初始化为0(还没有用户存储数据),将用户磁盘配额余额初始化为全局空间管理器分发来的对应用户的用户磁盘配额余额。
[0016] 第二步,存储服务器接收用户的存储访问请求,根据请求类型做如下处理:
[0017] 2.1.若请求类型为存储数据:
[0018] 2.1.1.局部空间管理器增大用户本地磁盘配额,新的用户本地磁盘配额按公式(1)计算:
[0019] 用户本地磁盘配额=Min(用户磁盘配额余额,本地磁盘可用存储空间大小/本地并发访问用户数)+用户本地磁盘空间占用量
[0020] 公式
[0021] (1);
[0022] 其中,Min(a,b)是求a和b中最小值的函数。用户本地磁盘配额的增加值由用户磁盘配额余额和本地磁盘可用存储空间共同决定:用户磁盘配额余额保证在用户磁盘配额余额允许的范围内,尽可能地满足用户对存储空间的需求;本地磁盘可用存储空间大小决定了物理存储设备的限制;本地磁盘可用存储空间除以本地并发访问用户数,是为了保证并发访问用户之间的公平性。
[0023] 2.1.2.文件系统软件执行用户数据存储操作,同时,文件系统磁盘配额管理软件负责限制用户本地磁盘空间占用量不超过最新的用户本地磁盘配额;
[0024] 2.2.若请求类型为删除数据:文件系统软件执行用户数据删除操作;
[0025] 第三步,局部空间管理器将用户本地磁盘配额设置为用户本地磁盘空间占用量;
[0026] 第四步,局部空间管理器按公式(2)计算用户本地磁盘空间占用量的增量,将该用户的用户本地磁盘空间占用量的增量发送给元数据服务器上的全局空间管理器,:
[0027] 用户本地磁盘空间占用量的增量=新用户本地磁盘空间占用量-原用户本地磁盘空间占用量 公式(2);
[0028] 第五步,全局空间管理器按公式(3),计算出新的用户磁盘配额余额;
[0029] 新的用户磁盘配额余额=原用户磁盘配额余额-用户本地磁盘空间占用量的增量 公式(3);
[0030] 第六步,全局空间管理器将新的用户磁盘配额余额同步更新到所有的局部空间管理器。
[0031] 具体实现时,可在元数据服务器的存贮空间中设置一个全局空间管理表GSMT(Global Space Manage Table),GSMT的每个表项对应一个在元数据服务器中注册的用户,表项记录该用户全局存储空间的信息,每个表项包括用户标识、用户磁盘配额、用户磁盘空间占用量、用户磁盘配额余额4个域,全局空间管理器通过GSMT维护全局存储空间。同时在存储服务器的存贮空间中设置局部空间管理表LSMT(Local Space Manage Table),局部空间管理器通过LSMT维护局部存储空间。LSMT的每个表项对应一个在元数据服务器中注册的用户,记录该用户的本地局部空间使用的信息,每个表项包括用户标识、用户本地磁盘空间占用量、用户本地磁盘配额、用户磁盘配额余额4个域。用户标识是用户的全局唯一标识,可以是用户名或用户的IP地址。在进行磁盘配额动态分配时,全局空间管理器和局部空间管理器按公式(1)、(2)、(3)计算出新值并不断更新GSMT和LSMT。
[0032] 采用本发明可以达到以下技术效果:
[0033] 本发明通过局部空间管理器为分布式存储服务系统进行用户磁盘配额动态分配,通过全局空间管理器协调各局部空间管理器的磁盘配额分配,将各个存储服务器的本地存储空间配额根据用户的存储访问请求动态地扩大和缩小,在满足总的用户磁盘配额的限制下,较好地使各存储服务器上用户本地磁盘配额按需分配、充分使用,既适应了用户数据变化的动态性,又有效提高了存储空间资源利用率。

附图说明

[0034] 图1为第一步建立的分布式存储系统逻辑结构图。
[0035] 图2为本发明分布式存储系统中元数据服务器进行磁盘配额分配的流程图。
[0036] 图3为本发明分布式存储系统中存储服务器的磁盘配额分配流程图。

具体实施方式

[0037] 图1为分布式存储系统逻辑结构图。分布式存储系统由元数据服务器和多台存储服务器组成。元数据服务器上安装操作系统和全局空间管理器,存储服务器上安装操作系统、文件系统软件、文件系统磁盘配额管理软件和局部空间管理器。
[0038] 图2为本发明全局空间管理器流程图,图3为本发明局部空间管理器流程图。综合图1、图2、图3介绍本发明的工作流程。
[0039] 1 构建并初始化分布式存储系统(图2中①、图3中的①):
[0040] 1.1 构建:分布式存储系统由元数据服务器和多台存储服务器组成。元数据服务器上安装操作系统软件和全局空间管理器,存储服务器上安装操作系统软件、文件系统软件、文件系统磁盘配额管理软件和局部空间管理器,其中,全局空间管理器和局部空间管理器为本发明的专用软件,其他软件均为通用软件。
[0041] 1.2 初始化:全局空间管理器为每个用户做如下初始化的工作:将用户磁盘配额初始化为管理员指定的值;将用户磁盘空间占用量初始化为0(表示还没有用户存储数据);将用户磁盘配额余额初始化为当前用户磁盘配额(此时还没有用户存储数据)。全局空间管理器将所有用户的用户磁盘配额余额分发给各局部空间管理器。局部空间管理器为每个用户做如下初始化工作:将用户本地磁盘空间占用量初始化为0,将用户本地磁盘配额初始化为0(还没有用户存储数据),将用户磁盘配额余额初始化为全局空间管理器分发来的对应用户的用户磁盘配额余额。
[0042] 2 存储服务器接收用户的存储访问请求(图1中①,图3中②),根据请求类型做如下处理:
[0043] 2.1 若请求类型为存储数据:
[0044] 2.1.1 局部空间管理器增大用户本地磁盘配额,新的用户本地磁盘配额按公式(1)计算(图1中②,图3中③);
[0045] 2.1.2 文件系统软件执行用户数据存储操作,在执行数据存储操作的过程中,文件系统磁盘配额管理软件负责限制用户的本地磁盘空间占用量不超过最新的用户本地磁盘配额(图3中④);
[0046] 2.2 若请求类型为删除数据:文件系统软件执行用户数据删除操作(图3中⑤);
[0047] 3 局部空间管理器将用户本地磁盘配额设置为用户本地磁盘空间占用量(图3中⑥);
[0048] 4 局部空间管理器计算该用户的用户本地磁盘空间占用量的增量,并发送给全局空间管理器(图1中③,图3中⑦);
[0049] 5 全局空间管理器按公式(3),计算出最新的用户磁盘配额余额(图2中③);
[0050] 6 全局空间管理器将新的用户磁盘配额余额发送给所有的局部空间管理器(图1中④,图2中④);
[0051] 7 局部空间管理器将用户的用户磁盘配额余额同步更新为新的值(图3中⑧)。