发明名称 一种计算机系统快速还原的方法
摘要 本发明属于计算机存储系统结构技术领域,其特征在于:它将存储设备虚拟化,利用映射技术为系统提供一种虚拟的存储视图,系统对存储设备的所有操作均在该虚拟视图上进行,在去掉虚拟视图后,系统还原为真实视图,从而实现系统的快速还原。它含有:虚拟设备控制程序⑦:该模块是用户和存储设备虚拟层⑥的接口,用户可通过该模块控制和设置系统还原的其它功能模块。存储设备虚拟层⑥:该模块由物理存储设备的虚拟驱动程序②、虚拟映射算法③和虚拟存储设备抽象层④三个子模块组成,该模块通过子模块物理存储设备的虚拟驱动程序②访问物理设备,通过子模块虚拟存储设备抽象层④向文件系统提供“合成”的虚拟存储视图。它在保护和还原系统时,不涉及数据的备份和恢复操作。
申请公布号 CN100428196C 申请公布日期 2008.10.22
申请号 CN200610165587.7 申请日期 2006.12.22
申请人 清华大学 发明人 管晓宏;梁金千
分类号 G06F12/08(2006.01);G06F12/14(2006.01) 主分类号 G06F12/08(2006.01)
代理机构 代理人
主权项 1.一种计算机系统快速还原的方法,其特征在于该方法是在计算机系统中依次按以下步骤实现的:步骤(1)按以下步骤把计算机系统拥有的存储空间动态地分成两个区域,所有已分配的空间组成系统存储区域,所有未分配的空间组成临时存储区域,所述系统存储区域含有禁止外部操作对其进行直接修改而被保护起来的待还原的目标数据,在临时存储区域存储的是对该目标数据进行过包括增加、删除、修改在内的修改操作的目标数据的映射数据,同时把所述系统存储区域内的和临时存储区域内的数据通过包括虚拟读算法、虚拟写算法在内的映射算法进行合成处理;步骤(1.1)把硬盘以其基本存储单位扇区为单位,照逻辑块块地址LBA进行线性编址后的硬盘扇区地址表示为:0,1,2,...,MaxLBA,其中的MaxLBA表示硬盘的总扇区数减1;步骤(1.2)以2的N(N=1,2,3…)次方个扇区作为一个基本单位,称为BLOCK块,把整个硬盘分成[MaxLBA/2N]+1个BLOCK;步骤(1.3)每个BLOCK用两个数DAT和MAP表示:DAT由2位组成,表示BLOCK所处的四种状态是:空闲、修改、受保护和映射状态,其中00表示此BLOCK块空闲,属于临时存储区域;01表示此BLOCK块原为空闲块,现已作过修改,属于临时存储区域;10表示此BLOCK块是受保护块,属于系统存储区域;11表示此BLOCK块已被映射,说明该块原为受保护块并且被“修改”,对该块的读写操作均需根据MAP中的地址指针来重定位;当N=5时,MAP由64位组成,其中32位表示BLOCK块中每个扇区的映射状态,其值为1表示该扇区已映射,否则为未映射,MAP中的其它位表示该映射对应的映射地址,若该块未映射,则为0,映射地址用pMAP表示,所述映射是指把系统存储区中受保护以便在系统还原时需要还原的数据映射到临时存储区域经过修改操作后保存在该临时区域中,这些经过映射保存在临时区域中的数据称为映射数据,映射地址pMAP表示每个BLOCK块在临时存储区域中对应的映射地址,而pBLOCK表示所述每个BLOCK在系统存储区域中的实际块地址;步骤(1.4)构造块分配表BAT和映射索引表MIT:BAT表由表示所有各个BLOCK状态的DAT组成的数据构成,表示每个BLOCK块所处的状态;MIT表由所有表示各个BLOCK映射地址和映射状态的MAP组成的数据构成,表示每个BLOCK块及其内每个扇区的映射状态;步骤(2)在所述计算机系统中设置以下模块:设在用户界面的虚拟设备控制程序模块,是用户和存储设备虚拟层模块的接口,用户通过该模块控制和设置系统还原用的其它模块;存储设备虚拟层模块,与文件系统系统互连,而该文件系统又与所述虚拟设备控制程序模块互连,所述存储设备虚拟层模块设在存储设备虚拟层,包括:三个依次互连的虚拟存储设备抽象层、虚拟映射算法以及物理存储设备的虚拟驱动程序共三个子模块,其中:虚拟驱动程序子模块访问物理存储设备,虚拟映射算法子模块设有:虚拟写操作算法、虚拟读操作算法、映射数据提交算法以及系统还原算法,该虚拟映射算法子模块通过虚拟驱动程序对物理存储设备进行读写操作,把系统存储区域中受保护待还原的原数据和临时存储区域的映射数据合成虚拟存储视图,再通过虚拟存储设备抽象层子模块向文件系统提供该虚拟存储视图;步骤(3)建立BAT和MIT表的初始状态:BAT表的初始状态由保护程序在安装时通过扫描文件系统的文件分配表建立该BAT表中每一项的初始状态,BAT表中每一项的初始状态只有空闲和保护两种状态,MIT表的初值均为0;步骤(4)按以下步骤用虚拟写操作算法拦截系统对硬盘的所有写操作,再作相应的映射变换,实现对系统的动态保护:步骤(4.1)存储设备虚拟层中的虚拟映射算法子模块得到硬盘上要写扇区的逻辑块地址LBA ;步骤(4.2)虚拟映射算法子模块按下式计算要写扇区所在的BLOCK块的实际块地址pBLOCK和该扇区在BLOCK块中的偏移量Offset,其中Offset表示该扇区是BLOCK块中的第几个扇区,公式中“/”表示整除运算,“MOD”表示模运算:在BLOCK块的扇区为32的条件下,LBA表示逻辑块地址,pBLOCK=LBA/32,Offset=LBA MOD 32,步骤(4.3)根据pBLOCK和Offset在BAT表中查得该扇区所在的BLOCK块的状态;步骤(4.4)判断该块是否为保护状态:若为保护状态,在临时存储区域查找空闲的BLOCK块,A.若找到,便依次执行以下步骤:步骤(4.4.1)步骤(4.3)所述的原BLOCK块的状态改为映射状态;步骤(4.4.2)找到的空闲BLOCK块的状态改为保护状态;步骤(4.4.3)把找到的空闲BLOCK块的地址pFREE值放入原BLOCK块在MIT表中对应的映射地址pMAP中,并把该扇区在MIT表中的对应位置1;步骤(4.4.4)计算该扇区在MIT表中的具体映射地址MapLBA=pFREE*32+Offset,转入步骤(4.6);B.若未找到空闲的BLOCK块,便把返回状态设置为磁盘满,转入步骤(4.7);步骤(4.5)若为非保护状态,则判断步骤(4.3)所述的BLOCK块是否为空闲状态:若为空闲状态,则把BAT表中该BLOCK块的状态改为修改状态,令MapLBA=LBA,再转入步骤(4.6);若为非空闲状态,则判断是否为修改状态;若为修改状态,令MapLBA=LBA,再转入步骤(4.6);若为映射状态,则在MIT表中得到该BLOCK块的映射地址pMAP,且把该扇区在MIT表中的对应位置1,接着计算该扇区的映射地址MapLBA=pMAP*32+Offset,并转入步骤(4.6);步骤(4.6)把所得到的MapLBA作为物理地址传递到物理存储设备的虚拟驱动程序,再通过硬盘驱动程序写入相应的扇区;步骤(4.7)返回写操作状态;步骤(5)按以下步骤用虚拟读操作算法拦截系统对硬盘的所有读操作,并读出数据:步骤(5.1)存储设备虚拟层得到要读扇区所在的BLOCK块的地址pBLOCK和偏移量Offset,其中pBLOCK和Offset的计算方法同步骤(4.2);步骤(5.2)根据pBLOCK和Offset在BAT表中查该扇区所在BLOCK块的状态是否处于映射状态;步骤(5.3)若该BLOCK块处于映射状态,按以下步骤依次执行:步骤(5.3.1)根据pBLOCK在MIT表中的对应项查该扇区的状态位;步骤(5.3.2)若该扇区已映射,则:在MIT表中的对应项得到该块的映射地址pMAP,并计算该扇区的映射地址MapLBA=pMAP*32+Offset,接着执行步骤(5.5);步骤(5.3.3)若该扇区未映射,令MapLBA=LBA,直接转步骤(5.5);步骤(5.4)若该BLOCK块处于未映射状态,则MapLBA=LBA,接着执行步骤(5.5);步骤(5.5)把MapLBA作为物理地址传递到物理存储设备的虚拟驱动程序,再通过硬盘驱动程序读取相应扇区,再返回读操作状态;步骤(6).按以下步骤用映射数据提交算法,把临时存储区域中的数据合并到系统存储区域:步骤(6.1)扫描硬盘的第一个BLOCK块;步骤(6.2)在BAT表中查该BLOCK块的状态;步骤(6.3)若为映射状态,按以下步骤执行:步骤(6.3.1)在MIT表的对应项查该BLOCK块的每个扇区的状态位,判断该扇区是否已映射;步骤(6.3.2)若已映射,根据该扇区的映射地址把临时存储区域中相对应映射块内对应扇区的数据拷贝到步骤(6.3.1)中所选的扇区内;若未映射,则执行步骤(6.3.3);步骤(6.3.3)判断步骤(6.2)中所选BLOCK中的所有扇区是否都已检查完毕,若未检查完毕,继续执行步骤(6.3.1),否则,执行步骤(6.4);步骤(6.4)判断硬盘中所有的BLOCK块是否已扫描完毕,若未扫描完毕,则扫描硬盘中下一个BLOCK块,然后转步骤(6.2),否则转步骤(7);步骤(7)按以下步骤用数据还原算法,把临时存储区域中的数据丢弃:步骤(7.1)把BAT表和MIT表清为0;步骤(7.2)重新扫描磁盘,构造新的BAT表,数据提交或还原完毕。
地址 100084北京市100084信箱82分箱清华大学专利办公室