CN101004703A - 一种计算机系统快速还原的方法 - Google Patents
一种计算机系统快速还原的方法 Download PDFInfo
- Publication number
- CN101004703A CN101004703A CNA2006101655877A CN200610165587A CN101004703A CN 101004703 A CN101004703 A CN 101004703A CN A2006101655877 A CNA2006101655877 A CN A2006101655877A CN 200610165587 A CN200610165587 A CN 200610165587A CN 101004703 A CN101004703 A CN 101004703A
- Authority
- CN
- China
- Prior art keywords
- virtual
- sector
- block
- mapping
- algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机存储系统结构技术领域,其特征在于:它将存储设备虚拟化,利用映射技术为系统提供一种虚拟的存储视图,系统对存储设备的所有操作均在该虚拟视图上进行,在去掉虚拟视图后,系统还原为真实视图,从而实现系统的快速还原。它含有:虚拟设备控制程序⑦:该模块是用户和存储设备虚拟层⑥的接口,用户可通过该模块控制和设置系统还原的其它功能模块。存储设备虚拟层⑥:该模块由物理存储设备的虚拟驱动程序②、虚拟映射算法③和虚拟存储设备抽象层④三个子模块组成,该模块通过子模块物理存储设备的虚拟驱动程序②访问物理设备,通过子模块虚拟存储设备抽象层④向文件系统提供“合成”的虚拟存储视图。它在保护和还原系统时,不涉及数据的备份和恢复操作。
Description
技术领域
计算机系统快速还原的方法属于计算机存储系统结构技术领域。
背景技术
随着计算机硬件稳定性的逐渐提高,计算机故障越来越多地表现为软故障,即由软件引起的各种故障。这些软故障一般是由有害代码攻击、误操作或软件不兼容等引起的。随着网络应用的普及,有害代码攻击已经成为引起软故障的主要来源,严重影响计算机的使用。尽管人们在计算机安全方面投入了大量的研发工作,但任何一个计算机系统都存在漏洞及崩溃的可能,人们不可能堵住所有的计算机漏洞或完全避免错误操作。事实上,由于人为错误等各种不可避免的因素,绝对安全的系统在现实中是不存在的,因此,在计算机系统崩溃的情况下,如何快速恢复系统到可工作状态是一个非常有用的方法。
在许多应用软件中,撤销操作已经成为必不可少的功能,如排版软件、数据库软件等,均具有撤销操作,该功能为用户恢复错误操作提供了极大的方便。如同应用软件中的撤销操作一样,系统还原是一种作用于整个计算机系统的撤销操作,它不仅能够恢复应用软件对系统引起的各种变化,同时能够恢复操作系统对系统引起的变化,它是一种能够恢复计算机系统到以前特定状态的方法。
在系统还原中,一般涉及数据的备份和恢复操作,这些备份数据不仅要占用大量的磁盘空间,而且无论是备份操作还是恢复操作,均需要较长的时间,在数据量越来越大的情况下,这种方式越来越不适应快速恢复系统的要求。
本项发明是一种快速恢复计算机系统到特定状态的系统还原方法,该方法利用数据映射技术来实现系统的保护和快速还原,由于该方法不涉及数据的备份和恢复操作,因而不仅占用的系统资源小,而且恢复系统的速度非常快。
发明内容
本发明的目的在于提供一种在系统遭到破坏或用户需要的情况下快速把计算机系统恢复到特定状态的还原方法。
本发明的特征在于该方法是在计算机系统中依次按以下步骤实现的:
步骤(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”表示模运算:
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+0ffset,接着执行步骤(5.3.4);
步骤(5.3.3)若该扇区未映射,令MapLBA=LBA,直接转步骤(5.5);
步骤(5.)若该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表,数据提交或还原完毕。
本发明是一种系统还原方法,用于在系统遭到破坏或用户需要等情况下快速恢复系统到特定状态。该方法利用映射技术为计算机系统提供一种虚拟的存储视图,系统对存储设备的所有操作均在该虚拟视图上进行,在去掉虚拟视图后,系统还原为真实视图,从而实现系统的快速还原。本发明的主要特点如下:
1.保护能力强
本发明是一种基于存储设备的系统保护,它位于文件系统之下,不仅能对透过文件系统的破坏操作提供保护,而且能在系统无法启动的情况下恢复系统。
2.应用范围广
该方法可以应用于各种存储设备和操作系统,它不仅可用于各种PC机和服务器,而且还可广泛应用于各种终端设备,如手机、ATM机等具有存储设备的各种系统。该方法不仅能够以纯硬件方式实现,而且还能够以纯软件或软硬件联合方式进行实现。
3.还原速度快
和现有的还原方法不同,该方法对系统的保护是通过映射方式实现的,在保护和还原系统时,不涉及数据的备份和恢复操作,因此还原速度快。例如,恢复一块容量为60G的硬盘数据,所需时间仅为十几秒。
4.额外占用空间小
本方法不备份原始数据,其额外占用的储存空间主要是控制表所占的存储空间,本方法额外占用的磁盘空间约占整个磁盘空间的比例约是0.05%。
5.对系统性能影响小
和现有的系统还原方法相比,由于本方法不涉及数据备份操作,其主要操作是查表操作,由理论分析和实验结果可知,它对系统性能的影响比较小。
附图说明
图1.本发明方法的实现本原理图,在该图中,“系统存储”中的数据表示受保护的数据,也就是在还原时需要恢复的数据;“临时存储”中的数据是存放映射数据的区域,本发明对系统存储数据的增加、删除、修改等修改操作均映射在临时存储区中;“合成视图”表示经过本发明给出的算法处理后,系统“看到”的虚拟视图;“文件视图”表示文件系统将“合成视图”以文件的方式表达后所呈现出的视图。
图2.对应于一个BLOCK的DAT和MAP的状态转换,图中的“直接写入”指系统要写入的扇区位于本DAT和MAP所表示的BLOCK块中。“映射写入”指系统要写入的扇区所位于的BLOCK块受保护,也即该BLOCK块对应的DAT的状态为保护状态。
图3.虚拟写操作算法,该图给出了虚拟写操作的详细算法。
图4.虚拟读操作算法,该图给出了虚拟读操作的详细算法。
图5.映射数据提交算法,该图给出了数据提交算法。
图6.还原算法,该图给出了系统还原的算法。
图7.系统还原方法的纯软件实现架构,该图中黑体部分是本发明方法的相关模块。其它部分是系统模块。存储设备虚拟层⑥由物理存储设备的虚拟驱动程序②、虚拟映射算法③和虚拟存储设备抽象层④三个子模块组成,存储设备虚拟层⑥通过物理存储设备的虚拟驱动程序②子模块访问物理设备,存储设备虚拟层⑥通过虚拟存储设备抽象层④子模块向文件系统提供“合成”的虚拟存储视图。虚拟设备控制程序⑦是用户控制界面程序,用户可通过该模块控制和设置系统还原的其它功能模块。
图8.系统还原方法的纯硬件实现架构,该图将图7中的存储设备虚拟层⑥以单一的模块存储设备虚拟映射算法及接口⑥进行实现。
图9.系统还原方法的软硬件联合实现架构,图中位于计算机系统BIOS或EFI中的映射算法⑧是通过硬件方式实现的,其它模块用软件实现,并且各个功能模块同图7中的功能模块。
具体实施方式
本发明将存储设备虚拟化,利用映射技术为系统提供一种虚拟的存储视图,系统对存储设备的所有操作均在该虚拟视图上进行,在去掉虚拟视图后,系统还原为真实视图,从而实现系统的快速还原。它含有:
虚拟设备控制程序⑦:该模块是用户和存储设备虚拟层⑥的接口,用户可通过该模块控制和设置系统还原的其它功能模块。
存储设备虚拟层⑥:该模块由物理存储设备的虚拟驱动程序②、虚拟映射算法③和虚拟存储设备抽象层④三个子模块组成,该模块通过子模块物理存储设备的虚拟驱动程序③访问物理设备,通过子模块虚拟存储设备抽象层④向文件系统提供“合成”的虚拟存储视图。
本发明将系统拥有的存储空间分成两个区域:所有已分配的空间组成系统存储区域,所有未分配的空间,也就是空闲空间组成临时存储区域。同时将待还原的目标数据“保护”起来,禁止外部操作对其进行直接修改,将所有对目标数据的修改操作映射到临时存储区域,并通过给出的虚拟读操作算法和虚拟写操作算法将原数据和映射数据进行“合成”处理,从而达到“修改”的目的,其实现原理见附图1。在图1中,“系统存储”中的数据表示受保护的数据,也就是在还原时需要还原的数据,对系统存储数据的修改操作(包括增加、删除、修改等)均映射在临时存储区中,通过“合成”处理,为文件系统提供一个虚拟视图,在文件系统看来,所有的修改操作均成功完成了,这样,在“只读”的系统存储区就能够被执行“写”操作厂。从上述原理中可以看出,只要去掉“合成”操作,就可实现系统还原,由于不涉及额外的备份数据和恢复数据操作,本发明不仅对系统性能影响比较小,而且还原速度非常快。如果用户想将修改操作提交到系统存储区域,则只需按照本发明给出的映射数据提交算法即可将临时存储区域的数据合并到系统存储区域。
在下面的叙述中,为论述方便,选用硬盘作为具体的存储设备,对其它类型的存储设备,本发明提出的方法同样适用,只是存储设备的基本存储单位由具体的存储设备确定。
将硬盘以其基本存储单位扇区为单位,按照逻辑块地址LBA(Logical Block Area)方式进行线性编址,编址后的硬盘扇区地址表示为:0,1,2.…,MaxLBA,其中的MaxLBA表示硬盘的总扇区数减1,然后以32个(该值可变,但最好为2的N(N=1,2,3…)次方,以便和目前操作系统中簇的分配情况相匹配)扇区作为一个基本单元,称为一个BLOCK块,将整个硬盘划分成[MaxLBA/32]+1个BLOCK块。每个BLOCK用两个数来表示,分别称为DAT和MAP。每个BLOCK对应的DAT由2位组成,用来表示BLOCK所处的四种状态:空闲、修改、受保护和映射状态。每个MAP由64位(该数应随着BLOCK块大小的改变作相应的调整)组成,用来存放该BL0CK块的映射地址和BLOCK块中每个扇区的映射状态,其中32位表示BLOCK块中每个扇区的映射状态,某位为1表示该扇区已映射,否则为未映射,MAP中的其它位用来表示该BLOCK块对应的映射地址(如果该块没有映射则为0),称其为pMAP。由所有表示BLOCK状态的DAT组成的数据称为块分配表BAT(Block Allocation Table),由所有表示BLOCK映射地址和扇区映射状态的MAP组成的数据称为映射索引表MIT(Mapping Index Table)。硬盘上的每个BL0CK,在BAT表和MIT表中各有一个DAT和MAP数和其一一对应,它们三者之间是一一映射关系。
保护算法是根据BAT和MIT表的数据来对硬盘的扇区地址进行映射变换,特别是BAT表,它记录着BLOCK块所处的状态,决定着映射变换的各种操作。对于BAT表中表示BLOCK块的每个数据DAT,表示的四种状态是:
表示某个BLOCK块的DAT和MAP的状态变换如附图2所示,图中的“直接写入”指应用程序或操作系统要写入的扇区位于本DAT或MAP所表示的BLOCK块中。空闲状态到保护状态转换中的“映射写入”指应用程序或操作系统要写入的扇区所位于的BLOCK块受保护,也即该BLOCK块对应的DAT的状态为保护状态,在这种情况下,写操作算法在硬盘上搜索空闲的BLOCK块,然后将原BLOCK块对应的DAT的状态设置为映射状态,将找到的空闲BLOCK块对应的DAT设置为保护状态,然后将搜索到的空闲BLOCK块的起始LBA值写入对应的MAP中的pMAP中,并将MAP中和写入扇区位置对应的位置1。
虽然对存储设备的操作有多种操作方式,但从本质上来看,都属于“读”操作和“写”操作范围,因此,为了实现虚拟磁盘操作,只需实现虚拟读操作和虚拟写操作即可。为表达方便,下述算法仅以处理一个扇区为例,如需处理多个扇区,只需重复该算法即可。在下述算法描述中,Offset表示某扇区在块中的偏移量,也即该扇区是BLOCK块中的第几个扇区;pBLOCK表示每个BLOCK块对应的实际块地址;pMAP表示BLOCK块对应的映射地址;MapLBA表示扇区映射后的逻辑地址;pFREE表示空闲块的块地址,公式中“/”表示整除运算,“MOD”表示模运算。
虚拟写操作算法:本方法拦截系统对存储设备的所有写操作,然后按照给出的算法作相应的映射变换,从而实现对系统的动态保护,该算法的具体描述见附图3.
虚拟读操作算法:本方法拦截系统对存储设备的所有读操作,然后按照给出的算法完成数据的读操作,该算法的具体描述见附图4.
映射数据提交算法:在进行系统恢复时,为了能够还原系统到当前状态,需要将保存在临时存储区中的数据提交到系统存储区域。从而使临时存储区域中的数据合并到系统存储区域。由于数据提交操作涉及到所有映射数据的复制操作,因此提交数据所需时间和提交的数据量有关。提交算法的具体描述见附图5.
系统还原算法:由于将所有对存储设备的写操作均作了虚拟处理,因此在需要还原时,只要去掉“合成”操作即可恢复系统所有被“修改”的数据。从虚拟读写算法中我们知道,所有“合成”操作均按照BAT和MIT表中的数据进行处理的,因此,只要将BAT和MIT表中的数据清0就可达到还原系统的目的。由于在还原时不涉及被“修改”数据的恢复操作(如拷贝等),系统还原所需的时间是将BAT和MIT清0以及重建BAT表的时间,因此还原的速度非常快。事实上,本发明采用的原理决定了它还存在一种隐含的还原方式:自恢复还原方式。在系统还原程序自身遭到攻击,导致系统崩溃等情况下,当系统再次启动时,由于存储设备虚拟层的失效,“合成”操作不再存在,系统自动会还原到上次提交时的状态。附图6给出了具体的还原算法。
要实现上述算法,很重要的一步是建立BAT和MIT表的初始状态。BAT表的初始状态由保护程序在安装时通过扫描文件系统的分配表建立,如对于FAT16、FAT32类型的文件系统,通过扫描相应的FAT表来获得当前的磁盘分配状态;对于NTFS文件系统,可以通过扫描位图文件得到当前的磁盘分配状态等。BAT表中每一项的初始状态只有空闲和保护两种状态,MIT表的初值均为0。
上述算法既可以用纯硬件的方式实现,也可以用纯软件的方式实现,或者软硬件相结合的方式进行实现。
在纯软件的实现方式中,需根据计算机系统所安装的操作系统进行具体的分析。所依赖的架构如附图7所示。只要保证在计算机系统的启动和运行过程中,所有的存储设备操作均在本发明提出的虚拟读写算法控制下即可。
在纯硬件实现方式中,将附图7中的存储设备虚拟层⑥以单一的模块形式进行实现,具体架构见附图8,其中映射算法采用第本发明所给出的算法,其中接口主要为位于软件层的虚拟设备控制程序⑦提供对存储设备虚拟层⑥的控制能力,如停止或启动虚拟等。
在软硬件联合实现方式中,将虚拟映射算法分别在两个层次进行实现,在计算机系统的基本输入输出系统BIOS中实现虚拟映射算法⑧,如果计算机系统所安装的操作系统对存储设备的所有操作均通过BIOS进行,那么上层软件不再需要实现虚拟映射算法,只需提供对虚拟映射算法⑧的虚拟设备控制程序⑦即可实现系统还原;反之,如果操作系统在启动时通过BIOS对存储设备进行操作,而启动后通过操作系统自带的驱动程序对存储设备进行操作,则本发明不仅要在BIOS实现虚拟映射算法⑧,而且也需按照附图9给出的架构实现存储设备虚拟层⑥。例如,在安装有Windows或Liinux/Unix的系统上实现本发明提出的软硬件联合方式实现系统还原,则必须同时实现⑥和⑧;如果在装有DOS操作系统的系统上实现本发明提出的软硬件联合方式实现系统还原,则不必实现⑥。
本算法额外占用的储存空间主要是BAT表和MIT表所占的存储空间,由于实现本算法的程序所占的存储空间很小,在以下的分析中,均忽略不计。在下面的计算中,每个扇区按512字节进行计算,每个BLOCK块的大小按32个扇区计算。
1)BAT表占用的空间
因BAT表中每2位表示一个BLOCK,所以一个扇区可表示512*8/2=2048个BLOCK,也就是可以表示2048*32=65536个扇区,因此,BAT表占用的磁盘空间占整个磁盘空间的比例是1/65536=0.0015%。
2)MIT表占用的空间
因MIT表中每64位表示一个BLOCK,所以一个扇区可表示512*8/64=64个BLOCK,也就是可以表示64*32=2048个扇区,因此,MIT表占用的磁盘空间占整个磁盘空间的比例是1/2048=0.0488%。
综合1)和2)知本算法额外占用的磁盘空间约占整个磁盘空间的比例是0.0015%+0.0488%=0.0503%。
本算法额外占用的系统资源主要包括内存和CPU的占用,其中对CPU时间的占用,主要集中在查找BAT和MIT表的时间上;对于内存的占用,本算法需常驻内存的部分,根据用C语言已经实现的程序看,约需6K,但为了加快对BAT和MIT表的查找速度,需在内存保留一定的空间,用于存放最近常用的BAT和MIT表数据,使读写磁盘上的BAT和MIT表的次数降到最低程度。该空间越大,可存放最近使用的BAT表和MIT表的数据越多,查找的速度越快,对CPU的占用越少,但保护程序占用的内存越多,系统可用的内存越小,因此,存在一个最佳值的问题,根据实际试验结果,分配的内存空间占磁盘空间的比例为3/%%%时(60G的硬盘,需分配180K的内存用于缓冲BAT表和MIT表)保护程序对系统性能的影响已降低到很小的程度,再加大缓冲区,效果已不明显。
为了验证本发明实际效果和对系统性能的影响,我们用纯软件方式在Windows上进行了实现,并对本发明的功能和性能分别进行了测试,其中功能测试中的各种破坏操作主要通过编程实现,性能测试采用标准测试程序Iometer。测试环境为:1.2GHz Intel Celeron CPU,256Mbytes内存,Windows 2000和60G Seagate IDE硬盘(ST360021),功能测试结果如表1所示,性能测试结果如附图10(a-d)所示。
表1.系统还原功能的测试结果
破坏操作 | 操作结果 | 是否可以恢复 |
删除文件 | 完成,文件丢失 | 可以 |
修改文件 | 完成,文件被修改 | 可以 |
格式化磁盘 | 完成,磁盘数据丢失 | 可以 |
破坏主引导扇区 | 完成,系统无法启动 | 可以 |
由于本发明方法主要影响磁盘的读写操作,因此在性能测试中,采用相同的测试环境和相同的参数配置,分别测试在安装和未安装利用本发明开发的系统还原软件的情况下磁盘的吞吐量。对磁盘的读写方式分别采用了顺序读(%随机操作=0,%读操作=100)、顺序写(%随机操作0,%读操作=0)、随机读写(0<%随机操作<100),其中“随机操作%”指读写操作的随机概率,“读操作%”指读操作所占的比例。附图10(a-d)给出的分别是在Iometer的读写块大小为1K、4K、8K和16K的情况下的测试结果。
从图中可以看出,在顺序读写的情况下(%随机操作=0),本方法对磁盘吞吐量有一定的影响,但随着读写随机性的增大,本方法对磁盘吞吐量的影响逐渐降低,继而还对提高吞吐量有一定的帮助。从理论上来说,由于本方法需要额外的查表操作,因此对磁盘的吞吐量肯定有影响,但考虑到磁盘的连续读写速度要远远快于非连续读写速度,因本方法可以将系统对磁盘的随机写操作在映射时形成连续的块,这从一定程度上提高了系统的读写速度,因而出现了图中异常的结果。
从以上的分析和在Windows上的实际试验结果看,本发明提出的系统还原方法总体占用的系统资源比较少,且对系统整体性能的影响比较小。
Claims (4)
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”表示模运算:
pBLOCK=LBA/32,
Offset=LBA MOD32,
步骤(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.3.4);
步骤(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表,数据提交或还原完毕。
2.根据权利要求1所述的一种计算机系统快速还原的方法,其特征在于:所述步骤(1.3)中BLOCK块的空闲状态用00表示,属于临时存储区域;修改状态用01表示,表示原为空闲块,现已做过修改,属于临时存储区域;保护状态用10表示,属于系统存储区域;映射状态用11表示,该BLOCK块已被映射,说明该块原为保护块,并且被修改,读写均需根据MAP中的地址指针来重新定位。
3.根据权利要求1所述的一种计算机系统快速还原的方法,其特征在于:所述步骤(2)中的存储设备虚拟模块是一个物理存储设备,依次由存储设备虚拟层及其接口、物理存储设备的控制器及物理存储设备的存储介质依次互通而成。
4.根据权利要求1所述的一种计算机系统快速还原的方法,其特征在于:所述虚拟映射算法分别在两个层次实现,在最低层位于系统物理存储设备驱动程序和物理存储设备之间的基本I/O系统中实现虚拟算法并且按以下两种情况分别实现快速还原方法:
若计算机操作系统对硬盘的所有操作均通过基本I/O系统中的虚拟映射算法实现,则上层软件不再需要实现虚拟映射算法,只需提供对虚拟映射算法的控制程序即可完成系统还原;
若计算机操作系统在启动时通过基本I/O系统对硬盘进行操作,而启动后通过操作系统自带的驱动程序对硬盘进行操作,则系统不仅要在基本I/O系统中实现虚拟映射算法,而且上层软件也需要实现虚拟映射算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101655877A CN100428196C (zh) | 2006-12-22 | 2006-12-22 | 一种计算机系统快速还原的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101655877A CN100428196C (zh) | 2006-12-22 | 2006-12-22 | 一种计算机系统快速还原的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101004703A true CN101004703A (zh) | 2007-07-25 |
CN100428196C CN100428196C (zh) | 2008-10-22 |
Family
ID=38703870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101655877A Expired - Fee Related CN100428196C (zh) | 2006-12-22 | 2006-12-22 | 一种计算机系统快速还原的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100428196C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096614A (zh) * | 2011-01-24 | 2011-06-15 | 上海银杏界信息科技有限公司 | 应用系统的数据还原方法 |
CN101576834B (zh) * | 2009-05-08 | 2012-05-30 | 西安蓝海本立信息科技有限公司 | 基于时间戳建立数据视图的连续数据保护系统及方法 |
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
CN106998468A (zh) * | 2017-04-25 | 2017-08-01 | 郑州云海信息技术有限公司 | 一种视频服务器性能测试的方法及系统 |
CN107209683A (zh) * | 2015-01-30 | 2017-09-26 | 惠普发展公司有限责任合伙企业 | 备份映像恢复 |
CN111125710A (zh) * | 2019-11-29 | 2020-05-08 | 联想(北京)有限公司 | 一种信息处理方法、装置、电子设备和存储介质 |
CN114047728A (zh) * | 2021-10-27 | 2022-02-15 | 国核自仪系统工程有限公司 | 基于安全总线的数据同步方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020101424A1 (en) * | 2000-12-22 | 2002-08-01 | Bin Yuan | Method of testing graphic accelerator in DOS mode |
CN1160731C (zh) * | 2001-07-05 | 2004-08-04 | 刘海全 | 一种计算机硬盘数据的保护方法 |
-
2006
- 2006-12-22 CN CNB2006101655877A patent/CN100428196C/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576834B (zh) * | 2009-05-08 | 2012-05-30 | 西安蓝海本立信息科技有限公司 | 基于时间戳建立数据视图的连续数据保护系统及方法 |
CN102096614A (zh) * | 2011-01-24 | 2011-06-15 | 上海银杏界信息科技有限公司 | 应用系统的数据还原方法 |
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
CN107209683A (zh) * | 2015-01-30 | 2017-09-26 | 惠普发展公司有限责任合伙企业 | 备份映像恢复 |
CN106998468A (zh) * | 2017-04-25 | 2017-08-01 | 郑州云海信息技术有限公司 | 一种视频服务器性能测试的方法及系统 |
CN106998468B (zh) * | 2017-04-25 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种视频服务器性能测试的方法及系统 |
CN111125710A (zh) * | 2019-11-29 | 2020-05-08 | 联想(北京)有限公司 | 一种信息处理方法、装置、电子设备和存储介质 |
CN114047728A (zh) * | 2021-10-27 | 2022-02-15 | 国核自仪系统工程有限公司 | 基于安全总线的数据同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100428196C (zh) | 2008-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201338B (zh) | 数据存储方法及装置 | |
EP3519969B1 (en) | Physical media aware spacially coupled journaling and replay | |
US6216211B1 (en) | Method and apparatus for accessing mirrored logical volumes | |
US9798618B2 (en) | Data placement for loss protection in a storage system | |
Bonwick et al. | The zettabyte file system | |
US9292434B2 (en) | Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device | |
EP2992439B1 (en) | Selective backup of program data to non-volatile memory | |
CN101361047B (zh) | 用于存储系统中的数据保护的方法和系统 | |
CN102707900B (zh) | 虚拟盘存储技术 | |
US7634627B1 (en) | System and method for performing extent level backups that support single file restores | |
US8224781B2 (en) | Data protection in a data storage system | |
US7882386B1 (en) | System and method for recovering a logical volume during failover or reboot of a file server in a data storage environment | |
US7337288B2 (en) | Instant refresh of a data volume copy | |
CN100428196C (zh) | 一种计算机系统快速还原的方法 | |
US8060703B1 (en) | Techniques for allocating/reducing storage required for one or more virtual machines | |
US7743227B1 (en) | Volume restoration using an accumulator map | |
US11093317B1 (en) | Managing uncorrectable user data | |
WO2012041667A1 (en) | Enhancing data store backup times | |
US20060053260A1 (en) | Computing system with memory mirroring and snapshot reliability | |
US20110153674A1 (en) | Data storage including storing of page identity and logical relationships between pages | |
US6978354B1 (en) | Method for creating a virtual data copy of a volume being restored | |
CN101788935A (zh) | 冗余磁盘数组系统的坏块处理方法 | |
US20100251013A1 (en) | Method for processing bad block in redundant array of independent disks | |
CN101122882A (zh) | 消除廉价磁盘冗余阵列设备的同步过程的方法 | |
Yuan et al. | Comprehensive evaluation of file systems robustness with SPIN model checking |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081022 Termination date: 20100122 |