一种磁盘空间管理方法及系统技术方案

技术编号:2838696 阅读:225 留言:0更新日期:2012-04-11 18:40
本发明专利技术适用于计算机领域,提供了一种磁盘空间管理方法及系统,所述方法包括下述步骤:A.设置位图二叉树表,用于记录空间块的地址、使用状态及空间块之间的父子关系;B.利用所述位图二叉树表对空间块进行分配和回收。采用本发明专利技术进行磁盘空间管理时,除正常的分配回收能力外,具有最佳的磁盘I/O性能。同时,空间可快速合并,形成大的可闲块,利用率高,不会产生碎片。另外,具有良好的数据灾难恢复能力,且不需要占用额外的资源。

【技术实现步骤摘要】

本专利技术属于计算机领域,尤其涉及对磁盘空间进行管理的方法及系统。
技术介绍
伙伴(Buddy)算法是Linux下的一种内存管理算法,只能分配2n字节的空间块,n≥12(即至少是4kb)。空间块之间的关系可由图1的二叉树表示,除了叶子,每块都可以拆半分裂成两块以供分配,回收的两块相邻兄弟空闲块可以合并成其父结点-更大的空闲块。由于块与地址空间有一一对应关系,所以其相邻结点的位置确定而且唯一,父结点也确定而唯一。例如512MB块的地址一定是0、512M、1024M,1536M,其中0与512M是相邻结点,其父结点的地址是0。伙伴算法的优点是由于空闲结点可以很方便的合并成更大的空闲块,所以不会产生不可回收碎片。在利用伙伴算法进行内存空间管理时,由两部分结构来保存分配回收信息,这两部分都是内存结构。参见图1,空闲队列用于将空闲块分类组织起来,便于分配空间,当所需的长度没有时,则向下查找更大的空闲块以分裂出所需空间。右边的二叉树表示了所有结点的占用关系与邻接关系,由其可方便的查找一个回收空闲块其相邻结点的占用情况,便于递归向上合并空闲结点,产生更大的空闲块-父结点。磁盘数据文件通常有两种,一种是格式固定,不能动态改变或是改变时不能回收空闲的空间,不具备磁盘空间管理能力。另一种有分配回收的普通空间管理能力。如图2所示,普通空间管理通常的做法是将未占用空间分配成固定大小的块和同类大小的块,回收时通过链式串起来成为对应块长度的空闲队列。但通常为了更好的使用空间,可以支持若干种大小的分配,每种大小都形成一个空闲队列,空闲队列用光,则从未占用空间分配对应大小。由于结点不分裂,故不可能有非常大的结点类型,对某些数据流的保存(比如长度达到某级别),通常只能以物理上链式指针来保存表达。在上述普通磁盘空间管理方案中,由于考虑到磁盘读取效率,不能合并回收的空闲块,所以每种回收队列的长度都与历史峰值有关,即使大小支持的种类分得细,也不能有效提高利用率。同时,对于某些数据流的链式结构表达,由于其不连续,在I/O(输入/输出)时需要开销额外的时间用于磁头重定位。操作系统对簇进行操作时需要读取比较多的无用信息,或是由于结点跨簇,从而开销更多的簇操作单位,降低了磁盘的I/O性能。另外,由于每块的位置都不一致,无法支持数据的灾难恢复,需要对数据进行额外备份。
技术实现思路
本专利技术的一个目的在于提供一种磁盘空间管理方法,旨在解决现有技术中存在的在磁盘管理过程中空闲块无法回收,I/O性能较低且需要额外的资源进行灾难恢复的问题。本专利技术的另一个目的在于提供一种磁盘空间管理系统。本专利技术是这样实现的一种磁盘空间管理方法,所述方法包括下述步骤A.设置位图二叉树表,用于记录空间块的地址、使用状态及空间块之间的父子关系;B.利用所述位图二叉树表对空间块进行分配和回收。所述步骤B进一步包括当数据输入磁盘时,查找所述位图二叉树表,分配与存储所述数据的空间块;当数据输出磁盘时,回收对应的空闲空间块;根据空间块的分配或者回收状态更新所述位图二叉树表,保持所述位图二叉树表的结构与磁盘空间的使用状态一致。所述方法进一步包括C.将所述位图二叉树表映射到内存,将空间管理的磁盘操作转换为内存操作。所述方法进一步包括D.在发生灾难时,恢复所述位图二叉树表。所述步骤D进一步包括D1.设置磁盘灾难标志和内存灾难标志;D2.根据所述磁盘灾难标志和内存灾难标志是否同步判断是否发生灾难,当判断发生灾难时,扫描磁盘空间,根据磁盘空间的实际使用状态遍历所述位图二叉树表,对所述位图二叉树表进行结构更新。一种磁盘空间管理系统,所述系统包括对外接口模块,用于接收外部输入的数据,或者将磁盘保存的数据对外输出;数据读写模块,用于将所述对外接口模块接收的数据写入磁盘,或者将磁盘保存的数据通过所述对外接口模块输出;位图二叉树表管理模块,用于设置位图二叉树表,并利用所述位图二叉树表对空间块进行分配和回收;所述位图二叉树表用于记录空间块的地址、使用状态及空间块之间的父子关系。所述系统进一步包括内存镜像映射模块,用于将所述位图二叉树表映射到内存,将空间管理的磁盘操作转换为内存操作。所述系统进一步包括灾难标志管理模块,用于设置磁盘灾难标志和内存灾难标志;灾难恢复管理模块,用于根据所述磁盘灾难标志和内存灾难标志是否同步判断是否发生灾难,当判断发生灾难时,扫描磁盘空间,根据磁盘空间的实际使用状态遍历所述位图二叉树表,对所述位图二叉树表进行结构更新。采用本专利技术进行磁盘空间管理时,除正常的分配回收能力外,具有最佳的磁盘I/O性能。同时,空间可快速合并,形成大的可闲块,利用率高,不会产生碎片。另外,具有良好的数据灾难恢复能力,且不需要占用额外的资源。附图说明图1是伙伴(Buddy)算法中的二叉树结构示意图;图2是现有技术中提供的普通磁盘空间管理的实现示意图;图3是本专利技术提供的磁盘管理文件的结构图;图4是本专利技术提供的位图二叉树表的结构示意图;图5是本专利技术提供的磁盘空间分裂和回收的实现示意图;图6是在本专利技术中的簇组成示意图;图7是本专利技术提供的初始化过程中的灾难恢复的实现流程图;图8是本专利技术中磁盘运行期的动态输入输出时的位图二叉树表更新示意图;图9是本专利技术提供的磁盘管理系统的组成结构图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术将伙伴算法对于内存空间管理应用于磁盘空间管理,在解决其引入磁盘空间管理带来的问题基础上,利用其特点提供了性能良好、安全而有灾难恢复能力的磁盘空间管理方案,由于结点位置固定,而且其中没有链式指针,不全因指针数据不同步而产生结构错误。在本专利技术中,首先将磁盘管理文件写入到磁盘中,图3示出了磁盘管理文件的结构,包括灾难标志、位图二叉树表以及正文,灾难标志、位图二叉树表为磁盘管理文件的Header(头部)部分。其中,位图二叉树表用来记录磁盘空间中结点(空间块)的大小以及使用情况,当数据写入磁盘或者数据被删除时,相应结点被分配或者回收,位图二叉树表的结构将发生更新。正文是用来分配装载数据的磁盘空间。灾难标志用来标识磁盘管理文件是否处于灾难状态,以判断是否进行灾难恢复。本专利技术使用位图二叉树表来同时表达伙伴算法中的空闲回收队列与二叉树结构,如图4所示。位图的下标之间的关系反映了如同二叉树的结点父子关系,以位图的值的0与1表示结点的占用状态,该位图二叉树表占用磁盘空间的前64KB。由位图二叉树表的位图下标,可得知某结点的相邻结点的位置与使用情况,也可知某种长度的结点所对应的位图下标上下限。因此,当数据写入磁盘需要分配空间时,可先于该范围内查找空闲结点,如果找不到则递归向更大结点的位图下标上下限内查找空闲块,以分裂产生所需的空间块。当需要对空闲结点进行回收时,由位图可以确定相邻结点的占用状态,并递归向上合并结点,如图5所示。如果直接操作磁盘上的位图二叉树表,会由于磁盘I/O造成性能下降,本专利技术将该位图二叉树表映射到内存成为一个镜像,由于磁盘管理文件映射同步到磁盘的操作,会自动发生在磁盘管理文件映射关闭时由操作系统处理,所以使用时只需操作内存镜像,相当于纯内存操作,参见图本文档来自技高网
...

【技术保护点】
一种磁盘空间管理方法,其特征在于,所述方法包括下述步骤:A.设置位图二叉树表,用于记录空间块的地址、使用状态及空间块之间的父子关系;B.利用所述位图二叉树表对空间块进行分配和回收。

【技术特征摘要】
1.一种磁盘空间管理方法,其特征在于,所述方法包括下述步骤A.设置位图二叉树表,用于记录空间块的地址、使用状态及空间块之间的父子关系;B.利用所述位图二叉树表对空间块进行分配和回收。2.如权利要求1所述的磁盘空间管理方法,其特征在于,所述步骤B进一步包括当数据输入磁盘时,查找所述位图二叉树表,分配与存储所述数据的空间块;当数据输出磁盘时,回收对应的空闲空间块;根据空间块的分配或者回收状态更新所述位图二叉树表,保持所述位图二叉树表的结构与磁盘空间的使用状态一致。3.如权利要求1所述的磁盘空间管理方法,其特征在于,所述方法进一步包括C.将所述位图二叉树表映射到内存,将空间管理的磁盘操作转换为内存操作。4.如权利要求3所述的磁盘空间管理方法,其特征在于,所述方法进一步包括D.在发生灾难时,恢复所述位图二叉树表。5如权利要求4所述的磁盘空间管理方法,其特征在于,所述步骤D进一步包括D1.设置磁盘灾难标志和内存灾难标志;D2.根据所述磁盘灾难标志和内存灾难标志是否同步判断是否发生灾难,当判断发生灾难时,扫描磁盘空间,根据磁盘...

【专利技术属性】
技术研发人员:谢尚成
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1