文件系统的安全管理方法及装置的制作方法

文档序号:6556870阅读:233来源:国知局
专利名称:文件系统的安全管理方法及装置的制作方法
技术领域
本发明涉及文件系统安全管理,特别是涉及一种移动存储设备中文件系统的安全管理方法及装置。
背景技术
随着社会的发展,手机的功能越来越多,其存储容量也越来越大,用户可将手机看作一个多功能的便携信息处理的设备,不但具有电话、短信等功能,而且还可以作为移动存储信息,因此,产生了将手机作为移动存储设备的需求。另外,由于在PC机上绝大多数采用文件分配表系统(FAT,FileAllocation Table),故现有大多数手机也是采用FAT文件系统来与其相适应。但是,目前手机上还存在存储媒介Flash的特性和FAT文件系统的缺点,使得手机上FAT文件系统缺乏掉电保护、碎片回收、磨损均衡等功能。
因此,目前FAT文件系统并不适合直接用到手机中,其原因有二第一,手机应用条件远比PC机恶劣,电源电压的不稳定以及突发性掉电将对闪存Flash的存储造成严重影响,而FAT文件系统对于可靠性的设计考虑不足;第二,所述FAT文件系统是针对系统资源非常丰富的桌面平台而开发的,其目的是为了提升文件系统的速度特性,需要耗费较多的系统资源。因此,这些因素对于手机设备的系统资源十分有限,而Flash存储器又相对于磁盘驱动器较快的应用情况不同。
目前,针对上述原因,其解决方案主要是将FAT表中的主引导记录、文件分配表和根目录三个文件系统的数据结构进行备份,以降低因为这三个数据结构的损坏而导致文件系统崩溃的可能性。但是,这种解决方案仅仅起到一些掉电保护的功能,对于Flash本身的碎片回收、磨损均衡却没有起到实质性的作用。
这是因为手机中Flash有两大不稳定因素一是Flash存储器本身可能出现物理性的损坏,如擦除次数过多;二是手机面对较多的突发掉电与重启动,造成Flash存储器写操作的异常终止。而现有方法中,备份主引导记录、文件分配表和根目录三个文件系统的数据结构是一种比较好的方式,但是,这种方法虽然可以较好的解决因素二,却不能解决Flash存储器本身可能出现物理性的损坏。此外,如果这三个文件系统的数据结构采用固定位置存储的方式,由于所述三个文件系统的数据结构都在存储空间的前几个扇区,而这些扇区基本都会在同一个块block上,由于FAT表的操作量很大,造成该block经常被擦除、写入,而容易损坏,也就是说,如果因为这些固定位置的多次Flash擦除,将会出现固定位置的物理性损坏。这将造成文件系统的崩溃。

发明内容
本发明解决的技术问题是提供一种文件系统的安全管理方法及装置,以解决目前技术方案中以扇区为单位的文件系统和以块为单位的闪存的物理特性不匹配的问题。
为解决上述问题,本发明提供一种文件系统的安全管理方法,所述方法包括步骤A、将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;B、在闪存内建立逻辑扇区与物理扇区的映射表;C、在向逻辑扇区中写数据时,通过查找或修改映射表对异常情况进行恢复管理。
步骤A中所述初始化是将文件分配表系统按照安全管理的要求转换成新的文件系统下载到闪存中。
所述转换的原则包括将文件分配表系统的文件分别作为一个个扇区的数据拷贝到闪存中,标注该扇区的标志位有效,并将该扇区对应的逻辑扇区的扇区号也写在该扇区的信息中。
步骤B中建立逻辑扇区与物理扇区映射表的实现过程为
B1)获取第一个逻辑扇区的物理扇区号;B2)从第一逻辑扇区中得到当前文件系统的大小;B3)扫描当前文件系统所占闪存区域,在内存中建立逻辑扇区与物理扇区的映射表。
步骤B2)中所述文件系统的大小为总扇区数与扇区大小之积;步骤B3)的具体实现过程为B31)扫描当前文件系统所占用的闪存区域,获得闪存块的信息和块中物理扇区的信息;B32)当检测到物理扇区被标注有效时,从该物理扇区的信息中得到其所对应的逻辑扇区号,以该逻辑扇区号为索引,建立逻辑扇区号与物理扇区号的映射表。
所述物理扇区号是在闪存内按物理地址的顺序划分为多个物理扇区的标识;所述物理扇区号从零开始,以便于根据物理扇区号查找到物理扇区的实际地址。
所述块包括多个物理扇区,其中,第一个物理扇区和第二个物理扇区分别存储了当前块的信息和该块中各个物理扇区的信息。
所述步骤C的具体实现过程为C1)当向逻辑扇区写数据时,判断当前的块是否已满;若是,执行步骤C2,结束;否则,执行步骤C3;C2)判断是否有空闲块,若有,则从空闲块的链表中获取一个块,改变当前块的状态信息;若没有,则强制执行回收,给出空闲块;C3)将当前扇区的状态改为无效,并在当前块中写入一个扇区,更改扇区的状态信息为可用;C4)查询映射表,判断该逻辑扇区对应的物理扇区是否为空,若是,修改映射表,使逻辑扇区指向当前的扇区;若否,将该物理扇区改为可擦除。
另外,本发明还提供一种文件系统的安全管理装置,所述装置包括
划分单元,用于将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;建立单元,与划分单元相连,用于建立逻辑扇区与物理扇区的映射表;恢复管理单元,与建立单元相连,用于在向逻辑扇区中写数据时,通过查找或修改映射表恢复各种异常情况。
所述建立单元包括获取子单元,与划分子单元相连,用于获取第一个逻辑扇区的物理扇区号;计算子单元,与获取子单元相连,用于计算从该第一逻辑扇区中得到当前文件系统的大小;映射表建立子单元,与计算子单元相连,用于扫描当前文件系统所占用的闪存区域,在内存中建立逻辑扇区与物理扇区的映射表。
所述映射表的内容包括块、逻辑扇区号、映射表和物理扇区号。
所述块包括多个物理扇区,且第一和第二物理扇区分别存储当前块的信息和该块中各个物理扇区的信息。
所述恢复管理单元包括数据写入子单元,与映射表建立子单元相连,用于向逻辑扇区中写数据;判断子单元,与数据写入子单元相连,当有数据写入时,用于判断当前的块是否已满,并发送判断结果;异常恢复处理子单元,与判断子单元相连,用于接收判断子单元发送的判断结果,并根据判断结果对异常情况进行相应的恢复处理。
由上述所公开的技术方案可知,本发明先将文件分配表系统按照安全管理的要求转换成新的文件系统的镜像,并将其下载到闪存中;然后根据闪存自身的特点,在FAT文件系统和驱动程序之间增加一层闪存传输层。当启动闪存后,建立逻辑扇区与物理扇区的映射表;在建立映射表的过程中,即向逻辑扇区中写数据时,通过查找或修改映射表对异常情况进行恢复管理。从而解决以扇区为单元的文件系统和以块为单元的闪存物理特点不匹配的问题。此外,本发明所述技术方案还可以起到对闪存掉电保护、闪存磨损均衡的保护和闪存碎片回收的作用。


图1是本发明所述文件系统的安全管理方法的流程图;图2是本发明所述方法中建立逻辑扇区与物理扇区的映射表的流程图;图3是本发明所述方法中逻辑扇区与物理扇区的映射表的结构示意图;图4是本发明所述方法中块的结构示意图;图5是本发明所述方法中在向逻辑扇区中写数据的流程图;图6是本发明所述方法中在向逻辑扇区中写数据时,恢复各种异常情况的流程图;图7是本发明所述文件系统的安全管理装置的结构示意图。
具体实施例方式
本发明的核心是根据闪存Flash本身的物理特性,采用浮动位置存储的方式来保存主引导记录、文件分配表、根目录和用户数据。所述浮动位置存储方式的核心是在文件分配表系统(FAT,File Allocation Table)和驱动之间加上一层闪存传输介质(FTL,Flash Translation Layer)。即FAT文件系统对逻辑扇区进行操作的,而驱动程序是对绝对物理地址进行操作的,二者再FTL层进行转换。解决以扇区(512字节)为单位的文件系统和以块Block(一般为512字节的倍数)为单位的闪存Flash物理特性不匹配的问题。
为了便于本领域技术人员的理解,下面结合附图对本发明做进一步的说明。
请参阅图1,为本发明所述文件系统的安全管理方法的流程图。所述方法包括步骤步骤S11将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;步骤S12在闪存内建立逻辑扇区与物理扇区的映射表;步骤S13在向逻辑扇区中写数据时,通过查找或修改映射表对异常情况进行恢复管理。
本发明所述的掉电保护策略是与闪存flash紧密相关的,在步骤S11中通过对flash进行分区且标注每个分区的状态,然后需要对flash初始化,即将flash做统一的管理,比如标注哪个扇区是空闲的,哪个扇区是有效的等等,即在flash上写入管理所需要的信息。
本发明所述对flash的初始化主要是通过将FAT文件系统的image按照安全管理的要求转换成的新的文件系统镜像,并将其下载到flash来实现。由于所述image格式已经包含了本发明所述扇区的信息,且该信息是闪存传输层ftl所用到的flash扇区信息是一致的,当下载完后的flash,其实已经具有很完整的flash管理信息。
其中,所述转换的原则为将原FAT的影像(image)看作是一个一个扇区的数据,然后将扇区数据一个一个的拷贝(copy)到闪存中,并在该扇区的标志位上标注为有效,同时将该扇区所对应的逻辑扇区的扇区号也写在该扇区的信息区内。当扇区拷贝copy完成后,将flash上剩余的扇区标注为空闲free。
在步骤S12中,所述启动闪存后,建立逻辑扇区与物理扇区的映射表。当要建立映射表时,开始扫描文件系统占用的flash区域,取得闪存块(flashblock)的信息和该块(block)中扇区的信息,当检测到当前物理扇区被标注为有效时,则可以从所述物理扇区的信息区中得到该物理扇区所对应的逻辑扇区的扇区号,然后以此逻辑扇区的扇区号为映射表的索引,将物理扇区的扇区号写入到映射表中。其中,所述物理扇区号的意思是在flash上按地址顺序将flash划分成一个扇区一个扇区的,每个扇区都相同。且物理扇区号从0开始,这样就能根据物理扇区号查找到该物理扇区的实际地址。其具体的实现过程详见图2,所述过程为
步骤S121获取第一个逻辑扇区的物理扇区号。闪存传输层FTL初始化时,会对闪存进行扫描,并建立逻辑扇区到物理地址的映射表,从该表中可以得到逻辑扇区0(sector0)的物理扇区号,即物理地址。
步骤S122从第一逻辑扇区中得到当前文件系统的大小。所述文件系统的大小为总扇区数与扇区大小之积,这是因为在逻辑扇区0中,由于FAT文件系统规定了sector0的存储结构,从中可以得到总扇区数,所述总扇区数乘以扇区大小就可以得到文件系统大小。
步骤S123扫描当前文件系统所占闪存区域,在内存中建立逻辑扇区与物理扇区的映射表。在建立映射表的过程中,会修复由于各种意外(掉电)导致的错误。也就是说,扫描当前文件系统所占用的闪存区域,获得闪存块的信息和块中扇区的信息;当检测到物理扇区被标注有效时,从该物理扇区的信息中得到该物理扇区的信息中得到所对应逻辑扇区的扇区号,以该逻辑扇区号为映射表的索引,将物理扇区的扇区号写入映射表中。其中,本发明所述块包括多个物理扇区,第一个物理扇区和第二个物理扇区(物理扇区0和物理扇区1)分别存储了当前块的信息和该块中各个物理扇区的信息。
由上述实现过程可知,用户不需要知道数据存放在第几个块block,只需要知道存放的逻辑扇区位置。所述逻辑扇区与物理扇区的映射表结构如图3所示,包括块(block)、逻辑扇区(比如0、1、2等)、映射表map(比如2、1、5等)和物理扇区(比如0、1、2等)。其中所述逻辑扇区与map表相对应连接,与物理扇区程映射关系。
而在图2中所述每个Block是由若干个物理扇区(sector)组成,其中sector0和sector1分别保存了当前Block信息和该Block中各个sector信息,。所述Block的结构具体如图4所示。所述sector0和sector1分别保存了4byte的Block信息,以及5byte的sector2至5byte的sector(N-1)的信息;所述sector2至sector(N-1)分别保存了文件系统的各个sector,一个block中包括N-2个文件系统中原有的sector数据信息。
其中,当前4个byte的block信息保存的内容详见表1;而表1中所述Block的状态详见表2。
表1

表2

所述每个5byte扇区(sector)的信息保存的内容详见表3,而表3中所述扇区状态详见表4。
表3

表4

在步骤S13中所述在向逻辑扇区中写数据时,通过查找或修改映射表对异常情况进行恢复管理。也就是说,在本发明所述的文件系统中,对数据的写操作都是通过逻辑扇区完成,表面上用户写的是逻辑扇区,而实际上是通过逻辑数据的写操作,将数据写入不同块Block的不同物理扇区sector中。其中,所述写操作数据的流程图详见图5,所述写操作数据的实现步骤包括步骤S131当向逻辑扇区写数据时,判断当前的块是否已满;若是,执行步骤S132;否则,执行步骤S135;步骤S132判断是否有空闲块,若有,则从空闲块的链表中获取一个块,改变当前块的状态信息,结束(步骤S133);若没有,则强制执行回收,给出空闲块,结束(步骤S134);步骤S135将当前扇区的状态改为无效,并在当前块中写入一个扇区,更改扇区的状态信息为可用;步骤S136查询映射表,判断该逻辑扇区对应的物理扇区是否为空,若是,修改映射表,使逻辑扇区指向当前的扇区(步骤S137);若否,将该物理扇区改为可擦除(步骤S138)。
本发明所述技术方案在闪存Flash读操作中的掉电对系统没有任何影响,关键是在写操作中的掉电保护。从上述步骤中可知,在闪存的写操作中的掉电对文件系统产生影响的可能只有四种情况,本发明所述技术方案可以通过开机流程中对这四种可能的情况进行恢复,其恢复这四种掉电情况的详细过程详见图6。假设所述四种掉电情况分别设为掉电A、掉电B、掉电C和掉电D。
如图6所示,对于掉电A,当前块(current block)状态改变完毕,原有的当前块(current block)的状态还没有改变;引起的结果是初始化的时候发现有两当前块(current block),若在此时写数据,系统检查到哪一个块block是空的,就确认为该块为当前块(current block)。对于掉电B,把无效(invalid)的扇区sector改为脏或可擦除(dirty)。对于掉电C,因为这个更改过程只需要更改一位,如果没有更改完成,那么此时该扇区sector的状态信息仍旧为无效(invalid),其处理的方式同掉电B。在此不再赘述。对于掉电D,由于掉电而引起的效果是在映射表的时候发现有两块物理扇区(physical sector)对应同一块逻辑扇区(logical sector),这个时候以当前块(current block)中的内容为准,也就是取最新的数据。
此外,在本发明所述的掉电过程中,还需要注意一种特殊情况,即在回收过程中掉电。所述回收过程实际上进行的是数据拷贝或数据擦除操作。拷贝一个块block中有效数据的时候掉电,对于每个扇区(sector)的拷贝(copy)操作类似于写过程,其掉电过程与上述掉电A、B、C和D的过程相同,具体详见上述。若擦除一个块block的时候掉电,因为该块block的各个扇区sector已经为脏或可擦除(dirty)。所以可以在下次开机执行回收的时候把它擦掉(erase)也是一样的。
在内存中保存一份开机后块block擦除次数的表格。在回收中,优先考虑擦除次数较少的块block进行回收。这样起到了磨损均衡的功能。比如,有两个空闲块block,一个已经擦写过5次,另一个已经擦除过3次,那就优先使用第二个已擦除过3次的块block,从而避免对同一个块block擦写次数太多,造成过早的损坏。可以根据每块Block中sector的空闲比例,得出需要回收的Block进行回收。也就是说,FTL会定期对当前存在的空闲块block数进行检查,如果低于某特定值,就开始回收过程。在回收过程中会找到可擦除扇区(dirty sector)最多的那个块block,把其上的有用内容搬移到其他块block上,然后擦除这个块block,而产生一个新的空闲块block。
另外,本发明还提供一种文件系统的安全管理装置,其结构示意图详见图7,所述装置包括划分单元11、建立单元12和恢复管理单元13。其中,所述划分单元11,用于将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;所述建立单元12,与划分单元11相连,用于建立逻辑扇区与物理扇区的映射表;所述恢复管理单元13,与建立单元12相连,用于在向逻辑扇区中写数据时,通过查找或修改映射表恢复各种异常情况。
所述建立单元12包括获取子单元121、计算子单元122和映射表建立子单元123。所述获取子单元121,与划分子单元11相连,用于获取第一个逻辑扇区的物理扇区号;所述计算子单元122,与获取子单元121相连,用于计算从该第一逻辑扇区中得到当前文件系统的大小;所述映射表建立子单元123,与计算子单元122相连,用于扫描当前文件系统所占用的闪存区域,在内存中建立逻辑扇区与物理扇区的映射表。所述映射表的内容包括块、逻辑扇区号、映射表MAP表和物理扇区号。而所述块包括多个物理扇区,所述第一和第二物理扇区分别存储当前块的信息和该块中各个物理扇区的信息;其它物理扇区分别存储了文件系统的各个物理信息,一个块block中包括N-2个文件系统中原有的物理扇区数据信息。
所述恢复管理单元13包括数据写入子单元131,判断子单元132,异常恢复处理子单元133。所述数据写入子单元131,与映射表建立子单元123相连,用于向逻辑扇区中写数据;所述判断子单元132,与数据写入子单元131相连,当有数据写入时,用于判断当前的块是否已满,并发送判断结果;所述异常恢复处理子单元133,与判断子单元132相连,用于接收判断子单元发送的判断结果,并根据判断结果对异常情况进行相应的恢复处理。
以上所述装置的各个单元的实现功能请参见上述方法的实现过程,在此不再赘述。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种文件系统的安全管理方法,其特征在于,包括步骤A、将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;B、在闪存内建立逻辑扇区与物理扇区的映射表;C、在向逻辑扇区中写数据时,通过查找或修改映射表对异常情况进行恢复管理。
2.根据权利要求1所述文件系统的安全管理方法,其特征在于,步骤A中所述初始化是将文件分配表系统按照安全管理的要求转换成新的文件系统下载到闪存中。
3.根据权利要求2所述文件系统的安全管理方法,其特征在于,所述转换的原则包括将文件分配表系统的文件分别作为一个个扇区的数据拷贝到闪存中,标注该扇区的标志位有效,并将该扇区对应的逻辑扇区的扇区号也写在该扇区的信息中。
4.根据权利要求1所述文件系统的安全管理方法,其特征在于,步骤B中建立逻辑扇区与物理扇区映射表的实现过程为B1)获取第一个逻辑扇区的物理扇区号;B2)从第一逻辑扇区中得到当前文件系统的大小;B3)扫描当前文件系统所占闪存区域,在内存中建立逻辑扇区与物理扇区的映射表。
5.根据权利要求4所述文件系统的安全管理方法,其特征在于,步骤B2)中所述文件系统的大小为总扇区数与扇区大小之积;步骤B3)的具体实现过程为B31)扫描当前文件系统所占用的闪存区域,获得闪存块的信息和块中物理扇区的信息;B32)当检测到物理扇区被标注有效时,从该物理扇区的信息中得到其所对应的逻辑扇区号,以该逻辑扇区号为索引,建立逻辑扇区号与物理扇区号的映射表。
6.根据权利要求5所述文件系统的安全管理方法,其特征在于,所述物理扇区号是在闪存内按物理地址的顺序划分为多个物理扇区的标识;所述物理扇区号从零开始,以便于根据物理扇区号查找到物理扇区的实际地址。
7.根据权利要求5所述文件系统的安全管理方法,其特征在于,所述块包括多个物理扇区,其中,第一个物理扇区和第二个物理扇区分别存储了当前块的信息和该块中各个物理扇区的信息。
8.根据权利要求1所述文件系统的安全管理方法,其特征在于,所述步骤C的具体实现过程为C1)当向逻辑扇区写数据时,判断当前的块是否已满;若是,执行步骤C2,结束;否则,执行步骤C3;C2)判断是否有空闲块,若有,则从空闲块的链表中获取一个块,改变当前块的状态信息;若没有,则强制执行回收,给出空闲块;C3)将当前扇区的状态改为无效,并在当前块中写入一个扇区,更改扇区的状态信息为可用;C4)查询映射表,判断该逻辑扇区对应的物理扇区是否为空,若是,修改映射表,使逻辑扇区指向当前的扇区;若否,将该物理扇区改为可擦除。
9.一种文件系统的安全管理装置,其特征在于,包括划分单元,用于将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;建立单元,与划分单元相连,用于建立逻辑扇区与物理扇区的映射表;恢复管理单元,与建立单元相连,用于在向逻辑扇区中写数据时,通过查找或修改映射表恢复各种异常情况。
10.根据权利要求9所述文件系统的安全管理装置,其特征在于,所述建立单元包括获取子单元,与划分子单元相连,用于获取第一个逻辑扇区的物理扇区号;计算子单元,与获取子单元相连,用于计算从该第一逻辑扇区中得到当前文件系统的大小;映射表建立子单元,与计算子单元相连,用于扫描当前文件系统所占用的闪存区域,在内存中建立逻辑扇区与物理扇区的映射表。
11.根据权利要求10所述文件系统的安全管理装置,其特征在于,所述映射表的内容包括块、逻辑扇区号、映射表和物理扇区号。
12.根据权利要求11所述文件系统的安全管理装置,其特征在于,所述块包括多个物理扇区,且第一和第二物理扇区分别存储当前块的信息和该块中各个物理扇区的信息。
13.根据权利要求9所述文件系统的安全管理装置,其特征在于,所述恢复管理单元包括数据写入子单元,与映射表建立子单元相连,用于向逻辑扇区中写数据;判断子单元,与数据写入子单元相连,当有数据写入时,用于判断当前的块是否已满,并发送判断结果;异常恢复处理子单元,与判断子单元相连,用于接收判断子单元发送的判断结果,并根据判断结果对异常情况进行相应的恢复处理。
全文摘要
本发明涉及一种文件系统的安全管理方法及装置,所述方法包括A.将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;B.在闪存内建立逻辑扇区与物理扇区的映射表;C.在向逻辑扇区中写数据时,通过查找或修改映射表对异常情况进行恢复管理。所述装置包括划分单元,用于将初始化后的闪存划分为多个逻辑扇区,并标注每个逻辑扇区的状态;建立单元,与划分单元相连,用于建立逻辑扇区与物理扇区的映射表;恢复管理单元,与建立单元相连,用于在向逻辑扇区中写数据时,通过查找或修改映射表恢复各种异常情况。以解决目前技术方案中以扇区为单位的文件系统和以块为单位的闪存的物理特性不匹配的问题。
文档编号G06F12/00GK101046803SQ20061005846
公开日2007年10月3日 申请日期2006年3月28日 优先权日2006年3月28日
发明者巍骛, 孟卫国, 王世卓 申请人:大唐移动通信设备有限公司, 上海大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1