CN100557571C - 一种资源分配方法和系统 - Google Patents
一种资源分配方法和系统 Download PDFInfo
- Publication number
- CN100557571C CN100557571C CNB2007101794319A CN200710179431A CN100557571C CN 100557571 C CN100557571 C CN 100557571C CN B2007101794319 A CNB2007101794319 A CN B2007101794319A CN 200710179431 A CN200710179431 A CN 200710179431A CN 100557571 C CN100557571 C CN 100557571C
- Authority
- CN
- China
- Prior art keywords
- file
- resource
- allocation
- resources
- logical place
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000013468 resource allocation Methods 0.000 title claims abstract description 12
- 230000002045 lasting effect Effects 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims description 16
- 238000007726 management method Methods 0.000 claims description 15
- 238000011084 recovery Methods 0.000 claims description 14
- 238000012423 maintenance Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 abstract description 7
- 239000002699 waste material Substances 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000013507 mapping Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004308 accommodation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种资源分配方法和系统,首先申请资源,获取(blk_start,blk_len),在文件索引节点中增加(blk_offset,blk_start,blk_len)域;然后从预分配资源中获取资源记录到文件布局中,进行资源分配;释放文件布局资源,如果存在预分配资源,则释放预分配资源。通过持久预分配技术,使得本方法和系统适用范围广,而且本发明通过采用异步回收机制对预分配资源进行回收,避免了文件数量巨大情况下的空间浪费严重,且能够自动确定预分配的粒度。
Description
技术领域
本发明涉及共享存储系统的资源分配技术,特别涉及一种资源分配方法和系统。
背景技术
在流媒体等以及其他针对大文件顺序访问的应用中,文件连续资源分配可以减少在大文件顺序访问过程中磁盘磁头移动这一很大影响磁盘性能的磁盘操作,从而提高磁盘的利用率并提高文件访问性能。但在多进程环境下,当多个进程同时创建不同文件时,由于存储资源的共享以及多个进程之间的相互影响,导致了每个文件的连续性较差,从而影响文件的顺序访问性能。另外,如果文件的连续性差,则经过文件资源的随机删除、创建等操作后,也加剧了文件系统资源的碎化程度,对文件系统的性能也会造成影响。因此,在多进程环境下保证文件连续的资源分配是文件系统需要解决的一个问题。
现有文件系统未能较好地解决以上问题。ext4文件系统中的文件布局(layout)采用块段(extent)方式,把预分配的资源一次性全部记录到文件布局中,并全部标记为未占用。该机制存在如下问题:不能应用在ext2和ext3等文件布局不采用块段方式的文件系统中;当文件的数量较多时,由于每个文件都持有一部分预分配资源,然而本机制没有提供对这类资源的回收机制,从而造成资源浪费;预分配资源的粒度不能自动生成,需要由用户通过ioctl接口设置或通过应用程序进行修改。
发明内容
本发明目的是提供一种资源分配方法和系统,解决现有技术适应范围的局限问题。
为实现上述目的,根据本发明的一个方面,提供了一种资源分配方法,包括下列步骤:
1)确定资源预分配粒度,申请预分配资源,得到物理资源起始块号;
2)在文件索引节点中增加域,在域中记录文件期望逻辑位置、物理资源的起始块号和资源预分配粒度,其中所述文件期望逻辑位置是预期的文件目标逻辑位置;
3)为文件目标逻辑位置进行资源分配,其中包含,把所述物理资源起始块号表示的物理资源映射到该文件目标逻辑位置,并把此映射记录到文件布局中,更新上述域内容为文件目标逻辑位置加1、物理资源的起始块号加1和资源预分配粒度减1。
根据本发明的另一方面,上述步骤3)后包含步骤4)释放文件布局资源,如果存在预分配资源,则释放预分配资源。
根据本发明的又一方面,上述步骤2)在所述域中记录文件期望逻辑位置、所述物理资源的起始块号和所述资源预分配粒度之后,还包含把文件插入到预分配资源文件链表中;上述步骤4)在所述释放文件布局资源之后,如果所述预分配资源文件链表中包括该文件,则还包含从预分配资源文件链表中删除该文件;还包括步骤5)异步回收文件预分配资源的步骤。
根据本发明的又一方面,提供了一种资源分配系统,包含:
与存储资源连接的资源管理部件;与资源管理部件连接的控制部件;其中控制部件具有接收文件的接口;
其中所述控制部件由持久预分配部件和文件连续分配部件组成,其中,所述持久预分配部件用于确定资源预分配粒度,从所述资源管理部件中申请预分配资源,在文件索引节点中增加记录文件期望逻辑位置、物理资源的起始块号和资源预分配粒度的域,其中所述文件期望逻辑位置是预期的文件目标逻辑位置;所述文件连续分配部件用于资源分配,其中包含,把所述物理资源起始块号表示的物理资源映射到所述文件目标逻辑位置,并把所述映射记录到文件布局中,更新所述域内容。
根据本发明的又一方面,上述控制部件还包含文件预分配资源异步回收部件,用于回收空闲预分配资源。
与现有技术相比,本发明的有益效果在于:通过持久预分配技术,使得本方法和系统适用范围广,除了可以适用ext4文件系统外还可以适用于ext2和ext3等采用非块段结构的文件系统。而且本发明通过采用异步回收机制对预分配资源进行回收,避免了文件数量巨大情况下的空间浪费严重,且能够自动确定预分配的粒度。
附图说明
以下,结合附图来详细说明本发明的实施例,其中:
图1是ext4系统中文件布局结构图。
图2是本发明用于保证文件连续资源分配系统结构图。
具体实施方式
在ext4文件系统中,当文件进行资源分配时,文件布局采用了块段方式,把预分配资源以(file offset,blk start,blk len)的方式记录到文件布局中,标志文件逻辑位置(file offset,blk len)对应物理存储位置(blk start,blk len);另外,还设置未被使用的标志,标识资源是否被使用,以表明该部分资源是否为空洞,也即是否已经被分配但是还未被写过。
ext4文件系统中基于块段的文件布局结构如下:
struct ext4_extent{
_le32 ee_block;
_le16 ee_len;
_le16 ee_start_hi;
_le32 ee_start;
};
其中,ee_block代表文件逻辑块号;ee_len代表该块段的粒度,ee_len总位数是16位,用最高位表示“invalid”标志,表明该块段是否被修改过,也即是否是空洞;剩余的两个域拼接成为一个48位块号,代表物理块号。
ext4系统中文件布局结构如图1所示。预分配的资源块段在文件布局中的位置和数量都是不固定的。图1左边是文件布局中内容,其中示出有两个块段(0,1000,200)和(1001,2000,6000),分别表示文件逻辑位置从0开始、长度是1000的逻辑资源,映射到物理块号从200开始、长度是1000的物理资源,以及文件逻辑位置从1001开始、长度是2000的逻辑资源,映射到物理块号从6000开始、长度是2000的物理资源。因为“invalid”标志没有置位,所以这两个块段都不是空洞资源,也即不是预分配资源,但如果“invalid”标志置位,就表明是预分配资源,因此预分配资源在ext4的文件块段中的位置和数量都是不固定的。该系统不能应用在ext3等文件布局不采用块段方式的文件系统中。
针对以上问题,本发明通过采用持久预分配技术,实现了一种适用于ext2、ext3和ext4系统的资源分配方法,从而不受文件布局是否采用块段方式的限制。下面结合附图和具体实施方式对本发明做详细描述。
根据历史的资源预分配的命中情况,确定资源预分配的粒度blk_len,代表获取的物理资源的长度,以块为单位,对应于ext4系统中ee_len,二者区别在于blk_len并不设置“invalid”标志位。除了通过用户设置等方式确定blk_len外,优选地通过以下方式确定:资源预分配的粒度设置一个最大值和一个最小值。如果是第一次预分配资源,则设置预分配粒度为最小值;否则,如果上次预分配的资源在实际分配过程中命中,则调整资源预分配粒度为上次预分配粒度的2倍,且粒度调整最大不超过资源预分配粒度的最大值;如果上次预分配的资源在实际分配过程中不命中,则重置资源预分配粒度为资源预分配粒度的最小值。
确定资源预分配粒度后,向资源管理部件申请相应粒度的资源,获取(blk_start,blk_len)。其中blk_start为预分配物理资源的起始块号,对应于ext4系统中ee_start_hi与ee_start拼接而成的48位块号。
在文件的索引节点中增加(blk_offset,blk_start,blk_len)域,在此域中持久记录(blk_offset,blk_start,blk_len),表示从物理位置blk_start开始长度为blk_len的物理连续资源预分配给从文件逻辑位置blk_offset开始长度为blk_len的文件逻辑连续空间,其中文件期望逻辑位置blk_offset为预分配资源预期对应的文件逻辑资源开始位置。
把该文件插入到预分配资源文件链表(pre_res_list)中,标志该文件目前存在预分配资源,在异步回收过程中,可以把该持久预分配资源释放。
在为文件进行资源分配时,首先获取要分配资源文件目标逻辑位置file_offset。
如果该文件目前没有预分配资源,则进行资源预分配,获取(blk_start,blk_len)。预分配完毕后,首先把块号blk_start分配给文件的逻辑位置file_offset,并把该分配关系记录到文件布局中;然后,修改预分配域(blk_offset,blk_start,blk_len)为(file_offset+1,blk_start+1,blk_len-1)进行持久保存,并设置文件中的预分配命中标志;最后,如果blk_len-1等于0,则把该文件从预分配资源文件链表中删除,表示该文件已经不存在预分配资源了。
如果该文件当前存在预分配资源,则检测file_offset同预分配资源(blk_offset,blk_start,blk_len)中的blk_offset的关系。如果file_offset等于blk_offset,表示预分配命中,则设置文件中的预分配命中标志,并把blk_start资源分配给file_offset位置,修改持久预分配资源为(file_offset+l,blk_start+1,blk_len-1);如果file_offset不等于blk_offset,表示预分配没有命中,则清除文件中的预分配命中标志,并把预分配资源从blk_offset处转移到file_offset处,把blk_start资源分配给file_offset位置,修改预分配资源为(file_offset+1,blk_start+1,blk_len-1)。以上两种情况,当blk_len-1等于0时,把该文件从预分配资源文件链表中删除,表示该文件已经不存在预分配资源了。
ext4中预分配资源同文件逻辑位置的映射关系是固定的,并且不允许迁移,虽然文件的连续性保证很强,但是可能造成文件中保持的预分配资源数量过多,造成资源过度浪费;而本发明中的映射关系可以动态转移,当file_offset同blk_offset不相等时,也即表示预分配不命中时,把预分配资源从文件的预期逻辑位置blk_offset,转移到文件目标逻辑位置file_offset,预分配资源对应的文件逻辑位置不固定,体现了灵活性。本发明虽然在随机分配文件资源情况下,会破坏文件的连续分配方式,但是避免了ext4文件系统的资源过度浪费问题,并且随机分配文件资源的情况相对非常少,造成的影响很小。
在删除文件时,释放文件布局中资源;如果预分配资源(blk_offset,blk_start,blk_len)中blk_len大于0,表示存在预分配资源,还需要通过资源管理部件把(blk_start,blk_len)资源进行释放,把该文件从预分配资源文件链表中移除。
对文件预分配资源进行异步回收,需要首先判断是否需要触发异步回收进程。此判断需要考虑两个因素:系统整体的资源状况,当系统的整体资源状况低于一定的域值后,需要触发该进程以释放资源;预分配资源数量的多少,当此数量较多,超过一定的域值后,需要触发该进程,进行资源的释放。以上两个条件只要满足其一,就需要触发该异步进程。
在异步回收过程中,首先需要确定本次回收过程需要释放多少资源。异步回收一般不会一次把所有的预分配资源全部回收,一方面是某些资源是不应当回收的,另外一方面是如果一次全部回收,则异步进程对整个系统的影响较大。采用一次回收一定比率的方式,来确定一次回收过程需要释放的资源数量。
其次,需要确定哪些文件的预分配资源需要释放,影响因素有两个,一个是文件资源分配访问的时间,优先释放很久都没有进行过资源分配的文件;另一个是文件持有的预分配资源的数量,优先释放持有资源数量较多的文件。以上两个因素需要综合考虑,优先考虑第一个因素。
最后,从预分配资源文件链表中,获取需要释放预分配资源的文件,把资源通过资源管理模块进行释放,把该文件从预分配资源文件链表中移除。
因为本发明采用链表的方式记录哪些资源需要释放,仅需要对固定位置的预分配空闲资源进行回收即可,所以成功避免了整个文件系统的遍历查询,提高了资源异步释放的检索效率。
ext4文件系统中没有提供资源预分配的回收机制,文件数量巨大情况下的空间浪费严重,本发明结合分配过程,提出了资源预分配的回收机制,成功解决了该问题。
对于本领域普通技术人员来说,本发明可以采用一种资源分配系统来实现,如图2所示,该系统包含如下几个部分:
与存储资源1连接的资源管理部件2;与上述资源管理部件2连接的控制部件3;所述控制部件3具有接收待处理的需要保证资源连续性分配的文件4的接口;下面对各部分进行详细说明:
资源管理部件2用于维护的存储资源1,进行存储资源1的分配、释放、查询等操作。存储资源1是具有一定容量的线性地址空间,该线性地址空间对相邻地址空间的访问性能优于对距离较远的地址空间的访问。
控制部件3由持久预分配部件、文件连续分配部件、预分配资源文件链表维护部件、文件预分配资源异步回收部件组成。持久预分配部件,用于确定资源预分配粒度,从资源管理部件2中申请预分配资源进行持久化,在文件索引节点中增加(blk_offset,blk_start,blk_len)域;文件连续分配部件用于资源分配,把blk_start表示的物理资源映射到blk_offset,并把该映射记录到文件布局中,更新域内容;预分配资源文件链表维护部件,用于管理维护占用预分配资源的文件的链表;文件预分配资源异步回收部件,用于对没有使用的预分配资源进行回收,以避免资源浪费。综合上面所述,由控制部件3接收文件4的连续资源分配请求,由持久预分配操作和文件连续分配操作,保证文件资源分配的连续性;由对预分配资源文件链表的操作和异步回收预分配资源操作完成预分配资源的回收。
对于本领域普通技术人员来说,上述的每个功能都可以采用硬件、软件或硬件和软件的适当组合的方式实现。应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
Claims (9)
1.一种资源分配方法,包含以下步骤:
1)确定资源预分配粒度,申请预分配资源,得到物理资源起始块号;
2)在文件索引节点中增加域,在所述域中记录文件期望逻辑位置、所述物理资源的起始块号和所述资源预分配粒度,其中所述文件期望逻辑位置是预期的文件目标逻辑位置;
3)为文件目标逻辑位置进行资源分配,其中包含,把所述物理资源起始块号表示的物理资源映射到所述文件目标逻辑位置,并把所述映射记录到文件布局中,更新所述域内容。
2.根据权利要求1所述的方法,其特征在于,所述步骤3)后包含步骤4)释放文件布局资源,如果存在预分配资源,则释放预分配资源。
3.根据权利要求1所述的方法,其特征在于,所述步骤2)在所述域中记录文件期望逻辑位置、所述物理资源的起始块号和所述资源预分配粒度之后,还包含把文件插入到预分配资源文件链表中;所述步骤3)后还包括异步回收文件预分配资源的步骤。
4.根据权利要求2所述的方法,其特征在于,所述步骤2)在所述域中记录文件期望逻辑位置、所述物理资源的起始块号和所述资源预分配粒度之后,还包含把文件插入到预分配资源文件链表中;所述步骤4)在所述释放文件布局资源之后,如果所述预分配资源文件链表中包括该文件,则还包含从预分配资源文件链表中删除该文件;还包括步骤5)异步回收文件预分配资源的步骤。
5.根据权利要求3或4所述的方法,其特征在于,所述异步回收文件预分配资源的步骤包含以下步骤:
根据系统资源状况和预分配资源状况,确定是否触发所述异步回收文件预分配资源;
对于确定触发所述异步回收文件预分配资源的情况,确定所述异步回收进程回收的资源数量和回收哪些资源,把所述预分配资源释放,把所述文件从预分配资源文件链表中移除。
6.根据权利要求1所述的方法,其特征在于,所述步骤1)的所述确定资源预分配粒度是根据历史预分配命中标志;所述步骤3)还包含如果所述文件目标逻辑位置等于文件期望逻辑位置,则设置命中标志,否则清除命中标志。
7.一种资源分配系统,包含:
与存储资源连接的资源管理部件;与所述资源管理部件连接的控制部件;其中所述控制部件具有接收文件的接口;
其中所述资源管理部件用于维护系统中的存储资源;
其中所述控制部件由持久预分配部件和文件连续分配部件组成,其中,所述持久预分配部件用于确定资源预分配粒度,从所述资源管理部件中申请预分配资源,在文件索引节点中增加记录文件期望逻辑位置、物理资源起始块号和资源预分配粒度的域,其中所述文件期望逻辑位置是预期的文件目标逻辑位置;所述文件连续分配部件用于资源分配,其中包含,把所述物理资源起始块号表示的物理资源映射到所述文件目标逻辑位置,并把所述映射记录到文件布局中,更新所述域内容。
8.根据权利要求7所述的系统,其特征在于,所述控制部件还包含预分配资源文件链表维护部件,用于维护占有预分配资源的文件的索引节点。
9.根据权利要求7所述的系统,其特征在于,所述控制部件还包含文件预分配资源异步回收部件,用于回收空闲预分配资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101794319A CN100557571C (zh) | 2007-12-13 | 2007-12-13 | 一种资源分配方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101794319A CN100557571C (zh) | 2007-12-13 | 2007-12-13 | 一种资源分配方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101183318A CN101183318A (zh) | 2008-05-21 |
CN100557571C true CN100557571C (zh) | 2009-11-04 |
Family
ID=39448606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101794319A Expired - Fee Related CN100557571C (zh) | 2007-12-13 | 2007-12-13 | 一种资源分配方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100557571C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101765208B (zh) * | 2008-12-26 | 2013-11-06 | 华为技术有限公司 | 资源分配的方法、网络设备和无线系统 |
CN102158408B (zh) * | 2011-04-01 | 2014-06-04 | 华为技术有限公司 | 数据流处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004199561A (ja) * | 2002-12-20 | 2004-07-15 | Hitachi Ltd | 計算機資源割当方法、それを実行するための資源管理サーバおよび計算機システム |
US20050283393A1 (en) * | 2003-11-20 | 2005-12-22 | New England 800 Company D/B/A Taction | System and method for event-based forecasting |
CN1866218A (zh) * | 2005-12-22 | 2006-11-22 | 华为技术有限公司 | 软件系统的资源管理方法 |
CN1996258A (zh) * | 2006-12-28 | 2007-07-11 | 武汉虹旭信息技术有限责任公司 | 一种动态内存池的实现方法 |
-
2007
- 2007-12-13 CN CNB2007101794319A patent/CN100557571C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004199561A (ja) * | 2002-12-20 | 2004-07-15 | Hitachi Ltd | 計算機資源割当方法、それを実行するための資源管理サーバおよび計算機システム |
US20050283393A1 (en) * | 2003-11-20 | 2005-12-22 | New England 800 Company D/B/A Taction | System and method for event-based forecasting |
CN1866218A (zh) * | 2005-12-22 | 2006-11-22 | 华为技术有限公司 | 软件系统的资源管理方法 |
CN1996258A (zh) * | 2006-12-28 | 2007-07-11 | 武汉虹旭信息技术有限责任公司 | 一种动态内存池的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101183318A (zh) | 2008-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321301B (zh) | 一种数据处理的方法及装置 | |
US20090077327A1 (en) | Method and apparatus for enabling a NAS system to utilize thin provisioning | |
CN108038002B (zh) | 一种嵌入式软件内存管理方法 | |
CN101556557B (zh) | 一种基于对象存储设备的对象文件组织方法 | |
EP3905054B1 (en) | File management method, distributed storage system, and management node | |
US8239648B2 (en) | Reclamation of thin provisioned disk storage | |
CN104899156A (zh) | 一种面向大规模社交网络的图数据存储及查询方法 | |
CN106294190B (zh) | 一种存储空间管理方法及装置 | |
CN106502587A (zh) | 磁盘数据管理方法和磁盘控制装置 | |
US9037830B2 (en) | Organization of a small object area and a large object area in a Java heap | |
CN105190573A (zh) | 存储数据的减少冗余 | |
CN103916467A (zh) | 一种元数据集群中负载转移方法及系统 | |
US20240264773A1 (en) | Data Prefetching Method, Computing Node, and Storage System | |
CN110955488A (zh) | 一种持久性内存的虚拟化方法及系统 | |
CN112631520A (zh) | 分布式块存储系统、方法、装置、设备和介质 | |
CN109960662B (zh) | 一种内存回收方法及设备 | |
CN111984604B (zh) | 一种减少日志结构文件系统碎片的方法及闪存存储系统 | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
CN100557571C (zh) | 一种资源分配方法和系统 | |
WO2012008731A2 (ko) | 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
KR100622130B1 (ko) | 객체 기반 스토리지 시스템에서 고속의 데이터 입출력을위한 객체 저장소 관리 시스템 및 방법 | |
JPH07325669A (ja) | ディスク管理方法 | |
CN103064793B (zh) | 精简配置容量回收方法和系统 | |
CN101324893B (zh) | 一种资源管理系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091104 |
|
CF01 | Termination of patent right due to non-payment of annual fee |