一种在Flash文件系统中加快逻辑块映射速度的方法

文档序号:6452060阅读:186来源:国知局
专利名称:一种在Flash文件系统中加快逻辑块映射速度的方法
技术领域
本发明涉及Flash文件系统的一种数据管理技术,更确切地说是涉及一种在Flash文件系统中加快逻辑块映射速度的方法,用于解决在Flash文件系统中查找逻辑块对应的数据块、以便进行数据块的快速定位。
背景技术
文件管理系统为了方便对存储硬件进行管理,通常将管理对象划分为若干个逻辑块(扇区),以逻辑块为最小单位进行所有的操作,和要求存储硬件的接口驱动程序提供逻辑块读、写函数。
快闪存储(Flash)器件是一种非易失性器件,被写入的内容可以在断电的情况下长时间保存。但是,Flash的存储单元只能够进行一次写操作,如果想在其上同一位置再次写入新的内容,就必须先进行擦除操作。擦除操作是以擦除块为单位进行的,一般来说擦除块的单位比较大,为了改写一个逻辑块而擦除该逻辑块所在的整个擦除块显然是不现实的。
目前,Flash文件管理系统将擦除块进一步划分为若干个与逻辑块大小相同的数据块,采用动态改变逻辑块与数据块映射关系的方式实现逻辑块的改写操作。其具体过程是当需要改写某一个逻辑块时,先为这个逻辑块分配一个没有进行过写入操作的数据块,在该新的数据块中写入改写数据,同时更改逻辑块与新的数据块间的映射关系,并将旧数据块的状态项标记为无效,此后会在适当时候,对标记为无效的数据块进行统一的回收(擦除)操作,使这些数据块重新可用。
为了保证逻辑块与数据块的映射关系在掉电时也不丢失,通常将映射关系记录在Flash中;同样为了便于数据块的分配、回收操作,还将映射关系分散记录在整个Flash区域中,即为每一个数据块分配一个额外的区域-数据块标志区(也可称作数据块状态表项区,或映射表),用于记录与它对应的逻辑块索引值。
Flash文件系统为了得到与某个逻辑块对应的数据块位置,必须采用一定的操作流程先得到它们间的映射关系。目前的Flash文件管理系统是采用顺序查询的方式进行查找的。即每次读写一个逻辑块时,都需要从Flash存储空间的首地址或者上次查找结果处开始扫描整个Flash器件的数据块标志(状态表项)。要查找的逻辑块索引值是已知的,通过不断地比较数据块状态表项中的逻辑块索引值与要查找的逻辑块索引值,直到查找到与这个要查找的逻辑块索引值映射的数据块为止。
参见图1,图中说明了Flash文件系统逻辑块与数据块的映射关系及其查找过程。图中空心箭头10上方所示为写逻辑块n前的数据块与逻辑块的映射关系,空心箭头10下方所示为写逻辑块n后的数据块与逻辑块的映射关系。数据块m标志、…、数据块i标志、数据块j标志、…、数据块i标志,是在Flash中为相应数据块分配的额外区域-数据块标志区(状态表项区),即与逻辑块的映射表,用于记录与数据块对应的逻辑块索引值,数据块标志区中记录本数据块的状态,包括空白、旧数据、新数据(也可如图中所示称作有效数据)等。如在改写逻辑块n前,数据块m标志记录了逻辑块n索引值,箭头11所指是经扫描数据块标志区,找到与数据块m映射的逻辑块n。改写逻辑块n时,由于数据块i标志是空白状态,将修改数据写入数据块i的数据区,同时在数据块i标志区记录逻辑块n索引值和新数据的标志,箭头12所指是经扫描数据块标志区,找到与数据块i映射的逻辑块n。当然还需将数据块m标志为无效(图中未示出)。
由上述过程可知,由于每次对逻辑块的操作都需要进行数据块与逻辑块间索引值的查找操作,因此平均查找时间很长。尤其是当映射关系不存在时(即这个逻辑块从没有写入过值,没有任何数据块与这个逻辑块对应),需要查找整个Flash空间才能返回结果,造成了操作时延和CPU资源的浪费,特别是在实时操作系统中,由于CPU还要执行其它更重要的任务,因此这种浪费就更不能容忍了。

发明内容
本发明的目的是提供一种在Flash文件系统中加快逻辑块映射速度的方法,通过采用一种新的数据块与逻辑块间映射关系的查询方法,从而提高查找数据块的速度。
实现本发明目的的技术方案是这样的一种在Flash文件系统中加快逻辑块映射速度的方法,在Flash存储器件中,将一逻辑块与一数据块的映射信息保存在该数据块的状态表项区中,将与该数据块映射的逻辑块的内容保存在该数据块的数据区中,其特征在于还包括A.建立一个反向映射表,在反向映射表中为每个逻辑块分配一个对应表项;B.在系统初始化过程中,读取全部数据块的状态表项区,将各数据块状态表项区中记录的逻辑块与数据块的映射信息,按逻辑块号与反向映射表表项间的一一对应关系重建到反向映射表各表项中;C.在读取某逻辑块时,以其逻辑块号作为表项索引查找反向映射表,定位到与该逻辑块号对应的表项,根据该表项中记录的与数据块的映射信息,在Flash存储器件中查找到数据块;D.在写入某逻辑块时,将更新数据写入一新数据块的空白数据区中和将该新数据块与该逻辑块间的映射信息写入该新数据块的状态表项区中,同时在反向映射表该逻辑块的表项中记录该逻辑块与新数据块的映射信息,在与该逻辑块有映射关系的原数据块状态表项区中将原数据块的状态置为旧数据。
所述反向映射表的各表项是根据逻辑块索引值进行排列的。
所述的反向映射表是建立在Flash文件系统的内存中。
现有技术中,已经将数据块与逻辑块的映射信息保存在Flash中,而且分散记录在每个数据块的状态表项区(或称标志区域或映射表,用于记录数据区的数据状态和数据块与逻辑块的映射信息)中,当逻辑块与数据块间的映射关系发生了变化时,将在新数据块的状态表项区记载其与逻辑块间的新的映射关系。本发明方法通过在内存中建立一个反向映射表(因为是从逻辑块查找数据块,相对于现有技术的从数据块查找逻辑块的顺序是反向的,故称作反向映射),是根据数据块状态表项中记录的逻辑块索引值(数据块与逻辑块的映射关系)建立起反向映射表的相应表项,且该反向映射表与数据块的状态表项同步更新,因而反向映射表中记录了数据块的定位信息,并且反向映射表使用逻辑块号作为索引值,即作为查询反向映射表的关键值。读逻辑块时,先在反向索引表中找到与逻辑块号相对应的表项,根据表项中记载的数据块定位信息可找到数据块。
本发明可在保证映射信息断电不丢失的前提下,提高查找数据块的速度。
本发明方法实现简单,可有效提高查找数据块的速度,从而提高CPU的使用效率。


图1是现有技术中Flash文件系统逻辑块与数据块映射关系及查找过程示意图;图2是采用反向映射表时,查找逻辑块的过程示意图。
具体实施例方式
本发明方法,通过在内存中增加一个反向映射表,可以在Flash文件系统中加快逻辑块映射速度,从而改进系统的性能。在这种方式下,反向映射表中为每个逻辑块分配了一个表项,并使用逻辑块号进行索引。
参见图2,图中描述了本发明采用反向映射表的工作原理。图中空心箭头20上方所示是改写逻辑块n前的数据块、逻辑块与反向映射表中表项的映射关系及查找逻辑块n的过程,空心箭头20下方所示为改写逻辑块n后的数据块、逻辑块与反向映射表中表项的映射关系及查找逻辑块n的过程。空心箭头20表示改写逻辑块n时,需要同时更新Flash中的映射关系(数据块标志区或数据块状态表项区或映射表)和反向映射表中的映射关系。
反向映射表的初始建立过程发生在每次系统启动时,系统扫描整个Flash器件,根据数据块状态表项区中记录的逻辑块索引值建立反向映射表中的相应表项。反向映射表中为每个逻辑块逻辑块0,…,逻辑块n分配了一个表项表项0,…,表项n,即逻辑块与反向映射表的表项成一一对应关系,因此反向映射表可使用逻辑块号进行索引。
反向映射表建立以后,在系统软件运行过程中,每次查找某个逻辑块索引对应的数据块时,可以简单地在反向映射表中进行查找,由于反向映射表已经根据逻辑块索引值进行了排列,因此查找过程的定位是非常快的。当发生了逻辑块写操作和回收操作,逻辑块与数据块的对应关系发生变化后,不但要在Flash存储器件的数据块状态表项中记录新的映射关系(如现有技术那样),而且也要同时修改反向映射表中的相应表项,保持映射关系为最新。
如图中所示,例如Flash存储器件为数据块5分配了状态表项区和数据区,数据块5已经与逻辑块n关联,用虚线21表示(根据现有技术中已经使用的映射关系),数据块5的数据区中记录着逻辑块n的内容,其状态表项中记录着逻辑块n的索引值,可以不使用反向映射表,通过扫描整个Flash存储器件的数据块标志,直到找到与数据块5映射的逻辑块(如现有技术那样)。
当根据本发明方法使用反向映射表时,如前所述是在系统初始化过程中,读取所有数据块对应的状态表项,使用数据块定位信息(指物理位置信息)和数据块状态表项中的逻辑块索引值重建位于内存中的反向映射表,则反向映射表中的表项n对应了数据块5。
当读取逻辑块n时,首先查找反向映射表,定位到表项n,如图中实线22所示,根据表项n中记录的数据块定位信息,在Flash存储器件中查找到数据块5,如图中实线23所示,就可返回数据块5数据区中的内容。
写入逻辑块n时,首先获得一个新的可用数据块,因数据块3的状态指示是空白,故将数据块3作为新的可用的数据块,将要更新的数据先写入数据块3的数据区,在数据块3的状态表项中写入逻辑块n的索引,并且使数据块5的状态标志为无效数据(旧数据)。此时在Flash存储器件状态表项区保存的映射关系中,逻辑块n已经和数据块3相对应了,如图中虚线26所示。同时,需要在反向映射表中更新表项n,即在表项n中记录数据块3的定位信息,至此,写入逻辑块n的过程完成,逻辑块n映射到数据块3,而数据块5被丢弃。此后若要读取逻辑块n,首先查找反向映射表,定位到表项n,如图中实线27所示,根据表项n中记录的数据块定位信息,在Flash存储器件中查找到数据块3,如图中实线28所示,就可返回数据块3数据区中的内容。
图中实线24、25分别是在读取逻辑块0、逻辑块2时,通过查找反向映射表,定位到表项0、表项2,再根据表项0、表项2中记录的数据块定位信息,在Flash存储器件中查找到数据块1、数据块n。
需要说明的是虚线21、26所指是不使用反向映射表时,通过扫描数据块找到与数据块映射的逻辑块,采用本发明方法进行查找时,其映射关系存在但不使用。
本发明的在Flash文件系统中加快逻辑块映射速度的方法,通过在内存中建立逻辑块与数据块索引关系的反向映射表,并使用逻辑块号作为查询反向映射表中表项的索引值;随着系统软件的运行,当逻辑块与数据块间的对应关系发生变化时,不仅要在Flash存储器件的数据块状态表项中记录新的数据块与逻辑块间的映射关系,而且还要同时修改记录在反向映射表相应表项中的逻辑块与新数据块间的映射关系。由于反向映射表是根据逻辑块索引值进行排列的,因而利用其定位数据块的查找过程是非常快的,因而解决了在Flash文件系统中,查找与逻辑块对应的数据块时的快速定位问题。
权利要求
1.一种在Flash文件系统中加快逻辑块映射速度的方法,在Flash存储器件中,将一逻辑块与一数据块的映射信息保存在该数据块的状态表项区中,将与该数据块映射的逻辑块的内容保存在该数据块的数据区中,其特征在于还包括A.建立一个反向映射表,在反向映射表中为每个逻辑块分配一个对应表项;B.在系统初始化过程中,读取全部数据块的状态表项区,将各数据块状态表项区中记录的逻辑块与数据块的映射信息,按逻辑块号与反向映射表表项间的一一对应关系重建到反向映射表各表项中;C.在读取某逻辑块时,以其逻辑块号作为表项索引查找反向映射表,定位到与该逻辑块号对应的表项,根据该表项中记录的与数据块的映射信息,在Flash存储器件中查找到数据块;D.在写入某逻辑块时,将更新数据写入一新数据块的空白数据区中和将该新数据块与该逻辑块间的映射信息写入该新数据块的状态表项区中,同时在反向映射表该逻辑块的表项中记录该逻辑块与新数据块的映射信息,在与该逻辑块有映射关系的原数据块状态表项区中将原数据块的状态置为旧数据。
2.根据权利要求1所述的一种在Flash文件系统中加快逻辑块映射速度的方法,其特征在于所述反向映射表的各表项是根据逻辑块索引值进行排列的。
3.根据权利要求1所述的一种在Flash文件系统中加快逻辑块映射速度的方法,其特征在于所述的反向映射表是建立在Flash文件系统的内存中。
全文摘要
本发明涉及一种在Flash文件系统中加快逻辑块映射速度的方法,可提高查找数据块的速度。数据块的状态表项区中保存逻辑块与数据块的映射信息,数据块的数据区中保存与其映射的逻辑块的内容。包括建立一个由表项组成的反向映射表,一个表项对应一个逻辑块;在系统初始化过程中,将数据块状态表项区中记录的映射信息,按逻辑块号与表项间的对应关系读取到各表项中;读取某逻辑块时,以其逻辑块号作为表项索引查找反向映射表,定位到表项,根据表项中记录的映射信息,在Flash存储器件中查找到数据块;写入某逻辑块时,将更新数据写入一新数据块的空白数据区中和将该逻辑块与新数据块间的映射信息写入状态表项区中,同时更新反向映射表相应表项的映射信息。
文档编号G06F12/08GK1542624SQ03123050
公开日2004年11月3日 申请日期2003年4月29日 优先权日2003年4月29日
发明者黄晓光 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1