一种网络存储系统空间分配管理方法及装置的制作方法

文档序号:7611326阅读:269来源:国知局
专利名称:一种网络存储系统空间分配管理方法及装置的制作方法
技术领域
本发明涉及网络存储技术,尤其涉及一种RAID阵列资源块管理技术。
背景技术
在涉及众多主机的数据存储的网络环境中,为了提高数据存储的可靠性和安全 性,同时为了存储容量的扩展性和灵活性,网络存储技术应运而生。通常来说,网络存储系 统的作用是为客户端PC机或者服务器(一般统称为主机或Host)提供可用的存储空间。一般网络存储系统的前端可以通过IP网络或者FC网络与主机相连,为主机提供 数据存储服务。在数据传输方面,以基于IP承载的网络存储系统为例,主机可以基于标准 的iSCSI(互联网小型计算机系统接口)协议网络存储系统进行数据的读写操作。网络存 储系统的核心是存储控制器(Storage Controller),存储控制器进行数据处理并把数据写 入到后端物理磁盘中。在传统的网络存储系统中,当主机的某项应用需要一部分存储空间的时候,往往 是预先从后端存储系统中划分出一部分足够大的空间预先分配给该项应用,即使这项应用 暂时不需要使用这么大的存储空间。但由于这部分存储空间已经被预留了出来,其它应用 程序无法利用这些已经部署但实际上处于闲置的存储空间。这种分配模式一方面使闲置的 存储空间不断增加,系统总体拥有成本升高;另一方面用户不得不购买更大的存储容量,才 能满足业务扩展的需求,成本进一步加大。自动精简配置(Thin Provisioning)技术是解决上述存储空间过量供给的途径之 一。自动精简配置是一种存储管理的特性,核心原理是“欺骗”客户端操作系统,让客户端 操作系统认为已经分配了很大逻辑资源,比如客户端操作系统看到一个2TB的逻辑资源, 而实际上网络存储设备上只为这个资源分配了几十或者几百GB的物理空间,其余空间都 是虚拟出来的。随着应用程序写入越来越多的数据,物理存储利用率也会越来越高,当实际 分配的物理空间不足时,再分配额外的物理空间,随需扩展。请参考图1,服务器(Server)识别逻辑资源(LUN)时,看到的并不是真实空间,而 是由自动精简配置技术虚拟出来的空间,真实分配的物理空间取决于资源分配策略,可能 只有总空间的四分之一,甚至更少。支持自动精简配置技术的存储系统,可以对LUN进行分 类管理,可以使得未启用自动精简配置的LUN和启用自动精简配置的LUN同时存在。创建一个未启用自动精简配置的LUN时,需要指定LUN总容量、以及在哪些RAID 上创建LUN,这里指定的LUN总容量是指客户端看到的LUN大小,也是LUN实际占用的物理 空间大小。系统在指定的RAID上分配存储空间,并创建LUN的段表,标识LUN和RAID的对 应关系,同时修改RAID的段表,标识这些段已经使用。因为LUN的所有物理空间均已分配, 因此LUN的段表也标记了 LUN线性空间和RAID实际物理空间的对应关系,LUN上收到10请 求时,根据LUN段表找到对应的物理空间,下发读写命令。请参考图2所示,逻辑资源1容量为500GB,位于RAIDx和RAIDy上,创建时分配了 RAIDx的段1和RAIDy的段1,容量分别为200GB和300GB,因此,逻辑资源1段表的前200GB的空间指向RAIDx的段1,后300GB空间指向RAIDy的段1。创建一个启用自动精简配置的LUN时,需要指定LUN总容量、LUN预分配物理空间 大小以及占用的RAID、LUN物理空间扩容策略。LUN总容量是指客户端看到的LUN大小,LUN 预分配物理空间大小是指创建LUN时实际占用的物理空间大小,LUN物理空间扩容策略是 指LUN物理空间扩容的触发条件以及扩容策略,比如LUN预分配物理空间使用率达到80% 时触发扩容,每次扩容的步长是LUN总容量的5%。系统在指定的RAID上根据LUN预分配 物理空间大小分配资源,并创建LUN的段表,标识LUN和RAID的对应关系,同时修改RAID 的段表,标识这些段已经使用。因为启用了自动精简配置的LUN实际分配的物理空间和客户端看到的总空间不 对等,因此还需要维护一个专门的LUN线性表,用于记录LUN线性空间和RAID实际物理空 间的对应关系。当LUN上收到一个IO写请求时,先从预分配的物理空间中分配应用要访问 的空闲空间,修改LUN线性表,写入数据。当LUN上收到一个IO读请求时,如果LUN线性表 中有对应的物理空间,直接访问,如果没有,则直接返回全0。为了简化线性表的管理,一种改进方案是把LUN预分配物理空间按照指定的长度 分片,每次从空闲空间分配物理空间时,都按照分片为单位分配容量。当LUN预分配物理 空间使用率达到预设的值时,触发物理空间扩容,为LUN分配更多的物理空间,用于后续访 问。请参考图3所示,逻辑资源η启用了启动精简配置,预分配的物理空间位于RAIDy 上,对应RAIDy的段η,逻辑资源η需要额外维护一个线性表,记录其线性空间和RAID实际 物理空间的对应关系。上述方案在一定程度上减少了资源浪费,但是还是存在下面的问题首先LUN预 分配物理空间设置为多少最合适,这多数取决于管理员经验。其次,LUN预分配物理空间是 每个LUN私有的,多个启用了自动精简配置的LUN之间无法共享这部分空间。最后,系统中 启用了自动精简配置的LUN、未启用自动精简配置的LUN共存,采用不同的管理方式,随着 应用需求变更,为一个已经存在的LUN启用、禁用自动精简配置的实现非常复杂。

发明内容
有鉴于此,本发明旨在提供一种空间分配方法及装置,提供存储空间的利用效率。 本发明是通过以下技术方案实现的一种网络存储系统空间分配管理装置,用于执行网络存储系统内的资源管理操 作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网 络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理装置包括资源管理单元,用于使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长 度划分为多个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;其中 该资源管理单元进一步用于在创建逻辑资源(LUN)时为该LUN建立索引区,该索引区用于 记录LUN线性空间和分配给该LUN的物理资源块的对应关系,该索引区中所有指向物理资 源块的索引(Block索引)的初始值为空;正向空间管理单元,用于在LUN上接收到IO读请求时,判断要访问的区域对应的 Block索引是否为空,如果是则返回区域数据为空,如果否,则访问该Block索引对应的资源块;以及用于在LUN上接受到IO写请求时,判断要访问的区域对应的Block索引是否为 空,如果是,则对应分配一个空闲的资源块,触发资源管理单元相应修改块表以及LUN索引 区,然后将数据写入该新分配的资源块;否则将数据写入该Block索引对应的资源块。优选地,所述资源管理单元,进一步用于在创建LUN时判断该LUN对应的预设空间 分配标记是否为真,如果不为真则继续;如果为真则为该LUN分配物理资源块并更新块表, 并为该LUN建立索引区,该索引区中所有指向物理资源块的索引(Block索引)的初始值指 向对应的资源块。优选地,其中所述资源管理单元在LUN索引区中还记录资源块写标记(write_ flag),所述正向空间管理单元在资源块写入数据后,将对应的write_flag修改为真,其特 征在于,该装置还包括反向空间管理单元,用于将空间分配标记为真的LUN对应的索引区中Write_flag 标记为假的Block索引修改为空,并触发资源管理单元在块表中将对应的资源块修改为空 闲;该LUN的所有资源块都处理完成后,将空间分配标记修改为假。优选地,其中所述资源管理单元在LUN索引区中还记录资源块写标记(write_ flag),所述正向空间管理单元在资源块写入数据后,将对应的write_flag修改为真,其特 征在于,该装置还包括反向空间管理单元,用于将空间分配标记为假的LUN对应的索引区中Block索引 为空的Block索引分配物理资源块,并触发资源管理单元更新块表以及LUN索引区的Block 索引;该LUN的所有资源块都处理完成后,将空间分配标记修改为真。优选地,其中所述多个资源块大小相同。本发明还提供一种网络存储系统空间分配管理方法,用于执行网络存储系统内的 资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端 端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理方法包 括步骤A,使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划分为多 个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;步骤B,在创建逻辑资源(LUN)时为该LUN建立索引区,该索引区用于记录LUN线 性空间和分配给该LUN的物理资源块的对应关系,该索引区中所有指向物理资源块的索引 (Block索引)的初始值为空;步骤C,在LUN上接收到10读请求时,判断要访问的区域对应的Block索引是否为 空,如果是则返回区域数据为空,如果否,则访问该Block索引对应的资源块;步骤D,在LUN上接受到10写请求时,判断要访问的区域对应的Block索引是否为 空,如果是,则对应分配一个空闲的资源块,触发资源管理单元相应修改块表以及LUN索引 区,然后将数据写入该新分配的资源块;否则将数据写入该Block索引对应的资源块。优选地,还包括步骤E,在创建LUN时判断该LUN对应的预设空间分配标记是否为真,如果不为真 则继续;如果为真则为该LUN分配物理资源块并更新块表,并为该LUN建立索引区,该索引 区中所有指向物理资源块的索引(Block索引)的初始值指向对应的资源块。优选地,还包括
步骤F,在LUN索引区中还记录资源块写标记(Write_flag),并在在资源块写入数 据后,将对应的Write_flag修改为真;步骤G,将空间分配标记为真的LUN对应的索引区中write_f lag标记为假的 Block索引修改为空,并在块表中将对应的资源块修改为空闲;该LUN的所有资源块都处理 完成后,将空间分配标记修改为假。优选地,还包括步骤F,在LUN索引区中还记录资源块写标记(Write_flag),并在在资源块写入数 据后,将对应的Write_flag修改为真;步骤H,将空间分配标记为假的LUN对应的索引区中Block索引为空的Block索引 分配物理资源块,并更新块表以及LUN索引区的Block索引;该LUN的所有资源块都处理完 成后,将空间分配标记修改为真。优选地,其中所述多个资源块大小相同。在本发明中,所有空间分配标记为假的LUN可共享存储系统中所有空闲的Block, 支持谁使用谁分配的原则;同时对于用户需求的变化,及时地进行反向空间分配操作,最大 程度的提高资源空间利用率,避免了磁盘空间的浪费,降低了用户部署网络存储系统的成 本,同时能及时响应用户需求的变化。


图1是现有技术中自动精简配置技术逻辑示意图。图2是一种现有的自动精简配置技术逻辑原理图。图3是另一种现有的自动精简配置技术逻辑原理图。图4是本发明网络存储系统管理装置逻辑层次图。图5是本发明网络存储系统管理装置逻辑结构图。图6是本发明记录资源块分配使用情况的块表示意图。图7是本发明为逻辑资源分配资源块示意图。图8是本发明响应读操作的流程图。图9是本发明响应写操作的流程图。图10是本发明一种对空间进行反向管理操作的流程图。图11是本发明另一种对空间进行反向管理操作的流程图
具体实施例方式通常网络存储系统为方便主机的数据读写,为了对主机屏蔽存储资源物理上的 差异,可以通过虚拟化技术对物理存储资源进行抽象,在物理层面以上(在本发明中是指 RAID以上)形成面向用户主机的逻辑资源,并且相应生成逻辑资源地址映射表,以记录逻 辑地址与物理地址的映射关系。请参考图3的逻辑层次图,本发明在逻辑资源层与物理层 之间引入资源块管理层。以下结合其他附图进一步介绍本发明的详细实施方式。请参考图4以及图5,本发明网络存储系统管理装置10主要用于执行网络存储系 统内的资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器 的前端端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连,一般来说存储控制器是一个较为完善的计算机系统,其包括CPU与内存等基本硬件以及操作系统 等底层软件。以计算机软件实现本发明为例,从逻辑层面看,前述的管理装置10包括资源 管理单元11、正向空间管理单元12以及反向空间分配单元13。该管理装置在网络存储系 统中运行,结合网络存储系统其他模块一并运行时,主要包括以下步骤步骤101,在网络存储系统中利用所述磁盘创建RAID阵列;并把所述RAID的可用 存储空间根据指定大小划分为多个资源块(Block),其中资源块大小可以是用户通过资源 管理单元配置的,各个RAID的资源块的大小可以相同也可以不同,这取决对管理开销的容 忍度。把RAID的可用空间划分为多个资源块的同时创建RAID的块表,每个资源块和资 源分配相关的特性是已使用和未使用(即空闲),因此块表实现上可以使用bitmap表,bit 设置为1表示对应的块已使用,一方面可提高检索效率,另一方面可节省块表占用的空间。 请参考图6,比如将一个64GB的第一 RAID阵列(arrayl)按照IGB的块大小划分为64块, arrayl的块表仅需要8个字节的空间,块表中bit位为1的表示对应的资源块已使用,为0 则表示对应的资源块未使用。再比如将一个32GB的第二 RAID阵列(array2)按照512M的 块大小划分为64块,第二 RAID阵列的块表同样也需要8个字节的空间,块表中bit位为1 的表示对应的资源块已使用,为0则表示对应的资源块未使用。进一步来说,如果所述指定 长度是多个不同的长度,此时可以进一步在块表中记录块的大小,这样可以满足其他管理 操作的需求,比如数据迁移等等,但这与本发明主题并不是紧密相关的,不再进一步讨论。步骤102,创建逻辑资源(LUN)前先判断该LUN预设的空间分配标记是否为真,如 果是转步骤104,否则转入步骤103 ;步骤103,在创建逻辑资源时为该LUN建立索引区,该索引区用于记录LUN线性 空间和分配给该LUN的物理资源块的对应关系,该索引区中所有指向物理资源块的索引 (Block索引)的初始值为空;该索引区中所有Block对应的写标记(Write_flag)初始值 为假;步骤104,在创建逻辑资源时为该LUN分配实际的物理资源块,修改对应的块表, 为该LUN建立索引区,该索引区用于记录LUN线性空间和分配给该LUN的物理资源块的对 应关系,该索引区中所有指向物理资源块的索引(Block索引)的初始值指向对应的物理资 源块;该索引区中所有Block对应的写标记(write_flag)初始值为假。步骤101至步骤 104由资源管理单元11执行。步骤103与步骤104的差别主要在于是否真实地分配物理空间。步骤104为逻辑 资源分配的真实的空间,所谓真实分配是指在逻辑资源占用的RAID阵列的块表中将分配 给该逻辑资源的资源块标记更新为已使用状态;为该逻辑资源建立索引区以记录逻辑资源 线性逻辑空间与其自身分配到的RAID资源块物理空间的对应关系。而步骤103只是虚拟分 配空间,虚拟分配到的资源块在索引区的Block索引是空,并没有指向任何真实的资源块, 块表中的任何资源块的状态也没有因此被标记为已分配使用。所谓虚拟分配只是为让主机 侧认为其已经获得了相应的存储空间。在创建逻辑资源时,本发明引入一个新的参数一空间分配标记,该标记包括真假 两种状态(比如1和0),分别对应表示创建逻辑资源时是否需要分配真实的物理空间。当 然这一参数并不是必须的,因为在有些应用场景中,所有的LUN都只需要虚拟分配或者只需要真实分配空间。假设分配标记为真,则创建LUN时需要分配真实的物理空间。此时需要在预先设 定的索引区记录逻辑资源对应到哪些资源块。请参考图7,索引区中的前四行记录了第一 RAID阵列的哪些资源块被分配给了 LUN1,以标记A0B10为例,其表示arrayl的第十个资源 块,即块表中第二行从左到右第二个位置所表示的资源块,这个索引区记录了逻辑资源线 性逻辑空间与RAID资源块物理空间的对应关系。虽然图6所示的情形是LUNl对应的所有 资源块都在一个RAID阵列中。很容易理解的是,LUm对应的资源块可以分布在不同的RAID 阵列中。如果分配了其他RAID阵列的资源块的话,则需要在索引区中进行同样的记录。假 设针对LUN启用了自动精简配置特性,则LUN虚拟分配到的所有资源块的索引区标记都是 空。步骤103以及步骤104中针对每个资源块,无论是虚拟分配还是真实分配的,均设 定一个write_flag,其同样包括真假两种状态(比如1和0),以表明该资源块在分配之后 是否已经写入数据。这一标记将在后续流程中协助为用户分配真实空间或者回收真实空 间。步骤105,请参考图8,LUN上接收到IO读请求时,判断Block索引是否为空,如果 是则返回全0(表示主机读取的区域数据为空),如果否,则访问Block索引对应的资源块。步骤106,请参考图9,LUN上收到IO写请求时,判断Block索引是否为空,如果是, 真实分配一个空闲的资源块,相应修改块表以及Block索引,然后将数据写入该资源块;否 则将数据写入该Block索引对应的资源块,同时将写入数据的资源块的write_f lag修改为 1。步骤105和106由正向空间管理单元执行。在读取Block索引为空的资源块时返回全0是因为用户之前并没有实际写入任何 数据,所以该资源块上肯定是空白,所以此时不需要分配实际的资源块,只需要返回全0即 可。而写入数据的时候,表明用户需要当前的访问位置存在真实的存储空间,如果Block索 引是空,则显然需要分配一个真实的资源块,同时创建反应逻辑空间与物理空间映射关系 的Block索引,然后将数据写入。而write_f lag的设置则与步骤107与108相关,步骤107 与108由反向空间分配单元执行。需要说明的是,步骤107与108并不是实现本发明所必 需的步骤,同样的道理Write_flag参数也不是必须设置的。步骤107,将空间分配标记为真的LUN中资源块的Write_flag标记为假的Block 索引修改为空,并在块表中将对应的资源块修改为空闲;在具体实现上,请参考图10 步骤1071,顺序读取空间分配标记为真的LUN的逻辑索引区中的下一条Block索 引(初始为第0条),如果读取到下一条,转步骤1072,如果读取不到,表明已经读取到最后 一条,转步骤1074;步骤1072,进一步判断对应资源块的write_f lag是否为假,如果是转步骤1073, 否则返回步骤1071 ;步骤1073,将该Block索引修改为空,并在块表中将对应的资源块修改为空闲;返 回 1071 ;步骤1074,将该LUN的空间分配标记修改为假。很明显对于存在Block索引但Write_flag为0的资源块表示用户实际上没有向该资源块写入任何用户数据,因此可以回收起来供其他LUN分配使用。而步骤1074,由于 所有存在Block索引但Write_flag为0的空闲资源块都被回收了,且LUN此时分配到的实 际资源块的容量小于向主机用户分配的LUN容量,因此该LUN空间分配标记应该被修改为 假。步骤107所应用的场景是,某些需要预先分配物理空间的应用本身可能会发生变化,导 致已经分配出去的物理空间长期闲置,此时本发明可以对此进行回收加以利用。步骤108,为空间分配标记为假的LUN索引区中Block索引为空的Block索引分配 资源块,并更新块表以及LUN索引区的Block索引。在具体实现上,请参考图11 步骤1081,顺序读取空间分配标记为假的LUN索引区中的下一条Block索引(初 始为第0条),如果读取到下一条,转步骤1072,如果读取不到,表明已经读取到最后一条, 转步骤1074 ;步骤1082,进一步判断对应资源块的write_f lag是否为假,如果是转步骤1083, 否则返回步骤1081 ;步骤1083,对应分配一个空闲资源块,并更新块表以及该资源块的Block索引;返 回 1081 ;步骤1084,将该LUN的空间分配标记修改为真。针对空间分配标记设置为假的LUN,如果应用需求发生了变更,比如说顺序访问 居多且要求10响应时间越短越好,利用本发明也可以动态的、在线的为LUN预分配所有的 真实物理空间,因而能够及时地响应用户需求的变化。在本发明中,所有空间分配标记为假的LUN可共享存储系统中所有空闲的Block, 支持谁使用谁分配的原则;同时对于用户需求的变化,及时地进行反向空间分配操作,最大 程度的提高资源空间利用率,避免了磁盘空间的浪费,降低了用户部署网络存储系统的成 本,同时能及时响应用户需求的变化。本发明需要补充说明的是,本申请人在之前以及后续申请的相关专利申请中对逻 辑单元划分的标准并不相同,其出发点是为了更好地让本领域普通技术人员了解各个发明 独特之处,达到充分公开之目的。在不同的申请中,即便对于名称相同的逻辑单元,其执行 的步骤可能也不尽相同。因此并不能依据其他相关申请对本发明做出限制性的解释。以上 所述仅仅为本发明较佳的实现方式,任何基于本发明精神所做出的等同的修改皆应涵盖于 本发明的权利要求范围中。
权利要求
1.一种网络存储系统空间分配管理装置,用于执行网络存储系统内的资源管理操作, 其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连 接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理装置包括资源管理单元,用于使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划 分为多个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;其中该资 源管理单元进一步用于在创建逻辑资源(LUN)时为该LUN建立索引区,该索引区用于记录 LUN线性空间和分配给该LUN的物理资源块的对应关系,该索引区中所有指向物理资源块 的索引(Block索引)的初始值为空;正向空间管理单元,用于在LUN上接收到IO读请求时,判断要访问的区域对应的Block 索引是否为空,如果是则返回区域数据为空,如果否,则访问该Block索引对应的资源块; 以及用于在LUN上接受到IO写请求时,判断要访问的区域对应的Block索引是否为空,如 果是,则对应分配一个空闲的资源块,触发资源管理单元相应修改块表以及LUN索引区,然 后将数据写入该新分配的资源块;否则将数据写入该Block索引对应的资源块。
2.根据权利要求1所述的装置,其特征在于,所述资源管理单元,进一步用于在创建 LUN时判断该LUN对应的预设空间分配标记是否为真,如果不为真则继续;如果为真则为该 LUN分配物理资源块并更新块表,并为该LUN建立索引区,该索引区中所有指向物理资源块 的索引(Block索引)的初始值指向对应的资源块。
3.根据权利要求2所述的装置,其中所述资源管理单元在LUN索引区中还记录资源块 写标记(write_flag),所述正向空间管理单元在资源块写入数据后,将对应的Write_flag 修改为真,其特征在于,该装置还包括反向空间管理单元,用于将空间分配标记为真的LUN对应的索引区中write_flag标记 为假的Block索引修改为空,并触发资源管理单元在块表中将对应的资源块修改为空闲; 该LUN的所有资源块都处理完成后,将空间分配标记修改为假。
4.根据权利要求2所述的装置,其中所述资源管理单元在LUN索引区中还记录资源块 写标记(write_flag),所述正向空间管理单元在资源块写入数据后,将对应的Write_flag 修改为真,其特征在于,该装置还包括反向空间管理单元,用于将空间分配标记为假的LUN对应的索引区中Block索引为空 的Block索引分配物理资源块,并触发资源管理单元更新块表以及LUN索引区的Block索 引;该LUN的所有资源块都处理完成后,将空间分配标记修改为真。
5.根据权利要求1所述的管理装置,其中所述多个资源块大小相同。
6.一种网络存储系统空间分配管理方法,用于执行网络存储系统内的资源管理操作, 其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连 接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理方法包括步骤A,使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划分为多个资 源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;步骤B,在创建逻辑资源(LUN)时为该LUN建立索引区,该索引区用于记录LUN线性 空间和分配给该LUN的物理资源块的对应关系,该索引区中所有指向物理资源块的索引 (Block索引)的初始值为空;步骤C,在LUN上接收到IO读请求时,判断要访问的区域对应的Block索引是否为空,如果是则返回区域数据为空,如果否,则访问该Block索引对应的资源块;步骤D,在LUN上接受到IO写请求时,判断要访问的区域对应的Block索引是否为空, 如果是,则对应分配一个空闲的资源块,触发资源管理单元相应修改块表以及LUN索引区, 然后将数据写入该新分配的资源块;否则将数据写入该Block索引对应的资源块。
7.根据权利要求6所述的方法,其特征在于,还包括步骤E,在创建LUN时判断该LUN对应的预设空间分配标记是否为真,如果不为真则继 续;如果为真则为该LUN分配物理资源块并更新块表,并为该LUN建立索引区,该索引区中 所有指向物理资源块的索引(Block索引)的初始值指向对应的资源块。
8.根据权利要求7所述的方法,还包括步骤F,在LUN索引区中还记录资源块写标记(write_f lag),并在在资源块写入数据 后,将对应的write_flag修改为真;步骤G,将空间分配标记为真的LUN对应的索引区中write_flag标记为假的Block索 引修改为空,并在块表中将对应的资源块修改为空闲;该LUN的所有资源块都处理完成后, 将空间分配标记修改为假。
9.根据权利要求7所述的方法,还包括步骤F,在LUN索引区中还记录资源块写标记(write_flag),并在在资源块写入数据 后,将对应的write_flag修改为真;步骤H,将空间分配标记为假的LUN对应的索引区中Block索引为空的Block索引分 配物理资源块,并更新块表以及LUN索引区的Block索引;该LUN的所有资源块都处理完成 后,将空间分配标记修改为真。
10.根据权利要求6所述的管理方法,其中所述多个资源块大小相同。
全文摘要
本发明提供一种网络存储系统空间分配管理装置及方法,用于执行网络存储系统内的资源管理操作,其包括资源管理单元,创建RAID并把该RAID的可用空间根据指定长度划分为多个资源块并创建块表;创建逻辑资源时为该其建立索引区,该索引区中所有指向物理资源块的索引初始值为空;该装置还包括正向和反向空间管理单元,前者用于在处理逻辑资源上的IO请求时使能实际物理资源块的分配,后者用于闲置资源块的回收与利用。本发明通过资源块的分配和回收,有效提高了存储空间的利用效率。
文档编号H04L29/08GK102123176SQ20111006404
公开日2011年7月13日 申请日期2011年3月17日 优先权日2011年3月17日
发明者李宏文 申请人:杭州宏杉科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1