CN111566622B - 一种文件系统调整方法及设备 - Google Patents

一种文件系统调整方法及设备 Download PDF

Info

Publication number
CN111566622B
CN111566622B CN201880085585.8A CN201880085585A CN111566622B CN 111566622 B CN111566622 B CN 111566622B CN 201880085585 A CN201880085585 A CN 201880085585A CN 111566622 B CN111566622 B CN 111566622B
Authority
CN
China
Prior art keywords
area
metadata
file system
data
backup
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.)
Active
Application number
CN201880085585.8A
Other languages
English (en)
Other versions
CN111566622A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN111566622A publication Critical patent/CN111566622A/zh
Application granted granted Critical
Publication of CN111566622B publication Critical patent/CN111566622B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种文件系统调整方法及设备,涉及存储领域,在对文件系统的存储空间进行调整的过程中能够避免文件系统的数据丢失。包括:确定文件系统的存储空间的调整范围,根据文件系统的存储空间的调整范围确定文件系统的数据区域的调整范围,对数据区域的调整范围执行数据更新操作;利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移文件系统的所有元数据区域;文件系统的元数据区域包括第一元数据区域,第一元数据区域包括两个备份区域;根据文件系统调整后的元数据区域更新文件系统的数据区域中的第二元数据区域,第二元数据区域为文件系统的数据区域中无双备份的元数据区域。

Description

一种文件系统调整方法及设备
技术领域
本申请涉及存储领域,尤其涉及一种文件系统调整方法及设备。
背景技术
随着嵌入式终端功能的增加,操作系统占用的空间会越来越大,需要对文件系统的分区大小进行调整,来满足更大的ROM需求。
当前无论离线或在线的文件系统分区调整技术均是直接搬移文件系统的数据和元数据,搬移过程中重叠的数据会临时记录在内存中。当设备或器件掉电时,分区调整过程无法恢复,记录在内存中的数据会丢失无法恢复,最终直接破坏文件系统,对用户产生无法挽回的损失。如:开源社区提供的F2FS的分区调整方案。
参考图1,现有F2FS尾部分区扩大调整技术按照main area、SSA、NAT、SIT、CKPT、SB的顺序依次调整搬移各区域,修改main area区域时直接搬移并原地修改最新的CKPT以及有效的SIT和NAT备份,不进行异地更新,调整时会先将区域中部分数据读入内存,然后写入新的数据,没有搬移过程状态落盘,掉电后无法恢复到掉电前的状态继续搬移,且由于CKPT本地更新,导致最新的CKPT失效。
发明内容
本发明的实施例提供一种文件系统调整方法及设备,在对文件系统的存储空间进行调整的过程中能够避免文件系统的数据丢失。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,公开了一种文件系统调整方法,包括:首先,确定文件系统的存储空间的调整范围,根据文件系统的存储空间的调整范围确定文件系统的数据区域的调整范围,对数据区域的调整范围执行数据更新操作;随后,可以利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移文件系统的所有元数据区域。其中,文件系统的元数据区域包括第一元数据区域,第一元数据区域包括两个备份区域。最后,根据文件系统调整后的元数据区域更新文件系统的数据区域中的第二元数据区域,第二元数据区域为文件系统的数据区域中无双备份的元数据区域。
本发明实施例提供的方法中,在对文件系统在磁盘所占存储空间的大小进行调整时,首先可以确定文件系统存储空间的调整范围,进一步根据文件系统的调整范围确定文件系统数据区域的调整范围,对该数据区域的调整范围执行数据更新操作。随后,针对所述文件系统的每一个第一元数据区域,第一元数据区域包括两个备份区域,利用第一元数据区域的有效备份区域构建调整后的第一元数据区域。另外,还可以根据预设算法确定文件系统的所有元数据区域的搬移顺序,按照该搬移顺序搬移所述文件系统的所有元数据区域。最后,还可以根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据。所谓第二元数据是存在于数据区域的非双备份的元数据。可见,本发明实施例提供的方法中,对文件系统的数据进行更新(如:搬移)时,利用双备份中的有效备份构建新的元数据区域,通过双备份文件系统特性对数据进行安全搬移,实现了文件系统的安全调整,在对文件系统的存储空间进行调整的过程中能够避免文件系统的数据丢失。
结合第一方面,在第一方面的第一种可能的实现方式中,对数据区域的调整范围执行数据更新操作包括:若缩小文件系统的数据区域,则将数据区域的调整范围内的数据搬移至空闲的数据块;若扩展文件系统的数据区域,则将数据区域扩展成包括调整范围的区域,且数据区域中的调整范围为空。
本发明实施例提供了对文件系统的数据区域进行数据更新操作的具体实现方式。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,确定文件系统的数据区域的调整范围,对数据区域的调整范围执行数据更新操作之后,方法还包括:写入第二版本号;有效版本号由第一版本号变为第二版本号。
结合第一方面,在第一方面的第三种可能的实现方式中,利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移文件系统的所有元数据区域具体包括:利用需要缩小的第一元数据区域的有效备份区域构建缩小后的第一元数据区域;根据预设算法确定文件系统的所有元数据区域的搬移顺序,按照搬移顺序搬移文件系统的所有元数据区域;利用需要扩大的第一元数据区域的有效备份区域构建扩大后的第一元数据区域。
本发明实施例提供了重建元数据区域以及搬移元数据区域的具体实现方式,可以保证在调整过程中,文件系统系统的元数据区域互相之间不受影响。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,第一元数据区域包括第一备份区域和第二备份区域;第一备份区域是当前有效备份区域;利用第一元数据区域的有效备份区域构建调整后的第一元数据区域包括:确定第一元数据区域的缩小范围,将第一备份区域中除缩小范围外的数据拷贝至第二备份区域;或,确定第一元数据区域的扩大范围,将第一备份区域中的数据拷贝至第二备份区域,第二备份区域包括第一元数据区域的扩大范围。
在本发明实施例中,对元数据区域的重建可以是调整元数据区域的范围,具体可以扩大元数据区域的范围或缩小元数据区域的范围。
结合第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,第一元数据区域包括第一备份区域和第二备份区域;第一备份区域是当前有效备份区域;利用第一元数据区域的有效备份区域构建调整后的第一元数据区域包括:更新第一备份区域内的数据,并将更新后的数据存储在第二备份区域。
在本发明实施例中,对元数据区域的重建可以是调整元数据区域的内容,具体可以修改元数据区域存储的数据。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,更新第一备份区域内的数据具体包括:从第一备份区域读出元数据区域的地址,根据文件系统的调整范围更新读出的第二元数据区域的地址。
在本发明实施例中,在调整元数据区域时,可以对元数据区域存储的地址进行修改。
结合第一方面的第二种可能的实现方式,在第一方面的第七种可能的实现方式中,利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移文件系统的所有元数据区域之后,方法还包括:写入第三版本号;有效版本号不变,为第二版本号。
结合第一方面,在第一方面的第八种可能的实现方式中,方法搬移文件系统的所有元数据区域包括:在搬移第一元数据区域时,确定第一元数据区域的缩小范围,仅搬移第一元数据区域中缩小范围之外的其他数据;或,确定第一元数据区域的扩大范围,搬移调整后的第一元数据区域,或,搬移调整后的第一元数据区域并清除第一元数据区域的扩大范围内的数据;调整后的第一元数据区域包括第一元数据区域的扩大范围。
结合第一方面或第一方面的第三种可能的实现方式中,在第一方面的第九种可能的实现方式中,方法还包括:搬移一个元数据区域时,以块为单位沿预设方向依次搬移该元数据区域内的数据;预设方向指向元数据区域调整后的开始地址或元数据区域调整后的结束地址。
结合第一方面,在第一方面的第十种可能的实现方式中,根据文件系统调整后的元数据区域更新文件系统的数据区域中的第二元数据区域,包括:遍历文件系统中的每一个有效数据块,查找文件系统调整后的元数据区域获得有效数据块对应的第二元数据区域以及有效数据块在第二元数据区中的偏移,将第二元数据区域中偏移对应的数据块地址更新为有效数据块的地址。
结合第一方面,在第一方面的第十一种可能的实现方式中,所述方法还包括:根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据区域之后,写入第四版本号,所述第四版本号为有效版本号。
第二方面,公开了一种设备,包括:处理单元,用于确定文件系统的存储空间的调整范围,根据文件系统的存储空间的调整范围确定文件系统的数据区域的调整范围,对数据区域的调整范围执行数据更新操作;处理单元还用于,利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移文件系统的所有元数据区域;文件系统的元数据区域包括第一元数据区域,第一元数据区域包括两个备份区域;处理单元还用于,根据文件系统调整后的元数据区域更新文件系统的数据区域中的第二元数据区域,第二元数据区域为文件系统的数据区域中无双备份的元数据区域。
本发明实施例提供的设备,在对文件系统在磁盘所占存储空间的大小进行调整时,首先可以确定文件系统存储空间的调整范围,进一步根据文件系统的调整范围确定文件系统数据区域的调整范围,对该数据区域的调整范围执行数据更新操作。随后,针对所述文件系统的每一个第一元数据区域,第一元数据区域包括两个备份区域,利用第一元数据区域的有效备份区域构建调整后的第一元数据区域。另外,还可以根据预设算法确定文件系统的所有元数据区域的搬移顺序,按照该搬移顺序搬移所述文件系统的所有元数据区域。最后,还可以根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据。所谓第二元数据是存在于数据区域的非双备份的元数据。可见,本发明实施例提供的方法中,对文件系统的数据进行更新(如:搬移)时,利用双备份中的有效备份构建新的元数据区域,通过双备份文件系统特性对数据进行安全搬移,实现了文件系统的安全调整,在对文件系统的存储空间进行调整的过程中能够避免文件系统的数据丢失。
结合第二方面,在第二方面的第一种可能的实现方式中,处理单元具体用于,
若缩小文件系统的数据区域,则将数据区域的调整范围内的数据搬移至空闲的数据块;若扩展文件系统的数据区域,则将数据区域扩展成包括调整范围的区域,且数据区域中的调整范围为空。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,处理单元还用于,确定文件系统的数据区域的调整范围,对数据区域的调整范围执行数据更新操作之后,写入第二版本号;有效版本号由第一版本号变为第二版本号。
结合第二方面,在第二方面的第三种可能的实现方式中,处理单元具体用于,利用需要缩小的第一元数据区域的有效备份区域构建缩小后的第一元数据区域;根据预设算法确定文件系统的所有元数据区域的搬移顺序,按照搬移顺序搬移文件系统的所有元数据区域;利用需要扩大的第一元数据区域的有效备份区域构建扩大后的第一元数据区域。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,第一元数据区域包括第一备份区域和第二备份区域;第一备份区域是当前有效备份区域;处理单元具体用于,确定第一元数据区域的缩小范围,将第一备份区域中除缩小范围外的数据拷贝至第二备份区域;或,确定第一元数据区域的扩大范围,将第一备份区域中的数据拷贝至第二备份区域,第二备份区域包括第一元数据区域的扩大范围。
结合第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,第一元数据区域包括第一备份区域和第二备份区域;第一备份区域是当前有效备份区域;利用第一元数据区域的有效备份区域构建调整后的第一元数据区域包括:更新第一备份区域内的数据,并将更新后的数据存储在第二备份区域。
结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,处理单元具体用于,从第一备份区域读出元数据区域的地址,根据文件系统的调整范围更新读出的第二元数据区域的地址。
结合第二方面的第二种可能的实现方式,在第二方面的第七种可能的实现方式中,处理单元还用于,利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移文件系统的所有元数据区域之后,写入第三版本号;有效版本号不变,为第二版本号。
结合第二方面或第二方面的第三种可能的实现方式,在第二方面的第八种可能的实现方式中,处理单元具体用于,在搬移第一元数据区域时,确定第一元数据区域的缩小范围,仅搬移第一元数据区域中缩小范围之外的其他数据;或,确定第一元数据区域的扩大范围,搬移调整后的第一元数据区域,或,搬移调整后的第一元数据区域并清除第一元数据区域的扩大范围内的数据;调整后的第一元数据区域包括第一元数据区域的扩大范围。
结合第二方面的第八种可能的实现方式,在第二方面的第九种可能的实现方式中,处理单元还用于,搬移一个元数据区域时,以块为单位沿预设方向依次搬移该元数据区域内的数据;预设方向指向元数据区域调整后的开始地址或元数据区域调整后的结束地址。
结合第二方面,在第二方面的第十种可能的实现方式中,处理单元具体用于,遍历文件系统中的每一个有效数据块,查找文件系统调整后的元数据区域获得有效数据块对应的第二元数据区域以及有效数据块在第二元数据区中的偏移,将第二元数据区域中偏移对应的数据块地址更新为有效数据块的地址。
结合第二方面,在第二方面的第十一种可能的实现方式中,处理单元还用于,根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据区域之后,写入第四版本号,所述第四版本号为有效版本号。
附图说明
图1为现有技术文件系统调整方法的示意图;
图2为本发明实施例提供的F2FS的示意图;
图3为本发明实施例提供的设备的结构框图;
图4为本发明实施例提供的文件系统调整方法的流程示意图;
图5为本发明实施例提供的文件系统调整示意图;
图6为本发明实施例提供的元数据区域更新示意图;
图7为本发明实施例提供的另一元数据区域更新示意图;
图8为本发明实施例提供的另一元数据区域更新示意图;
图9为本发明实施例提供的另一元数据区域更新示意图;
图10为本发明实施例提供的确定元数据区域搬移顺序的流程示意图;
图11为本发明实施例提供的数据搬移示意图;
图12为本发明实施例提供的另一搬移数据示意图;
图13为本发明实施例提供的另一搬移数据示意图;
图14为本发明实施例提供的需要搬移的元数据区域的示意图;
图15为本发明实施例提供的另一元数据区域更新示意图;
图16为本发明实施例提供的设备的另一结构框图;
图17为本发明实施例提供的设备的另一结构框图。
具体实施方式
文件系统是计算机操作系统中的重要组成部分,用于在计算机的存储介质(磁盘或闪存)上组织、管理和存储文件。文件系统可以被划分为多个块(block)。典型的,对于多数文件系统,每个block大小相同,且一个block大小可以是4096字节。
本发明实施例提供的文件系统调整方法适用于双备份文件系统,所谓双备份文件系统,即元数据在文件系统内可以存在两个备份。如:F2FS文件系统(闪存友好型文件系统,Flash Friendly File System)。以下以F2FS作为示例,介绍双备份文件系统在磁盘上的分布。需要说明的是,本发明实施例提供的方法适应的文件系统包括但不限于F2FS,还可以应用于其他双备份的文件系统。
参考图2,F2FS的存储空间包括元数据区域和数据区域(main area)。其中,元数据区域包括超级块(super block,SB)、检查点(checkpoint,CKPT)、段信息表(segmentinformation table,SIT)、节点地址表(node address table,NAT)、段摘要区(segmentsummary area,SSA)。数据区域包括节点块(node block)以及数据块(data block),数据块在文件系统中存储用户数据,节点块是文件系统中的另一种元数据结构,保存了文件系统中的一个文件系统对象的元信息数据。需要说明的是,main area中的node均只有一个备份,在本发明实施例中可以称为无双备份的元数据。
另外,文件系统的最小单位是块(block),在F2FS中一个block=4096(4k)字节。F2FS存在segment(段)、section(小节)、zone(区),一个segment包含512个连续的block,本发明实施例中1segment=1section=1zone。
以下对各个元数据区域进行解释说明,具体包括:
(1)SB是文件系统的第0和第1个block,SB包括两个相同备份,分别为SB0、SB1,SB0对应第0个block,SB1对应第1个block。
(2)SIT用于记录main area中每个segment中的block的分配情况,参考图2,SIT包括SIT 0集合、SIT1集合这两个区域,SIT 0和SIT1均包括SIT block。另外,当前有效的SITblock构成一个备份,其余SIT block构成另外一个备份。具体地,每个SIT block中包含55个SIT entry。其中,SIT entry记录了与其对应的segment中的512个block的使用情况。
(3)NAT用于记录node的地址。NAT包括NAT0集合、NAT1集合这两个集合。NAT0、NAT1均包括NAT block。另外,当前有效的NAT block构成一个备份,其余NAT block构成另外一个备份。其中,每个NAT block中包含455个NAT entry。每个NAT entry记录了与其对应的一个node的地址。而这个nat entry本身在NAT区域中的位置,表示该node的nid(node的标识)。
(4)CKPT是SB对齐之后的两个segment。CKPT的起始地址以segment对齐。CKPT包括两个相同备份,分别为CKPT0、CKPT1,同一时刻,只有一个CKPT备份是有效的。示例的,当前有效的是CKPT0,下一次可以写CKPT1,将CKPT1可靠写入器件之后CKPT1就是有效的,下一次可以继续写CKPT0。也就是说,当前稳定有效的那个CKPT备份不能写操作,只能写另外一个CKPT备份。CKPT中包括版本号,版本号较新的CKPT是当前有效的CKPT被文件系统识别。示例的,CKPT0的版本号是0,CKPT1的版本号是1,CKPT1有效。进一步,在CKPT0写入版本号2,CKPT1的版本号仍为1,CKPT0的版本号较新,为当前有效的CKPT。
CKPT0、CKPT1均包括NAT version bitmap和SIT version bitmap。NAT versionbitmap记录了当前有效的NAT block,如:CKPT0中的NAT version bitmap记录了哪些NATblock对于CKPT0是有效的;CKPT1中的NAT version bitmap记录了哪些NAT block对于CKPT1是有效的。SIT version bitmap记录了当前有效的SIT block,如:CKPT1中的SITversion bitmap记录了哪些SIT block对于CKPT1是有效的;CKPT0中的SIT versionbitmap记录了哪些SIT block对于CKPT0是有效的。
(5)SSA包括多个summary block,一个summary block对应与一个segment。一个summary block包括512个entry,每个entry对应于一个block,记录了该block属于哪个node,以及在node中的位置。与SB、SIT、NAT、CKPT等元数据区域不同的是,F2FS文件系统中SSA仅有一个备份。
现有技术中,直接搬移文件系统的数据和元数据对文件系统的大小进行调整,搬移过程中重叠的数据会临时记录在内存中。当设备和器件掉电时,分区调整过程无法恢复,记录在内存中的数据会丢失无法恢复,会直接破坏文件系统,对用户产生无法挽回的损失。
本发明实施例提供一种文件系统调整方法,在对文件系统在磁盘所占存储空间的大小进行调整时,首先可以确定文件系统存储空间的调整范围,进一步根据文件系统的调整范围确定文件系统数据区域的调整范围,对该数据区域的调整范围执行数据更新操作。随后,针对所述文件系统的每一个第一元数据区域,第一元数据区域包括两个备份区域,利用第一元数据区域的有效备份区域构建调整后的第一元数据区域。另外,还可以根据预设算法确定文件系统的所有元数据区域的搬移顺序,按照该搬移顺序搬移所述文件系统的所有元数据区域。最后,还可以根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据。所谓第二元数据是存在于数据区域的非双备份的元数据。可见,本发明实施例提供的方法中,对文件系统的数据进行更新(如:搬移)时,利用双备份中的有效备份构建新的元数据区域,通过双备份文件系统特性对数据进行安全搬移,实现了文件系统的安全调整,在对文件系统的存储空间进行调整的过程中能够避免文件系统的数据丢失。
本发明实施例提供的文件系统调整方法可以应用于图3所示的设备,如图3所示,该设备包括处理器20、存储器21以及通信接口22。处理器20、存储器21以及通信接口22通过总线23通信。该设备还可以通过通信接口23与其他设备通信。
其中,处理器20包括N个处理器核心(核心1、……、核心k、……、核心N),例如至少一个中央处理器(Central Processing Unit,CPU)等,每一个CPU可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。多个处理器核心可以分时,也可以同时读取存储器21中存储的数据。
存储器21为上述存储介质,该存储器可以存储数据、软件程序以及模块等。存储器21可以为硬盘(Hard Disk Drive,HDD)、固态硬盘(Solid-State Drive,SSD)、磁盘存储介质或者闪存设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由处理器20存取的任何其他介质,但不限于此。
在实际应用中,设备可以利用文件系统对文件进行管理,这些文件的数据存储在设备的存储器21中。本发明实施例中,处理器20调用存储器21中的代码执行本发明实施例所述的文件系统调整方法,对文件系统的存储空间的大小进行调整,如:缩小文件系统的存储空间、扩大文件系统的存储空间。
本发明实施例提供一种文件系统调整方法,适用于双备份文件系统。如图4所示,所述方法包括以下步骤:
401、设备确定文件系统的存储空间的调整范围,根据所述文件系统的调整范围确定所述文件系统的数据区域的调整范围,对所述数据区域的调整范围执行数据更新操作。
需要说明的是,文件系统的存储空间包括文件系统的元数据区域以及文件系统的数据区域。具体实现中,设备可以根据调整后的元数据区域的字段,与当前元数据区域的字段进行对比,确定文件系统的数据区域的调整范围,如:文件系统的数据区域需要搬移的范围,或文件系统的数据区域需要扩展的范围。
另外,对文件系统的数据区域执行的数据更新操作包括以下两种情况:
若缩小文件系统的数据区域,则将数据区域的调整范围内的数据搬移至空闲块。本发明实施例中,缩小文件系统的数据区域可以是缩小该区域的头部,也可以是缩小该区域的尾部。
若扩展所述文件系统的数据区域,则将所述数据区域扩展成包括所述调整范围的区域。本发明实施例中,扩展文件系统的数据区域可以是扩展该区域的头部,也可以是扩展该区域的尾部,扩展出的segment数据区域可以选择置为空或不做处理,但不能影响元数据区域。
402、设备写入第二版本号,将当前有效版本号由第一版本号更新为第二版本号。
也就是说,在步骤401完成数据区域调整范围的数据更新操作后,可以可靠写入一笔较新的CKPT版本号,将有效的备份区域由第一版本号的有效备份区域变为第二版本号的有效备份区域。示例的,步骤401之前文件系统中CKPT0的版本号是0,CKPT1的版本号是1,步骤401之前CKPT1有效,有效备份区域是CKPT1的有效备份区域,即第一备份区域是CKPT1的有效备份区域。在步骤402中,可以在CKPT0写入一笔较新的版本号,如:版本号2,CKPT0可靠写入器件之后,版本号2为有效版本号,CKPT0有效,有效备份区域是CKPT0的有效备份区域,即第一备份区域变为CKPT0的有效备份区域。
403、设备利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移所述文件系统的所有元数据区域;所述第一元数据区域包括两个备份区域。
需要说明的是,所述文件系统的元数据区域包括第一元数据区域,当然所述文件系统的元数据区域还可以包括其他无双备份的元数据区域,如:SSA。当对文件系统的存储空间进行调整时,对文件系统的元数据区域的构建包括调整元数据区域的范围,或者,也可以修改元数据区域的内容,具体地,可以更新所述第一备份区域内的数据,并将更新后的数据存储在所述第二备份区域。
具体地,首先重建缩小的第一元数据区域(有双备份的元数据区域),随后搬移所有元数据区域,最后再重建扩大的第一元数据区域。具体地,利用需要缩小范围的第一元数据区域的有效备份区域构建缩小后的第一元数据区域;根据预设算法确定所述文件系统的所有元数据区域的搬移顺序,按照所述搬移顺序搬移所述文件系统的所有元数据区域;利用需要扩大范围的第一元数据区域的有效备份区域构建扩大后的第一元数据区域。
另外,对于需要修改内容的第一元数据区域,不论扩大文件系统的存储空间或缩小文件系统的存储空间,可以在搬移所述文件系统的所有元数据区域之前修改元数据区域的内容,也可以在搬移所述文件系统的所有元数据区域之后修改元数据区域的内容。
需要说明的是,所述第一元数据区域为包括两个备份区域的元数据区域,如:NAT、SIT。在步骤403中可以对NAT、SIT以及SSA进行搬移、重建。具体实现中,有些第一元数据区域的调整与文件系统存储空间调整的大小相关,如:NAT,具体地可以是根据文件系统的存储空间的调整范围修改NAT的内容。当文件系统的存储空间改变(扩大或缩小)时,首先利用NAT的一个备份构建新的NAT,当双备份的元数据都完成重建后,再搬移包括NAT在内的所有元数据区域。或者,首先搬移包括NAT在内的元数据区域,再利用NAT的一个备份构建新的NAT。
有些第一元数据区域的调整与文件系统的数据区域(main area)的调整相关,如:SIT,当文件系统的数据区域缩小时,SIT的范围需要缩小,首先利用SIT的一个备份构建缩小后的SIT,当双备份的元数据都完成重建后,再搬移包括SIT在内的所有元数据区域。当文件系统的数据区域扩大时,SIT的范围需要扩大,首先搬移包括SIT在内的所有元数据区域,再利用SIT的一个备份构建扩大后的SIT。
对第一元数据区域的重建包括以下两种情况:
(1)第一元数据区域的范围发生变化,主要包括第一元数据区域缩小或第一元数据区域扩大。可能是文件系统的数据区域发生变化导致第一元数据区域的范围发生改变。示例的,文件系统的数据区域缩小,第一元数据区域可能缩小,如:main area缩小可能导致SIT缩小;文件系统的数据区域扩大,第一元数据区域可能扩大,如:main area扩大可能导致SIT扩大。具体实现中,可以根据文件系统的数据区域的调整范围确定第一元数据区域的调整范围,再利用第一元数据区域的有效备份来构建新的第一元数据区域。
示例的,根据文件系统的数据区域的缩小范围确定所述第一元数据区域的缩小范围,将第一元数据区域的第一备份中除所述缩小范围外的数据拷贝至所述第二备份区域。其中,第一元数据区域包括第一备份区域和第二备份区域,第一备份区域是第一备份区域是第一元数据区域当前有效的一个备份区域,即在执行步骤403时当前有效CKPT的versionbitmap对应的block(如:SIT block)构成的备份区域,第二备份区域是当前有效block对应的无效block构成的备份区域。当然,也可以通过其他方式来确定第一元数据区域的调整范围,本发明实施例对此不做限定。以SIT为例,当文件系统的数据区域需要缩小,SIT区域也需要缩小,可以在SIT的第二备份区域构建缩小后的SIT。
一种示例,步骤401之前文件系统中CKPT0的版本号是0,CKPT1的版本号是1,步骤401之前CKPT1有效,有效备份区域是CKPT1的有效备份区域。在步骤402中,可以在CKPT0写入一笔较新的版本号2,之后,有效备份区域是CKPT0的有效备份区域。本发明实施例中的第一备份区域可以是CKPT0对应的有效SIT block(或NAT block)构成的备份区域;第二备份区域可以是CKPT0的有效SIT block对应的无效SIT block构成的一个备份区域。
或者,还可以根据文件系统的数据区域的扩大范围确定所述第一元数据区域的扩大范围,进一步,将第一元数据区域的第一备份区域中的数据拷贝至第一元数据区域的第二备份区域,并且第二备份区域包括所述第一元数据区域的扩大范围。在一些实施例中,还可以将所述第二备份区域中所述第二元数据区域的扩大范围置为空。以SIT为例,当文件系统的数据区域需要扩大,SIT区域也需要扩大,可以在SIT的第二备份区域构建扩大后的SIT,即将第一备份区域的数据拷贝至第二备份区域。
(2)第一元数据区域的内容发生变化。主要包括第一元数据区域中存储的地址增加或减少。可能是文件系统的存储空间发生变化导致第一元数据区域中存储的地址(如:第二元数据区域地址)发生改变。示例的,文件系统的存储空间缩小或扩大,第一元数据区域中存储的node块(即本发明实施例所述的第二元数据区域)地址可能改变。具体实现中,可以根据文件系统的存储空间的调整范围shrink来确定第一元数据区域中存储的地址的修正量,再利用第一元数据区域的有效备份区域来构建新的第一元数据区域,即从第一元数据区域的有效备份区域中读出地址,根据这个修正量来修改读出的地址,再将修改后的地址相应存储在第一元数据区域的第二备份区域中。在一些实施例中,第一元数据区域中存储的地址的修正量可以是文件系统的存储空间的调整范围shrink。
示例的,缩小文件系统的存储空间:需要根据文件系统的存储空间的缩小范围来修正第一元数据区域的当前有效备份区域中存储的地址,如:第二元数据区域的地址,其中,第二元数据区域可以是文件系统的数据区域中无双备份的元数据区域,如:节点块(node块)。具体实现中,利用第一元数据区域的有效备份区域(第一备份区域)构建调整后的第一元数据区域,即在第一备份区域中读出第二元数据区域地址,进而可以根据文件系统的存储空间的缩小范围来修正读出的第二元数据区域地址,再将修改后的第二元数据区域地址写入第二备份区域。具体地,可以将读出的第二元数据区域地址均减去shrink,shrink为文件系统的存储空间的缩小值。其中,第一元数据区域包括第一备份区域和第二备份区域,第一备份区域是第一元数据区域的两个备份区域中当前有效的一个备份区域,是当前有效的CKPT对应的block(如:NAT block)构成的备份区域,第二备份区域是当前有效block对应的无效block构成的备份区域。
示例的,扩大文件系统的存储空间:需要根据文件系统的存储空间的扩大范围来修正第一元数据区域的当前有效备份区域中存储的地址,如:第二元数据区域的地址,其中,第二元数据区域可以是文件系统的数据区域中无双备份的元数据区域,如:节点块node。具体实现中,利用从第一元数据区域的有效备份区域(第一备份区域)中读出node块地址,将读出的node块地址均增加-shrink(shrink小于0),-shrink为文件系统的存储空间的扩大值,进而可以把修改后的node块地址写入第一元数据区域的第二备份区域。
在一些实施例中,可以首先根据预设算法确定所述文件系统的所有元数据区域的搬移顺序,进而可以按照确定的搬移顺序搬移所述文件系统的所有元数据区域。其中,预设算法可以是:按照一定顺序将需要搬移的元数据区域压入堆栈,按照弹出堆栈的顺序来搬移。示例的,按照从左到右的顺序来进行,首先将最左边的元数据区域压入堆栈,如果满足NEW_BLKADDR≤OLD_BLKADDR(或最后一个区域),则将该元数据区域弹出堆栈;如果不满足NEW_BLKADDR≤OLD_BLKADDR(或最后一个区域),则该元数据区域仍在堆栈,直至有新的元数据区域压入堆栈且满足上述不等式,将堆栈中的元数据区域全部弹出。按照弹出堆栈的顺序搬移元数据区域。其中,当有元数据区域满足NEW_BLKADDR=OLD_BLKADDR时,可以将堆栈内的所有元数据区域弹出,但是该满足NEW_BLKADDR=OLD_BLKADDR的元数据区域不搬移。其中,最后一个区域指的是最右边的一个区域。
或者,按照从右到左的顺序来进行,首先将最右边的元数据区域压入堆栈,如果满足NEW_BLKADDR≥OLD_BLKADDR(或最后一个区域),则将该元数据区域弹出堆栈;如果不满足NEW_BLKADDR≥OLD_BLKADDR(或最后一个区域),则该元数据区域仍在堆栈,直至有新的元数据区域压入堆栈且满足上述不等式,将堆栈中的元数据区域全部弹出,按照弹出堆栈的顺序来搬移。当有元数据区域满足NEW_BLKADDR=OLD_BLKADDR时,可以将堆栈内的所有元数据区域弹出,但是该满足NEW_BLKADDR=OLD_BLKADDR的元数据区域不搬移。其中,最后一个区域指的是最左边的一个区域。
另外,在一个元数据区域内,以块为单位沿预设方向依次搬移该元数据区域内的数据;所述预设方向指向所述元数据区域调整后的开始地址或所述元数据区域调整后的结束地址,保证元数据区域数据不覆盖。示例的,需要搬移的元数据区域从左到右依次有ABCD四个块,该元数据区域搬移后的结束地址右移,因此可以按照从右到左的顺序依次搬移ABCD四个块。首先向右搬移D,搬移后的D的结束地址与该元数据区域搬移后的结束地址对齐,其次向右搬移C,接着向右搬移B,最后向右搬移A。
需要说明的是,可以在搬移文件系统的元数据区域时对SSA进行重建。具体地,缩小文件系统的场景下,在搬移SSA区域时,确定SSA区域的缩小范围,仅搬移SSA中所述缩小范围之外的其他数据。
或,扩展文件系统的场景下,确定SSA区域的扩大范围,搬移调整后的SSA区域;调整后的SSA区域包括SSA区域的扩大范围。
当然,其他文件系统类似的元数据区域的搬移也可以按照上述方式进行,包括但不限于F2FS文件系统的SSA。
404、设备写入第三版本号,当前有效版本号仍为所述第二版本号。
也就是说,在步骤403完成元数据区域的重建及搬移后,可以可靠写入一笔较旧的CKPT版本号。示例的,步骤403之后文件系统中CKPT0的版本号是2,CKPT1的版本号是1,在此可以在CKPT1写入较旧的版本号,该版本号可以是比0小的版本号,如-1。在步骤404写入较旧的版本号之后,可以指定较旧版本号的有效备份区域为当前有效的备份区域,如:指定CKPT1的有效备份区域为当前有效备份区域。
405、根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据区域,所述第二元数据区域为所述文件系统的数据区域中无双备份的元数据区域。
步骤404之后,完成了文件系统中元数据区域的重建及搬移,进一步,还可以根据已经稳定的元数据区域对文件系统的数据区域中无双备份的元数据进行更新,更新mainarea中的节点块(node块)。
具体地,遍历所述文件系统中的每一个有效数据块,查找所述文件系统调整后的元数据区域获得所述有效数据块对应的第二元数据区域以及所述有效数据块在所述第二元数据区域中的偏移,将所述第二元数据区域中所述偏移对应的数据块地址更新为所述有效数据块的地址。
需要说明的是,本发明实施例中的当前有效备份区域指的是最新的有效备份区域或指定的备份区域。如:步骤401当前有效备份区域就是最新的有效备份区域,即CKPT1的有效备份区域。步骤402中在CKPT0写入一个较新的版本号,当前有效备份区域是最新的有效备份区域,即CKPT0的有效备份区域。步骤403中,当前有效备份区域是最新的有效备份区域,仍为CKPT0的有效备份区域。步骤404中,在CKPT1写入一个较旧的版本号,在本发明实施例步骤404中指定较旧的版本号CKPT1的有效备份区域为前有效备份区域。在步骤405中,当前有效备份区域是指定的备份区域,可以认为是当前关注的一个备份区域,如:在本发明实施例步骤405中指定较旧的版本号CKPT1的有效备份区域为当前有效备份区域。
在一些实施例中,步骤405之后还可以写入一笔较新的版本号,如:在CKPT0写入版本号4。
以下以F2FS作为示例,介绍本发明实施例提供的文件系统调整方法,主要包括以下五个阶段:
第一阶段、为适应文件系统的调整进行数据迁移。
具体地,根据调整后的元数据区域的字段,与当前元数据区域的字段进行比较,确定有多少main area区域需要搬移,并寻找空闲块,将需要搬移的main area区域的有效块迁移到空闲块内。参考图5,虚线所示为调整后的元数据区域的地址,通过计算得出调整后的super_block的地址来得到调整后的各区域的长度,最终取得调整后的main_blkaddr,与调整前的main_blkaddr对比即得出该次调整的main_shrink。
当文件系统从头部缩小时,文件系统的调整范围shrink>0,根据main_blkaddr(main area的地址)调整前后的差值来计算main_shrink即数据区域的调整范围,main_shrink≠(不一定等于)shrink。
当文件系统头部扩展时,文件系统的存储空间的调整范围shrink<0,可能出现两种结果main_shrink>0或main_shrink<=0。main_shrink>0需要参考上述缩小文件系统的方案中的做法,需要将数据区域缩小范围内的数据搬移至空闲块,另外,还可能需要对node以及data进行相应的更新。main_shrink<=0时,在第一阶段不做任何数据搬移。
另外,如果搬移的main area区域中包含node,需要对node进行搬移。也就是说分配新的node块,将当前有效的node块的数据搬移至新的node块中。另外,还需要对NAT进行异地更新,即对NAT中的node地址进行异地修改。具体地,参考图6,执行第一阶段时,稳定有效的是CKPT1,在此可以将CKPT1的有效NAT block拷贝至第二备份区域的NAT block,再对第二备份区域中的NAT block中存储的node地址进行修改,并在写CKPT0时切换到这些NATblock,即写CKPT0后这些NAT block有效。或者,直接修改第二备份区域中NAT block中的node地址。
参考图7,如果搬移的main area区域中包含data,除了搬移data外,还需要对data对应的node(inode、dnode)进行异地更新。具体地,参考图7,data block A是通过inode来直接索引的,在搬移data block A时,相应地异地更新data block A对应的inode。datablock B是通过dnode来间接索引的,在搬移data block B时,只需要相应地异地更新datablock B对应的dnode。idnode中存储dnode的ID,因此无需修改idnode。didnode中存储idnode的ID,因此无需修改didnode。
需要说明的是,第一阶段开始时指定有效的备份区域为CKPT1的有效备份区域。第一阶段结束时,会在CKPT0写入一笔最新的版本号,如:版本号2,之后,版本号2为有效版本号,CKPT0是有效的。
第二阶段、利用双备份中的有效备份对需要缩小的元数据区域(如F2FS的SIT、NAT)进行重建。
对于文件系统的数据区域缩小的情况,SIT区域需要缩小,需要对第一阶段结束后稳定有效的CKPT0的有效SIT备份区域进行调整。对于文件系统的存储空间缩小的情况,需要对第一阶段结束后稳定有效的CKPT0的有效NAT备份区域进行调整。以下分别介绍SIT、NAT的重建:
(1)针对当前SIT修正调整后的SIT。
参考图8,每个实线矩形代表一个SIT块,图8中的白色SIT块以及斜线阴影填充的SIT块为第一阶段写入CKPT0后有效的SIT块,即CKPT0的有效SIT块。其中,斜线阴影填充的SIT块是SIT区域调整时需要缩小的部分,即需要舍弃斜线阴影填充的SIT块,利用CKPT0的第二备份区域——图8中横线填充的SIT块构建调整后的SIT区域。将图8中的A、B、C’、D1去除,D2是调整后的SIT区域的数据源的开头,将CKPT0的有效SIT块拷贝至CKPT0的第二备份区域。具体的数据拷贝过程可以包括:将D2拷贝至A1’,也就是说调整后的SIT区域从A1’开始。另外,将E1’拷贝至A2’,将E2’拷贝至B1’,将F1’拷贝至B2’,将F2’拷贝至C1,将G1拷贝至C2,将G2拷贝至D1’,将H1拷贝至D2’,将H2拷贝至E1,将I1’拷贝至E2,将I2’拷贝至F1,将J1’拷贝至F2,将J2’拷贝至G1’,将K1拷贝至G2’,将K2拷贝至H1’,将L1’拷贝至H2’,将L2’拷贝至I1。需要说明的是,上述数据拷贝过程仅仅作为示例,本发明实施例对构建新的SIT涉及的数据拷贝不做限制。
需要说明的是,CKPT中当前维护的SIT version_bitmap记录了第一阶段写入的有效CKPT0中,哪些SIT块是有效的。另外,第二阶段将SIT构建在了CKPT0的有效SIT块对应的无效SIT块构成的第二备份区域,因此在构建SIT结束后需对当前维护的SIT version_bitmap做翻转处理。
(2)针对当前NAT修正调整后的NAT
参考图9,一个矩形块代表一个NAT块,NAT块中存储有NID(node ID)。图9中横线填充的NAT块是当前有效的NAT块,即CKPT0的有效NAT块,白色NAT块是CKPT1的有效NAT块。可以从CKPT0中读出NID(node ID)起始地址,再根据shrink修正读出的NID起始地址,可以将NID的起始地址减少shrink。最后再将修改后的NID起始地址写入CKPT1的有效NAT块。
需要说明的是,CKPT中当前维护的NAT version_bitmap记录了第一阶段写入的有效CKPT0中,哪些NAT块是有效的。另外,第二阶段将NAT构建在了CKPT0的有效NAT块对应的无效NAT块构成的一个备份,因此在构建NAT结束后需对当前维护的NAT version_bitmap做翻转处理。
需要说明的是,第二阶段开始时指定有效的备份区域为CKPT0的有效备份区域。第二阶段结束时,会在CKPT1写入一笔较旧的版本号,如:版本号-1,之后,版本号2仍为有效版本号,CKPT0是有效的。
第三阶段、安全迁移文件系统的所有元数据区域,如F2FS的SB、CP、SIT、NAT以及SSA。
本阶段开始进行裸数据搬移,文件系统不可挂载,设计方案保证掉电后仍可继续进行。首先需要确定各个元数据区域的搬移数据,假设有i个需要搬移的元数据区域,从左到右依次记为第0个元数据区域、第1个元数据区域……第i-1个元数据区域。按照从左到右的顺序依次将i个元数据区域压入堆栈。参考图10,首先将第j个元数据区域压入堆栈,第一次循环中j=0。如果满足NEW_BLKADDR≤OLD_BLKADDR(或最后一个区域),则将第0个元数据区域弹出堆栈;如果不满足NEW_BLKADDR≤OLD_BLKADDR(或最后一个区域),则第0个元数据区域仍在堆栈中,直至有新的元数据区域压入堆栈且满足上述不等式,将堆栈中的元数据区域全部弹出,按照弹出的顺序进行搬移。进一步,还将j更新为j+1,即下一个元数据区域进行循环。
其中,当有元数据区域满足NEW_BLKADDR=OLD_BLKADDR时,可以将堆栈内的所有元数据区域弹出,但是该满足NEW_BLKADDR=OLD_BLKADDR的元数据区域不搬移。
进一步,元数据区域内的数据按照块为单位进行搬移,且块间加入适当同步操作来保证写入通过文件系统缓存、器件缓存最后可靠达到器件即可。
具体实现中,元数据区域内的数据的搬移方向指向该元数据区域调整后的起始地址,或者指向该元数据区域调整后的结束地址。参考图11,搬移数据的方向指向元数据区域调整后的结束地址,具体可以按照从右到左的顺序搬移数据,需要以delta为单位搬移7次,在内存分配允许的范围内应每次搬移量应尽量大且接近delta。如此,在掉电后可以恢复到掉电前搬移的状态。
参考图12,搬移数据的方向指向元数据区域调整后的起始地址,具体可以按照从左到右的顺序搬移数据,需要以delta为单位搬移7次,如此,在掉电后可以恢复到掉电前搬移的状态。
另外,在本阶段中对SSA区域进行搬移时,对SSA区域进行调整。F2FS中SSA只存在一份,前面阶段不适合直接进行调整,参考图13,在搬移数据过程中,仅搬移SSA区域的缩小范围外的其余数据。当然,如果需要扩展SSA区域,搬移后的SSA区域包括SSA区域扩大的范围,另外,调整后的SSA区域中SSA区域的扩大范围可以为空。
参考图14,实现中搬移的区域有CP、SIT0、SIT1、NAT、SSA这五个元数据区域。
第四阶段、利用双备份中的有效备份对需要扩大的元数据区域进行重建。
具体地,对元数据区域扩大重建可以包括以下两种可能:
(1)根据文件系统的存储空间的扩大范围修改元数据区域的内容。具体地,文件系统的存储空间的调整范围shrink修改元数据区域存储的node地址。可以从CKPT0中读出NID(node ID)起始地址,再根据shrink修正读出的NID起始地址,可以将NID的起始地址增加shrink。最后再将修改后的NID起始地址写入CKPT1对应的有效NAT块。
(2)根据文件系统的数据区域的扩大范围确定元数据区域的扩大范围,利用元数据区域的有效备份构建扩大后的元数据区域。将CKPT0对应的有效块拷贝至CKPT1对应的有效块,并且调整后的元数据区域的头部为空,调整后的元数据区域应该包括元数据区域的扩大范围。
需要说明的是,第四阶段进行开始时指定有效的备份区域是CKPT0的有效备份区域。
第四阶段结束时,保证在CKPT1写入一笔较旧的版本号,如:版本号-1,之后,版本号2仍为有效版本号,CKPT0是有效的。需要说的是,如果第二阶段结束后在CKPT1写入了一笔较旧的版本号,在第四阶段结束后就不需要在写入版本号,保证CKPT0是有效的即可。当然,如果在第二阶段结束后没有在CKPT1写入了一笔较旧的版本号,在第四阶段结束后就需要在写入一笔较旧版本号,如:版本号-1,保证写版本号之后CKPT0是有效的。
第五阶段、文件系统中无双备份的元数据修正阶段
F2FS中,部分元数据存放在文件系统的数据区域,且没有双备份,主要是dnode和inode。
在对所有元数据区域进行调整后,可以根据调整后的元数据区域更新main area中的node块。示例的,第四阶段后,SIT、NAT和SSA的更新已经就绪,因此可以根据上述SIT、NAT和SSA来修正dnode和inode中的偏移。示例的,可以通过稳定的SSA来修正dnode和inode中的偏移,可以避免由于掉电对blkaddr多次更新造成blkaddr失效的问题。参考图15,首先查找SIT中的SIT block,通过SIT block中的SIT entry确定文件系统数据区域的所有有效数据块data block。进一步,遍历每个有效的data block,找到其SSA,通过SSA找到该datablock对应的node,以及该data block在node中的偏移,将该node中的这个偏移对应的datablock地址修改为该data block的地址。参考图15,以data block A为例,data block A是通过inode来直接索引的,通过SSA找到该data block A对应的inode,以及data block A在inode中的偏移,将该inode中的这个偏移对应的data block地址修改为data block A的地址。
参考图15,以data block B为例,data block B是通过dnode来间接索引的,通过SSA找到data block B对应的dnode,以及data block B在dnode中的偏移,将该dnode中的这个偏移对应的data block地址修改为data block B的地址。idnode中存储dnode的ID,因此无需修改idnode。didnode中存储idnode的ID,因此无需修改didnode。
需要说明的是,虽然第四阶段结束后在CKPT1写入了一笔较旧的版本号,CKPT0仍有效。但是可以在第五阶段开始时指定较旧版本号的有效备份区域为当前有效备份区域,即可以指定当前有效备份区域为CKPT1的有效备份区域。另外,在第五阶段结束后,在CKPT0写入一笔较新的版本号,如:版本号4。
另外,上述第二阶段、第四阶段并不是必须要执行的。如果所有的元数据区域均需要缩小,那就不用对元数据区域进行扩大重建,无需执行第四阶段;如果所有的元数据区域均需要扩大,那就不用对元数据区域进行缩小重建,无需执行第二阶段。如果文件系统的元数据区域中既有需要缩小的元数据区域,又有需要扩大的元数据区域,那就必须执行第二阶段、第四阶段。在第二阶段对需要缩小的元数据区域进行重建,在第四阶段对需要扩大的元数据区域进行重建。
上述主要从实现流程的角度对本申请实施例提供的方案进行了介绍。可以理解的是,本发明实施例中的设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图16示出了上述实施例中涉及的设备的一种可能的组成示意图,如图16所示,该设备可以包括:处理单元1601、通信单元1602。
其中,处理单元1601,用于支持设备执行图4所示的文件系统调整方法的所有步骤。
发送单元1602,用于支持设备与其他设备之间的通信。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例提供的设备,用于执行上述发现信号的文件系统调整方法,因此可以达到与上述文件系统调整方法相同的效果。
在采用集成的单元的情况下,图17示出了上述实施例中所涉及的设备的另一种可能的组成示意图。如图17所示,该设备包括:处理模块1701和通信模块1702。
处理模块1701用于对服务器的动作进行控制管理,例如,处理模块1701用于支持设备执行图4所示的方法、和/或用于本文所描述的技术的其它过程。通信模块1702用于支持设备与其他设备之间的通信。设备还可以包括存储模块1703,用于存储服务器的程序代码和数据。
其中,处理模块1701可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1702可以是收发器、收发电路或通信接口等。存储模块1703可以是存储器。
当处理模块1701为处理器,通信模块1702为通信接口,存储模块1603为存储器时,本申请实施例所涉及的设备可以为图3所示的设备。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (24)

1.一种文件系统调整方法,其特征在于,包括:
确定所述文件系统的存储空间的调整范围,根据所述文件系统的存储空间的调整范围确定所述文件系统的数据区域的调整范围,对所述数据区域的调整范围执行数据更新操作;
利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移所述文件系统的所有元数据区域;所述文件系统的元数据区域包括所述第一元数据区域,所述第一元数据区域包括两个备份区域;
根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据,所述第二元数据为所述文件系统的数据区域中无双备份的元数据。
2.根据权利要求1所述的文件系统调整方法,其特征在于,所述对所述数据区域的调整范围执行数据更新操作包括:
若缩小所述文件系统的数据区域,则将所述数据区域的调整范围内的数据搬移至空闲的数据块;
若扩展所述文件系统的数据区域,则将所述数据区域扩展成包括所述调整范围的区域,且所述数据区域中的所述调整范围为空。
3.根据权利要求1或2所述的文件系统调整方法,其特征在于,所述确定所述文件系统的数据区域的调整范围,对所述数据区域的调整范围执行数据更新操作之后,所述方法还包括:
写入第二版本号;有效版本号由第一版本号变为所述第二版本号。
4.根据权利要求1所述的文件系统调整方法,其特征在于,所述利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移所述文件系统的所有元数据区域具体包括:
利用需要缩小的第一元数据区域的有效备份区域构建缩小后的第一元数据区域;
根据预设算法确定所述文件系统的所有元数据区域的搬移顺序,按照所述搬移顺序搬移所述文件系统的所有元数据区域;
利用需要扩大的第一元数据区域的有效备份区域构建扩大后的第一元数据区域。
5.根据权利要求4所述的文件系统调整方法,其特征在于,所述第一元数据区域包括第一备份区域和第二备份区域;所述第一备份区域是当前有效备份区域;所述利用所述第一元数据区域的有效备份区域构建调整后的第一元数据区域包括:
确定所述第一元数据区域的缩小范围,将所述第一备份区域中除所述缩小范围外的数据拷贝至所述第二备份区域;或,
确定所述第一元数据区域的扩大范围,将所述第一备份区域中的数据拷贝至所述第二备份区域,所述第二备份区域包括所述第一元数据区域的扩大范围。
6.根据权利要求4所述的文件系统调整方法,其特征在于,所述第一元数据区域包括第一备份区域和第二备份区域;所述第一备份区域是当前有效备份区域;所述利用所述第一元数据区域的有效备份区域构建调整后的第一元数据区域包括:
更新所述第一备份区域内的数据,并将更新后的数据存储在所述第二备份区域。
7.根据权利要求6所述的文件系统调整方法,其特征在于,所述更新所述第一备份区域内的数据具体包括:
从所述第一备份区域读出所述元数据区域的地址,根据所述文件系统的调整范围更新读出的所述第二元数据的地址。
8.根据权利要求3所述的文件系统调整方法,其特征在于,所述利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移所述文件系统的所有元数据区域之后,所述方法还包括:
写入第三版本号;有效版本号不变,为所述第二版本号。
9.根据权利要求1所述的文件系统调整方法,其特征在于,所述搬移所述文件系统的所有元数据区域包括:
在搬移所述第一元数据区域时,确定所述第一元数据区域的缩小范围,仅搬移所述第一元数据区域中所述缩小范围之外的其他数据;
或,确定所述第一元数据区域的扩大范围,搬移调整后的所述第一元数据区域,或,搬移调整后的所述第一元数据区域并清除所述第一元数据区域的扩大范围内的数据;所述调整后的所述第一元数据区域包括所述第一元数据区域的扩大范围。
10.根据权利要求1或4所述的文件系统调整方法,其特征在于,所述方法还包括:
搬移一个元数据区域时,以块为单位沿预设方向依次搬移该元数据区域内的数据;所述预设方向指向所述元数据区域调整后的开始地址或所述元数据区域调整后的结束地址。
11.根据权利要求1所述的文件系统调整方法,其特征在于,所述根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据,包括:
遍历所述文件系统中的每一个有效数据块,查找所述文件系统调整后的元数据区域获得所述有效数据块对应的第二元数据以及所述有效数据块在所述第二元数据中的偏移,将所述第二元数据中所述偏移对应的数据块地址更新为所述有效数据块的地址。
12.根据权利要求1或11所述的文件系统调整方法,其特征在于,所述根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据之后,所述方法还包括:
写入第四版本号,所述第四版本号为有效版本号。
13.一种设备,其特征在于,包括:
处理单元,用于确定文件系统的存储空间的调整范围,根据所述文件系统的存储空间的调整范围确定所述文件系统的数据区域的调整范围,对所述数据区域的调整范围执行数据更新操作;
所述处理单元还用于,利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移所述文件系统的所有元数据区域;所述文件系统的元数据区域包括所述第一元数据区域,所述第一元数据区域包括两个备份区域;
所述处理单元还用于,根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据,所述第二元数据为所述文件系统的数据区域中无双备份的元数据。
14.根据权利要求13所述的设备,其特征在于,所述处理单元具体用于,
若缩小所述文件系统的数据区域,则将所述数据区域的调整范围内的数据搬移至空闲的数据块;
若扩展所述文件系统的数据区域,则将所述数据区域扩展成包括所述调整范围的区域,且所述数据区域中的所述调整范围为空。
15.根据权利要求13或14所述的设备,其特征在于,所述处理单元还用于,确定所述文件系统的数据区域的调整范围,对所述数据区域的调整范围执行数据更新操作之后,写入第二版本号;有效版本号由第一版本号变为所述第二版本号。
16.根据权利要求13所述的设备,其特征在于,所述处理单元具体用于,利用需要缩小的第一元数据区域的有效备份区域构建缩小后的第一元数据区域;根据预设算法确定所述文件系统的所有元数据区域的搬移顺序,按照所述搬移顺序搬移所述文件系统的所有元数据区域;利用需要扩大的第一元数据区域的有效备份区域构建扩大后的第一元数据区域。
17.根据权利要求16所述的设备,其特征在于,所述第一元数据区域包括第一备份区域和第二备份区域;所述第一备份区域是当前有效备份区域;所述处理单元具体用于,确定所述第一元数据区域的缩小范围,将所述第一备份区域中除所述缩小范围外的数据拷贝至所述第二备份区域;或,
确定所述第一元数据区域的扩大范围,将所述第一备份区域中的数据拷贝至所述第二备份区域,所述第二备份区域包括所述第一元数据区域的扩大范围。
18.根据权利要求16所述的设备,其特征在于,所述第一元数据区域包括第一备份区域和第二备份区域;所述第一备份区域是当前有效备份区域;所述利用所述第一元数据区域的有效备份区域构建调整后的第一元数据区域包括:
更新所述第一备份区域内的数据,并将更新后的数据存储在所述第二备份区域。
19.根据权利要求18所述的设备,其特征在于,所述处理单元具体用于,从所述第一备份区域读出所述元数据区域的地址,根据所述文件系统的调整范围更新读出的所述第二元数据的地址。
20.根据权利要求15所述的设备,其特征在于,所述处理单元还用于,利用每一个第一元数据区域的有效备份区域构建调整后的第一元数据区域并搬移所述文件系统的所有元数据区域之后,写入第三版本号;有效版本号不变,为所述第二版本号。
21.根据权利要求13或16所述的设备,其特征在于,所述处理单元具体用于,在搬移所述第一元数据区域时,确定所述第一元数据区域的缩小范围,仅搬移所述第一元数据区域中所述缩小范围之外的其他数据;
或,确定所述第一元数据区域的扩大范围,搬移调整后的所述第一元数据区域,或,搬移调整后的所述第一元数据区域并清除所述第一元数据区域的扩大范围内的数据;所述调整后的所述第一元数据区域包括所述第一元数据区域的扩大范围。
22.根据权利要求21所述的设备,其特征在于,所述处理单元还用于,搬移一个元数据区域时,以块为单位沿预设方向依次搬移该元数据区域内的数据;所述预设方向指向所述元数据区域调整后的开始地址或所述元数据区域调整后的结束地址。
23.根据权利要求13所述的设备,其特征在于,所述处理单元具体用于,遍历所述文件系统中的每一个有效数据块,查找所述文件系统调整后的元数据区域获得所述有效数据块对应的第二元数据以及所述有效数据块在所述第二元数据中的偏移,将所述第二元数据中所述偏移对应的数据块地址更新为所述有效数据块的地址。
24.根据权利要求13或23所述的设备,其特征在于,所述处理单元还用于,根据所述文件系统调整后的元数据区域更新所述文件系统的数据区域中的第二元数据之后,写入第四版本号,所述第四版本号为有效版本号。
CN201880085585.8A 2018-07-06 2018-07-06 一种文件系统调整方法及设备 Active CN111566622B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/094924 WO2020006771A1 (zh) 2018-07-06 2018-07-06 一种文件系统调整方法及设备

Publications (2)

Publication Number Publication Date
CN111566622A CN111566622A (zh) 2020-08-21
CN111566622B true CN111566622B (zh) 2023-11-10

Family

ID=69060560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880085585.8A Active CN111566622B (zh) 2018-07-06 2018-07-06 一种文件系统调整方法及设备

Country Status (2)

Country Link
CN (1) CN111566622B (zh)
WO (1) WO2020006771A1 (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103282899A (zh) * 2011-12-23 2013-09-04 华为技术有限公司 文件系统中数据的存储方法、访问方法及装置
CN103544254A (zh) * 2013-10-15 2014-01-29 华为技术有限公司 一种数据管理方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868882B2 (en) * 2011-06-08 2014-10-21 Microsoft Corporation Storage architecture for backup application
US20130205071A1 (en) * 2012-02-08 2013-08-08 Altior Inc. Compressed cache storage acceleration
JP6129416B2 (ja) * 2013-07-02 2017-05-17 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited ファイル・システムの仮想化のための方法および装置、ファイル・システムの仮想化のためのデータ・ストレージ・システム、ならびにデータ・ストレージ・システム内で使用するためのファイル・サーバ
KR102033323B1 (ko) * 2014-03-05 2019-10-17 한국전자통신연구원 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법
US9053124B1 (en) * 2014-09-30 2015-06-09 Code 42 Software, Inc. System for a distributed file system element collection
CN107526546B (zh) * 2017-08-25 2020-09-11 深圳大学 一种Spark分布式计算数据处理方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103282899A (zh) * 2011-12-23 2013-09-04 华为技术有限公司 文件系统中数据的存储方法、访问方法及装置
CN103544254A (zh) * 2013-10-15 2014-01-29 华为技术有限公司 一种数据管理方法及装置

Also Published As

Publication number Publication date
WO2020006771A1 (zh) 2020-01-09
CN111566622A (zh) 2020-08-21

Similar Documents

Publication Publication Date Title
US20200320036A1 (en) Data unit cloning in memory-based file systems
US9235524B1 (en) System and method for improving cache performance
US9239761B2 (en) Storage system format for transaction safe file system
US20180267856A1 (en) Distributed storage system, data storage method, and software program
US10430285B2 (en) Backing up metadata
EP3376394B1 (en) Method and device for processing access request, and computer system
JP2007133471A (ja) ストレージ装置及びスナップショットのリストア方法
JP2000099282A (ja) ファイル管理システム
US20110055297A1 (en) Access module, information recording module, controller, and information recording system
JP2016535380A (ja) 順方向専用にページ化されたデータストレージ管理
US10628298B1 (en) Resumable garbage collection
JP5201133B2 (ja) 二重化システム、システム制御方法およびシステム制御プログラム
JP6653370B2 (ja) ストレージシステム
CN113590596A (zh) 数据处理方法、系统、设备、计算机程序产品及存储介质
US9053033B1 (en) System and method for cache content sharing
CN111566622B (zh) 一种文件系统调整方法及设备
CN111597066A (zh) Ssd修复方法、装置、计算机设备及存储介质
KR20140121013A (ko) 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치
EP3293635B1 (en) Electronic device and method of controlling the same
JP2002288014A (ja) ファイル管理システム及びファイルデータ書込方法
CN114077517A (zh) 数据处理的方法、设备及系统
WO2024001643A1 (zh) 后备存储设备、元数据管理方法、装置、存储介质
JP6627541B2 (ja) ボリューム管理装置、ボリューム管理方法およびボリューム管理プログラム
JP5488681B2 (ja) 二重化システム、制御方法および制御プログラム
JPH0973372A (ja) 記憶制御方法及び記憶制御装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant