掌桥专利:专业的专利平台
掌桥专利
首页

卷格式化方法、装置、计算机设备和存储介质

文献发布时间:2024-04-18 19:58:26


卷格式化方法、装置、计算机设备和存储介质

技术领域

本申请涉及计算机技术领域,特别是涉及一种卷格式化方法、装置、计算机设备和存储介质。

背景技术

在进行数据备份时,为了在备份前清除卷的文件系统结构,以及将其标记为可用于存储数据的状态,需要对卷进行格式化。在相关技术中,卷的格式化操作是由归属于输入输出组的一个节点来执行的,当卷的容量较大时,格式化耗时会很长。

发明内容

本申请针对上述不足或缺点,提供了一种卷格式化方法、装置、计算机设备和存储介质,本申请实施例能够缩短卷的格式化耗时。

本申请根据第一方面提供了一种卷格式化方法,在一些实施例中,该方法包括:

将待格式化的卷配置为无归属卷;无归属卷分为容量相同的多个段,每个段均由容量相同的多个粒度构成,上述多个段均分给归属于输入输出组的多个域;上述多个域是对输入输出组的多个节点配置得到的,各域包括拥有者节点;

为输入输出组的各节点分配用于卷格式化的位图;位图包括容量相同的多个页,每一页包括多个比特,每一比特对应一粒度;每一比特的值用于表示该比特对应的粒度是否已格式化;

经由各域的拥有者节点执行第一处理逻辑,第一处理逻辑包括:以上述多个段中的归属于本域的所有段作为目标段,根据目标段确定本节点的位图中的目标比特空间,以及根据目标比特空间对目标段中的粒度进行格式化处理。

在一些实施例中,为输入输出组的各节点分配用于卷格式化的位图之前,上述方法还包括:

根据上述多个段的数量、段的容量、粒度的容量、页的容量确定位图的容量。

在一些实施例中,根据目标比特空间对目标段进行格式化处理,包括:

确定目标比特空间中的所有目标比特;目标比特是对应的值表示对应的粒度未格式化的比特;

对每个目标比特对应的粒度进行格式化;

在对任一目标比特对应的粒度格式化之后,将该任一目标比特的值修改为表示对应的粒度已格式化的值。

在一些实施例中,第一处理逻辑还包括:

根据所有目标比特的数量创建表示本域的未格式化粒度的数量的第一数量;

在对任一目标比特对应的粒度格式化之后,更新第一数量的值;

根据更新后的第一数量和预先创建的表示本域包括的粒度总数量的第二数量计算表示本域的格式化进度的域进度信息。

在一些实施例中,上述方法还包括:

获取预先创建的表示无归属卷包括的粒度总数量的第三数量;

获取每个域当前的域进度信息、第二数量;

根据第三数量和每个域当前的域进度信息、第二数量计算表示无归属卷的格式化进度的卷进度信息;

呈现卷进度信息。

在一些实施例中,各域还包括用于在本域的拥有者节点出现故障时接替该拥有者节点执行第一处理逻辑的备份节点;任一域中的拥有者节点和备份节点分别配置于输入输出组的不同节点上;第一处理逻辑还包括:在修改完一个或多个目标比特的值之后,将该一个或多个目标比特的标识和值携带于特定消息中发送至本域的备份节点;

相应地,上述方法还包括:经由各域的备份节点执行第二处理逻辑;

第二处理逻辑包括:响应于接收到本域的拥有者节点发送的特定消息,从该特定消息中提取比特标识和对应的比特值,将本节点的位图中与比特标识对应的比特的值替换为上述比特值,以及响应于本域的拥有者节点出现故障,将本节点的角色切换为拥有者节点,根据本节点当前的位图执行第一处理逻辑。

在一些实施例中,上述方法还包括:

获取输入输出组中出现故障的节点的数量;

若出现故障的节点的数量超过预设阈值,将输入输出组剩余的节点配置为多个新的域;

经由各新的域中的拥有者节点执行第一处理逻辑;

在各域新的中还包括备份节点时,经由各域中的备份节点执行第二处理逻辑。

本申请根据第二方面提供了一种卷格式化装置,在一些实施例中,该装置包括:

卷配置模块,用于将待格式化的卷配置为无归属卷;无归属卷分为容量相同的多个段,每个段均由容量相同的多个粒度构成,上述多个段均分给归属于输入输出组的多个域;上述多个域是对输入输出组的多个节点配置得到的,各域包括拥有者节点;

位图分配模块,用于为输入输出组的各节点分配用于卷格式化的位图;位图包括容量相同的多个页,每一页包括多个比特,每一比特对应一粒度;每一比特的值用于表示该比特对应的粒度是否已格式化;

格式化模块,用于经由各域的拥有者节点执行第一处理逻辑,第一处理逻辑包括:以上述多个段中的归属于本域的所有段作为目标段,根据目标段确定本节点的位图中的目标比特空间,以及根据目标比特空间对目标段中的粒度进行格式化处理。

本申请根据第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一实施例中提供的卷格式化方法的步骤。

本申请根据第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中提供的卷格式化方法的步骤。

在本申请的上述实施例中,将待格式化的卷配置为无归属卷,使得该卷的各个段均分给对输入输出组的多个节点配置得到的多个域,之后为输入输出组的各节点分配用于卷格式化的位图,并经由各域中的拥有者节点执行能实现格式化操作的第一处理逻辑,相比相关技术中只能用输入输出组的一个节点来执行卷的格式化操作的方式,本申请实施例可以利用输入输出组的多个节点来同时执行格式化操作,从而实现缩短卷的格式化耗时的目的。

附图说明

图1为本申请根据一个或多个实施例提供的一种卷格式化方法的流程示意图;

图2为本申请根据一个或多个实施例提供的计算域进度信息的流程示意图;

图3为本申请根据一个或多个实施例提供的计算卷进度信息的流程示意图;

图4为本申请在一些示例中卷中的各个段与输入输出组的各个域间的归属关系示意图;

图5为本申请在一些示例中提供的各域对应的目标比特空间的示意图;

图6为本申请在另一些示例中提供的各域对应的目标比特空间的示意图;

图7为本申请根据一个或多个实施例提供的一种卷格式化装置的结构框图;

图8为本申请根据一个或多个实施例提供的计算机设备的内部结构图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

为了解决相关技术在对卷执行格式化操作时所存在的耗时长的问题,本申请提供了一种卷格式化方法,在一些实施例中,该方法包括如图1所示的步骤,下面对该方法进行详细说明。

S110:将待格式化的卷配置为无归属卷;无归属卷分为容量相同的多个段,每个段均由容量相同的多个粒度构成,上述多个段均分给归属于输入输出组的多个域;上述多个域是对输入输出组的多个节点配置得到的,各域包括拥有者节点。

卷是指硬盘上的存储区域。驱动器使用诸如FAT(File Allocation Table,文件配置表)、NTFS(New Technology File System,NT文件系统)等文件系统来格式化卷,并给它指派一个驱动器号。示例性地,在windows(视窗)操作系统中,单击“Windows资源管理器”或“计算机”中相应的图标可以查看驱动器的内容。通常,一个硬盘包括好多卷,一个卷也可以跨越许多磁盘。一个卷由容量相同的多个段构成,每个段又由容量相同的多个粒度构成。上述的段,英文名称是segment,在存储数据备份功能中,指的是由多个连续的逻辑块地址(logical Block address,LBA)组成的存储空间,段的大小可以根据实际情况来设定,例如可以设定为32MB、64MB、128MB等等,此外,可以预先根据段对应的地址的大小来为段分配对应的标识,如编号。上述的粒度,英文名称是grain,在存储数据备份功能中,指由多个连续的逻辑块地址组成的可管理的最小粒度,粒度的大小也可根据实际情况来设定,例如可以设定为32KB、64KB、128KB、256KB等单位。

输入输出组,英文名称是IOGROUP,在数据备份功能中,输入输出组用于指示一组备份操作或任务,这些操作或任务可以并行执行以提高效率。每个输入输出组通常包含一个或多个输入输出操作,可以同时进行读取或写入数据。通过将备份操作划分为多个输入输出组,可以实现更好的并行处理和优化输入输出性能。

一个输入输出组由多个节点组成,在相关技术中,卷只归属于输入输出组中的其中一个节点(该节点可称为该卷的归属节点),针对该卷的IO(IN/OUT)处理,只能由该卷的归属节点来进行处理。而在本申请中,将卷配置为无归属卷,即卷不是归属于输入输出组的某一个节点,而是将卷的各个段均分给归属于输入输出组的各个域(可称为domain)。归属于输入输出组的各个域是对输入输出组的多个节点(可以是输入输出组的全部节点或部分节点)进行配置而得到的,该配置方式有多种,以下提供几种作为示例。

在一种实施方式中,各域中只有一种节点,即拥有者节点(或可称为Owner节点),拥有者节点用于处理域中的事务及IO处理,在进行卷格式化操作时,由各域中的拥有者节点发起对归属于本域的各个粒度进行格式化处理。各域中的拥有者节点的数量可以是一个或多个,具体可根据实际情况来配置拥有者节点的数量。本实施方式的配置方式是将输入输出组的各节点分别配置到一个或多个域中作为拥有者节点。在一个示例中,如果输入输出组的节点的数量和需要配置的域的数量相同,则可以将输入输出组的各个节点分别配置为各个域的拥有者节点,例如输入输出组有2个节点,即Node_0、Node_1,需要配置2个域,即Domain_0、Domain_1,则在配置时可以将Node_0、Node_1分别配置到Domain_0、Domain_1中作为拥有者节点。在另一示例中,如果输入输出组的节点的数量少于需要配置的域的数量,则可以将输入输出组的部分节点配置为多个域的拥有者节点,例如,假如上述示例中需要配置的域不是2个而是4个,即Domain_0、Domain_1、Domain_2、Domain_3,则可以将Node_0配置为Domain_0和Domain_1中的拥有者节点,将Node_1配置为Domain_2和Domain_3中的拥有者节点,可理解地,此时Node_0和Node_1均会并行地执行两个域对应的格式化操作。

在一种实施方式中,各域中有两种节点,即上述的拥有者节点和备份节点(可称为Backup节点),备份节点用于在本域的拥有者节点出现故障时,接替该拥有者节点来执行对应的格式化操作。本实施方式的配置方式是将输入输出组的各节点分别配置到一个或多个域中作为拥有者节点或备份节点。在一个示例中,如果输入输出组的节点的数量不小于需要配置的域的两倍数量,则可以将输入输出组的各个节点配置为各个域的拥有者节点或备份节点,即在本示例中,任一输入输出组的节点只作为某个域的拥有者节点或备份节点,例如,假设输入输出组有4个节点,即Node_0、Node_1、Node_2、Node_3,如果需要配置2个域,即Domain_0、Domain_1,则在配置时可以将Node_0、Node_1分别配置为Domain_0、Domain_1的拥有者节点,将Node_2、Node_3分别配置为Domain_0、Domain_1的备份节点。在另一示例中,如果输入输出组的节点的数量小于需要配置的域的两倍数量,则需要将输入输出组的至少部分节点同时配置为一个或多个域的拥有者节点和备份节点,即在本示例中,某一或多个输入输出组的节点会同时拥有者节点和备份节点,且该拥有者节点和备份节点不属于同一个域,例如,假设上述示例中需要配置的域的数量是4个,即Domain_0、Domain_1、Domain_2、Domain_3,则在配置时可以将Node_0、Node_1、Node_2、Node_3分别配置为Domain_0、Domain_1、Domain_2、Domain_3的拥有者节点,以及将Node_0、Node_1、Node_2、Node_3分别配置为Domain_3、Domain_0、Domain_1、Domain_2的备份节点,在本示例中,输入输出组的任一节点即是一个域的拥有者节点,又是另一个域的备份节点。

S120:为输入输出组的各节点分配用于卷格式化的位图;位图包括容量相同的多个页,每一页包括多个比特,每一比特对应一粒度;每一比特的值用于表示该比特对应的粒度是否已格式化。

在分配位图时,需要为输入输出组的各个节点分配全量的位图,即该位图能表示卷的所有粒度(即grain)的格式化情况。上述的位图是指bitmap,该位图具体是由多个比特组成,每个比特的值只能是0或是1,各个比特会对应卷中的一个粒度,且各个比特的值用于表示该比特对应的粒度是否已格式化。其中,如果表示对应的粒度已格式化的值设为0(或可设为1),需要相应地将表示对应的粒度未格式化的值设为1(需相应地设为0)。为方便管理,本实施例以页来作为位图的管理单位,上述的页的英文名称是page,页的大小可以根据实际情况来设定,例如可以设定为4KB、8KB等等,本实施例不做特别限制。

在一些实施例中,为输入输出组的各节点分配用于卷格式化的位图之前,上述方法还包括:根据上述多个段的数量、段的容量、粒度的容量、页的容量确定位图的容量。

以下通过一个示例来说明位图的容量的确定方式。在该示例中,假设每个粒度的容量为256KB,每个段的容量为32MB,每个页(即page)的容量为4KB(能表示256个段的格式化情况),如果待格式化的卷包括n个段,则可以确定位图的容量,即:

位图所包含的页的数量=((n-1)/4/256+1)*4

S130:经由各域的拥有者节点执行第一处理逻辑,第一处理逻辑包括:以上述多个段中的归属于本域的所有段作为目标段,根据目标段确定本节点的位图中的目标比特空间,以及根据目标比特空间对目标段中的粒度进行格式化处理。

在本实施例中,通过各域的拥有者节点共同执行第一处理逻辑来实现对整个卷执行格式化操作。

在将卷配置为无归属卷时,已将卷中的所有段均分为各个域,因而在第一处理逻辑中,各域的拥有者节点只需对目标段,即分给本节点的段中的粒度进行格式化处理。各拥有者节点对各粒度进行格式化处理之前或处理过程中,通过位图中与该粒度对应的比特的值来判断该粒度是否已格式化。从上述的关于步骤S120的介绍可知,各节点分配到的位图是全量的,即记录了卷中所有粒度的格式化情况,因此各拥有者节点在进行格式化操作时,只需要用到位图中与目标段对应的比特空间(即目标比特空间)。

各域的拥有者节点根据目标比特空间对目标段进行格式化处理的操作,可以包括:确定目标比特空间中的所有目标比特;对每个目标比特对应的粒度进行格式化;在对任一目标比特对应的粒度格式化之后,将该任一目标比特的值修改为表示对应的粒度已格式化的值。

上述的目标比特是对应的值表示对应的粒度未格式化的比特,例如,假设1表示已格式化,0表示未格式化,假如某个比特的值是0,那么该比特即为目标比特,在对该比特对应的粒度格式化之后,即将该比特的值修改为1。

在上述实施例中,本申请提供的方法通过将待格式化的卷配置为无归属卷,使得该卷的各个段均分给对输入输出组的多个节点配置得到的多个域,之后为输入输出组的各节点分配用于卷格式化的位图,并经由各域中的拥有者节点执行能实现格式化操作的第一处理逻辑,相比相关技术中只能用输入输出组的一个节点来执行卷的格式化操作的方式,该方法通过利用输入输出组的多个节点来同时执行格式化操作,实现卷格式化时的输入输出组中各个节点的负载均衡,从而明显缩短整个卷的格式化耗时。

在一些实施例中,如图2所示,第一处理逻辑还包括:

S210:根据所有目标比特的数量创建表示本域的未格式化粒度的数量的第一数量;

S220:在对任一目标比特对应的粒度格式化之后,更新第一数量的值;

S230:根据更新后的第一数量和预先创建的表示本域包括的粒度总数量的第二数量计算表示本域的格式化进度的域进度信息。

域进度信息有多种计算方式。示例性地,上述的域进度信息=(100*(第二数量-第一数量))/第二数量

在本实施例中,各域的拥有者节点能分别计算本节点的格式化进度。可理解的,随着格式化操作的不断进行,上述的第一数量和域进度信息会一直得到更新,直至目标段中的所有粒度都已格式化,此时第一数量为0,域进度信息为100。

在一些实施例中,如图3所示,上述方法还包括:

S310:获取预先创建的表示无归属卷包括的粒度总数量的第三数量;

S320:获取每个域当前的域进度信息、第二数量;

S330:根据第三数量和每个域当前的域进度信息、第二数量计算表示无归属卷的格式化进度的卷进度信息;

S340:呈现卷进度信息。

卷进度信息有多种计算方式。示例性地,上述的卷进度信息的计算方式可以是计算各域的域进度信息和第二数量的乘积,然后求和所有的乘积,最后将求和得到的值除以第三数量得到卷进度信息。

本实施例能基于各域的拥有者节点计算出的域进度信息来计算出整个卷的格式化进度,即卷进度信息。可理解的,随着各域的拥有者节点的格式化操作的不断进行,上述的各域的域进度信息和卷进度信息会一直得到更新,直至整个卷中的所有粒度都已格式化,此时各域的域进度信息为100,卷进度信息为100。

上述的实施例适用于各域中只有拥有者节点或同时有拥有者节点和备份节点的情况。

本申请还提供了另一些实施例中,在该实施例中,各域中同时有拥有者节点和备份节点。在该实施例中,第一处理逻辑还包括:在修改完一个或多个目标比特的值之后,将该一个或多个目标比特的标识和值携带于特定消息中发送至本域的备份节点。

相应地,上述方法还包括:经由各域的备份节点执行第二处理逻辑。其中,第二处理逻辑包括:响应于接收到本域的拥有者节点发送的特定消息,从该特定消息中提取比特标识和对应的比特值,将本节点的位图中与比特标识对应的比特的值替换为上述比特值。

进一步地,第二处理逻辑还包括:响应于本域的拥有者节点出现故障,将本节点的角色切换为拥有者节点,根据本节点当前的位图执行第一处理逻辑。

在该实施例中,各域都设有备份节点,各域的拥有者节点会在位图发生变化时,将相关的变化信息(如修改过值的目标比特的标识和值)同步给备份节点,从而当本域的拥有者节点出现故障时,备份节点可以及时切换为本域拥有者节点,并执行第一处理逻辑,以继续进行格式化操作,从而提高了本方法的可靠性。在又一些实施例中,上述方法还包括:

获取输入输出组中出现故障的节点的数量;

若出现故障的节点的数量超过预设阈值,将输入输出组剩余的节点配置为多个新的域;

经由各新的域中的拥有者节点执行第一处理逻辑;

在各新的域中还包括备份节点时,经由各域中的备份节点执行第二处理逻辑。

在本实施例中,当输入输出组的出现故障的节点太多(即故障节点的数量超过预设阈值,该预设阈值可根据实际情况设定)时,自动将剩余的节点配置为多个域,在各域中只有拥有者节点的情况下,各个新的域中的拥有者节点会继续执行第一处理逻辑,而在各域中有拥有者节点和备份节点的情况下,各个新的域中的拥有者节点和备份节点仍会继续执行第一处理逻辑和第二处理逻辑,保证卷的格式化操作能继续进行。由于上述实施例已对第一处理逻辑和第二处理逻辑做了详细说明,因而本实施例不对其进行赘述。还需要说明的是,重新配置得到的域的数量可以和之前配置得到的域的数量相同或不同。

为便于理解第一处理逻辑,下面通过一些示例来对其进行详细说明。

在本示例中,输入输出组有4个节点,即Node0、Node1、Node2、Node3,该4个节点被配置为4个域,即domain0、domain1、domain2、domain3,各个域中的节点的组成如下:

domain0:Node0(拥有者节点)、Node1(备份节点);

domain1:Node1(拥有者节点)、Node2(备份节点);

domain2:Node2(拥有者节点)、Node3(备份节点);

domain3:Node3(拥有者节点)、Node0(备份节点)。

在本示例中,待格式化的卷的卷容量被拆分为16个段,每个段的容量大小为32MB,并按照地址从小到大将这些段分别编号为s1至s16,这些段均分给上述的4个域,上述的16个段和4个域之间的归属关系可参见图4所示,即s1、s5、s9、s13归属于domain0,s2、s6、s10、s14归属于domain1,s3、s7、s11、s15归属于domain2,s4、s8、s12、s16归属于domain3。

在本示例中,输入输出组的各个节点均分配一位图,每个位图都可以分为4部分,每一部分对应一个域,本示例采用的页的容量为4KB,各部分和域的对应关系可参见图5所示,即对应于domain0的段,按逻辑块地址从小到大对应整个位图的0–1/4的空间;对应于domain1的段,按逻辑块地址从小到大对应整个位图的1/4–1/2的空间;对应于domain2的段,按逻辑块地址从小到大对应整个位图的1/2–3/4的空间;对应于domain3的段,按逻辑块地址从小到大对应整个位图的3/4–1的空间。一般地,对应于每个域的位图的容量为该位图的管理单位的容量的整数倍,而整个卷所需分配的位图的容量为该位图的管理单位的容量和域的数量的乘积的整数倍,假设页的容量为4KB,则对应于每个域的位图的容量为4KB的整数倍,而整个卷所需分配的位图的容量为16KB的整数倍。

进一步地,对卷进行格式化时,需要进行位图扫描,根据位图中对应的比特位的值来确定该比特对应的粒度是否已格式化。需要说明的是,在本示例中,输入输出组的每个节点都分配了一全量的位图,尽管各个节点既是一个域的拥有者节点,又是另一域的备份节点,但是各个节点在执行第一处理逻辑或第二处理逻辑时所操作的位图都是本节点分配到的位图,而不是其他节点分配到的位图,例如,Node0既是domain0的拥有者节点,又是domain3的备份节点,Node0作为domain0的拥有者节点执行相应的第一处理逻辑时所操作的位图,和其作为domain3的备份节点执行相应的第二处理逻辑时所操作的位图一样,都是Node0分配到的位图。

各域的拥有者节点基于目标比特空间进行格式化操作的过程是类似的,具体过程可参见如下示例:

在本示例中,假设在各节点的位图中,各域对应的目标比特空间如图6所示,即domain0、domain1、domain2、domain3对应的目标比特空间分别是p1至p4、p5至p8、p9至p12、p13至p16;

对归属于domain0的目标段中的粒度进行格式化时,domain0的归属节点Node0会执行domain0的拥有者节点对应的处理逻辑,具体是:进行位图扫描,即扫描p1、p2、p3、p4(p是page的缩写,p1表示位图中的第一个页,同理p2表示位图中的第二个页),并统计其中未格式化的比特的数目作为domain0的DomainStaleGrainCount[0](即domain0的第一数量);然后根据扫描到的比特与粒度的对应关系,将各个目标比特对应的粒度进行格式化;在格式化完成后修改domain0对应的DomainStaleGrainCount[0](具体是对其进行-1操作),同时还需修改相关目标比特的值,使其修改后的值表示对应的粒度已格式化;修改完该目标比特的值之后将该比特的修改情况通过消息发送到domain0的备份节点(Node1)上,Node1会执行domain0的备份节点对应的处理逻辑,即对Node1分配到的位图中的与该比特对应的值修改为表示对应的粒度已格式化。

对归属于domain1的目标段中的粒度进行格式化时,domain1的归属节点Node1会执行domain1的拥有者节点对应的处理逻辑,具体是:进行位图扫描,即扫描p5、p6、p7、p8,并统计其中未格式化的比特的数目作为domain1的DomainStaleGrainCount[1](即domain1的第一数量);然后根据扫描到的比特与粒度的对应关系,将各个目标比特对应的粒度进行格式化;在格式化完成后修改domain1对应的DomainStaleGrainCount[1](具体是对其进行-1操作),同时还需修改相关目标比特的值,使其修改后的值表示对应的粒度已格式化;修改完该目标比特的值之后将该比特的修改情况通过消息发送到domain1的备份节点(Node2)上,Node2会执行domain1的备份节点对应的处理逻辑,即对Node2分配到的位图中的与该比特对应的值修改为表示对应的粒度已格式化。

对归属于domain2的目标段中的粒度进行格式化时,domain2的归属节点Node2会执行domain1的拥有者节点对应的处理逻辑,具体是:进行位图扫描,即扫描p9、p10、p11、p12,并统计其中未格式化的比特的数目作为domain2的DomainStaleGrainCount[2](即domain2的第一数量);然后根据扫描到的比特与粒度的对应关系,将各个目标比特对应的粒度进行格式化;在格式化完成后修改domain2对应的DomainStaleGrainCount[2](具体是对其进行-1操作),同时还需修改相关目标比特的值,使其修改后的值表示对应的粒度已格式化;修改完该目标比特的值之后将该比特的修改情况通过消息发送到domain2的备份节点(Node3)上,Node3会执行domain2的备份节点对应的处理逻辑,即对Node3分配到的位图中的与该比特对应的值修改为表示对应的粒度已格式化。

对归属于domain3的目标段中的粒度进行格式化时,domain3的归属节点Node3会执行domain3的拥有者节点对应的处理逻辑,具体是:进行位图扫描,即扫描p13、p14、p15、p16,并统计其中未格式化的比特的数目作为domain3的DomainStaleGrainCount[3](即domain3的第一数量);然后根据扫描到的比特与粒度的对应关系,将各个目标比特对应的粒度进行格式化;在格式化完成后修改domain3对应的DomainStaleGrainCount[3](具体是对其进行-1操作),同时还需修改相关目标比特的值,使其修改后的值表示对应的粒度已格式化;修改完该目标比特的值之后将该比特的修改情况通过消息发送到domain3的备份节点(Node0)上,Node0会执行domain3的备份节点对应的处理逻辑,即对Node0分配到的位图中的与该比特对应的值修改为表示对应的粒度已格式化。

进一步地,关于卷的格式化进度的管理,本示例提供的操作过程如下:

根据卷的容量大小,记录每个域的第一数量,即拥有的未格式化的粒度的数量,如DomainStaleGrainCount[0]至DomainStaleGrainCount[3],并记录整个卷的未格式化的粒度的数量为TotalStaleGrainCount,其中,TotalStaleGrainCount的值是DomainStaleGrainCount[0]至DomainStaleGrainCount[3]的总和,可理解的,随着卷的格式化操作的不断进行,这几个计数的值是不断变化的。

创建卷的时候记录每个域拥有的粒度的总数量为DomainGrainCount[0]至DomainGrainCount[3],以及记录卷的粒度的总数量为TotalGrainCount。TotalGrainCount的值是DomainGrainCount[0]至DomainGrainCount[3]的总和。可理解地,这几个计数是固定不变的。

在卷创建后且未开始格式化时,DomainStaleGrainCount[0]至DomainStaleGrainCount[3]与DomainGrainCount[0]至DomainGrainCount[3]的值分别相等,而TotalStaleGrainCount与TotalGrainCount相等。

当卷开始格式化之后,随着格式化操作的不断进行,DomainStaleGrainCount[0]至DomainStaleGrainCount[3]的值会逐渐减少,直到最后减为0,即表示相关域的格式化操作已经完成,TotalStaleGrainCount也会逐渐减少,当所有的域都格式化完成后,TotalStaleGrainCount也会减为0。

各个域的格式化进度会进行单独计算,各域的格式化进度可记为DomainPercent[0]至DomainPercent[3],取值范围都为0-100。各域的格式化进度可采用以下公式来计算:

DomainPercent=(100*((DomainGrainCount–DomainStaleGrainCount)))/DomainGrainCount

当任一域的DomainPercent为100时,相应的DomainStaleGrainCount也会减为0,表示该域的目标段中的所有粒度都已经格式化完成。

整个卷的格式化进度可记为Percent,取值范围是0-100;可采用以下公式来计算得到:

Percent=((DomainPercent[0]*DomainGrainCount[0])+(DomainPercent[1]*DomainGrainCount[1])+(DomainPercent[2]*DomainGrainCount[2])+(Domai nPercent[3]*DomainGrainCount[3]))/TotalGrainCount

在计算出Percent后,可将其对外呈现,以便用户了解到卷的格式化进度。

需要说明的是,关于上述任何一个实施例中提供的卷格式化方法所包括的各个步骤,除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,这些步骤中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

基于相同的发明构思,本申请还提供了一种卷格式化装置。在一些实施例中,如图7所示,该卷格式化装置包括以下模块:

卷配置模块110,用于将待格式化的卷配置为无归属卷;无归属卷分为容量相同的多个段,每个段均由容量相同的多个粒度构成,上述多个段均分给归属于输入输出组的多个域;上述多个域是对输入输出组的多个节点配置得到的,各域包括拥有者节点;

位图分配模块120,用于为输入输出组的各节点分配用于卷格式化的位图;位图包括容量相同的多个页,每一页包括多个比特,每一比特对应一粒度;每一比特的值用于表示该比特对应的粒度是否已格式化;

格式化模块130,用于经由各域的拥有者节点执行第一处理逻辑,第一处理逻辑包括:以上述多个段中的归属于本域的所有段作为目标段,根据目标段确定本节点的位图中的目标比特空间,以及根据目标比特空间对目标段中的粒度进行格式化处理。

在一些实施例中,位图分配模块120为输入输出组的各节点分配用于卷格式化的位图之前,还用于根据上述多个段的数量、段的容量、粒度的容量、页的容量确定位图的容量。

在一些实施例中,第一处理逻辑中的根据目标比特空间对目标段进行格式化处理的操作,具体包括:

确定目标比特空间中的所有目标比特;目标比特是对应的值表示对应的粒度未格式化的比特;

对每个目标比特对应的粒度进行格式化;

在对任一目标比特对应的粒度格式化之后,将该任一目标比特的值修改为表示对应的粒度已格式化的值。

在一些实施例中,第一处理逻辑还包括:

根据所有目标比特的数量创建表示本域的未格式化粒度的数量的第一数量;

在对任一目标比特对应的粒度格式化之后,更新第一数量的值;

根据更新后的第一数量和预先创建的表示本域包括的粒度总数量的第二数量计算表示本域的格式化进度的域进度信息。

在一些实施例中,上述装置还包括卷进度呈现模块(图中未示出)。

卷进度呈现模块,用于:

获取预先创建的表示无归属卷包括的粒度总数量的第三数量;

获取每个域当前的域进度信息、第二数量;

根据第三数量和每个域当前的域进度信息、第二数量计算表示无归属卷的格式化进度的卷进度信息;

呈现卷进度信息。

在一些实施例中,各域还包括备份节点;相应地,第一处理逻辑还包括:在修改完一个或多个目标比特的值之后,将该一个或多个目标比特的标识和值携带于特定消息中发送至本域的备份节点;

相应地,上述格式化模块130还用于:经由各域的备份节点执行第二处理逻辑;第二处理逻辑包括:响应于接收到本域的拥有者节点发送的特定消息,从该特定消息中提取比特标识和对应的比特值,将本节点的位图中与比特标识对应的比特的值替换为上述比特值,以及响应于本域的拥有者节点出现故障,将本节点的角色切换为拥有者节点,根据本节点当前的位图执行第一处理逻辑。

在一些实施例中,上述装置还包括:

故障节点数量获取模块(图中未示出),用于获取输入输出组中出现故障的节点的数量;

节点配置模块(图中未示出),用于在出现故障的节点的数量超过预设阈值时,将输入输出组剩余的节点配置为多个新的域;

格式化模块130,还用于经由各新的域中的拥有者节点执行第一处理逻辑;以及在各新的域中还包括备份节点时,经由各域中的备份节点执行第二处理逻辑。

关于卷格式化装置的具体限定可以参见上文中对于卷格式化方法的限定,在此不再赘述。上述卷格式化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

本申请在一些实施例中提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储输入输出组的多个域的配置信息,该多个域和无归属卷的多个段的对应关系等数据,具体存储的数据还可以参见上述方法实施例中的限定。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种卷格式化方法。

本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时可以实现上述任一实施例中提供的卷格式化方法的步骤。

本申请在一些实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中提供的卷格式化方法的步骤。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)、DRAM(SLDRAM)、存储器总线(Rambus)、直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种元数据存储方法、装置、设备及计算机可读存储介质
  • 存储设备的数据删除方法、装置及计算机可读存储介质
  • 日志存储方法、装置、计算机设备及存储介质
  • 存储空间配置方法、装置、计算机设备及存储介质
  • 一种磁盘格式化方法、装置、设备和计算机可读存储介质
  • 一种磁盘格式化方法、装置、设备和计算机可读存储介质
技术分类

06120116494245