1.本说明书涉及数据存储
技术领域:
:,尤其涉及一种元数据管理方法、装置、电子设备及可读存储介质。
背景技术:
::2.smr(shingledmagneticrecording,叠瓦式磁记录)磁盘,是一种采用新型磁存储技术的高容量磁盘。smr磁盘在制造工艺方面的变动非常微小,并且保持了现有磁头和介质技术不变,通过将盘片上的数据磁道部分重叠,类似于屋顶上的瓦片一样重叠在一起,解决了传统磁盘存在的磁道浪费以及磁道间隙的问题,实现了更高的存储面密度、更大的磁盘容量以及更低的单位容量价格。因此,在数据量飞速增长的当今世界,smr技术可以有效降低单位容量的磁盘存储成本,是未来高密度磁盘存储技术的发展潮流。3.然而,虽然smr盘的读行为和传统磁盘相同,但由于smr盘上新写入的磁道会覆盖与之重叠的所有磁道,从而摧毁与之重叠的磁道的数据,这就导致smr盘不再支持随机写,只能进行顺序追加写,这种写入方式的限制给使用smr盘的存储系统带来了巨大的挑战。技术实现要素:4.有鉴于此,本说明书一个或多个实施例提供一种元数据管理方法、装置、电子设备及可读存储介质,以解决相关技术中存在的问题。5.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:根据本说明书实施例的第一方面,提供一种元数据管理方法,应用于smr叠瓦式磁记录磁盘;其中,所述磁盘包括随机写入单元和顺序写入单元,所述顺序写入单元包括元数据写入子单元和用户数据写入子单元;所述方法包括:响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;其中,所述用户数据日志记录了所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据;根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。6.根据本说明书实施例的第二方面,提供一种元数据管理装置,应用于smr叠瓦式磁记录磁盘;其中,所述磁盘包括随机写入单元和顺序写入单元,所述顺序写入单元包括元数据写入子单元和用户数据写入子单元;所述装置包括:扫描模块,用于响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;其中,所述用户数据日志包括所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据;恢复模块,用于根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。7.根据本说明书实施例的第三方面,提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述方法。8.根据本说明书实施例的第四方面,提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。9.本说明书的实施例提供的技术方案可以包括以下有益效果:通过以上技术方案,一方面,通过在顺序写入单元划分元数据写入子单元,可以利用顺序写入单元数量众多以及位置可变的特点,避免元数据写入子单元在位置固定时一旦出现故障很容易导致整个系统不可用的问题;另一方面,通过将用户数据写入子单元的元数据写入至用户数据日志,并将用户数据日志存储于元数据写入子单元,可以在磁盘重启时通过扫描元数据写入子单元实现对用户数据写入子单元的恢复,无需再对用户数据写入子单元进行逐一扫描,提高了恢复速度。同时,通过记录用户数据对应的元数据,可以减少用户数据更新时带来的写操作,降低对磁盘性能的占用。附图说明10.图1是一示例性实施例提供的一种元数据管理方法的流程图;图2是一示例性实施例提供的又一种元数据管理方法的流程图;图3是一示例性实施例提供的又一种元数据管理方法的流程图;图4是一示例性实施例提供的又一种元数据管理方法的流程图;图5是一示例性实施例提供的一种元数据管理装置所在电子设备的结构示意图;图6是一示例性实施例提供的一种元数据管理装置的框图。具体实施方式11.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。12.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。13.大数据时代的数据量呈指数级增长,机械硬盘作为一种经济高效的存储介质,在当今的存储数字世界中依然起着不可或缺的作用。硬盘驱动器的存储面密度(每单位面积存储的位数)受到物理定律的限制,目前硬盘使用的垂直磁记录(perpendicularmagneticrecording,pmr)技术即将达到其存储密度极限。业界迫切希望引入新的技术来克服限制,继续稳步提升容量。14.叠瓦式磁记录(shingledmagneticrecording,smr)技术应运而生,作为领先的下一代磁盘技术,它通过将磁道像屋顶上的瓦片那样重叠在一起来实现其存储面密度的增长,同时保持现有磁头和介质技术不变,因此应用了smr技术的smr磁盘在制造工艺方面的变动非常微小。15.虽然通过将相邻的磁道像瓦片一样重叠在一起,可以实现更高的存储面密度、更大的磁盘容量以及更低的单位容量价格,但smr磁盘在进行数据写入时,将会覆盖重叠的磁道,从而摧毁与之重叠的磁道的数据,这就导致smr盘不再支持随机写入,只能通过顺序写入。而由于读磁头的宽度小于写磁头的宽度,因此有足够的空间给较窄的读磁头从磁道的未重叠部分进行数据读取,smr磁盘依旧可以支持随机读取。16.需要说明的是,smr磁盘将磁道划分为若干个带(band),band是smr磁盘上的物理概念,其对应的逻辑概念是区域(zone),即划分为由连续磁道所构成的可连续写入区域,并且每个区域构成一个需要顺序写入的基本单元(sequentialzone),在本说明书中称为顺序写入单元,简称szone。17.进一步的,为了解决不能随机写入的问题,硬盘厂商会在smr磁盘上划分出一小部分区域(通常不超过1%),通过采用传统硬盘非重叠的磁道组织方式,牺牲了部分存储密度以换取在这些区域内随机写入的能力,这些区域被称为“传统区”(conventionalzone),在本说明书中称为随机写入单元,简称czone。18.上述对smr磁盘区域的划分,是从物理上根据写入特点进行的划分,通常在生产制造smr磁盘时,就由硬盘厂商进行了划分,并在每个zone之间出留出较大的间隔来标识各个zone的起始位置。19.目前,用户在使用smr磁盘时,通过磁盘的管理系统可以将磁盘从逻辑上根据用途的不同划分为元数据写入子单元(metazone)和用户数据写入子单元(datazone)。其中,元数据写入子单元可以用于写入系统的元数据,而用户数据写入子单元可以用于写入用户数据。20.在相关技术中,为了便于元数据的写入操作,元数据写入子单元被划分在随机写入单元中,并且位置固定不变。然而,随机写入单元和顺序写入单元的个数相差巨大,比如smr磁盘中有800个随机写入单元,但有8w个顺序写入单元,这就导致当随机写入单元出现故障时,极可能影响到元数据写入子单元,从而导致整个smr磁盘系统都不可用。21.值得说明的是,磁盘的iops(input/outputoperationspersecond,每秒进行读/写操作的次数)是衡量磁盘性能的主要指标之一,而smr磁盘作为机械硬盘的一种,iops能力更是决定了smr磁盘的性能瓶颈,因此,应当尽量减少元数据写入对iops的占用,提高smr磁盘对外的服务能力。22.有鉴于此,本说明书提供一种通过在顺序写入单元划分元数据写入子单元,并在元数据写入子单元中存储用户数据写入子单元对应的元数据,以及用户数据写入子单元存储的用户数据对应的元数据,从而在磁盘重启时通过扫描元数据写入子单元实现对用户数据写入子单元的恢复的技术方案。23.在实现时,可以响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;在一个例子中,可以通过对元数据写入子单元进行两轮扫描,以确定元数据写入子单元存储的用户数据日志;在第一轮扫描时可以扫描元数据写入子单元存储的与元数据写入子单元的属性信息;然后,根据属性信息对所有元数据写入子单元进行排序,以确定对元数据写入子单元执行第二轮扫描的先后顺序;接着可以根据先后顺序对元数据写入子单元执行第二轮扫描,最终确定元数据写入子单元存储的用户数据日志。24.其中,所述用户数据日志记录了所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据。25.在一个例子中,用户数据对应的元数据包括所述用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系。26.然后,可以根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。27.例如,可以根据所述用户数据日志中的所述用户数据写入子单元对应的元数据,对所述用户数据写入子单元的元数据进行恢复;以及,可以根据所述用户数据日志中的用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系,对所述用户数据写入子单元的用户数据进行恢复。28.通过以上技术方案,一方面,通过在顺序写入单元划分元数据写入子单元,可以利用顺序写入单元数量众多以及位置可变的特点,避免元数据写入子单元在位置固定时一旦出现故障很容易导致整个系统不可用的问题;另一方面,通过将用户数据写入子单元的元数据写入至用户数据日志,并将用户数据日志存储于元数据写入子单元,可以在磁盘重启时通过扫描元数据写入子单元实现对用户数据写入子单元的恢复,无需再对用户数据写入子单元进行逐一扫描,提高了恢复速度。同时,通过记录用户数据对应的元数据,可以减少用户数据更新时带来的写操作,降低对磁盘性能的占用。29.下面结合附图对本说明书的元数据管理方法进行详细说明。30.请参见图1,图1为本说明书一示例性实施例提供的一种元数据管理方法的流程图,所述方法应用于smr叠瓦式磁记录磁盘。如图1所示,所述方法包括如下的执行步骤:步骤101,响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;其中,所述用户数据日志记录了所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据;步骤102,根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。31.需要说明的是,上述磁盘包括随机写入单元和顺序写入单元,所述顺序写入单元包括元数据写入子单元和用户数据写入子单元。32.例如,可以在smr磁盘中划分出800个随机写入单元和8w个顺序写入单元,并且可以根据自定义的元数据写入子单元的个数,在顺序写入单元中划分出相应个数的元数据写入子单元,而剩余的为用户数据写入子单元。33.在示出的一种实施方式中,可以响应于格式化指令,对所述磁盘进行格式化,根据所述格式化指令在所述随机写入单元存储了mbr主引导记录信息;以及,根据所述mbr主引导记录信息中记录的所述元数据写入子单元的个数,对所述顺序写入单元进行划分,以确定所述元数据写入子单元和用户数据写入子单元。34.上述mbr(masterbootrecord,主引导记录)主引导记录信息,也被称为主引导扇区,是访问硬盘时所必须要读取的第一个扇区。主引导扇区记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息。如果它受到破坏,硬盘上的基本数据结构信息将会丢失,需要用繁琐的方式试探性地重建数据结构信息后,才可能重新访问原先的数据。35.在一个例子中,当用户第一次使用磁盘时,可以通过格式化指令下发记录了元数据写入子单元的个数mbr主引导记录信息,由磁盘响应于格式化指令,将mbr主引导记录信息存储在随机写入单元中,并根据mbr主引导记录信息中记录的元数据写入子单元的个数,对顺序写入单元进行划分,从而确定元数据写入子单元和用户数据写入子单元。36.可以理解的是,根据上述mbr主引导记录信息中记录的信息,可以确定磁盘中有哪些元数据写入子单元,从而可以对这些元数据写入子单元进行扫描。37.在示出的一种实施方式中,所述随机写入单元存储了mbr主引导记录信息;进一步的,可以将所述mbr主引导记录信息中记录的所述元数据写入子单元,确定为待扫描的元数据写入子单元。38.在一个例子中,随机写入单元中存储了mbr主引导记录信息,通过读取mbr主引导记录信息中的元数据写入子单元列表,可以确定出已使用的元数据写入子单元和已划分但未使用的元数据写入子单元,并将已使用的元数据写入子单元确定为待扫描的元数据写入子单元。39.如果上述预先划分的元数据写入子单元的个数不足时,也可以通过指令扩充元数据写入子单元的个数。40.在示出的一种实施方式中,可以响应于所述元数据写入子单元的数量变更指令,更新所述mbr主引导记录信息中记录的所述元数据写入子单元的个数,重新对所述元数据写入子单元和所述用户数据写入子单元的边界进行划分。41.在一个例子中,可以通过发送元数据写入子单元的数量变更指令,根据变更的元数据写入子单元的个数,移动元数据写入子单元和用户数据写入子单元的边界,从而重新划分出新的数量的元数据写入子单元,剩余空间为用户数据写入子单元,并对mbr主引导记录信息进行更新。42.在本实施例中,可以响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志。43.例如,当磁盘断电后重新上电时,磁盘接受到重启指令,通过扫描元数据写入子单元确定元数据写入子单元存储的用户数据日志。44.需要说明的是,在对元数据写入子单元进行扫描时,由于是对整个元数据写入子单元进行了扫描,也就实现了对元数据写入子单元的恢复。虽然用户数据写入子单元也可以通过对整个区域进行扫描的方式进行恢复,但由于用户数据写入子单元不仅个数非常多,而且存储了大量用户数据,如果对每个用户数据写入子单元都进行扫描,将会导致磁盘启动耗时非常久。45.因此,在本实施例中,可以通过将用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据,记录在用户数据日志中,并将所述用户数据日志存储于元数据写入子单元中,从而在对元数据写入子单元进行扫描时,不仅可以恢复元数据写入子单元,还可以确定出元数据写入子单元存储的用户数据日志,以用于后续对用户数据写入子单元的恢复。46.在示出的一种实施方式中,为了提高对元数据写入子单元进行扫描的效率,可以采用图2描述的扫描方式进行。请参见图2,图2为本说明书一示例性实施例提供的又一种元数据管理方法的流程图。如图2所示,所述方法包括如下的执行步骤:步骤201,可以对所有所述元数据写入子单元执行第一轮扫描,以确定所述元数据写入子单元存储的与所述元数据写入子单元对应的元数据;其中,所述元数据包括所述元数据写入子单元的属性信息;步骤202,根据所述属性信息对所述所有元数据写入子单元进行排序,以确定对所述元数据写入子单元执行第二轮扫描的先后顺序;步骤203,根据所述先后顺序对所述元数据写入子单元执行第二轮扫描,以确定所述元数据写入子单元存储的用户数据日志。47.元数据是指描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。而上述元数据写入子单元对应的元数据,可以是元数据写入子单元的属性信息,例如,元数据写入子单元的创建时间、元数据写入子单元的序列号、元数据写入子单元的的热度、元数据写入子单元的流信息等。48.举例来说,上述元数据写入子单元对应的元数据,可以存储在元数据写入子单元的头部,在第一轮扫描时,直接通过对元数据写入子单元的头部进行扫描就可以确定出各个元数据写入子单元对应的元数据。49.然后,可以根据元数据写入子单元的创建时间对所有元数据写入子单元进行排序,创建时间早的元数据写入子单元排在后面扫描,创建时间晚的元数据写入子单元排在前面扫描,而创建时间的早晚也就等于元数据写入子单元中记录的用户数据日志的早晚,为了获得最新的用户数据日志,可以按照时间顺序进行排序,确定对元数据写入子单元执行第二轮扫描的先后顺序。50.在示出的一种实施方式中,上述属性信息包括所述元数据写入子单元被打开的时刻,或所述元数据写入子单元被打开时所分配的序列号。51.上述元数据写入子单元的创建时间,也就是元数据写入子单元被打开的时刻,而元数据写入子单元被打开时会分配一个序列号,这个序列号随着时间推移单调递增,因此,也可以根据元数据写入子单元被打开时所分配的序列号进行排序。52.需要说明的是,之所以要去确定用户数据日志,是因为对于日志来说,需要以最新的记录为准,早期的日志可能是无效的,比如日志中先记录了对文件的移动操作,再记录了对文件的删除操作,那么该文件应该是已经被删除了,日志中记录的关于文件的移动操作对于恢复是没有帮助的。53.继续举例,可以根据上述步骤202中确定出的先后顺序,对元数据写入子单元执行第二轮扫描,从而不仅可以确定出元数据写入子单元存储的用户数据日志,还可以确定用户数据日志的先后顺序。54.在本实施例中,根据上述步骤101确定出的所述用户数据日志,可以对所述用户数据写入子单元进行恢复。55.例如,可以根据用户数据日志记录的所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据,对所述用户数据写入子单元进行恢复。56.在示出的一种实施方式中,所述用户数据对应的元数据包括所述用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系;进一步的,可以根据所述用户数据日志中的所述用户数据写入子单元对应的元数据,对所述用户数据写入子单元的元数据进行恢复;以及,根据所述用户数据日志中的用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系,对所述用户数据写入子单元的用户数据进行恢复。57.例如,在对用户数据写入子单元进行恢复时,对于用户数据写入子单元的元数据,可以根据用户数据日志中记录的用户数据写入子单元对应的元数据进行恢复;而对于用户数据写入子单元的用户数据,则可以根据用户数据日志中的用户数据对应的逻辑地址与磁盘的物理地址的映射关系进行恢复。58.上述逻辑地址与所述磁盘的物理地址的映射关系,是指用户数据写入子单元的逻辑数据到磁盘的具体物理位置的映射关系,例如,datazone05对应第3磁道第5扇区。59.值得说明的是,在云存储中可以通过csim(chunksegmentindexmanager)管理上述映射关系,由于云存储记录引擎通常以区块(chunk)为单位进行数据存储,而一个区块在逻辑上可以分成多个连续的区块段,并且区块段可以覆盖所包含记录的键空间的连续范围,对于每个区块段,云存储记录引擎可以为该区块段的键范围内的所有记录维护记录级的存储器内索引,这样的每段索引被称为区块段索引映射(csim)。60.在一个例子中,可以根据csim中记录的映射关系表,确定用户数据的物理地址,从而对用户数据写入子单元的用户数据进行恢复。61.在示出的一种实施方式中,所述用户数据日志中还记录了针对所述用户数据写入子单元的操作信息;进一步的,可以根据所述用户数据日志中记录的针对所述用户数据写入子单元的操作信息,对所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据执行相应的操作。62.在一个例子中,用户数据日志中可以记录针对某个用户数据写入子单元的删除操作的信息,在获取到该删除操作的信息之后,对这个用户数据写入子单元执行相应的操作,删除用户数据写入子单元存储的元数据,以及所述用户数据写入子单元存储的用户数据。63.上述操作信息也可以是针对用户数据写入子单元或具体某个文件的创建或删除操作,本说明书中对此不做限定。64.在示出的一种实施方式中,响应于对所述用户数据写入子单元进行恢复失败,可以通过对所述用户数据写入子单元存储的所有数据进行扫描,恢复所述用户数据写入子单元。65.在一个例子中,如果用户数据日志损坏,或者用户数据写入子单元找不到对应的用户数据日志,导致恢复失败,则可以通过扫描该用户数据写入子单元上存储的所有数据,来实现对用户数据写入子单元的恢复。66.在示出的一种实施方式中,可以定期将所述用户数据日志打包为检查点表,并删除所述被打包的用户数据日志;其中,所述检查点表存储于所述元数据写入子单元中。67.上述检查点表(checkpointtable)是定期对用户数据日志打包后生成的,因此也包含了用户数据日志中记录的用户数据写入子单元对应的元数据,以及用户数据写入子单元存储的用户数据对应的元数据。68.在上述过程中,通过预先设置固定的周期,将用户数据日志打包为检查点表,并将被打包的用户数据日志进行删除,从而释放一定的磁盘空间,并且还可以避免持续对用户数据日志进行写入,降低了对磁盘的性能消耗。69.举例来说,当metazone03存储满了用户数据日志之后,将启用下一个元数据写入子单元用于存储后续的用户数据日志,即metazone04。而当metazone03中的用户数据日志被定期打包为检查点表时,可以将检查点表存储于metazone04或其他指定的metazone中,并删除metazone03中的用户数据日志,同时重置metazone03以供重新使用。同样的,对于没有存储用户数据的datazone,也可以进行定期重置。70.由于将用户数据日志定位打包为检查点表,因此可以通过扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的所述检查点表和所述用户数据日志;并且,可以通过根据确定出的所述检查点表和所述用户数据日志,对所述用户数据写入子单元进行恢复。71.在示出的一种实施方式中,当元数据写入子单元还存储了检查点表时,可以采用如图3所示的方法。请参见图3,图3为本说明书一示例性实施例提供的又一种元数据管理方法的流程图。如图3所示,所述方法包括如下的执行步骤:步骤301:扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的所述检查点表和所述用户数据日志;步骤302:根据确定出的所述检查点表和所述用户数据日志,对所述用户数据写入子单元进行恢复。72.举例来说,可以通过扫描元数据写入子单元,确定元数据写入子单元存储的最新的检查点表和最新的用户数据日志;然后,根据最新的的检查点表和最新的用户数据日志,对用户数据写入子单元进行恢复。73.在示出的一种实施方式中,在执行上述步骤301时可以对元数据写入子单元进行两次扫描,以确定元数据写入子单元存储的检查点表和用户数据日志。请参见图4,图4为本说明书一示例性实施例提供的又一种元数据管理方法的流程图。如图4所示,所述方法包括如下的执行步骤:步骤401,对所有所述元数据写入子单元执行第一轮扫描,以确定所述元数据写入子单元存储的与所述元数据写入子单元对应的元数据;其中,所述元数据包括所述元数据写入子单元的属性信息;步骤402,根据所述属性信息对所述所有元数据写入子单元进行排序,以确定对所述元数据写入子单元执行第二轮扫描的先后顺序;步骤403,根据所述先后顺序对所述元数据写入子单元执行第二轮扫描,扫描所述元数据写入子单元中存储的所述检查点表和所述用户数据日志;步骤404,响应于所述元数据写入子单元中存储了所述检查点表,判断所述检查点表是否可用;步骤405,如果是,将所述检查点表确定为所述有效检查点表,并将所述有效检查点表的生成时刻之后的用户数据日志确定为有效用户数据日志。74.举例来说,可以先对所有元数据写入子单元执行第一轮扫描,以确定元数据写入子单元存储的与元数据写入子单元的属性信息。75.其中,关于上述属性信息可以参见之前的描述,在此不做赘述。76.然后,可以属性信息中的元数据写入子单元被打开的时刻,对所有元数据写入子单元进行排序,以确定对元数据写入子单元执行第二轮扫描的先后顺序。77.接着,可以根据确定出的先后顺序,对元数据写入子单元执行第二轮扫描,从而确定出元数据写入子单元中存储的检查点表和用户数据日志。78.需要说明的是,为了确保检查点表可以用于恢复用户数据写入子单元,可以对检查点表进行判断,确定检查点表是否可以被读取。79.如果上述检查点表可以被读取,则可以将检查点表确定为有效检查点表,而根据前述可知,检查点表创建之前的用户数据日志已经被定期打包为检查点表,而检查点表创建之后的用户数据日志尚未被打包,因此,可以将有效检查点表的生成时刻之后的用户数据日志确定为有效用户数据日志。80.进一步的,可以根据确定出的有效检查点表和有效用户数据日志,对用户数据写入子单元进行恢复。81.需要说明的是,为了防止检查点表出现无法读取等不可用的情况,可以保留至少两个检查点表以保证数据的可靠性,并且可以在检查点表和用户数据日志中,保存上一个检查点表的位置信息。82.在示出的一种实施方式中,可以响应于所述元数据写入子单元中未存储所述检查点表,获取所述元数据写入子单元中存储的所述用户数据日志中记录的所述前一个检查点表的位置信息;或者,如果所述检查点表不是有效检查点表,获取所述检查点表中记录的前一个检查点表的位置信息;其中,所述前一个检查点表的位置信息包括所述前一个检查点表所在的所述元数据写入子单元的第一位置,以及所述前一个检查点表在所述元数据写入子单元中的第二位置;进一步的,可以根据所述第一位置确定所述前一个检查点表所在的所述元数据写入子单元,并根据所述第二位置确定所述元数据写入子单元中的所述前一个检查点表。83.在一个例子中,假设metazone04中存储了检查点表,而metazone05存储了用户数据日志,那么在先对metazone05进行扫描时,由于仅扫描到用户数据日志,并未扫描到检查点表,则可以获取metazone05存储的用户数据日志中记录的前一个检查点表的位置信息。84.在另一个例子中,假设在对元数据写入子单元进行扫描时,扫描到了检查点表,但该检查点表在读取时报错,那么则可以判断该检查点表不是有效检查点表,此时可以获取检查点表中记录的前一个检查点表的位置信息。85.需要说明的是,上述前一个检查点表的位置信息可以包括前一个检查点表所在的元数据写入子单元的第一位置,以及前一个检查点表在元数据写入子单元中的第二位置。86.在一个例子中,可以先根据第一位置确定前一个检查点表所在的元数据写入子单元,而元数据写入子单元存储了很多数据,因此可以根据第二位置,也就是前一个检查点表在元数据写入子单元中的位置,找出前一个检查点表。87.通过以上技术方案,一方面,通过在顺序写入单元划分元数据写入子单元,可以利用顺序写入单元数量众多以及位置可变的特点,避免元数据写入子单元在位置固定时一旦出现故障很容易导致整个系统不可用的问题;另一方面,通过将用户数据写入子单元的元数据写入至用户数据日志,并将用户数据日志存储于元数据写入子单元,可以在磁盘重启时通过扫描元数据写入子单元实现对用户数据写入子单元的恢复,无需再对用户数据写入子单元进行逐一扫描,提高了恢复速度。同时,通过记录用户数据对应的元数据,可以减少用户数据更新时带来的写操作,降低对磁盘性能的占用。88.在本说明书的示例性实施例中,还提供了一种能够实现上述方法的设备。89.图5是一示例性实施例提供的一种设备的示意结构图。请参考图3,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存509中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。90.请参考图6,在一软件实施方式中,提供了一种元数据管理装置600,应用于smr叠瓦式磁记录磁盘;其中,所述磁盘包括随机写入单元和顺序写入单元,所述顺序写入单元包括元数据写入子单元和用户数据写入子单元;所述装置包括:扫描模块601,用于响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;其中,所述用户数据日志包括所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据;恢复模块602,用于根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。91.可选的,所述随机写入单元存储了mbr主引导记录信息;进一步的,所述装置还包括:确定模块603(图中未示出),用于将所述mbr主引导记录信息中记录的所述元数据写入子单元,确定为待扫描的元数据写入子单元。92.可选的,所述扫描模块601,进一步:对所有所述元数据写入子单元执行第一轮扫描,以确定所述元数据写入子单元存储的与所述元数据写入子单元对应的元数据;其中,所述元数据包括所述元数据写入子单元的属性信息;根据所述属性信息对所述所有元数据写入子单元进行排序,以确定对所述元数据写入子单元执行第二轮扫描的先后顺序;根据所述先后顺序对所述元数据写入子单元执行第二轮扫描,以确定所述元数据写入子单元存储的用户数据日志。93.可选的,所述属性信息包括所述元数据写入子单元被打开的时刻,或所述元数据写入子单元被打开时所分配的序列号。94.可选的,所述装置还包括:打包模块604(图中未示出),用于定期将所述用户数据日志打包为检查点表,并删除所述被打包的用户数据日志;其中,所述检查点表存储于所述元数据写入子单元中。95.可选的,所述扫描模块601,进一步:扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的所述检查点表和所述用户数据日志;根据确定出的所述检查点表和所述用户数据日志,对所述用户数据写入子单元进行恢复。96.可选的,所述扫描模块601,进一步:对所有所述元数据写入子单元执行第一轮扫描,以确定所述元数据写入子单元存储的与所述元数据写入子单元对应的元数据;其中,所述元数据包括所述元数据写入子单元的属性信息;根据所述属性信息对所述所有元数据写入子单元进行排序,以确定对所述元数据写入子单元执行第二轮扫描的先后顺序;根据所述先后顺序对所述元数据写入子单元执行第二轮扫描,扫描所述元数据写入子单元中存储的所述检查点表和所述用户数据日志;响应于所述元数据写入子单元中存储了所述检查点表,判断所述检查点表是否可用;如果是,将所述检查点表确定为所述有效检查点表,并将所述有效检查点表的生成时刻之后的用户数据日志确定为有效用户数据日志。97.可选的,所述装置还包括:第一判断模块605(图中未示出),用于响应于所述元数据写入子单元中未存储所述检查点表,获取所述元数据写入子单元中存储的所述用户数据日志中记录的所述前一个检查点表的位置信息;或者,第二判断模块606(图中未示出),用于如果所述检查点表不是有效检查点表,获取所述检查点表中记录的前一个检查点表的位置信息;其中,所述前一个检查点表的位置信息包括所述前一个检查点表所在的所述元数据写入子单元的第一位置,以及所述前一个检查点表在所述元数据写入子单元中的第二位置;查找模块607(图中未示出),用于根据所述第一位置确定所述前一个检查点表所在的所述元数据写入子单元,并根据所述第二位置确定所述元数据写入子单元中的所述前一个检查点表。98.可选的,所述用户数据对应的元数据包括所述用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系;进一步的,所述恢复模块602,进一步:根据所述用户数据日志中的所述用户数据写入子单元对应的元数据,对所述用户数据写入子单元的元数据进行恢复;根据所述用户数据日志中的用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系,对所述用户数据写入子单元的用户数据进行恢复。99.可选的,所述用户数据日志中还记录了针对所述用户数据写入子单元的操作信息;所述恢复模块602,进一步:根据所述用户数据日志中记录的针对所述用户数据写入子单元的操作信息,对所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据执行相应的操作。100.可选的,所述装置还包括:扫描子模块608(图中未示出),用于响应于对所述用户数据写入子单元进行恢复失败,通过对所述用户数据写入子单元存储的所有数据进行扫描,恢复所述用户数据写入子单元。101.可选的,所述装置还包括:格式化模块609(图中未示出),用于响应于格式化指令,对所述磁盘进行格式化,根据所述格式化指令在所述随机写入单元存储了mbr主引导记录信息;划分模块610(图中未示出),用于根据所述mbr主引导记录信息中记录的所述元数据写入子单元的个数,对所述顺序写入单元进行划分,以确定所述元数据写入子单元和用户数据写入子单元。102.可选的,所述装置还包括:变更模块611(图中未示出),用于响应于所述元数据写入子单元的数量变更指令,更新所述mbr主引导记录信息中记录的所述元数据写入子单元的个数,重新对所述元数据写入子单元和所述用户数据写入子单元的边界进行划分。103.上述装置600中各个模块的功能和作用的实现过程具体详见上述元数据管理方法中对应步骤的实现过程,相关之处参见方法实施方式的部分说明即可,在此不再赘述。104.以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。105.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。106.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。107.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。108.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。109.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。110.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。111.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。112.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。113.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。当前第1页12当前第1页12
技术特征:1.一种元数据管理方法,应用于smr叠瓦式磁记录磁盘;其中,所述磁盘包括随机写入单元和顺序写入单元,所述顺序写入单元包括元数据写入子单元和用户数据写入子单元;所述方法包括:响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;其中,所述用户数据日志记录了所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据;根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。2.根据权利要求1所述的方法,所述随机写入单元存储了mbr主引导记录信息;在扫描所述元数据写入子单元之前,所述方法还包括:将所述mbr主引导记录信息中记录的所述元数据写入子单元,确定为待扫描的元数据写入子单元。3.根据权利要求1所述的方法,所述扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志,包括:对所有所述元数据写入子单元执行第一轮扫描,以确定所述元数据写入子单元存储的与所述元数据写入子单元对应的元数据;其中,所述元数据包括所述元数据写入子单元的属性信息;根据所述属性信息对所述所有元数据写入子单元进行排序,以确定对所述元数据写入子单元执行第二轮扫描的先后顺序;根据所述先后顺序对所述元数据写入子单元执行第二轮扫描,以确定所述元数据写入子单元存储的用户数据日志。4.根据权利要求3所述的方法,所述属性信息包括所述元数据写入子单元被打开的时刻,或所述元数据写入子单元被打开时所分配的序列号。5.根据权利要求1所述的方法,所述方法还包括:定期将所述用户数据日志打包为检查点表,并删除所述被打包的用户数据日志;其中,所述检查点表存储于所述元数据写入子单元中。6.根据权利要求5所述的方法,所述扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志,包括:扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的所述检查点表和所述用户数据日志;所述根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复,包括:根据确定出的所述检查点表和所述用户数据日志,对所述用户数据写入子单元进行恢复。7.根据权利要求6所述的方法,所述扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的所述检查点表和所述用户数据日志,包括:对所有所述元数据写入子单元执行第一轮扫描,以确定所述元数据写入子单元存储的与所述元数据写入子单元对应的元数据;其中,所述元数据包括所述元数据写入子单元的属性信息;根据所述属性信息对所述所有元数据写入子单元进行排序,以确定对所述元数据写入子单元执行第二轮扫描的先后顺序;
根据所述先后顺序对所述元数据写入子单元执行第二轮扫描,扫描所述元数据写入子单元中存储的所述检查点表和所述用户数据日志;响应于所述元数据写入子单元中存储了所述检查点表,判断所述检查点表是否可用;如果是,将所述检查点表确定为所述有效检查点表,并将所述有效检查点表的生成时刻之后的用户数据日志确定为有效用户数据日志。8.根据权利要求7所述的方法,所述方法还包括:响应于所述元数据写入子单元中未存储所述检查点表,获取所述元数据写入子单元中存储的所述用户数据日志中记录的所述前一个检查点表的位置信息;或者,如果所述检查点表不是有效检查点表,获取所述检查点表中记录的前一个检查点表的位置信息;其中,所述前一个检查点表的位置信息包括所述前一个检查点表所在的所述元数据写入子单元的第一位置,以及所述前一个检查点表在所述元数据写入子单元中的第二位置;根据所述第一位置确定所述前一个检查点表所在的所述元数据写入子单元,并根据所述第二位置确定所述元数据写入子单元中的所述前一个检查点表。9.根据权利要求1所述的方法,所述用户数据对应的元数据包括所述用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系;所述根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复,包括:根据所述用户数据日志中的所述用户数据写入子单元对应的元数据,对所述用户数据写入子单元的元数据进行恢复;根据所述用户数据日志中的用户数据对应的逻辑地址与所述磁盘的物理地址的映射关系,对所述用户数据写入子单元的用户数据进行恢复。10.根据权利要求1所述的方法,所述用户数据日志中还记录了针对所述用户数据写入子单元的操作信息;所述根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复,包括:根据所述用户数据日志中记录的针对所述用户数据写入子单元的操作信息,对所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据执行相应的操作。11.根据权利要求1所述的方法,所述方法还包括:响应于对所述用户数据写入子单元进行恢复失败,通过对所述用户数据写入子单元存储的所有数据进行扫描,恢复所述用户数据写入子单元。12.根据权利要求1所述的方法,所述方法还包括:响应于格式化指令,对所述磁盘进行格式化,根据所述格式化指令在所述随机写入单元存储了mbr主引导记录信息;根据所述mbr主引导记录信息中记录的所述元数据写入子单元的个数,对所述顺序写入单元进行划分,以确定所述元数据写入子单元和用户数据写入子单元。13.根据权利要求2所述的方法,所述方法还包括:响应于所述元数据写入子单元的数量变更指令,更新所述mbr主引导记录信息中记录的所述元数据写入子单元的个数,重新对所述元数据写入子单元和所述用户数据写入子单元的边界进行划分。
14.一种元数据管理装置,应用于smr叠瓦式磁记录磁盘;其中,所述磁盘包括随机写入单元和顺序写入单元,所述顺序写入单元包括元数据写入子单元和用户数据写入子单元;所述装置包括:扫描模块,用于响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;其中,所述用户数据日志包括所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据;恢复模块,用于根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。
技术总结本说明书实施例提供一种元数据管理方法,应用于SMR叠瓦式磁记录磁盘;其中,所述磁盘包括随机写入单元和顺序写入单元,所述顺序写入单元包括元数据写入子单元和用户数据写入子单元;所述方法包括:响应于所述磁盘重启指令,扫描所述元数据写入子单元,以确定所述元数据写入子单元存储的用户数据日志;其中,所述用户数据日志记录了所述用户数据写入子单元对应的元数据,以及所述用户数据写入子单元存储的用户数据对应的元数据;根据确定出的所述用户数据日志,对所述用户数据写入子单元进行恢复。通过以上技术方案,可以解决固定元数据写入子单元的位置导致的故障,提高磁盘重启的恢复速度,以及减少用户数据更新时写操作的开销。销。销。
技术研发人员:吴昊 吴忠杰
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2022.05.27
技术公布日:2022/7/5