使用数据库管理系统管理文件系统的数据的方法

文档序号:6574702阅读:198来源:国知局
专利名称:使用数据库管理系统管理文件系统的数据的方法
技术领域
本发明涉及一种文件系统,更具体地讲,涉及一种使用数据库管理系统管理文件系统的数据的方法。
背景技术
与过去不同,最近多媒体技术的发展使得许多消费电子产品(例如,个人录像机、便携式摄像机和移动电话)提供有嵌入式硬盘,因此正积极地进行关于使用盘来有效管理数据的技术的研究项目。
在确定与将数据输入到盘和从盘输出数据有关的多种策略的文件系统中,一致性是非常重要的问题。可将文件系统的一致性分成元数据的一致性和数据的一致性。文件系统的元数据包括关于inode、目录、盘的空闲空间和空闲inode的信息。如果与这些元数据项有关的操作作为事务被执行,则可保持元数据的一致性。
同样,通过数据事务可保持数据的一致性,如果在更新操作中用于更新文件的一部分的数据事务被异常中断,则数据事务被完成,或好像事务从没有被开始执行一样被丢弃。
同时,数据库管理系统(DBMS)通过使用快速和有效的数据结构来可靠地存储数据,并保证事务。在过去,通过将这种DBMS方案应用于操作系统(OS)来尝试保护文件系统的一致性。
图1是示出现有技术的采用数据库的文件系统的结构的方框图。
在图1示出的文件系统中,通过使用内核Berkeley数据库(KBDB)来管理文件系统的元数据和文件数据,并将该数据库存储在传统的文件系统(例如,Ext2)中。在这种结构中,通过DBMS来执行文件系统的所有操作。
例如,当读取预定文件时,访问DBMS,并将block.db中存储的文件数据复制到缓冲区高速缓存中,当将数据写入文件中时,将缓冲区高速缓存中存储的数据存储到block.db中与所述数据相应的记录中。除了文件输入和/或输出操作以外的操作也通过使用DBMS被执行,因此可保证文件系统的一致性。
然而,由于其依赖存储数据库的传统的文件系统(Ext2),所以不能对于多种环境将这种KBDB文件系统(KBDBFS)最优化。即,DBMS(KBDB)仅提供事务操作,由存储数据库的文件系统来确定文件系统的大小、盘分配等。例如,当在这种文件系统中将数据存储在盘上时,文件系统(KBDBFS)将数据输入到DBMS(KBDB),DBMS(KBDB)通过使用传统的文件系统Ext2来将数据存储在盘上,因此文件系统(KBDBFS)不能参与实际的盘布局。因此,根据这种文件系统,即使设计了对于环境最优化的算法,也无法将所述最优化的算法应用于盘上块的分配。另外,在文件大小通常较大的多媒体环境中,DBMS产生的日志的大小增加,从而降低了文件系统的性能。

发明内容
本发明提供了这样一种方法使用数据库管理系统(DBMS)管理文件系统的元数据,将文件数据直接输入到盘或从盘输出文件数据而不涉及DBMS。
根据本发明的一方面,提供了一种在文件系统中管理数据的方法,包括当从应用程序接收到数据写请求时,通过使用管理文件系统的元数据的预定的数据库管理系统(DBMS)来搜索空闲盘空间;不涉及DBMS通过参照搜索结果,来将数据写入空闲盘空间;和通过使用DBMS来更新随写入的数据改变的一部分元数据。
从搜索操作到更新操作的所有操作可作为一个事务被DBMS管理。
所述文件系统可在用户级运行。
存储有数据的盘可与存储有元数据的盘不同。
更新所述一部分元数据的步骤可包括请求DBMS更新包含关于空闲空间的信息的数据库表、包含关于非空闲空间的信息的数据库表、和包含关于inode的信息的数据库表中的至少一个。
根据本发明的另一方面,提供了一种存储有用于执行所述方法的计算机程序的计算机可读记录介质。


通过参照附图对本发明示例性实施例的详细描述,本发明的以上和其他方面将变得更清楚,其中图1是示出现有技术的使用数据库管理元数据的文件系统的结构的方框图;图2是示出在根据本发明示例性实施例的文件系统中将数据存储在盘上的处理的流程图;图3示出存储根据本发明示例性实施例的文件系统的元数据的数据库的图表;图4是示出根据本发明示例性实施例的文件系统的方框图;图5是示出在根据本发明示例性实施例的文件系统中创建文件的处理的示图;图6是示出在根据本发明示例性实施例的文件系统中写文件的处理的示图;和图7是示出在根据本发明示例性实施例的文件系统中读取文件的处理的示图。
具体实施例方式
现在将参照附图更充分地描述本发明,在附图中示出本发明的示例性实施例。
图2是示出在根据本发明示例性实施例的文件系统中将数据存储在盘上的处理的流程图。
在操作210中,根据当前实施例的文件系统从用户应用程序接收将文件数据写到盘上的请求。为此,所述文件系统应该在与系统调用相应的用户级向应用程序层提供应用程序接口(API)。
在操作220,文件系统请求管理元数据的数据库管理系统(DBMS)开始事务。因此,在操作220之后将被执行的关于元数据的操作被认为是一个事务,并被保护。
在操作230,搜索空闲盘空间,以写入应用程序所请求的文件数据。此时,参照包括关于空闲盘空间的信息的数据库表来搜索空闲盘空间。随后将参照图3来解释用于管理DBMS的数据库图表的细节。
在操作240,将文件数据写入空闲盘空间。根据情况,可在操作230找到许多空闲块。可使用用户定义的盘分配算法来确定将把请求的文件数据存储到空闲块中的哪个块中。这是因为,在根据当前实施例的文件系统中,通过诸如Ext2或DBMS的传统文件系统来管理元数据,但是将文件数据写入盘或从盘读取文件数据由根据当前实施例的文件系统直接执行,而不通过DBMS或其他的文件系统(原始I/O)。换句话讲,由于通过DBMS提供的API来处理本发明示例性实施例的文件系统的元数据,所以所述文件系统不参与和元数据有关的盘布局。然而,关于文件数据,根据本发明示例性实施例的文件系统直接控制盘布局,因此可使用对于多媒体环境最优化的盘分配算法。另外,由于DBMS既不管理文件数据也不产生关于文件数据的日志,所以即使文件的大小增加,也不发生文件系统性能的降低。
在操作250,请求DBMS更新因为已将文件数据写到盘上而应该被改变的元数据。例如,可更新与关于inode、空闲盘空间和非空闲盘空间的信息有关的数据库表。
在操作260,请求DBMS终止事务。从而,由于DBMS将操作230至250认为是一个事务,所以保证了文件系统的元数据的一致性。例如,如果在操作250更新了包括关于非空闲空间的信息的数据库表,然后,在更新包括关于空闲空间的信息的数据库表之前,由于断电而导致电供应被切断,则DBMS将包括关于非空闲空间的信息的数据库表的更新视为好像没有发生更新一样,从而没有将有关数据应用于元数据。
另外,仅当操作240完成时执行操作250。即,仅在完成写入文件数据之后执行操作250。因此,在操作220和260之间执行操作240,从而保证了数据的一致性。然而,为了改善该文件系统的性能,可不考虑操作240是否完成来执行操作250。
同时,为了改善文件系统的性能,可将存储元数据的盘与存储文件数据的盘分开布置。
图3示出存储根据本发明示例性实施例的文件系统的元数据的数据库的图表。
超级块数据库(super.db)存储关于文件系统的状态的信息和inode位映射。可将关于整个文件系统的信息存储为一个记录。inode位映射也仅需要少量记录,因此该数据库具有基于记录号(RECNO)的数据结构,不需要二维索引。
目录数据库(dir.db)映射目录、文件名和inode号。
inode数据库(inode.db)映射inode号和相应文件的文件信息(例如,文件的大小和最后修改的时间)。如果创建了新的文件,则将新的inode记录添加到该数据库,如果删除了文件,则从该数据库删除与该文件有关的记录。
空闲空间数据库(freespace.db)管理分区的空闲空间。此时,可以以范围(extent)的形式来表示在数据库表中的关于空闲空间的信息,其中,所述范围是文件系统中的连续的存储区域。以范围的形式来表示所述信息的原因在于,与以位映射的形式来表示所述信息相比,可减小信息的大小。范围格式可用指定空闲空间的开始位置的块号和与空闲空间的大小相应的块数量来表示,或者可用指定空闲空间的开始位置的字节偏移和指示空闲空间的大小的字节单位来表示。在根据当前实施例的文件系统中,为了将数据写入文件,通过参照空闲空间数据库来搜索空闲盘空间。
范围数据库(extents.db)映射文件的偏移和包括文件数据的范围的块地址。
图4是示出根据本发明示例性实施例的文件系统的方框图。
如图4所示,根据当前实施例的文件系统包括Syscall模块402、Namei模块403、Super模块404、Dir模块405、Inode模块406、File模块407、Alloc模块408、DB抽象层(DBAL)模块410和OS抽象层(OSAL)模块409。另外,在当前实施例中,使用Berkeley DB 411作为DBMS,假定通过ext3 412将文件系统的元数据输入到盘和/或从盘输出文件系统的元数据。
Syscall模块402提供API,以允许应用程序401使用系统调用并请求DBMS 411开始和终止事务。
Namei模块403分析应用程序401调用的API函数,并确定将被更新的数据库。Super模块404请求DBMS 411搜索和更新super.db。Dir模块405请求DBMS 411搜索和更新dir.db。Inode模块406通过使用inode.db管理空闲的inode。
Alloc模块408获得关于空闲盘空间的信息,并通过使用对于多媒体环境或其他环境最优化的盘分配算法,确定将写入文件数据的块。
File模块407通过在内核级运行的OS模块(未示出)将文件数据输入到盘或从盘输出文件数据。例如,可以以将数据写入块装置文件或从块装置文件读取数据的方式来执行文件数据的输入和输出。
DBAL模块410是保证与Syscall模块402和DBMS 411兼容的接口。OSAL模块409是可根据OS变化的使块装置的处理可行的接口。
同时,如图4所示的根据当前实施例的文件系统在用户级运行,因此,所述文件系统的源代码不依赖OS。从而,与在内核级运行的文件系统相比,根据当前实施例的文件系统可被容易地安装(port)到其他OS,所速文件系统的维护也更容易。
图5是示出在根据本发明示例性实施例的图4中示出的文件系统中创建文件的处理的示图。在当前实施例中,假定没有使用DBAL模块410和OSAL模块409。
在操作501,应用程序401将文件名提供给Syscall模块402,并请求Syscall模块402创建文件。在操作502,Syscall模块402请求DBMS 411开始事务。在操作503,DBMS 411开始事务。
在操作504,Syscall模块402请求Namei模块403创建文件。在操作505,Namei模块403请求Super模块404提供将被分配给新的文件的inode。在操作506,被Namei模块403向其请求提供inode的Super模块404请求DBMS411搜索和修改super.db。在接收到该请求之后,DBMS 411通过参照inode位映射将空闲的inode分配给所述新的文件,并更新super.db(未示出)。
在操作507,Namei模块403请求Dir模块405将新的文件注册到目录中。从而,在操作508,Dir模块405请求DBMS 411搜索和修改dir.db。在接收到该请求之后,DBMS 411映射新的文件的名称和与该文件相应的inode,并将其存储在dir.db(未示出)中。
在操作509,Namei模块403请求Inode模块406执行新的inode的初始化。在操作510,Inode模块406请求DBMS 411将关于新的inode的信息注册到inode.db中。在接收到该请求之后,DBMS 411将与新的文件有关的信息存储在与所述新的文件相应的inode中(未示出)。
如果操作510完成,则在操作511,Namei模块403通知Syscall模块402文件产生被完成。在操作512,Syscall模块402请求DBMS 411终止事务。在操作513,DBMS 411终止在操作503开始的事务。
图6是示出在根据本发明示例性实施例的图4中示出的文件系统中写文件的处理的示图。在当前实施例中,假定没有使用DBAL模块410和OSAL模块409。
在操作601,应用程序401请求Syscall模块402将数据写入文件。此时,将文件的名称、数据、该数据的大小和该文件中的偏移信息传送到Syscall模块402。在操作602,Syscall模块402请求DBMS 411开始事务。在操作603,DBMS 411开始事务。
在操作604,Syscall模块402请求File模块407执行写操作。在操作605,File模块407请求Alloc模块408提供关于分区的空闲块的信息。在接收到该请求之后,在操作606,Alloc模块408请求DBMS 411搜索和修改freespace.db。在接收到该请求之后,在操作607,DBMS 411通过搜索freespace.db找到空闲空间,并将关于空闲空间的信息传送到Alloc模块408。
在操作608,Alloc模块408将关于分区的空闲空间中的将写入数据的块的信息传送到File模块407。此时,传送的关于所述块的信息可能与在操作607 DBMS 411传送的关于空闲空间的信息不同。即,尽管在操作607 DBMS411传送关于分区的所有空闲块的信息,但Alloc模块408通过使用预定的盘分配算法来确定将写入数据的块,然后传送关于确定的块的信息。从而,用户可自由地设计Alloc模块408中的盘分配算法,因此不必使用根据传统文件系统的固定的盘分配方法就可建立对于多媒体环境最优化的文件系统。
在操作609,File模块407向在内核模式下运行的OS模块提供分区的名称、分区数据的偏移信息、数据的大小(原始输入),并请求写操作。在操作610,OS模块基于接收到的信息将数据写到盘上。
在操作611,OS模块通知File模块407写操作完成。在操作612,File模块407通知Inode模块406写操作完成。在操作613,Inode模块406请求DBMS 411通过应用相应文件中发生的改变来更新inode.db。根据该请求,DBMS 411改变关于最后修改的时间和文件的大小的信息(未示出)。另外,在操作614,File模块407请求DBMS 411修改extents.db。在接收到该请求之后,DBMS 411通过应用关于新写入了数据的块的信息来更新extents.db(未示出)。
在操作615,File模块407通知Syscall模块402写操作完成。在操作616,Syscall模块402请求DBMS 411终止事务。在操作617,DBMS 411终止在操作603中开始的事务。
图7是示出在根据本发明示例性实施例的图4中示出的文件系统中读取文件的处理的示图。在当前实施例,假定没有使用DBAL模块410和OSAL模块409。
在操作701,应用程序401通过提供文件名、文件中的偏移信息和数据大小来请求Syscall模块402从文件中读取数据。
在操作702,Syscall模块402请求File模块407读取数据,在操作703,File模块407向Inode模块406请求关于相应块的信息。
在接收到该请求之后,在操作704,Inode模块406请求DBMS 411搜索extents.db。DBMS 411搜索extents.db,提取关于存储有所述数据的块的信息,然后在操作705将提取的信息传送到Inode模块406。
在操作706,Inode模块406将块信息传送到File模块407。
在操作707,File模块407通过提供分区的名称、分区中的偏移信息和数据的大小(原始输出)来请求OS模块读取数据。
在操作708,OS模块读取盘上的数据,并在操作709将读取的数据传送到File模块407。
在操作710,File模块407将数据传送到Syscall模块402。在操作711,Syscall模块402将数据传送到应用程序401。以这种方式,完成读取操作。
还可将本发明实现为计算机可读记录介质上的计算机可读代码。所述计算机可读记录介质是可存储其后被计算机系统读取的数据的任何数据存储装置。所述计算机可读记录介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光学数据存储装置和载波(例如通过互联网的数据传输)。
根据本发明的示例性实施例的文件系统,通过DBMS提供的API来处理文件系统的元数据,因而可稳定地保证事务。
尽管文件系统没有参与盘布局,但是文件系统直接控制与文件数据有关的盘布局。因此,可设计和使用对于多媒体环境最优化的盘分配算法。
此外,在本发明示例性实施例的文件系统中,DBMS仅管理元数据,不管理文件数据,并且不产生关于文件数据的日志。因此,即使文件的大小增加,也不发生性能的降低。
另外,本发明的示例性实施例的文件系统在用户级而不是在内核级运行,因此,文件系统的源代码不依赖OS。因此,容易地将文件系统安装到其他OS,并且文件系统的维护也更容易。
另外,在本发明的示例性实施例的文件系统中,将元数据和文件数据存储在单独的盘中,因此可比现有技术的文件系统更有效地执行将文件输入到盘或从盘输出文件。
尽管参照本发明的示例性实施例具体显示和描述了本发明,但是本领域的普通技术人员应该理解,在不脱离权利要求限定的本发明的精神和范围的情况下,可在形式和细节上进行各种改变。应该认为所述示例性实施例仅为了描述的目的,而不是为了限制的目的。因此,本发明的范围不是由本发明的详细描述来限定,而是由权利要求来限定,该范围内的所有不同应该被解释为包括在本发明中。
权利要求
1.一种在文件系统中管理数据的方法,包括当从应用程序接收到数据写请求时,通过使用管理文件系统的元数据的数据库管理系统来搜索空闲盘空间;不涉及数据库管理系统通过参照搜索结果,将数据写入空闲盘空间;和通过使用数据库管理系统来更新随写入的数据改变的一部分元数据。
2.如权利要求1所述的方法,其中,从搜索操作到更新操作的所有操作作为一个事务被数据库管理系统管理。
3.如权利要求1所述的方法,其中,所述文件系统在用户级运行。
4.如权利要求1所述的方法,其中,存储有数据的盘与存储有元数据的盘不同。
5.如权利要求1所述的方法,其中,更新所述一部分元数据的步骤包括请求数据库管理系统更新包含关于空闲空间的信息的数据库表、包含关于非空闲空间的信息的数据库表、和包含关于inode的信息的数据库表中的至少一个。
6.如权利要求1所述的方法,其中,元数据以范围的形式来表示关于盘的空闲空间的信息。
7.如权利要求6所述的方法,其中,用指示空闲空间的开始位置的块号和与空闲空间的大小相应的块的数量来表示所述范围形式。
8.如权利要求6所述的方法,其中,用指示空闲空间的开始位置的字节偏移和指示空闲空间的大小的字节单位来表示所述范围形式。
9.如权利要求1所述的方法,还包括当从任意的应用程序接收到读取数据的请求时,通过数据库管理系统来获得与该数据有关的元数据;不通过数据库管理系统,从盘读取获得的元数据所确定的至少一个块的数据;和将读取的数据传送到所述任意的应用程序。
10.一种存储有用于执行在文件系统中管理数据的方法的计算机程序的计算机可读记录介质,所述方法包括当从应用程序接收到数据写请求时,通过使用管理文件系统的元数据的数据库管理系统来搜索空闲盘空间;不涉及数据库管理系统通过参照搜索结果,将数据写入空闲盘空间;和通过使用数据库管理系统更新随写入的数据改变的一部分元数据。
全文摘要
提供了一种使用数据库管理系统管理文件系统的数据的方法。根据所述方法,使用数据库管理系统(DBMS)来管理文件系统的元数据,但是将数据写入盘或从盘读取数据由文件系统根据所述方法直接执行,而不通过其他文件系统或DBMS。以这种方式,向用户保证稳定的事务,用户可设计对于多媒体环境最优化的盘分配算法。
文档编号G06F17/30GK101042703SQ200710089439
公开日2007年9月26日 申请日期2007年3月22日 优先权日2006年3月22日
发明者黄珠荣, 张闵盛, 裴在庆, 金河英, 亚历山大·基日纳佐夫 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1