发明名称 海量存储系统中的资源分配方法
摘要 海量存储系统中的资源分配方法属于存储区域网络领域,其特征在于:按照容量规则对SAN环境中的资源进行评价,并根据该评价值用基于概率的随机方法就行资源分配,以达到资源利用率及性能的最优化;同时,支持SAN中磁盘的添加与删除。它具有高度的兼容性及灵活性、高效的资源管理、高度可扩展性与可靠性及资源管理的代价小等优点。
申请公布号 CN100428131C 申请公布日期 2008.10.22
申请号 CN200610113706.4 申请日期 2006.10.13
申请人 清华大学 发明人 舒继武;薛巍;郑纬民;刘坤
分类号 G06F3/06(2006.01);G06F12/00(2006.01);G06F9/46(2006.01);H04L29/08(2006.01) 主分类号 G06F3/06(2006.01)
代理机构 代理人
主权项 1.海量存储系统中的资源分配方法,其特征在于,依次含有以下几个步骤:步骤(1):在所述系统中的虚拟化管理服务器之上加载一个资源分配与资源配置模块以及一个中间层命令处理模块,其中:首先,资源分配与资源配置模块含有以下数据结构:ax_pd_t:记录某一个物理磁盘PD的属性,包括容量、带宽、已用空间、可用空间及资源使用表;该资源使用表对应于某一个PD,记录了对应PD的每个存储管理基本单元SG是否被某个虚拟磁盘VD使用以及被映射到哪个VD的哪个SG上;所述PD和VD均被划分为大小相等的若干个SG;ax_vd_t:记录某一个虚拟磁盘的VD的属性,包括容量及资源映射表;该资源映射表对应于某一个VD,记录了对应VD的每个SG映射到的某一PD的具体位置;axum_SC:记录整个系统中所有物理磁盘PD、虚拟磁盘VD的总大小、总可用空间,并包含一个由系统中所有ax_pd_t组成的链表及所有ax_vd_t组成的链表;其次,所述资源分配与资源配置模块按以下方式实现资源分配:设定:系统中有n块物理磁盘,用PD<sub>1</sub>、PD<sub>2</sub>、……、PD<sub>n</sub>表示,用容量表示的评价值分别为C<sub>1</sub>、C<sub>2</sub>……C<sub>n</sub>;定义:待分布的数据对象集合S={SG<sub>1</sub>,SG<sub>2</sub>,..,SG<sub>m</sub>},m为集合S的大小;定义:PD<sub>1</sub>的容量区间为(0,C<sub>1</sub>),PD<sub>2</sub>的容量区间为(C<sub>1</sub>,C<sub>1</sub>+C<sub>2</sub>),……,PD<sub>n</sub>的容量区间为<img file="C2006101137060002C1.GIF" wi="297" he="122" />则:在创建VD或添加PD时,S为SAN中所有的数据对象;当删除PD时,S为待删除PD上的数据对象;对于待分布数据对象集合S中的每一个数据对象SG<sub>i</sub>,产生一个随机数r,当r落在PD<sub>i</sub>的容量区间时,将SG<sub>i</sub>分布在PD<sub>j</sub>中;(1)创建PD<sub>n</sub>的流程如下:步骤(1.0),为PD分配数据结构ax_pd_t,填充包括容量、可用大小的基本属性,初始化PD的资源使用表;定义变量P并初始化为0,用于指向未分配的SG的位置;步骤(1.1),将PD加入到虚拟化管理服务器中把所有PD虚拟地组织成一个统一的存储池SC;步骤(1.2),对SC中存在的VD按以下步骤进行资源重分配:步骤(1.2.1),对所有已分配的物理磁盘PD<sub>i</sub>,i=1,2,...,n-1,定义δ<sub>i</sub>=C<sub>i</sub>/S′-C<sub>i</sub>/S,其中<maths num="0001"><![CDATA[<math><mrow><mi>S</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>C</mi><mi>i</mi></msub></mrow></math>]]></maths>为包括PD<sub>n</sub>在内的所有物理磁盘的总容量,<maths num="0002"><![CDATA[<math><mrow><msup><mi>S</mi><mo>&prime;</mo></msup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></munderover><msub><mi>C</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths>为所有已分配资源的物理磁盘的总容量;步骤(1.2.2),对于所有SG<sub>i</sub>产生(0,1)区间平均分布的随机数r,所述SG<sub>i</sub>∈PD<sub>i</sub>且所有SG<sub>i</sub>已分配给VD,i=1,2,...,n-1;步骤(1.2.3),对于该SG<sub>i</sub>所属的PD<sub>i</sub>,若r<δ<sub>i</sub>,则该SG<sub>i</sub>迁移到PD<sub>n</sub>的第P个SG中,并修改相应的资源使用表与资源映射表,P加1;否则该SG<sub>i</sub>保持不变;步骤(1.2.4),重复步骤(1.2.3),直到i=n-1结束;(2)删除PD<sub>n</sub>的流程如下:步骤(2.0),对于该PD<sub>n</sub>上所有已分配的SG的集合,产生<img file="C2006101137060003C3.GIF" wi="220" he="123" />区间平均分布的n-1个随机数r;步骤(2.1),若随机数r<sub>i</sub>位于PD<sub>i</sub>的容量区间上,则该SG迁移到PD<sub>i</sub>的第P<sub>i</sub>个SG上;否则该SG保持不变;P<sub>i</sub>为PD<sub>i</sub>上按地址顺序第一个未被分配给VD的SG的位置,i=1,2,...,n-1;步骤(2.2),搜索PD<sub>i</sub>使得P<sub>i</sub>指向PD<sub>i</sub>下一个未被分配的SG的位置,并修改相应的资源使用表与资源映射表;步骤(2.3),把PD<sub>n</sub>从SC中删除,释放相关数据结构ax_pd_t及其资源使用表;(3)创建VD的流程如下:步骤(3.0),计算SC中剩余空间之和是否大于要创建的VD的容量;如果否,则不能创建该VD;否则转下一步;步骤(3.1),创建VD的数据结构ax_vd_t并添加到SC中;步骤(3.2),若要创建的为VD<sub>n</sub>,其步骤如下:步骤(3.2.1),对该VD<sub>n</sub>上所有SG的集合,产生<img file="C2006101137060003C4.GIF" wi="217" he="117" />区间平均分布的n个随机数T;步骤(3.2.2),如果r<sub>i</sub>位于PD<sub>i</sub>的容量区间上,则该SG分配到PD<sub>i</sub>的第P<sub>i</sub>个SG上;P<sub>i</sub>为PD<sub>i</sub>上按地址顺序第一个未被分配给VD的SG的位置,i=1,2,..,n;步骤(3.2.3),搜索PD<sub>i</sub>使得P<sub>i</sub>指向PD<sub>i</sub>下一个未被分配的SG,并修改相应的资源使用表与资源映射表;最后,中间层命令处理模块,根据ax_vd_t提供的资源映射表进行地址变换并完成所接受的前端主机的命令;步骤(2),所述方法按以下步骤依次进行资源分配:在添加PD<sub>n</sub>时:首先,为该PD<sub>n</sub>分配并初始化ax_pd_t数据结构及资源使用表并把其加入到全局结构axum_SC中;其次,进行资源重分配,重构资源使用表及资源映射表;最后,唤醒后台线程,该线程根据重构后的资源使用表与资源映射表进行数据拷贝;在删除PD<sub>n</sub>时:第一步,删除PD<sub>n</sub>时需要将其上VD的数据进行转移,计算删除PD后是否有足够的资源供VD使用;如果否,则该PD不能删除;第二步,进行资源重分配,重构资源使用表与资源映射表;第三步,唤醒后台线程,完成重构后的数据拷贝;第四步,从axum_SC中删除该PD的ax_pd_t结构,释放其资源使用表;在创建VD时:首先,计算SC中是否有足够的空间创建该VD;其次,为VD创建并初始化ax_vd_t数据结构及资源映射表,将其加入axum_SC中;最后,为VD分配资源,并更改资源使用表与资源映射表。
地址 100084北京市100084-82信箱