首页> 中国专利> 一种调整NTFS分区的方法及装置

一种调整NTFS分区的方法及装置

摘要

本申请提供了一种调整NTFS分区的方法及装置,将原分区中包括且调整后分区中不包括的存储区域的数据,复制至调整后分区中的空闲区域,在空闲区域建立第一类元文件,在调整后分区的第一个簇建立$Boot。可见,与现有技术相比,无需将原分区中的数据进行整体迁移,仅在调整后分区的空闲区域复制原分区中不被调整后分区包括的数据,以及建立大部分元文件,因此,并没有更改原分区中的数据以及元文件,所以,在调整完成前发生掉电的情况下,原分区中的数据以及元文件不会丢失。且因为$Boot很小,所以,建立该元文件过程中发生掉电的可能性很小,能够有效减低分区调整不成功情况下数据丢失的可能性。

著录项

  • 公开/公告号CN110109624A

    专利类型发明专利

  • 公开/公告日2019-08-09

    原文格式PDF

  • 申请/专利权人 成都易我科技开发有限责任公司;

    申请/专利号CN201910395857.0

  • 发明设计人 白福铭;

    申请日2019-05-13

  • 分类号

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人杨华

  • 地址 610044 四川省成都市武侯区人民南路三段17号华西美庐2幢18F-K

  • 入库时间 2024-02-19 12:31:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-14

    授权

    授权

  • 2019-09-03

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20190513

    实质审查的生效

  • 2019-08-09

    公开

    公开

说明书

技术领域

本申请涉及电子信息领域,尤其涉及一种调整NTFS分区的方法及装置。

背景技术

Windows操作系统支持NTFS分区大小的调整,第三方磁盘管理软件支持NTFS分区存储区域和大小的调整。在调整NTFS分区的存储区域和/或大小的过程中,如果在未调整成功的情况下断电,则会出现分区结构被破坏而导致数据丢失的问题。

例如图1所示为调整前的NTFS分区,占用的空间为j至k,假设用户通过第三磁盘管理软件调整NTFS分区的存储区域,调整后分区如图2所示,占用的空间为j+1至k+1。现有的调整NTFS分区的存储区域的过程中,需要将分区整体向后移动1个存储区域,即将原分区中的数据均向后移动1个存储区域。如果在数据迁移后但未调整成功前断电,则原来分区中的部分存储区域(j+1至k)已经被迁移写入的数据覆盖,但因为分区调整还未成功,所以,导致原始数据(即原分区中的数据)的丢失。

发明内容

本申请提供了一种调整NTFS分区的方法及装置,目的在于解决分区调整过程中数据丢失的问题。

为了实现上述目的,本申请提供了以下技术方案:

一种调整NTFS分区的方法,包括:

将原分区中包括且调整后分区中不包括的存储区域的数据,复制至所述调整后分区中的空闲区域;

在所述空闲区域建立第一类元文件,所述第一类元文件为所述原分区中除引导文件$Boot之外的其它元文件;

在所述调整后分区的第一个簇建立所述$Boot。

可选的,在所述将原分区中包括且调整后分区中不包括的存储区域的数据复制至所述调整后分区中的空闲区域之前,还包括:

在头部偏移不为预设数值的整数倍的情况下,调整所述调整后分区的头部位置,以使得所述头部偏移为所述预设数值的整数倍;

其中,所述头部偏移为所述调整后分区与所述原分区的头部位置的偏移量。

可选的,在所述将原分区中包括且调整后分区中不包括的存储区域的数据复制至所述调整后分区中的空闲区域之前,还包括:

在剩余空间小于所述第一类元文件与所述$Boot的大小之和的情况下,增加所述调整后分区的大小,使得所述剩余空间不小于所述第一类元文件与所述$Boot的大小之和;其中,所述剩余空间为所述调整后分区的大小,除去被所述原分区中的数据占用的空间大小后,剩余的空间。

可选的,所述第一类元文件包括以下至少一项:

主控文件表$MFT、MFT镜像文件$MFTMirr、位图$Bitmap、坏簇$BadClus和日志文件$LogFile。

可选的,建立所述$MFT包括:

在所述$MFT中文件记录于预设阈值大于预设阈值的情况下,在$MFT空闲记录块中创建子记录;

建立所述$BadClus包括:

建立用于标识所述原分区已标识且包括在调整后分区中的坏簇的信息的所述$BadClus。

一种调整NTFS分区的装置,包括:

复制模块,用于将原分区中包括且调整后分区中不包括的存储区域的数据,复制至所述调整后分区中的空闲区域;

第一文件创建模块,用于在所述空闲区域建立第一类元文件,所述第一类元文件为所述原分区中除引导文件$Boot之外的其它元文件;

第二文件创建模块,用于在所述调整后分区的第一个簇建立所述$Boot。

可选的,还包括:

位置校准模块,用于在所述复制模块将原分区中包括且调整后分区中不包括的存储区域的数据,复制至所述调整后分区中的空闲区域之前,在头部偏移不为预设数值的整数倍的情况下,调整所述调整后分区的头部位置,以使得所述头部偏移为所述预设数值的整数倍;

其中,所述头部偏移为所述调整后分区与所述原分区的头部位置的偏移量。

可选的,还包括:

大小校准模块,用于在所述复制模块将原分区中包括且调整后分区中不包括的存储区域的数据,复制至所述调整后分区中的空闲区域之前,在剩余空间小于所述第一类元文件与所述$Boot的大小之和的情况下,增加所述调整后分区的大小,使得所述剩余空间不小于所述第一类元文件与所述$Boot的大小之和;其中,所述剩余空间为所述调整后分区的大小,除去被所述原分区中的数据占用的空间大小后,剩余的空间。

可选的,所述第一类元文件包括以下至少一项:

主控文件表$MFT、MFT镜像文件$MFTMirr、位图$Bitmap、坏簇$BadClus和日志文件$LogFile。

可选的,所述第一文件创建模块用于在所述空闲区域建立第一类元文件,包括:

所述第一文件创建模块具体用于,在所述$MFT中文件记录大于预设阈值的情况下,在$MFT空闲记录块中创建子记录;以及,建立用于标识所述原分区已标识且包括在调整后分区中的坏簇的信息的所述$BadClus。

本申请所述的调整NTFS分区的方法及装置,将原分区中包括且调整后分区中不包括的存储区域的数据,复制至调整后分区中的空闲区域,在空闲区域建立第一类元文件,第一类元文件为原分区中除引导文件$Boot之外的其它元文件,在调整后分区的第一个簇建立$Boot。可见,与现有技术相比,本实施例中所述的技术方案,无需将原分区中的数据进行整体迁移,而仅在调整后分区的空闲区域复制原分区中不被调整后分区包括的数据,以及建立大部分元文件,因此,并没有更改原分区中的数据以及元文件,所以,在调整完成前发生掉电的情况下,原分区中的数据以及元文件不会丢失。并且,即使$Boot的建立覆盖了原分区中的部分数据,但因为$Boot很小,所以,建立该元文件过程中发生掉电的可能性很小。综上所述,本实施例中所述的技术方案,能够有效减低分区调整不成功情况下数据丢失的可能性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为调整前的NTFS分区的示例图;

图2为调整后的NTFS分区的示例图;

图3为本申请实施例公开的调整NTFS分区的方法的流程图;

图4为本申请实施例公开的调整NTFS分区的方法中数据复制的示例图;

图5为本申请实施例公开的又一种调整NTFS分区的方法的流程图;

图6为本申请实施例公开的一种调整NTFS分区的装置的结构示意图。

具体实施方式

本申请实施例提供的调整NTFS分区的方法及装置,用于调整NTFS分区的大小和/或位置,具体的,可以通过人工交互模块获取用户输入的调整指令,调整指令至少用于指示调整后的分区的大小和位置,并依据调整指令调整NTFS分区。

在本申请的以下实施例中,将调整前的分区称为原分区,将调整后的分区称为调整后分区。需要说明的是,“调整后分区”这一表述是指在调整成功后可获得的分区,但并不说明使用这一表述后,分区已经调整成功。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图3为本申请实施例公开的一种调整NTFS分区的方法,包括以下步骤:

S301:将原分区中包括且调整后分区中不包括的存储区域的数据,复制至调整后分区中的空闲区域。

其中,调整后分区中的空闲区域为不被原分区中的数据占用的区域。

还以图1和图2为例,图2所示的调整后分区与图1所示的原分区相比,缺少了j存储区域而增加了k+1存储区域,j+1至k存储区域不变,因此,j中的数据为原分区中包括的数据,但在调整后分区范围之外的数据。k+1存储区域为空闲区域。

因此,将原分区中j存储区域的数据复制至调整后分区中的k+1存储区域,如图4所示。

需要说明的是,本实施例中,只复制原分区中包括但调整后分区中不包括的存储区域的数据,元文件不做复制,接上例,即j中的元文件不做复制。

需要说明的是,因为S301执行后,还未完成分区的调整,因此,调整后分区的大小和位置,为预先获取的参数。也就是说,通过预先获取的调整后分区的大小和位置,确定原分区中包括且调整后分区中不包括的存储区域。

S302:在调整后分区中的空闲区域建立第一类元文件。

其中,第一类元文件用于指示调整后分区内的数据存储状态。

具体的,重建的第一类元文件为除引导元文件$Boot之外的其它元文件。

需要说明的是,建立的第一类元文件的类型与原分区内包括的元文件的类型一致,例如,原分区内包括的元文件为主控文件表$MFT、MFT镜像文件$MFTMirr、位图$Bitmap、坏簇$BadClus和日志文件$LogFile,则要在调整后分区的空闲区域重建元文件$MFT、$MFTMirr、$Bitmap、$BadClus和$LogFile。

第一类元文件的功能、格式、建立方法等均可参见现有技术,这里不再赘述,仅以$MFT、$BadClus和$Bitmap(卷位图)为例,进行简要说明:

1、$MFT用于记录调整后分区中的数据与存储空间的对应关系。

例如,原分区中的j存储区域的数据A复制至调整后分区中的k+1存储区域,则$MFT中记录数据A与k+1存储区域的对应关系。又例如,原分区中的j+1存储区域的数据B仍为调整后分区中的j+1存储区域的数据B,则$MFT中记录数据B与j+1存储区域的对应关系。

$MFT由文件记录块组成,每个记录有一个标准的头部和一序列的属性。如果单个记录块装不下所有的属性时,更多的记录将会被使用,并且将需要一个属性列表。

可选的,在因为对应关系太多,而导致$MFT中文件记录过大(即大于预设阈值,预设阈值为依据$MFT中文件记录的大小确定的固定值)的情况下,可以在$MFT空闲记录块中创建子记录。

2、依据调整后分区数据的分布,在调整后分区的空闲区域建立$Bitmap。

3、$BadClus用于标识坏簇的信息。在调整后分区的空闲区域建立$BadClus,标识原分区已标识且包括在调整后分区中的坏簇的信息。

S303:在调整后分区的第一个簇建立$Boot。

$Boot用于记录文件系统的基本参数信息。基于$Boot的特性,只能将其建立在调整后分区的第一个簇。接上例,在j+1存储区域建立$Boot。因为$Boot元文件的建立位置受限,所以,可能会覆盖原分区中的部分原始数据,例如,在j+1存储区域建立$Boot后,会覆盖j+1存储区域原有的数据。

至此,完成分区的调整。

在图3所示的调整分区的过程中,如果在S301之后、S302之前发生掉电,则调整还没有完成,在此情况下,因为将原分区中的数据复制至调整后分区中的空闲区域,所以,不会对原分区造成影响,接上例,j中的数据复制至k+1,而j至k中的数据并没有发生变动,所以,原分区中的数据和元文件没有发生变更,因此,不会发生因掉电而导致的数据丢失问题。

同理,如果在S302之后、S303之前发生掉电,则调整还没有完成,在此情况下,因为在调整后分区中的空闲区域复制数据并建立第一类元文件,而并没有修改原分区的数据和元文件,因此,不会对原分区造成影响。

同理,如果在S301或S302执行的过程中发生掉电,则调整还没有完成,在此情况下,因为操作仅针对调整后分区的空闲区域,所以不会对原分区造成影响。

如果在S303执行的过程中发生掉电,如果$Boot正在建立,则会覆盖原分区中的部分数据,从而导致被覆盖的部分数据丢失。但实际中,$Boot很小,通常只有几千个字节,因此,建立$Boot的时间在毫秒级,所以,在建立$Boot的过程中掉电的可能性很小,而如果在已经建立,则分区调整已经完成,不会导致数据丢失。

综上所述,与现有技术中分区整体移动的方式相比,本实施例所述的方法,能够显著降低数据丢失的可能性。

图5为本申请实施例公开的又一种调整NTFS分区的方法,与图1所示的流程相比,增加了新分区位置和大小校准的操作,图5所示的流程包括以下步骤:

S501:接收用户输入的调整指令,调整指令中包括调整后分区的位置和大小。

S502:校准调整后分区的位置。

实际中,分区格式化可以选择分配单元大小,因此,原分区与调整后分区的头部偏移为分配单元大小的整数倍,才能够实现对分区的调整。

本实施例中,如果调整指令指示的调整后分区的位置,与原分区的位置相比,头部偏移不为分配单元大小的整数倍,则对调整后分区的头部进行调整,使得调整后分区与原分区的头部偏移为分配单元大小的整数倍。

例如,分区格式化的分配单元大小为4KB,原分区的头部位置在100KB,调整后分区的头部位置为115KB,原分区与调整后分区的头部偏移为15KB,不为分配单元大小的整数倍,因此,将调整后分区的头部位置修改为116K,确保原分区与调整后分区的头部偏移为4KB的整数倍。

分配单元大小仅为一种示例,实际中,也可以自定义预设数值,作为头部偏移需要满足的条件。

S503:校准调整后分区的大小。

因为要在调整后分区重建元文件,所以,需要调整后分区要有足够的空闲区域。因此,在调整指令指示的调整后分区的大小,除去被原分区中的数据占用的空间大小外,小于需要重建的元文件的大小的情况下,则增加调整后分区的大小,使得调整后分区的大小足够重建元文件。

例如,先计算$MFT、$MFTMirr、$Bitmap、$LogFile、$Boot等元文件重建需要的空间大小为1G,原分区的数据的大小为10G,新分区小于11G时自动修改为11G。可选的,S502和S503的执行顺序可以交换,S502和S503可以至少执行一个,本实施例不做限定。

可选的,在校准调整后分区的存储区域和大小后,可以通过交互模块告知用户已自动进行的调整。

S504:在调整后分区中的空闲区域重建第一类元文件。

S505:在调整后分区的第一个簇重建$Boot。

至此,完成对原分区的调整。

S504和S505的具体实现方式,可以参见上述实施例,这里不再赘述。

从图5所示的流程可以看出,本实施例中,可以针对调整指令对调整后分区的位置和/或大小进行调整,从而使得分区的调整能够与现有的分区格式化方式兼容,从而保证成功调整分区。

图6为本申请实施例公开的一种调整NTFS分区的装置,包括:复制模块601、第一文件创建模块602和第二文件创建模块603,可选的,还可以包括:位置校准模块604和大小校准模块605中的至少一个。

具体的,复制模块601用于将原分区中包括且调整后分区中不包括的存储区域的数据,复制至调整后分区中的空闲区域。第一文件创建模块602用于在空闲区域建立第一类元文件,第一类元文件为原分区中除$Boot元文件之外的其它元文件。第二文件创建模块603用于在调整后分区的第一个簇建立$Boot元文件。

位置校准模块604用于在复制模块将原分区中包括且调整后分区中不包括的存储区域的数据,复制至调整后分区中的空闲区域之前,在头部偏移不为预设数值的整数倍的情况下,调整调整后分区的头部位置,以使得头部偏移为预设数值的整数倍。其中,头部偏移为调整后分区与原分区的头部位置的偏移量。

大小校准模块605用于在复制模块将原分区中包括且调整后分区中不包括的存储区域的数据,复制至调整后分区中的空闲区域之前,在剩余空间小于第一类元文件与$Boot元文件的大小之和的情况下,增加调整后分区的大小,使得剩余空间不小于第一类元文件与$Boot元文件的大小之和。其中,剩余空间为调整后分区的大小,除去被原分区中的数据占用的空间大小后,剩余的空间。

图6所示的调整NTFS分区的装置,能够降低分区调整过程中掉电,而分区调整失败导致的数据丢失的问题。并且,进一步的,还能够对调整后分区的位置和/或大小进行自适应的调整,从而进一步提高分区调整的成功率。

需要说明的是,上述实施例均以调整分区的存储区域为例进行说明,除了调整存储区域之外,本申请实施例所述的方法,也适用于仅调整分区的大小,以及调整分区的存储区域和大小。调整的流程均与上述流程相同,这里不再一一举例。

本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号