CN102331953B - 一种磁盘分区故障修复方法及装置 - Google Patents

一种磁盘分区故障修复方法及装置 Download PDF

Info

Publication number
CN102331953B
CN102331953B CN 201110298331 CN201110298331A CN102331953B CN 102331953 B CN102331953 B CN 102331953B CN 201110298331 CN201110298331 CN 201110298331 CN 201110298331 A CN201110298331 A CN 201110298331A CN 102331953 B CN102331953 B CN 102331953B
Authority
CN
China
Prior art keywords
partition
subregion
sector number
logical partition
logical
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.)
Expired - Fee Related
Application number
CN 201110298331
Other languages
English (en)
Other versions
CN102331953A (zh
Inventor
唐智
陈耀攀
于天佐
刘科
陆坡
陈佃晓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
Original Assignee
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qizhi Software Beijing Co Ltd filed Critical Qizhi Software Beijing Co Ltd
Priority to CN 201110298331 priority Critical patent/CN102331953B/zh
Publication of CN102331953A publication Critical patent/CN102331953A/zh
Application granted granted Critical
Publication of CN102331953B publication Critical patent/CN102331953B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明公开了一种磁盘分区故障修复方法及装置,其中,所述方法包括:获取磁盘当前分区以及其下一分区的分区信息;根据所述分区信息,判断当前分区与其下一分区之间是否存在分区重叠;如果存在分区重叠,通过修改分区表中的分区信息进行修复。通过本发明,能够避免由于分区重叠造成的分区丢失或者无法打开,进而造成用户数据丢失的现象。

Description

一种磁盘分区故障修复方法及装置
技术领域
本发明涉及计算机技术领域,特别是涉及一种磁盘分区故障修复方法及装置。
背景技术
随着科技的飞速发展和时代的进步,计算机设备已经成为几乎人人必备的工具,人们可以通过计算机设备对文件进行保存、查看、修改、删除等操作,大大提高了文件管理的效率。
计算机中用于存放信息的存储设备主要是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域,这中磁盘区域就称为磁盘分区。在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区。主分区是能够安装操作系统,能够进行计算机启动的分区。通常,主分区是独立的,也是硬盘的第一个分区,实际应用中所见的C盘通常就是主分区。在一个硬盘中最多只能存在4个主分区。如果一个硬盘上需要超过4个以上的磁盘分块,那么就需要使用扩展分区了。如果使用扩展分区,那么一个物理硬盘上最多只能3个主分区和1个扩展分区。扩展分区不能直接使用,它必须经过第二次分割成为一个一个的逻辑分区(例如D盘、E盘、F盘等等),然后才可以使用,也即,可以将文件存放到某逻辑分区,当需要查看该文件时,就到该逻辑分区对应的盘符下查找。
但是在实际应用中,可能会出现以下现象:某计算机本来具有多个主分区,或者扩展分区中具有多个逻辑分区,但在某次开机之后发现,有部分甚至全部主分区无法打开,或者部分甚至全部的逻辑分区已经不见了,其中保存的数据也随之丢失。
因此,迫切需要本领域技术人员解决的技术问题就在于,如何避免发生用户数据丢失的现象。
发明内容
本发明提供了一种磁盘分区故障修复方法及装置,能够避免由于分区重叠造成的分区丢失,进而造成用户数据丢失的现象。
本发明提供了如下方案:
一种磁盘分区故障修复方法,包括:
获取磁盘当前分区以及其下一分区的分区信息;
根据所述分区信息,判断当前分区与其下一分区之间是否存在分区重叠;
如果存在分区重叠,通过修改分区表中的分区信息进行修复。
其中,当所述当前分区及其下一分区均为扩展分区中的逻辑分区时,所述获取磁盘当前分区以及其下一分区的分区信息包括:通过以下方式获取第一逻辑分区以及第二逻辑分区的分区信息:
根据所述第一逻辑分区的上一分区的分区表中标记的分区信息,确定所述第一逻辑分区的结束位置所在的物理扇区号;
根据所述第一逻辑分区的分区表中标记的分区信息,确定所述第二逻辑分区的起始位置所在的物理扇区号;
所述判断当前分区与其下一分区之间是否存在分区重叠包括:通过以下方式判断第一逻辑分区与第二逻辑分区之间是否存在分区重叠:
判断所述第一逻辑分区的结束位置所在的物理扇区号是否大于所述第二逻辑分区的起始位置所在的物理扇区号,如果是,则所述第一逻辑分区与所述第二逻辑分区之间存在分区重叠;
其中,所述第二逻辑分区是所述第一逻辑分区的下一分区;
其中,当所述当前分区为主分区,其下一分区为主分区或扩展分区时,所述获取磁盘当前分区以及其下一分区的分区信息包括:
根据磁盘0磁道0扇区中的分区表中标记的分区信息,确定所述当前分区的结束位置所在的物理扇区号,以及下一分区的起始位置所在的物理扇区号;
所述判断当前分区与其下一分区之间是否存在分区重叠包括:
判断所述当前分区的结束位置所在的物理扇区号是否大于所述下一分区的起始位置所在的物理扇区号,如果是,则所述当前分区与下一分区之间存在分区重叠;
其中,所述如果存在分区重叠,通过修改分区表中的分区信息进行修复包括:
将所述下一分区中的数据全部转移到其他可用分区中;
确定所述当前分区与下一分区之间的重叠区域;
根据所述重叠区域对应的总扇区数,修改所述下一分区的分区表中标记的所述下一分区的起始地址,并减小所述下一分区的分区表中标记的所述下一分区的数据段占用的总扇区数;
根据修改后的下一分区的分区表,将所述下一分区进行格式化操作;
将所述下一分区中的数据重新存入所述下一分区中。
一种磁盘分区故障修复装置,包括:
分区信息获取单元,用于获取磁盘当前分区以及其下一分区的分区信息;
判断单元,用于根据所述分区信息,判断当前分区与其下一分区之间是否存在分区重叠;
修复单元,用于如果存在分区重叠,则修改分区表中的分区信息,并依据修改后的分区表中的分区信息,对相应的分区进行格式化操作;
其中,当所述当前分区及其下一分区均为扩展分区中的逻辑分区时,所述分区信息获取单元包括:
结束位置确定子单元,用于根据所述第一逻辑分区的上一分区的分区表中标记的分区信息,确定所述第一逻辑分区的结束位置所在的物理扇区号;
起始位置确定子单元,用于根据第一逻辑分区的分区表中标记的分区信息,确定所述第二逻辑分区的起始位置所在的物理扇区号;
所述判断单元具体用于:判断所述第一逻辑分区的结束位置所在的物理扇区号是否大于所述第二逻辑分区的起始位置所在的物理扇区号,如果是,则所述第一逻辑分区与所述第二逻辑分区之间存在分区重叠;
其中,所述第二逻辑分区是所述第一逻辑分区的下一分区;
其中,当所述当前分区为主分区,其下一分区为主分区或扩展分区时,
所述分区信息获取单元具体用于:根据磁盘0磁道0扇区中的分区表中标记的分区信息,确定所述当前分区的结束位置所在的物理扇区号,以及下一分区的起始位置所在的物理扇区号;
所述判断单元具体用于:判断所述当前分区的结束位置所在的物理扇区号是否大于所述下一分区的起始位置所在的物理扇区号,如果是,则所述当前分区与下一分区之间存在分区重叠。
其中,所述修复单元包括:
数据转移子单元,用于将所述下一分区中的数据全部转移到其他可用分区中;
重叠区域确定子单元,用于确定所述当前分区与下一分区之间的重叠区域;
分区表修改子单元,用于根据所述重叠区域对应的总扇区数,修改所述下一分区的分区表中标记的所述下一分区的起始地址,并减小所述下一分区的分区表中标记的所述下一分区的数据段占用的总扇区数;
格式化子单元,用于根据修改后的下一分区的分区表,将所述下一分区进行格式化操作;
数据存取子单元,用于将所述下一分区中的数据重新存入所述下一分区中。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
通过本发明,可以首先判断出磁盘分区之间是否存在分区重叠的现象,如果存在,则可以通过修改分区表中的分区信息,来达到修复的目的。这样,就可以避免由于分区重叠造成的分区丢失,进而造成用户数据丢失的现象。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的方法的流程图;
图2是本发明实施例提供的装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
首先需要说明的是,在磁盘的0扇区0磁道中存在分区表,该分区表中标记了各个主分区的起始地址、结束地址,以及扩展分区的起始地址等分区信息。每个主分区的起始位置处都保存有DBR(一般占用63个扇区,当然也可能是其他数目),以及MFT(Master File Table,主文件表)或者FAT(File AllocationTable,文件配置表)文件表等,如果这些数据被破坏,会导致对应的主分区无法打开。
另外,扩展分区的每个逻辑分区由分区信息段(一般包括分区表以及主文件表等,这部分占用的磁盘总扇区数通常是固定的,例如在某种系统中共占用63个扇区)和数据段两部分组成,其中,分区表通常位于每个逻辑分区的起始位置,用于保存当前逻辑分区的分区信息以及下一分区的分区信息,数据段用于保存具体的数据。逻辑分区是链表形式保存在磁盘中,倘若硬盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作。
而本发明人在实现本发明的过程中发现,之所以会出现主分区无法打开或者逻辑分区丢失的现象,一种可能的原因就在于:在电脑使用一段时间后,系统越来越慢,此时避免不了要重装系统,而限于电脑重装的复杂性和耗时,GHOST做系统已经越来越普及。所谓GHOST,实际上是一种硬盘备份还原工具,它采取镜象系统分区或者文件夹的方式备份和还原数据。但是,由于现在网上各种形式的GHOST软件和系统镜像文件,很多不规范,给用户系统带来了风险。其中一种风险就是引起分区重叠的问题,也即,GHOST自带的分区信息和原用户的分区信息之间存在冲突,从而造成分区重叠。此外,一些是使用了有BUG的分区软件,也可能造成分区的重叠。
分区重叠是指某分区与下一分区之间在占用的扇区上存在交叠的部分。这种重叠可能发生在不同主分区之间,还有可能出现在主分区与扩展分区之间,还可能出现在扩展分区的不同逻辑分区之间。
以逻辑分区之间的分区重叠为例,如果某一逻辑分区(例如为B分区)的分区表,写入到前面逻辑分区(例如为A分区)的数据段中,此时,一旦A分区数据被写满,则必然会把B分区的分区表给覆盖。如前文所述,由于逻辑分区是链表形式保存在磁盘中,当前面分区丢失,后面的分区将全部丢失,因此,这种分区重叠的现象会造成逻辑分区的丢失,进而造成用户数据的丢失。尤其是现在游戏和影音文件等的体积越来越大,一个磁盘分区经常被写满,这样,一旦发生分区重叠,则分区丢失的情况就会越来越多。例如,第一个逻辑分区的分区表保存在了其前面主分区中(即第一个逻辑分区的起始位置小于最后一个主分区的结束位置),这样分区就会重叠,当最后一个主分区写满后,第一个逻辑分区的分区表就会被覆盖,这样第一个逻辑分区就会丢失。而第一个逻辑分区的分区表中又记录了第二个逻辑分区的起始信息,因此,第一个逻辑分区丢失之后,第二个逻辑分区也随之丢失,以此类推,只要第一个逻辑分区丢失,后面的逻辑分区将全部丢失。
如果是主分区C与主分区D之间存在分区重叠,则主分区D中的DBR、MFT等数据可能会被主分区C中的数据覆盖,造成主分区D无法打开。
在以上分析基础上,本发明实施例提供了一种磁盘分区故障修复方法,参见图1,该方法包括以下步骤:
S101:获取磁盘当前分区以及其下一分区的分区信息;
S102:根据所述分区信息,判断当前分区与其下一分区之间是否存在分区重叠;
对于某物理磁盘而言,在其0磁道0扇区保存了该物理磁盘的主分区以及扩展分区的地址,因此,通过读取物理磁盘0磁道0扇区的信息,即可获取到主分区的地址以及扩展分区的地址。
需要说明的是,由于磁盘被划分为多个扇区,并按照一定规则编号为1、2、3……,因此,主分区及扩展分区的地址通常可以用所在扇区的物理扇区号来表示,例如为:176715。该地址通常是一个绝对的值,也就是说,如果0磁道0扇区中记载的扩展分区的起始扇区的物理扇区号是176715,则扩展分区就是从该扇区号为176715的扇区开始的。
另外需要说明的是,在实际应用中,用户可能在自己的计算机中配备多块硬盘,也就是说存在多个物理磁盘,此时,可以每个物理磁盘都可能会发生逻辑分区重叠的现象,因此,可以首先枚举所有物理磁盘,获取所有物理磁盘的句柄,并分别在各个物理磁盘的0磁道0扇区中获取各自的扩展分区的地址的相关信息。
而如果需要获取逻辑分区的分区信息,则如前文所述,由于每个逻辑分区都有自己的分区表,每个分区表中都保存有当前逻辑分区以及逻辑分区的分区信息(包括分区的起始位置以及占用的总扇区数等),因此,逻辑分区的分区信息,可以从逻辑分区的分区表中。
需要说明的是,在扩展分区的逻辑分区中,在每个逻辑分区的开始位置扇区有EBR(Extended Boot Record)。EBR和M BR不同,它没有引导代码,而是保存了两个分区表:第一个分区表是当前分区除本分区DBR(DBR一般占用63扇区,也有2048或者其他值)之外数据区的起始扇区和占用的扇区数;第二个分区表是下一个分区的起始扇区数和占用的扇区数(包含DBR及数据区在内)。
在下一分区的起始位置又包含两个分区表(如果有三个逻辑分区以上):第一个分区表记录了除本分区DBR之外数据区的起始扇区和占用的扇区数,第二个分区表中记录了第三个扩展分区的起始扇区和占用的扇区数。
依次类推,逻辑分区中的分区表是以链表形式保存的。逻辑分区的起始地址实际可以从其上一个逻辑分区的分区表中获取。
例如,第一个逻辑分区A的起始扇区取该逻辑分区所在扩展分区的起始扇区,它的结束位置为起始扇区加上它所占用的扇区数。第二个逻辑分区B的起始地址取逻辑分区A中的分区表中第二个分区表项记录的起始地址和占用的扇区数。后面的某逻辑分区Y占用扇区的判断依据:以前面的逻辑分区X中的分区表中第二个分区表项记录的起始扇区和占用的扇区数为准。
当某一逻辑分区A的起始扇区所在位置加上它所占用的扇区数大于它后面逻辑分区B(A与B在同一扩展分区中)的起始扇区所在的位置,就会造成分区重叠。
例如:A逻辑分区起始扇区是1000扇区,它占用2000个扇区,B逻辑分区起始扇区在2920扇区,占用1000个扇区。这样A逻辑分区中结束扇区应该是3000扇区,而逻辑分区B起始扇区是2920,A的结束扇区大于B开始扇区,他们共有80个扇区的重叠。这80个扇区中可能记录着B分区的分区表、DBR和一些其他数据(NTFS中可能会有MFT,FAT格式中,可能会有FAT表)。当A逻辑分区写满后,就会在这80个扇区写入数据,然后,B分区中的分区表、DBR和其他数据就会被破坏,导致B分区及其后面的分区全部丢失,从而造成这些分区上的数据全部丢失,以用户造成损失。
因此,具体在获取磁盘当前分区以及其下一分区的分区信息时,可以获取当前分区所在的结束扇区的物理扇区号,以及下一分区所在的起始扇区的物理扇区号;这样,就可以通过判断当前分区所在的结束扇区的物理扇区号是否大于其下一分区所在的起始扇区的物理扇区号,如果是,则当前分区与其下一分区之间存在分区重叠。
具体的,如果当前分区及其下一分区均为扩展分区中的逻辑分区时,所述获取磁盘当前分区以及其下一分区的分区信息包括:通过以下方式获取第一逻辑分区以及第二逻辑分区的分区信息:根据所述第一逻辑分区的上一分区的分区表中标记的分区信息,确定所述第一逻辑分区的结束位置所在的物理扇区号;根据所述第一逻辑分区的分区表中标记的分区信息,确定所述第二逻辑分区的起始位置所在的物理扇区号;然后,判断所述第一逻辑分区的结束位置所在的物理扇区号是否大于所述第二逻辑分区的起始位置所在的物理扇区号,如果是,则所述第一逻辑分区与所述第二逻辑分区之间存在分区重叠。
其中,根据第一逻辑分区的上一分区的分区表中记录的分区信息,确定所述第一逻辑分区的结束位置所在的物理扇区号时,具体可以为:查询所述第一逻辑分区的上一分区的分区表,从中获取第一逻辑分区的起始扇区偏移值以及占用的总扇区数;根据该第一逻辑分区的起始扇区偏移值以及该逻辑分区占用的总扇区数,获取该第一逻辑扇区的结束扇区偏移值;根据该第一逻辑扇区的结束扇区偏移值以及扩展分区的起始地址获取该第一逻辑分区所在的结束位置所在的物理扇区号。
根据所述第一逻辑分区的分区表中记录的分区信息,确定第二逻辑分区的起始位置所在的物理扇区号时,具体可以为:查询所述第一逻辑分区的分区表,从中获取所述第二逻辑分区的起始扇区偏移值;根据该第二逻辑扇区的起始扇区偏移值以及扩展分区的起始地址获取该第二逻辑分区的起始位置所在的物理扇区号。
如果当前分区为主分区,其下一分区为主分区或扩展分区时,则具体在获取磁盘当前分区以及其下一分区的分区信息时,可以是根据磁盘0磁道0扇区中的分区表中标记的分区信息,确定所述当前分区的结束位置所在的物理扇区号,以及下一分区的起始位置所在的物理扇区号;进而,通过判断当前分区的结束位置所在的物理扇区号是否大于下一分区的起始位置所在的物理扇区号,如果是,则当前分区与下一分区之间存在分区重叠。
需要说明的是,具体实现时,除了利用起始扇区的扇区号以及结束扇区的扇区号来表示逻辑分区的起始位置及结束位置以外,还可以利用其它的信息来表示,例如,起始字节、结束字节等等。或者,由于分区表中记载的“偏移量”均是相对于扩展分区的起始地址的,因此。如果不计算起始扇区及结束扇区的物理扇区号,而是之间利用起始扇区及结束扇区的“偏移量”来判断逻辑扇区之间是否存在分区重叠也是可以的,这里不再赘述。
S103:如果存在分区重叠,通过修改分区表中的分区信息进行修复。
例如,如果发现第一主分区与第二主分区之间存在重叠,则可以重写0磁道0扇区的分区表中标记的第一主分区的分区信息,将第一主分区减小。或者,首先将第二主分区中的数据全部导出,重写0磁道0扇区的分区表中标记的第二主分区的分区信息,将第二主分区减小,然后将第二主分区进行格式化操作,之后再将数据导入到该第二主分区中。
又如,如果发现第一逻辑分区与第二逻辑分区之间存在分区重叠,则可以通过重写第一逻辑分区或者第二逻辑分区的分区表中的分区信息,来进行修复。具体实现时,如果通过修改第一逻辑分区的分区表中的分区信息进行修复,则可以首先确定第一逻辑分区与第二逻辑分区的重叠区域,并确定出重叠区域包含的总扇区数(例如当第一分区的结束位置所在的物理扇区号是99,第二逻辑分区的起始位置所在的物理扇区号是97时,从第97到第99扇区则为第一逻辑分区与第二逻辑分区之间的重叠区域,其中共包含了三个扇区),之后在对第一逻辑分区的分区表中的分区信息进行修改时,就可以根据重叠区域对应的总扇区数,来减小第一逻辑分区的分区表中标记的第一逻辑分区的数据段占用的总扇区数(例如在原来的基础上减去3,或者是某大于3的值),并修改第一逻辑分区的分区表中标记的第二逻辑分区的起始扇区偏移值以及占用的总扇区数(起始扇区的偏移值相当于是第二逻辑分区实际的起始位置对应的偏移值,占用的总扇区数相当于是第二逻辑分区实际占用的总扇区数)。这样,根据第一逻辑分区的分区表中记载的关于第一逻辑分区的分区信息向第一逻辑分区中写数据时,由于标记的结束位置已经提前了(例如原来是第99扇区,修改后为第96扇区),因此,最多只能写到第96扇区,而不会被写到第97扇区,而第二逻辑分区的分区表是写在第97扇区,因此,就不会再被第一逻辑分区中的数据所覆盖了。
如果通过修改第二逻辑分区的分区表中的分区信息进行修复,则首先需要将第二逻辑分区的数据全部转移保存到其他分区中。然后,根据第一逻辑分区的分区表中标记的第二逻辑分区的起始扇区偏移值,以及逻辑分区的分区信息段占用的总扇区数,修改第二逻辑分区的分区表中标记的第二逻辑分区的数据段起始扇区偏移值(例如,直接将第一逻辑分区的分区表中标记的第二逻辑分区的起始扇区偏移值,加上63,作为修改后的第二逻辑分区的分区表中标记的第二逻辑分区的数据段起始扇区偏移值;当然,还可以直接在原第二逻辑分区的数据段起始扇区偏移值基础上,加上第一逻辑分区与第二逻辑分区之间的重叠区域占用的总扇区数,得到的结果是一样的),以及第二逻辑分区的数据段占用的总扇区数。之后,再对第二逻辑分区进行格式化操作,并将第二逻辑分区中的数据重新写入到该第二逻辑分区中。这样,根据第一逻辑分区的分区表中记载的关于第一逻辑分区的分区信息向第一逻辑分区中写数据时,最多仍能写到第99扇区,但是第二逻辑分区的起始位置已经推后了(例如原来是第97扇区,修改后为第100扇区),因此,就不会再被第一逻辑分区中的数据所覆盖了。
需要说明的是,通过上述两种实现方式,都可以达到修复磁盘分区故障的目的。其中,在第一种实现方式下,由于不需要对分区信息段进行移动,因此,可以更高效得完成修复,并且不会存在分区信息段的信息被破坏的风险,因此更为实用。当然在第一种实现方式下,如果重叠区域存在尚未删除的文件,则可以将文件转存到第一逻辑分区以外的其他逻辑分区中,避免造成未删除数据的丢失。
但是,由于在实际应用中,磁盘可以分为NTFS格式和FAT格式,而两种格式之间存在不同之处。例如,NTFS由MFT来保存文件结构。MFT是分段记录的。格式化一个分区后,首先会生成根目录的MFT数据A,它用来记录一定大小的数据,当这部分数据写满后,会新生成一段MFT数据B,A结尾有个指针指向B,当B记录的结构被写满后,会在后面继续生成MFT数据。也就是说MFT是动态生成的。大概形式如表1所示:
表1
MFT A 数据区 MFT B 数据区 MFT C 数据区
其中,A指向B,B指向C,C指向后面,依此类推。
而FAT是格式化后,就按照空间大小,按指定比例分配一定大小的文件表。后面就不再改变。大概形式如表2所示:
表2
FAT文件表 数据区
理论上,当分区A是NTFS格式时,并且当分区A最后一个MFT表指定的空间,没有到分区结束时,既可以通过减少A分区的大小的方式,也可以通过减小B分区的方式,使分区A与分区B之间不再重叠。但是,如果分区A的最后一个MFT表指定的空间,已经到了分区结束位置,或者,如果分区A是FAT分区时,在减少A分区大小时,就会产生冲突。因为分区A中的结束区域已经被MFT或者FAT标记,这会使得分区表与MFT或FAT中标记的信息不一致。
因此,在本发明的优选实施例中,如果当前分区A与下一分区B之间发生分区重叠,可以均通过减小该下一分区B的大小的方式来实现修复,由于在减小分区B时,会重新对分区B进行格式化,因此,不会产生冲突的问题。也即,具体实现时,无论哪种分区之间发生重叠,都可以通过以下方式进行修复:将所述下一分区中的数据全部转移到其他可用分区中;确定所述当前分区与下一分区之间的重叠区域;根据所述重叠区域对应的总扇区数,修改所述下一分区的分区表中标记的所述下一分区的起始地址,并减小所述下一分区的分区表中标记的所述下一分区的数据段占用的总扇区数,使其分区连续。根据修改后的下一分区的分区表,将所述下一分区进行格式化操作;最后,再将所述下一分区中的数据重新存入所述下一分区中。
或者,也可以在进行修复之前判断当前分区是何种格式,如果是NTFS格式,则继续判断其最后一个MFT指定的空间是否已经到了分区的结束位置,如果是,则减小下一分区的大小,并对该下一分区进行格式化。如果还没有到该当前分区的结束位置,则既可以减小当前分区的大小,也可以减小下一分区的大小。如果当前分区是FAT格式,则只能减小下一分区的大小,并对该下一分区进行格式化。
总之,通过本发明实施例提供的磁盘分区故障修复方法,可以首先判断出磁盘分区之间是否存在分区重叠的现象,如果存在,则可以通过修改分区表中的分区信息,来达到修复的目的。这样,就可以避免由于分区重叠造成的分区丢失,进而造成用户数据丢失的现象。
与本发明实施例提供的磁盘分区故障修复方法相对应,本发明实施例还提供了一种磁盘分区故障修复装置,参见图2,该装置包括:
分区信息获取单元201,用于获取磁盘当前分区以及其下一分区的分区信息;
判断单元202,用于根据所述分区信息,判断当前分区与其下一分区之间是否存在分区重叠;
修复单元203,用于如果存在分区重叠,通过修改分区表中的分区信息进行修复。
具体实现时,当所述当前分区及其下一分区均为扩展分区中的逻辑分区时,分区信息获取单元201可以包括:结束位置确定子单元,用于根据所述第一逻辑分区的上一分区的分区表中标记的分区信息,确定所述第一逻辑分区的结束位置所在的物理扇区号;
起始位置确定子单元,用于根据第一逻辑分区的分区表中标记的分区信息,确定所述第二逻辑分区的起始位置所在的物理扇区号;
判断单元202具体可以用于判断所述第一逻辑分区的结束位置所在的物理扇区号是否大于所述第二逻辑分区的起始位置所在的物理扇区号,如果是,则所述第一逻辑分区与所述第二逻辑分区之间存在分区重叠;
其中,所述第二逻辑分区是所述第一逻辑分区的下一分区。
当所述当前分区为主分区,其下一分区为主分区或扩展分区时,分区信息获取单元201具体用于:根据磁盘0磁道0扇区中的分区表中标记的分区信息,确定所述当前分区的结束位置所在的物理扇区号,以及下一分区的起始位置所在的物理扇区号;
判断单元202具体用于:判断所述当前分区的结束位置所在的物理扇区号是否大于所述下一分区的起始位置所在的物理扇区号,如果是,则所述当前分区与下一分区之间存在分区重叠。
具体在对磁盘分区故障进行修复时,修复单元204具体可以包括:
数据转移子单元,用于将所述下一分区中的数据全部转移到其他可用分区中;
重叠区域确定子单元,用于确定所述当前分区与下一分区之间的重叠区域;
分区表修改子单元,用于根据所述重叠区域对应的总扇区数,修改所述下一分区的分区表中标记的所述下一分区的起始地址,并减小所述下一分区的分区表中标记的所述下一分区的数据段占用的总扇区数,使其分区连续。格式化子单元,用于根据修改后的下一分区的分区表,将所述下一分区进行格式化操作;
数据存取子单元,用于将所述下一分区中的数据重新存入所述下一分区中。
总之,通过本发明实施例提供的磁盘分区故障修复装置,可以首先判断出磁盘分区之间是否存在分区重叠的现象,如果存在,则可以通过修改分区表中的分区信息,来达到修复的目的。这样,就可以避免由于分区重叠造成的分区丢失,进而造成用户数据丢失的现象。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明所提供的磁盘分区故障修复方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (4)

1.一种磁盘分区故障修复方法,其特征在于,包括:
获取磁盘当前分区以及其下一分区的分区信息;
根据所述分区信息,判断当前分区与其下一分区之间是否存在分区重叠;
如果存在分区重叠,通过修改分区表中的分区信息进行修复;其中,
当所述当前分区及其下一分区均为扩展分区中的逻辑分区时,所述获取磁盘当前分区以及其下一分区的分区信息包括:通过以下方式获取第一逻辑分区以及第二逻辑分区的分区信息:
根据所述第一逻辑分区的上一分区的分区表中标记的分区信息,确定所述第一逻辑分区的结束位置所在的物理扇区号;
根据所述第一逻辑分区的分区表中标记的分区信息,确定所述第二逻辑分区的起始位置所在的物理扇区号;
所述判断当前分区与其下一分区之间是否存在分区重叠包括:通过以下方式判断第一逻辑分区与第二逻辑分区之间是否存在分区重叠:
判断所述第一逻辑分区的结束位置所在的物理扇区号是否大于所述第二逻辑分区的起始位置所在的物理扇区号,如果是,则所述第一逻辑分区与所述第二逻辑分区之间存在分区重叠;
其中,所述第二逻辑分区是所述第一逻辑分区的下一分区;
当所述当前分区为主分区,其下一分区为主分区或扩展分区时,所述获取磁盘当前分区以及其下一分区的分区信息包括:
根据磁盘0磁道0扇区中的分区表中标记的分区信息,确定所述当前分区的结束位置所在的物理扇区号,以及下一分区的起始位置所在的物理扇区号;
所述判断当前分区与其下一分区之间是否存在分区重叠包括:
判断所述当前分区的结束位置所在的物理扇区号是否大于所述下一分区的起始位置所在的物理扇区号,如果是,则所述当前分区与下一分区之间存在分区重叠。
2.根据权利要求1所述的方法,其特征在于,所述如果存在分区重叠,通过修改分区表中的分区信息进行修复包括:
将所述下一分区中的数据全部转移到其他可用分区中;
确定所述当前分区与下一分区之间的重叠区域;
根据所述重叠区域对应的总扇区数,修改所述下一分区的分区表中标记的所述下一分区的起始地址,并减小所述下一分区的分区表中标记的所述下一分区的数据段占用的总扇区数;
根据修改后的下一分区的分区表,将所述下一分区进行格式化操作;
将所述下一分区中的数据重新存入所述下一分区中。
3.一种磁盘分区故障修复装置,其特征在于,包括:
分区信息获取单元,用于获取磁盘当前分区以及其下一分区的分区信息;
判断单元,用于根据所述分区信息,判断当前分区与其下一分区之间是否存在分区重叠;
修复单元,用于如果存在分区重叠,则修改分区表中的分区信息,并依据修改后的分区表中的分区信息,对相应的分区进行格式化操作;其中,
当所述当前分区及其下一分区均为扩展分区中的逻辑分区时,所述分区信息获取单元包括:
结束位置确定子单元,用于根据第一逻辑分区的上一分区的分区表中标记的分区信息,确定所述第一逻辑分区的结束位置所在的物理扇区号;
起始位置确定子单元,用于根据所述第一逻辑分区的分区表中标记的分区信息,确定第二逻辑分区的起始位置所在的物理扇区号;
所述判断单元具体用于:判断所述第一逻辑分区的结束位置所在的物理扇区号是否大于所述第二逻辑分区的起始位置所在的物理扇区号,如果是,则所述第一逻辑分区与所述第二逻辑分区之间存在分区重叠;
其中,所述第二逻辑分区是所述第一逻辑分区的下一分区;
当所述当前分区为主分区,其下一分区为主分区或扩展分区时,
所述分区信息获取单元具体用于:根据磁盘0磁道0扇区中的分区表中标记的分区信息,确定所述当前分区的结束位置所在的物理扇区号,以及下一分区的起始位置所在的物理扇区号;
所述判断单元具体用于:判断所述当前分区的结束位置所在的物理扇区号是否大于所述下一分区的起始位置所在的物理扇区号,如果是,则所述当前分区与下一分区之间存在分区重叠。
4.根据权利要求3所述的装置,其特征在于,所述修复单元包括:
数据转移子单元,用于将所述下一分区中的数据全部转移到其他可用分区中;
重叠区域确定子单元,用于确定所述当前分区与下一分区之间的重叠区域;
分区表修改子单元,用于根据所述重叠区域对应的总扇区数,修改所述下一分区的分区表中标记的所述下一分区的起始地址,并减小所述下一分区的分区表中标记的所述下一分区的数据段占用的总扇区数;
格式化子单元,用于根据修改后的下一分区的分区表,将所述下一分区进行格式化操作;
数据存取子单元,用于将所述下一分区中的数据重新存入所述下一分区中。
CN 201110298331 2011-09-28 2011-09-28 一种磁盘分区故障修复方法及装置 Expired - Fee Related CN102331953B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110298331 CN102331953B (zh) 2011-09-28 2011-09-28 一种磁盘分区故障修复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110298331 CN102331953B (zh) 2011-09-28 2011-09-28 一种磁盘分区故障修复方法及装置

Publications (2)

Publication Number Publication Date
CN102331953A CN102331953A (zh) 2012-01-25
CN102331953B true CN102331953B (zh) 2013-06-12

Family

ID=45483738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110298331 Expired - Fee Related CN102331953B (zh) 2011-09-28 2011-09-28 一种磁盘分区故障修复方法及装置

Country Status (1)

Country Link
CN (1) CN102331953B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315544A (zh) * 2017-06-29 2017-11-03 郑州云海信息技术有限公司 一种固态盘逻辑分区管理方法和装置
CN108776577A (zh) * 2018-05-04 2018-11-09 新华三技术有限公司成都分公司 磁盘管理方法、装置、电子设备及存储介质
CN112346663B (zh) * 2020-11-26 2022-10-11 上海天旦网络科技发展有限公司 多分区轮转的数据写入与清除方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1180195A (zh) * 1996-08-23 1998-04-29 三星电子株式会社 测试带有硬盘的计算机系统的方法
US6317407B1 (en) * 1996-10-23 2001-11-13 Matsushita Electric Industrial Co., Ltd. Optical disk having read-only and rewritable areas with overlapping formats
CN101419828A (zh) * 2008-11-20 2009-04-29 杭州海康威视数字技术股份有限公司 一种模拟磁带串行模式的硬盘视频记录及检索方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1180195A (zh) * 1996-08-23 1998-04-29 三星电子株式会社 测试带有硬盘的计算机系统的方法
US6317407B1 (en) * 1996-10-23 2001-11-13 Matsushita Electric Industrial Co., Ltd. Optical disk having read-only and rewritable areas with overlapping formats
CN101419828A (zh) * 2008-11-20 2009-04-29 杭州海康威视数字技术股份有限公司 一种模拟磁带串行模式的硬盘视频记录及检索方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Fuping111.Partition Magic错误信息与解决方法.《百度空间》.2006,"分区表错误"部分.
Partition Magic错误信息与解决方法;Fuping111;《百度空间》;20061004;"分区表错误"部分 *
万剑.浅谈计算机硬盘故障维修.《铜业工程》.2009,(第2期),全文.
浅谈计算机硬盘故障维修;万剑;《铜业工程》;20091231(第2期);全文 *

Also Published As

Publication number Publication date
CN102331953A (zh) 2012-01-25

Similar Documents

Publication Publication Date Title
CN102177505B (zh) 用于优化闪速拷贝级联中的映射表的清理的方法和系统
CN101268439B (zh) 数据库片段克隆和管理
US9183268B2 (en) Partition level backup and restore of a massively parallel processing database
CN102750317B (zh) 数据持久化处理方法、装置及数据库系统
US7499955B2 (en) System and method for undoing application actions using inverse actions with atomic rollback
US20070162506A1 (en) Method and system for performing a redistribute transparently in a multi-node system
CN103092903A (zh) 数据库日志并行化
EP2872998B1 (en) Replication of data utilizing delta volumes
CN110209735A (zh) 数据库备份方法、数据库备份装置、计算设备和存储介质
CN107111531A (zh) 使用分配图的数据恢复
CN103473298B (zh) 数据归档方法和装置以及存储系统
US8019953B2 (en) Method for providing atomicity for host write input/outputs (I/Os) in a continuous data protection (CDP)-enabled volume using intent log
CN102929748A (zh) 数据备份方法及装置
CN107665255A (zh) 键值数据库数据变更的方法、装置、设备及存储介质
CN105302665B (zh) 一种改进的写时拷贝快照方法及系统
CN104765794A (zh) 一种数据库分区方法及装置
CN102096561A (zh) 分层数据存储处理方法、装置以及存储设备
CN102331953B (zh) 一种磁盘分区故障修复方法及装置
CN104714957A (zh) 一种表结构的变更方法及装置
CN107015876A (zh) 一种业务请求处理方法及装置
CN102096613A (zh) 一种生成快照的方法及装置
CN102354302B (zh) 一种擦除磁盘的方法及装置
CN103210389B (zh) 一种元数据的处理方法和装置
CN111694580A (zh) 存储设备升级及初始化的方法、装置、电子设备
JP2019074874A (ja) 名寄せシステムおよびプログラム

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 100015 rooms 301-306, 2 / F and 3 / F, block B, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100016 East unit, 4th floor, Zhaowei building, 14 Jiuxianqiao Road, Chaoyang District, Beijing

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220222

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100015 rooms 301-306, 2 / F and 3 / F, block B, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130612