论文部分内容阅读
摘 要:虚拟还原工作在系统的最底层,先于操作系统,具有很高的备份和还原速度,同时对用户完全透明。虚拟还原技术备份的数据并不是数据区的数据,只是主引导扇区、操作系统引导扇区、文件分配表和目录区的数据。由于数据量小,我们完全可以忽略虚拟还原数据保护技术在保存备份数据时所占用的空间和所需要的时间。因此虚拟还原技术越来越成为一种广泛使用的数据保护方式。
关键词:虚拟还原;文件存储分配;病毒
我们知道,硬盘上最重要的数据区除了BOOT(引导区)外,是ROOT(根目录)和FAT(文件分配表),ROOT里面记录的是文件或子目录的属性、尺寸、日期以及它的起始簇(软盘里面是扇区)。FAT表里面记录的是每个簇的使用分配情况。
正常情况下,当我们向硬盘里面添加一个新文件,OS(操作系统)首先在ROOT里面将文件属性等填进去,在FAT表里面按一定算法找到一个空簇,将它标记为被该文件占用后,在ROOT里面将这个簇做为起始簇记录进去,然后将文件内容写入这个簇。如果文件没有写完,系统再在FAT里找一个空簇,将其标记为占用,然后在前一个簇的最后做一个指针向这个新的簇,形成一个单链表,接着再在这个新的簇里面继续写内容。如此重复直到文件内容完全记录完毕。最后系统根据占用的总簇数计算出文件尺寸,取出当前时间写到ROOT里面。
当我们删除一个文件的时候,系统实际上并不到每个簇去清除内容,而只是把ROOT里面文件名的首字符换成&符号,就是标记这个文件为删除,然后延着链表在FAT表中将该文件占用的所有簇释放(标记为空),这样新的文件写入的时候就可以使用这些被释放的簇。 当我们改变一个文件的属性或名字的时候,系统实际只在ROOT里面做一点改动而已。子目录下的文件稍微复杂一些,它们的目录信息不是记录在ROOT里面,而是在子目录所指的第一个簇,实际是个SUBROOT。
实际硬盘的存储还要复杂得多,比如它的FAT表还有个副表,用作容错处理。我们这里不再深入讨论,只是简单说明一下以推测虚拟还原软件的工作流程:
它首先将ROOT、SUBROOT以及FAT表都做个备份。然后,软件将备份的数据以及它的工作参数(密码、自动还原时间等)一起保存在硬盘上。这些空间也同时保护起来。当用户删除文件、改名、改文件属性的时候,系统按正常情况处理,还原软件不做任何干涉。因为这些操作只针对ROOT和FAT表,并不去动数据区的任何数据。而这两个表软件已经备份过,需要的时候完全可以恢复。最复杂的是添加新文件的情况。为了保护原来的数据,还原软件不允许在已经保护的簇进行任何的覆盖操作,即使现在的FAT表里面标记是空的,还原软件通过对照备份的FAT表,只要这个簇在表里面,它就会要求OS(操作系统)去找一个新的簇。这样数据区的数据就不会被覆盖。
其实这样说起来简单,但是OS(操作系统)不会知道系统里面已经装了个RECOVERY(虚拟还原软件),所以它还会按同样的算法把同一个簇找出来。这样的话会形成死循环,无法工作下去。说得简单点这就类似于使用ghost备份还原精灵保护的系统一样,是不能成功的。换一种方法,如果RECOVERY在删除文件的时候也不释放FAT表,那么OS找新簇的时候自然避开了已经保护的簇,但是有新问题:我们在做SCANDISK的时候会报出很多丢失的簇。这就是为什么在有些情况下装有保护系统的机器也要自动进行硬盘检测的原因。
在实际应用中我们发现,RECOVERY的安装文件基本上在所有杀毒软件中都要报警,或者,RECOVERY根本就象个病毒一样,把一个虚假的ROOT显示给我们看,让我们以为文件已经删除了,其实硬盘上的ROOT它什么也不动。很早以前一个叫DIR2病毒就是在软硬盘中占据一个特定的区域(磁盘最后一个簇数),通过DIR或其它读写盘命令将当前盘中所有.COM和.EXE文件目录登记项中的首簇数修改为病毒认为是磁盘最后一个簇数,实际就是指向病毒在盘中隐藏的位置。
由此我们可以看出RECOVERY确实就象病毒一样在工作;很多保护系统在安装以后,主板BIOS的ANTI VIRUS(反病毒功能)必须DISABLE(关闭),否则开机就报警,无法工作也说明了这一点;计算机病毒也终于有了它的用武之地。当我们要恢复数据的时候就相当简单了,RECOVERY把备份的ROOT、SUBROOT以及FAT表全部恢复掉即可。这一点点内容,恢复起来自然神速。
参考文献:
施威铭研究室《硬盘玩家实战》人民邮电出版社;1999年3月版
胡大威《数据结构》西安电子科技大学出版社;2013年1月版
俸远祯《计算机组成原理》电子工业出版社;1996年4月版
张夷人《微机组装与维护》清华大学出版社;2003年7月版
关键词:虚拟还原;文件存储分配;病毒
我们知道,硬盘上最重要的数据区除了BOOT(引导区)外,是ROOT(根目录)和FAT(文件分配表),ROOT里面记录的是文件或子目录的属性、尺寸、日期以及它的起始簇(软盘里面是扇区)。FAT表里面记录的是每个簇的使用分配情况。
正常情况下,当我们向硬盘里面添加一个新文件,OS(操作系统)首先在ROOT里面将文件属性等填进去,在FAT表里面按一定算法找到一个空簇,将它标记为被该文件占用后,在ROOT里面将这个簇做为起始簇记录进去,然后将文件内容写入这个簇。如果文件没有写完,系统再在FAT里找一个空簇,将其标记为占用,然后在前一个簇的最后做一个指针向这个新的簇,形成一个单链表,接着再在这个新的簇里面继续写内容。如此重复直到文件内容完全记录完毕。最后系统根据占用的总簇数计算出文件尺寸,取出当前时间写到ROOT里面。
当我们删除一个文件的时候,系统实际上并不到每个簇去清除内容,而只是把ROOT里面文件名的首字符换成&符号,就是标记这个文件为删除,然后延着链表在FAT表中将该文件占用的所有簇释放(标记为空),这样新的文件写入的时候就可以使用这些被释放的簇。 当我们改变一个文件的属性或名字的时候,系统实际只在ROOT里面做一点改动而已。子目录下的文件稍微复杂一些,它们的目录信息不是记录在ROOT里面,而是在子目录所指的第一个簇,实际是个SUBROOT。
实际硬盘的存储还要复杂得多,比如它的FAT表还有个副表,用作容错处理。我们这里不再深入讨论,只是简单说明一下以推测虚拟还原软件的工作流程:
它首先将ROOT、SUBROOT以及FAT表都做个备份。然后,软件将备份的数据以及它的工作参数(密码、自动还原时间等)一起保存在硬盘上。这些空间也同时保护起来。当用户删除文件、改名、改文件属性的时候,系统按正常情况处理,还原软件不做任何干涉。因为这些操作只针对ROOT和FAT表,并不去动数据区的任何数据。而这两个表软件已经备份过,需要的时候完全可以恢复。最复杂的是添加新文件的情况。为了保护原来的数据,还原软件不允许在已经保护的簇进行任何的覆盖操作,即使现在的FAT表里面标记是空的,还原软件通过对照备份的FAT表,只要这个簇在表里面,它就会要求OS(操作系统)去找一个新的簇。这样数据区的数据就不会被覆盖。
其实这样说起来简单,但是OS(操作系统)不会知道系统里面已经装了个RECOVERY(虚拟还原软件),所以它还会按同样的算法把同一个簇找出来。这样的话会形成死循环,无法工作下去。说得简单点这就类似于使用ghost备份还原精灵保护的系统一样,是不能成功的。换一种方法,如果RECOVERY在删除文件的时候也不释放FAT表,那么OS找新簇的时候自然避开了已经保护的簇,但是有新问题:我们在做SCANDISK的时候会报出很多丢失的簇。这就是为什么在有些情况下装有保护系统的机器也要自动进行硬盘检测的原因。
在实际应用中我们发现,RECOVERY的安装文件基本上在所有杀毒软件中都要报警,或者,RECOVERY根本就象个病毒一样,把一个虚假的ROOT显示给我们看,让我们以为文件已经删除了,其实硬盘上的ROOT它什么也不动。很早以前一个叫DIR2病毒就是在软硬盘中占据一个特定的区域(磁盘最后一个簇数),通过DIR或其它读写盘命令将当前盘中所有.COM和.EXE文件目录登记项中的首簇数修改为病毒认为是磁盘最后一个簇数,实际就是指向病毒在盘中隐藏的位置。
由此我们可以看出RECOVERY确实就象病毒一样在工作;很多保护系统在安装以后,主板BIOS的ANTI VIRUS(反病毒功能)必须DISABLE(关闭),否则开机就报警,无法工作也说明了这一点;计算机病毒也终于有了它的用武之地。当我们要恢复数据的时候就相当简单了,RECOVERY把备份的ROOT、SUBROOT以及FAT表全部恢复掉即可。这一点点内容,恢复起来自然神速。
参考文献:
施威铭研究室《硬盘玩家实战》人民邮电出版社;1999年3月版
胡大威《数据结构》西安电子科技大学出版社;2013年1月版
俸远祯《计算机组成原理》电子工业出版社;1996年4月版
张夷人《微机组装与维护》清华大学出版社;2003年7月版