具体实施方式
1.基本数据结构
在本系统中用到两张基本表和两个视图:管理属性表、文件管理表、当前视图、历史视图。其中管理属性表记录用户参数设置、保护系统的创建时间、最近一次进行数据恢复的时间、最近一次替换当前视图的历史视图的生成时标;文件管理表则记录被保护区域文件的所有变化信息;当前视图是对应当前时刻的数据视图;历史视图则是针对某一时间节点生成的数据视图。
各表与视图的构成描述如下:
1)管理属性表
ProtectedArea:保护区域
DataUnitSize:数据单元粒度,即每个数据单元的扇区数
CurViewCreatedTime:当前视图创建时标,当前视图第一次创建的时间戳(Timestamp,TS),也是保护系统创建的时间标志
CurViewReplacedTime:当前视图替换时标,当前视图最近一次被某历史视图替换的时间
HisGenaratedTime:历史视图生成时标,最近一次替换当前视图的历史视图的生成时标
MaxFileNumber:最大文件编号
2)文件管理表
FileNumber:文件编号,每个被保护的文件都有一个编号,当这个文件发生变化时会生成新的编号。该编号从1开始顺序增长
FileName:文件名,被保护文件的文件名,含路径
FileSize:文件大小,文件在发生变化时刻的实际大小,以字节为单位
FileAttrib:文件管理系统所定义的文件属性
FileCreateTime:文件创建时间
FileUpdatedTime:文件发生变化的时间,包括被创建、被修改、被删除
FileUpdatedMark:文件更新标志,标志文件发生的具体变化是创建CREATE、修改UPDATE、还是删除DELETE
FileConstitution:文件数据单元构成,文件变化时刻该文件的数据单元构成及排列顺序
注:一般文件的文件编号从3开始,编号为0、1、2的文件都是系统生成的特殊文件,详细说明如下:
0号文件用于登记被删除或被替换的数据单元的信息,由系统通过改写文件管理系统的文件索引表的方式建立,目的是防止被删除或被替换的数据单元被文件管理系统释放而当作空闲的数据单元进行分配而造成这些数据单元中数据丢失。其记录信息如下:
FileNumber=0
FileName=′’maskdata′’
FileSize=所含数据单元数X数据单元粒度
FileAttrib=SYS+HIDE
FileCreateTime=该文件创建时间
FileUpdatedTime=该文件最近被修改时间
FileUpdatedMark=CREATEorUPDATE
FileConstitution<<文件管理表中3号以后记录出现过但当前数据视图3号以后记录中未出现的数据单元
1号文件用于存放管理属性表和文件管理表,其记录信息如下:
FileNumber=1
FileName=″datatab′’
FileSize=该文件实际大小
FileAttrib=SYS+HIDE
FileCreateTime=该文件创建时间
FileUpdatedTime=该文件最近被修改时间
FileUpdatedMark=CREATEOrUPDATE
FileConstitution<<该文件的数据单元构成
2号文件用于存放当前数据视图,其记录信息如下:
FileNumber=2
FileName=″curview′’
FileSize=该文件实际大小
FileAttrib=SYS+HIDE
FileCreateTime=该文件创建时间
FileUpdatedTime=该文件最近被修改时间
FileUpdatedMark=CREATEorUPDATE
FileConstitution<<该文件的数据单元构成
3)数据视图
FileNumber:同文件管理表FileNumber
FileName:同文件管理表FileName
FileSize:文件在视图生成时标对应时刻的实际大小,以字节为单位
FileAttrib:同文件管理表FileAttrib
FileCreateTime:同文件管理表FileCreateTime
FileUpdatedTime:文件最近被修改的时间
FileConstitution:文件当前数据单元构成及排列顺序
功能结构
从功能结构上划分,本系统应包含下列模块:
1)人机接口模块:
为用户提供操作界面。
在系统初始化时记录用户设定的保护区域UserProtectedArea、数据单元粒度UserDataUnitSize等信息,并将这些信息传递给数据管理模块。
在数据恢复时记录用户设定的恢复时间节点信息RestoreTime,并将这些信息传递给数据管理模块。
2)文件管理系统接口模块:
在系统初始化时从文件管理系统获取被保护区域文件的下列信息:文件名(含路径)、文件属性、文件大小、创建时间、最近修改时间、文件数据单元构成等信息,并将这些信息传递给数据管理模块。并在接收到数据管理模块传递过来的0-2号文件的信息后通过文件管理信息创建0-2号文件。
在正常操作过程中监控文件管理系统的写操作,当发生写操作时根据需要修改操作参数并记录下列信息:文件操作类型(创建、修改、删除)、发生写操作文件的文件名、数据单元操作类型(分配、替换、删除),并将这些信息传递给数据管理模块。
在数据恢复时根据数据管理模块传递过来的当前数据视图生成文件管理系统的文件索引。
3)数据管理模块:
在系统初始化时根据人机接口模块提供的参数对管理属性表、文件管理表、当前视图进行初始化,在文件管理表和当前视图中生成0-2号文件信息,并将0~2号文件的信息传递给文件管理系统接口模块。
在正常操作过程中根据文件管理系统接口模块传递过来的相关信息在文件管理表中创建新记录并修改当前视图中的记录。
在数据恢复时根据人机接口模块传递的恢复时间节点信息生成历史数据视图,以历史视图替换当前视图,修改管理属性表中相关信息,并将当前视图信息传递给文件管理系统接口模块。
2.方法描述
2.1系统初始化
系统在第一次工作时需要进行初始化,系统初始化流程图参见附图2,其具体流程如下:
1)系统处于非监控状态
2)数据管理模块生成空白管理属性表ManTable
3)人机接口模块将用户设定的保护区域UserProtectedArea、数据单元粒度
UserDataUnitSize等参数传递给数据管理模块
4)数据管理模块生成空白管理属性表ManTable并根据人机接口模块提供的信息进行初始化
5)数据管理模块创建空白文件管理表FileTable并按照0~2号文件记录的定义在 FileTable中创建和初始化0-2号文件记录信息,其中0号文件对应记录项的FileConstitution应为空
6)数据管理模块创建空白当前视图CurFileView并按照0~2号文件视图记录的定义在CurFileView中创建和初始化0~2号文件记录信息并将这些信息传递给文件管理系统接口模块
7)文件管理系统接口模块依据数据管理模块提供的信息通过文件管理系统创建0-2号文件并将相关信息写入相应文件
8)文件管理系统接口模块通过文件管理系统扫描保护区域文件索引信息并传递给数据管理模块
9)数据管理模块依据文件管理系统接口模块提供的信息在FileTable和CurFileView中添加相应的记录,并且将FileTable中对应记录的FileUpdatedMark赋值为CREATE
10)文件管理系统接口模块将相应信息写入1号文件及2号文件
11)文件管理系统接口模块判断是否扫描完所有文件,是则继续,否则回到步骤8)
12)文件管理系统接口模块将1号文件及2号文件的文件大小、数据单元构成等信息传递给数据管理模块
13)数据管理模块更新FileTable及CurFileView中1号文件及2号文件的对应记录
14)系统进入监控状态
15)初始化结束
2.2开机处理
当系统掉电重新开机时需要通过读取1号文件和2号文件重建ManTable、FileTable及CurFileView
2.3文件操作
系统完成初始化操作后就进入正常操作模式,在此模式下系统进入监控状态,文件管理系统接口模块监控文件管理系统的操作并做相应处理,这些操作包括文件创建、文件修改和文件删除。文件操作流程图参见附图3,其具体流程如下
1)系统处于监控状态
2)文件管理系统接口模块监控文件管理系统对被保护区域文件的操作,若有写操作继续,否则循环步骤2)
3)判断当前写操作的类型,若是文件创建操作进入文件创建流程,若是文件修改操作进入文件修改流程,若是文件删除操作进入文件删除流程
2.4文件创建
在文件创建的处理中,数据管理模块需要在FileTable和CurFileView中为新创建的文件添加新记录。文件创建流程图参见附图4,其具体流程如下:
1)系统处于监控状态
2)文件管理系统接口模块将被创建文件信息传递给数据管理模块
3)数据管理模块依据文件管理模块提供的信息在FileTable中添加新记录并将该记录的FileUpdatedMark赋值为CREATE
4)数据管理模块依据上一步的信息在CurFileView中添加新纪录
5)系统进入非监控状态
6)文件管理系统接口模块将FileTable、CurFileView中新添加的记录分别写入1号文件和2号文件,并将修改时间、文件大小、数据单元构成等信息反馈给数据管理模块
7)数据管理模块修改FileTable、CurFileView中1号文件、2号文件对应记录的信息
8)系统进入监控状态
9)文件创建结束
2.5文件修改
文件修改包括在现有的数据单元进行修改、删除一个现有数据单元及插入一个新的数据单元,第一种情况需要申请新的数据单元替换被修改的数据单元,前两种情况都需要将被替换或被删除的数据单元登记到0号文件中去。文件修改流程图参见附图5,其具体流程如下:
1)系统处于监控状态
2)文件管理系统接口模块判断被修改文件是否0…2号文件,否则继续,是则直接弹出,结束文件修改流程
3)文件管理系统接口模块判断当前操作是否在该文件的数据单元U上直接改写,是则继续、否则转步骤8)
4)文件管理系统接口模块将数据单元U的信息传递给数据管理模块
5)数据管理模块将数据单元U登记到FileTable和CurFileView与0号文件相对应的记录的FileConstitution数据项中
6)文件管理系统接口模块将当前操作改为在新申请的数据单元W中写入改写后的内容并以W代替V
7)转步骤11)
8)文件管理系统接口模块判断当前操作是否删除数据单元V,是则继续,否则转步骤11)
9)文件管理系统接口模块将数据单元V的信息传递给数据管理模块
10)数据管理模块将数据单元V登记到FileTable和CurFileView与0号文件相对应的记录的FileConstitution数据项中
11)文件管理系统接口模块将被改写文件的相关信息传递给数据管理模块
12)数据管理模块依据文件管理系统接口模块提供的信息在FileTable中为被改写的文件创建一个新记录并标记其FileUpdatedMark为UPDATE
13)数据管理模块依据FileTable中最新记录的信息在CurFileView中将其同名记录替换掉
14)系统进入非监控状态
15)文件管理系统接口模块按照FileTable、CurFileView中的信息改写0-2号文件件并将改写后的1号文件及2号文件信息反馈给数据管理模块
16)数据管理模块修改FileTable、CurFileView中1号文件及2号文件对应记录项中的信息
17)系统进入监控状态
18)文件修改结束
2.6文件删除
文件删除需要将被删除文件的构成数据单元登记到0号文件中去。文件删除流程图参见附图6,其具体流程如下:
1)系统处于监控状态
2)文件管理系统接口模块判断被删除文件是否0-2号文件,否则继续,是则直接弹出,结束文件删除操作
3)文件管理系统接口模块将被删除文件信息传递给数据管理模块
4)数据管理模块在FileTable中为被删除文件创建一个新记录并标记其FileUpdatedMark为DELETE
5)数据管理模块将被删除文件的数据单元信息登记到FileTable和CurFileView中0号文件的FileConstitution数据项中
6)数据管理模块在CurFileView中将被删除文件对应的记录项删除
7)系统进入非监控状态
8)文件管理系统根据FileTable、CurFileView中信息改写0-2号文件,并将改写后的1号文件及2号文件信息反馈给数据管理模块
9)数据管理模块修改FileTable、CurFileView中1号文件及2号文件对应记录项中的信息
10)系统进入监控状态
11)文件删除结束
2.7数据恢复
数据恢复流程图参见附图7,其具体流程如下:
1)系统进入非监控状态
2)人机接口模块将用户设定的恢复时间节点RestoreTime传递给数据管理模块
3)数据管理模块根据RestoreTime从FileTable查找符合下列条件的记录项生成历史视图HisFileView:
●0~2号文件所对应的记录项应在HisFileView中,其中0号文件对应记录项的FileConstitution应为空
●FileTable中所有满足下述条件的记录项FileTable[i](3<=i<=MaxFileNumber)应在HisFileView中建立对应的记录项:
a)FileTable[i].FileUvdatedTime<=RestoreTime
b)FileTable[i].FileUvdatedMark!=DELETE
c)若FileTable中存在记录项FileTable[j](3<=j<=MaxFileNumber),FileTable[jl.FileName==FileTable[i].FileName
且FileTable[jl.FileUpdatedTime<=RestoreTime
&&FileTable[jl.FileUpdatedMark==DELETE
则必须满足FileTable[i].FileUpdatedTime>FileTable[j]FileUpdatedTime
d)若HisFileView中存在记录项HisFileView[k](k>=3),
HisFileView[k).FileName==FileTable[i].FileName则必须满足FileTable[i].FileUpdatedTime>HisFileView[k].FileUpdatedTime
●满足上述条件但是HisFileView已经存在同名记录项则在HisFileView中保留FileUpdatedTime最近的同名记录项
4)数据管理系统扫描FileTable和HisFileView,将满足下列条件的数据单元信息登记到HisFileView中0号文件对应的记录项的FileConstitution中
●将FileTable所有FileNumber>=3的记录项中的FileConstitution中的每个数据单元U和HisFileView中所有FileNumber>=3的记录项中的FileConstitution内容做比对,如果U不在HisFileView中的任意一个记录项的FileConstitution中则将U登记到HisFileView中0号文件对应记录项的FileConstitution中
5)数据管理模块用HisFileView替换CurFileView,并改写ManTable中的相关信息
6)数据管理模块根据CurFileView中的内容修改FileTable中0号文件对应的记录项
7)文件管理系统接口模块依据CurFileView中的内容修改文件管理系统的文件索引表并修改0-2号文件,然后将1号及2号文件的信息反馈给数据管理模块
8)数据管理模块依据文件管理系统接口模块提供的信息修改FileTable及CurFileView中1号及2号文件对应的记录项。
名词解释
数据视图:为被保护区域的文件建立的文件信息和数据单元构成信息视图,可以转化为文件管理系统的文件索引表
当前视图:面向当前时间数据视图
历史视图:基于历史某一时间节点建立的数据视图,在恢复时用于替代当前视图
数据单元:构成文件和进行数据备份的基本数据单位,在本发明中定义为统一大小的物理数据块
数据单元粒度:数据单元的大小,以扇区为单位,可针对不同应用场合调整,但对同一个应用系统所有数据单元粒度是统一的
时标:创建视图的时间节点基准
生成时标:若历史视图是基于某一时间节点生成的,则该时间节点为该历史视图的生成时标