CN101625628B - 一种实现逻辑盘卷管理映射定制的方法 - Google Patents
一种实现逻辑盘卷管理映射定制的方法 Download PDFInfo
- Publication number
- CN101625628B CN101625628B CN2009100913131A CN200910091313A CN101625628B CN 101625628 B CN101625628 B CN 101625628B CN 2009100913131 A CN2009100913131 A CN 2009100913131A CN 200910091313 A CN200910091313 A CN 200910091313A CN 101625628 B CN101625628 B CN 101625628B
- Authority
- CN
- China
- Prior art keywords
- logical volume
- volume
- fragment
- logical
- physical
- 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
Links
Images
Abstract
本发明公开了一种实现逻辑盘卷管理LVM映射定制的方法,包括:预先设置指定映射区域,获取所述指定映射区域中的尚未被处理过的一个未被处理的映射区域,判断是否获取到所述映射区域,如果没有获取到,即结束创建或扩展逻辑卷的过程;如果获取到,则进一步判断所述获取到的映射区域所对应的物理卷片段是否已经被映射,如果是,则返回执行获取所述指定映射区域中的一个未被处理的映射区域的操作,否则,将所述创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上。应用本发明所述的方法,能够根据需求创建或扩展逻辑卷,从而使得创建或扩展逻辑卷时的映射操作更加灵活。
Description
技术领域
本发明涉及计算机存储设备管理领域,特别涉及Linux操作系统中一种实现逻辑盘卷管理(LVM)映射定制的方法。
背景技术
LVM是Linux环境下对存储设备分区进行管理的一种机制,它是建立在存储设备分区之上的一个逻辑层,用来提高存储设备分区管理的灵活性的。
图1为现有技术中采用LVM对存储设备分区进行管理的架构。如图1所示,一个存储设备分区只属于一个存储设备,该架构主要包括物理卷、卷组和逻辑卷三个部分。其中,物理卷是由存储设备分区抽象而成的,每一个物理卷对应一个不同的存储设备分区,它由物理卷号、物理卷大小、物理卷空闲空间、物理卷所在卷组号、物理卷片段链表以及物理卷所在卷组链表项等组成的物理卷对象共同描述;物理区块是物理卷的基本单位;物理卷片段是物理卷中的一段物理区块连续的区域,它由在物理卷中的起始位置、物理卷片段大小、映射标记以及所在物理卷链表项来描述,映射标记是用来反映该物理卷片段是否已经被映射的。卷组是由多个物理卷组成的,每个物理卷都可以加到卷组中,且同一个卷组中的各个物理卷的物理区块的大小是相同的,它是由卷组号、卷组大小、卷组空闲空间、物理卷链表和逻辑卷链表等组成的卷组对象来描述的。逻辑卷是所能见到的逻辑的存储设备分区,在逻辑卷上部署好文件系统即可对文件进行相应的操作,它由逻辑卷号、逻辑卷大小、逻辑卷所在卷组号、逻辑卷片段链表以及逻辑卷所在卷组链表项等组成的逻辑卷对象来描述,与物理卷不同的是,一个逻辑卷可以跨多个存储设 备分区;同物理卷一样,逻辑区块是逻辑卷的基本单位,且每个逻辑区块都有与其一一对应的物理区块,逻辑区块的大小同与其对应的物理区块的大小是一样的;逻辑卷片段是逻辑卷中的一段逻辑区块连续的区域,每个逻辑卷片段都有与其一一对应的物理卷片段,它由在逻辑卷中的起始位置、逻辑卷片段大小、所映射的物理卷片段以及所在逻辑卷链表项来描述。
LVM管理存储设备分区的具体实现方式为:首先,将每个存储设备分区抽象成不同的物理卷;其次,将若干个物理卷连接为一个卷组,从而形成一个统一的存储池;最后,根据需求在卷组上创建或扩展逻辑卷,并在逻辑卷上创建相应的文件系统,进一步地用于后续使用。
图2为现有利用LVM创建逻辑卷的工作流程图。如图2所示,该流程主要包括以下步骤:
步骤201:根据创建逻辑卷的请求分配一个逻辑卷对象。
当需要创建一个逻辑卷时,会向LVM发出创建逻辑卷的请求,该请求中包含了需要创建的逻辑卷的逻辑卷号、逻辑卷大小以及在哪个卷组中建立等信息。进一步地,LVM会根据包含上述信息的请求分配一个逻辑卷对象,之后对其中包含的逻辑卷号、逻辑卷大小以及逻辑卷所在卷组号等字段赋值,并将分配的逻辑卷对象加到所在卷组对象中的逻辑卷链表字段中。
步骤202:获取逻辑卷可映射到的物理卷片段。
本步骤是通过两级扫描来获取逻辑卷可映射的物理卷片段的,具体为:首先,扫描逻辑卷所在卷组对象中的物理卷链表,获取相应卷组中所有的物理卷;其次,对于获取到的每一个物理卷,扫描其中的物理卷片段链表,获取其中映射标记未被标记的物理卷片段,也即未映射的物理卷片段。
在获取到未映射的物理卷片段后,还需进一步地将所有这些未映射的物理卷片段按照由大到小的顺序进行排序,排序方法有很多种,这里采用的是插入排序:即先插入第一个物理卷片段,以后的每一个物理卷片段都是从已排好序的序列中找到对应的位置进行插入的,直至最后一个物理卷片段完成插入操作,也就完成了对未映射物理卷片段的大小排序操作。
需要注意的是,在本步骤中对物理卷片段进行排序时是在同一个物理卷中进行的。
步骤203:判断所有可映射的物理卷片段大小总和是否不小于要求创建的逻辑卷大小,如果是,执行步骤205;否则,执行步骤204后以失败结束逻辑卷的创建过程。
当获取到逻辑卷可映射的所有物理卷片段之后,还需进一步判断所有可映射的物理卷片段大小总和是否不小于要求创建的逻辑卷大小,如果不小于,则执行步骤205;否则,执行步骤204后,以失败结束逻辑卷的创建过程。
步骤204:撤销分配的逻辑卷对象。
当所有可映射的物理卷片段大小总和小于要求创建的逻辑卷大小时,也就不能完成相应逻辑卷的创建,因此,需要撤销之前分配的逻辑卷对象,并结束该逻辑卷的创建过程。
步骤205:为逻辑卷分配第一个逻辑卷片段对象。
建立映射时是由逻辑卷中的逻辑卷片段映射到物理卷中的物理卷片段上的,而逻辑卷与物理卷并不能直接建立这种映射关系,因此,当所有可映射的物理卷片段大小总和不小于所要创建的逻辑卷大小时,需要为逻辑卷分配一个逻辑卷片段对象,该逻辑卷片段对象中包含了逻辑卷片段在逻辑卷中的起始位置、逻辑卷片段大小、所映射的物理卷片段以及所在逻辑卷链表项等字段。
步骤206:判断是否有物理卷中最大的物理卷片段大小不小于需要创建的逻辑卷大小,如果是,执行步骤207;否则,执行步骤212。
在本步骤中,需要遍历每个物理卷中可映射的最大的物理卷片段,找到所有这些最大的物理卷片段大小不小于需要创建的逻辑卷大小的物理卷片段,如果能够找到,执行步骤207;否则,执行步骤212。
步骤207~208:从找到的物理卷片段中选出最大的一个,并判断该物理卷片段大小是否等于需要创建的逻辑卷大小,如果等于,执行步骤209;否 则,执行步骤210。
将步骤206中找到的不小于需要创建的逻辑卷大小的物理卷片段进行排序,选出其中最大的一个物理卷片段,这里采用的是快速排序的方式。之后,进一步判断选出的最大的一个物理卷片段大小是否等于需要创建的逻辑卷大小,如果等于,执行步骤209;如果不等于,也即物理卷片段大小大于需要创建的逻辑卷大小,则执行步骤210。
步骤209:将分配的逻辑卷片段与选出的最大的物理卷片段建立映射。
如果选出的最大的物理卷片段大小正好等于需要创建的逻辑卷大小,则直接将分配的逻辑卷片段与所述最大的物理卷片段建立映射,具体为:首先,将物理卷片段的映射标记字段设置为已映射;其次,将分配的逻辑卷片段对象中所映射到物理卷片段字段设置为映射到该物理卷片段,并将该逻辑卷片段加到分配的逻辑卷对象中的逻辑卷片段链表字段。
在将逻辑卷片段与物理卷片段建立映射之后,即可结束逻辑卷的创建过程。
步骤210~211:将选出的最大的物理卷片段进行拆分,并将分配的逻辑卷片段与拆分后的最大的物理卷片段建立映射后结束逻辑卷的创建。
如果选出的最大的物理卷片段大小大于需要创建的逻辑卷大小,则需要将最大的物理卷片段拆分成两个物理卷片段,并使得拆分后的最大的物理卷片段大小正好等于需要创建的逻辑卷大小,具体拆分方式为:分配一个新的物理卷片段对象,最大的物理卷片段大小设置为正好等于需要创建的逻辑卷大小,而新的物理卷片段大小设置为最大的物理卷片段大小与逻辑卷大小之差,同时,设置两个物理卷片段的起始位置,并将新的物理卷片段加到相应的物理卷对象的物理卷片段链表中。
完成拆分后的最大的物理卷片段大小正好等于需要创建的逻辑卷大小,将它们之间建立映射,并将该逻辑卷片段加到分配的逻辑卷对象中的逻辑卷片段链表字段后,即可结束逻辑卷的创建过程,具体的映射操作同步骤209,这里不再赘述。
步骤212:将所有可映射的物理卷片段进行排序。
如果没有一个可映射的物理卷中最大的物理卷片段大小不小于需要创建的逻辑卷大小,则需要将步骤202中获取到的所有可映射的物理卷片段进行排序。
需要注意的是,本步骤中对物理卷片段进行排序是在所有物理卷中进行的,且由于之前已经对单个物理卷中的物理卷片段进行了排序,因此,这里采用了归并排序的方式。
步骤213~214:选择可映射的最大的物理卷片段,并判断该物理卷片段大小是否不小于剩余未映射的逻辑卷大小,如果是,执行步骤217,否则,执行步骤215。
从排好序的可映射的物理卷片段中选出最大的一个物理卷片段,并判断该物理卷片段大小是否不小于要求创建的剩余未映射的逻辑卷大小,如果不小于,则执行步骤217;如果小于,则执行步骤215。
步骤215~216:将分配的逻辑卷片段与物理卷片段建立映射,再分配一个新的逻辑卷片段后,返回执行步骤213。
具体的映射和分配操作在前面已经介绍过,这里不再赘述。需要注意的是,在执行完该操作之后,还需将需要创建的逻辑卷大小设置为该步骤操作之前逻辑卷大小与该步骤所创建的逻辑卷片段大小之差,也即剩余未映射的逻辑卷大小。
步骤217~220:其具体操作同步骤208~211。
至此,即完成了现有利用LVM创建逻辑卷的整个过程。
现有利用LVM扩展逻辑卷的工作流程与创建流程基本一致,图3即为现有利用LVM扩展逻辑卷的工作流程图。如图3所示,该流程包括:
步骤301:根据扩展逻辑卷的请求得到待扩展的逻辑卷对象。
当需要扩展一个逻辑卷时,会向LVM发出扩展逻辑卷的请求,该请求中包含了需要扩展的逻辑卷的逻辑卷号、需要扩展的逻辑卷大小等信息。LVM会根据逻辑卷号得到需要扩展的逻辑卷,并将所述需要扩展的逻辑卷 对象中的逻辑卷大小字段修改为原逻辑卷大小与需要扩展的逻辑卷大小之和。
步骤302:获取需要扩展的逻辑卷可映射到的物理卷片段。
本步骤也是通过两级扫描来获取需要扩展的逻辑卷可映射的物理卷片段的,在得到了可映射的物理卷片段之后,也需要对其在同一个物理卷中按照由大到小的顺序进行排序,其具体操作同步骤202,这里不再赘述。
步骤303:判断所有可映射的物理卷片段大小总和是否不小于需要扩展的逻辑卷大小,如果是,执行步骤304;否则,以失败结束逻辑卷的扩展过程。
步骤304:为需要扩展的逻辑卷分配第一个逻辑卷片段对象。
为逻辑卷分配逻辑卷片段对象的具体操作同步骤205,这里不再赘述。
步骤305:判断是否有物理卷中最大的物理卷片段大小不小于需要扩展的大小,如果是,执行步骤306;否则,执行步骤311。
步骤306~307:从不小于需要扩展的大小的每个物理卷中最大的物理卷片段中选出最大的物理卷片段,并判断该物理卷片段大小是否等于需要扩展的大小,如果是,执行步骤308;否则,执行步骤309。
步骤308:将分配的逻辑卷片段与选出的最大的物理卷片段建立映射后,再执行步骤320。
具体的映射操作同步骤209,但需要说明的是,在建立映射后,还需进一步地将映射好的逻辑卷片段对象加到需要扩展的逻辑卷对象的逻辑卷片段链表中,再执行步骤320。
步骤309~310:将选出的最大的物理卷片段进行拆分,并将分配的逻辑卷片段与拆分后的最大的物理卷片段建立映射后,再执行步骤320。
同步骤308一样,建立映射后还需进一步地将映射好的逻辑卷片段对象加到需要扩展的逻辑卷对象的逻辑卷片段链表中,再执行步骤320。
步骤311~312:其具体操作同步骤212~213。
步骤313:判断选择的可映射的最大的物理卷片段大小是否不小于剩余 未扩展的大小,如果是,只需步骤316;否则,执行步骤314。
步骤314~315:其具体操作同步骤215~216,执行完该操作后,需要返回执行步骤312。
步骤316~319:具体操作同步骤307~310。
步骤320:将相邻的物理卷片段及与其相应的逻辑卷片段进行合并。
在映射完成后,可能会出现同一个逻辑卷中不同的逻辑卷片段映射到的物理卷片段相邻的情况,也即一个物理卷片段的结束位置正好为另一个物理卷片段的起始位置,此时,需要将这相邻的物理卷片段进行合并,相应地,与它们分别对应的逻辑卷片段也要进行合并。
至此,即完成了现有利用LVM扩展逻辑卷的整个过程。
通过上述分析可以看出,现有在创建或扩展逻辑卷时,都是先将逻辑卷片段映射到可映射的最大的物理卷片段上,目的是为了减少物理卷片段的碎片,并使得创建或扩展的逻辑卷中逻辑卷片段所对应的物理区块尽可能地连续。但是,在很多情况下,需要指定逻辑卷片段到某个物理卷片段的映射,比如在创建或扩展不同的逻辑卷时,出于性能隔离的需要,要求不同逻辑卷的输入输出(IO)操作尽量减少相互之间的影响,因此,最好是在两个不同的存储设备中进行逻辑卷片段的映射;又比如创建或扩展的某个逻辑卷将来很可能要迁移到另一台计算机上,那么就希望映射到属于另一台计算机的存储设备上;再比如在创建或扩展一个逻辑卷时,物理卷中正好有一个未被映射的且大小相等的物理卷片段,那么尽管这个物理卷片段可能不是最大的,但是出于减少碎片的考虑,需要将创建或扩展的逻辑卷中的逻辑卷片段映射到该物理卷片段上。
发明内容
有鉴于此,本发明提供了一种实现LVM映射定制的方法,能够根据需求创建或扩展逻辑卷,从而使得创建或扩展逻辑卷时的映射操作更加灵活。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种实现LVM映射定制的方法,预先设置指定映射区域,包括:
a1.获取所述指定映射区域中的尚未被处理过的一个映射区域,判断是否获取到所述映射区域,如果是,执行步骤a2,否则结束;
a2.判断所述获取到的映射区域所对应的物理卷片段是否已被映射,如果是,则返回执行步骤a1,否则,执行步骤a3,将创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上;
a3.判断所述获取到的映射区域所对应的物理卷片段是否超过所述获取到的映射区域所描述的范围,如果是,则拆分所述获取到的映射区域所对应的物理卷片段,再将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上;否则,直接将所述创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上;
步骤a3中所述将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上、或所述直接将所述创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上之前该方法还包括:
a4.判断所述拆分后的物理卷片段、或所述获取到的映射区域所对应的物理卷片段大小是否不小于未创建或未扩展的逻辑卷大小,如果是,执行步骤a5,否则,将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上、或所述获取到的映射区域所对应的物理卷片段上;
a5.判断所述拆分后的物理卷片段、或所述获取到的映射区域所对应的物理卷片段大小是否等于未创建或未扩展的逻辑卷大小,如果是,将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上、或所述获取到的映射区域所对应的物理卷片段上,否则,对所述拆分后的物理卷片段、或所述获取到的映射区域所对应的物理卷片段进行拆分后,再与所述创建或扩展的逻辑卷建立映射。
由上述的技术方案可见,本发明所采用的实现LVM映射定制的方法,通过预先设置创建或扩展的逻辑卷的指定映射区域,从而使得在创建或扩展逻辑卷时,能够将所述创建或扩展的逻辑卷映射到满足条件的指定映射区域所对应的物理卷片段上,也即能够根据需求创建或扩展逻辑卷,从而使得创建或扩展逻辑卷时的映射操作更加灵活。
附图说明
图1为现有技术中采用LVM对存储设备分区进行管理的架构。
图2为现有利用LVM创建逻辑卷的工作流程图。
图3为现有利用LVM扩展逻辑卷的工作流程图。
图4为本发明利用LVM创建逻辑卷的工作流程图。
图5为本发明利用LVM扩展逻辑卷的工作流程图。
具体实施方式
为解决现有技术中存在的问题,本发明提出一种增强LVM功能的方法,即实现LVM映射定制的方法,通过预先设置创建或扩展的逻辑卷的指定映射区域,从而使得在创建或扩展逻辑卷时,能够将所述创建或扩展的逻辑卷映射到满足条件的指定映射区域所对应的物理卷片段上,也即能够根据需求创建或扩展逻辑卷,从而使得创建或扩展逻辑卷时的映射操作更加灵活。
本发明所述方案的具体实现包括:
a1.获取所述指定映射区域中的一个映射区域,判断是否获取到所述映射区 域,如果是,执行步骤a2,否则结束;
a2.判断所述获取到的映射区域所对应的物理卷片段是否已被映射,如果是,则返回执行步骤a1,否则,将创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上。
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图4为本发明利用LVM创建逻辑卷的工作流程图。如图4所示,该流程包括以下步骤:
步骤401:根据创建逻辑卷的请求分配一个逻辑卷对象。
同现有利用LVM创建逻辑卷一样,当需要创建一个逻辑卷时,首先会向LVM发出创建逻辑卷的请求,该请求中除了包含需要创建的逻辑卷的逻辑卷号、逻辑卷大小以及逻辑卷在哪个卷组中建立等信息外,还包含了逻辑卷指定映射区域的各区域参数,也即各区域对应的物理卷号、各区域在相应物理卷中的起始位置以及各区域大小等。
进一步地,LVM会根据请求中的逻辑卷在哪个卷组中建立的信息获取相应的卷组,进而得到相应的卷组对象;并根据包含上述信息的请求分配一个逻辑卷对象,对其中的逻辑卷号、逻辑卷大小以及逻辑卷所在卷组号等字段赋值后,将新分配的逻辑卷对象加到与其相应的卷组对象中的逻辑卷链表中。
步骤402:为逻辑卷分配第一个逻辑卷片段对象。
为了建立到物理卷片段的映射,在分配好逻辑卷对象后,还需分配一个包含逻辑卷片段在逻辑卷中的起始位置、逻辑卷片段大小、所映射的物理卷片段以及所在逻辑卷链表项等字段的逻辑卷片段对象。
步骤403~404:获取逻辑卷指定映射区域中的尚未被处理过的一个映射区域,并判断是否获取到,如果是,执行步骤406;否则,执行步骤405。
当分配好逻辑卷对象与逻辑卷片段对象后,需要获取指定映射区域中的还没有被处理过的一个映射区域,并判断是否能获取到该映射区域,如果能 够获取到,执行步骤406;如果不能获取到该映射区域,说明已经没有未被处理过的映射区域了,也就是定制的空间不足,则需执行步骤405。
步骤405:撤销之前分配的逻辑卷对象以及逻辑卷片段对象,并以失败结束逻辑卷的创建过程。
当没有找到指定映射区域中的未被处理过的映射区域,也即指定映射区域都已经被处理过的时候,需要将之前分配的逻辑卷对象以及分配的所有逻辑卷片段对象进行撤销的操作,并以失败结束逻辑卷映射定制的创建过程。
步骤406~407:获取所述获取到的映射区域所对应的物理卷片段,并判断所述获取到的物理卷片段是否已经被映射,如果是,返回执行步骤403;否则,执行步骤408。
当获取到一个映射区域后,还需进一步获取到该映射区域所对应的物理卷片段,这里获取物理卷片段的过程是通过两级扫描来实现的,具体实现为:首先,扫描卷组对象中的物理卷链表,找到所述映射区域所在的物理卷;然后,扫描物理卷对象中的物理卷片段链表,找到所述映射区域所对应的物理卷片段。
当获取到所述映射区域所对应的物理卷片段后,进一步地,判断所述获取到的物理卷片段是否已经被映射,如果该物理卷片段已经被映射,返回执行步骤403;如果该物理卷片段还未被映射,则执行步骤408。
步骤408:判断所述获取到的未被映射的物理卷片段是否超过获取到的未被映射区域的范围,如果是,执行步骤409;否则,执行步骤410。
当获取到的物理卷片段没有被映射时,还需进一步判断所述获取到的物理卷片段是否超过了获取到的未被映射区域所描述的范围,如果超过了获取到的未被映射区域所描述的范围,执行步骤409;如果没有超过获取到的未被映射区域所描述的范围,则执行步骤410。
步骤409:将所述获取到的未被映射的物理卷片段进行拆分,再执行步骤410。
当所述获取到的未被映射的物理卷片段超过了获取到的未被映射区域 所描述的范围时,需要将所述获取到的未被映射的物理卷片段进行拆分,从而获取未被映射区域所描述范围内对应的未被映射的物理卷片段,具体拆分方式为:分配一个新的物理卷片段对象,将所述获取到的未被映射的物理卷片段大小设置为正好等于所述获取到的未被映射区域所描述的范围大小,而新的物理卷片段大小设置为所述获取到的未被映射的物理卷片段大小与所述获取到的未被映射区域所描述的范围大小之差,同时,设置两个物理卷片段的起始位置,并将新的物理卷片段加到相应的物理卷对象的物理卷片段链表中。
步骤410:判断物理卷片段大小是否不小于未创建的逻辑卷大小,如果是,执行步骤413;否则,执行步骤411。
需要说明的是,在本实施例中,判断物理卷片段大小与未创建的逻辑卷大小之间的关系有两种情况:一是当所述获取到的未被映射的物理卷片段没有超过获取到的未被映射区域所描述的范围时,判断的是所述获取到的未被映射的物理卷片段大小与未创建的逻辑卷大小之间的关系;二是当所述获取到的未被映射的物理卷片段超过了获取到的未被映射区域所描述的范围时,需要将所述获取到的未被映射的物理卷片段进行拆分,因而判断的是所述拆分后的物理卷片段大小与未创建的逻辑卷大小之间的关系。
当判断出物理卷片段大小不小于所述未创建的逻辑卷大小时,执行步骤413;反之,当物理卷片段大小小于所述未创建的逻辑卷大小时,则执行步骤411。
步骤411:将逻辑卷片段与物理卷片段建立映射。
当物理卷片段大小小于所述未创建的逻辑卷大小时,即可将逻辑卷片段映射到所述物理卷片段上,具体的映射方法已为现有技术,这里不再赘述。
需要说明的是,当将逻辑卷片段与物理卷片段建立映射后,还需将所述建立映射后的逻辑卷片段对象加到所述分配的逻辑卷对象中的逻辑卷片段链表中。
步骤412:为创建的逻辑卷分配一个新的逻辑卷片段对象,并返回执行 步骤403。
步骤413:判断物理卷片段大小是否等于未创建的逻辑卷大小,如果是,执行步骤415;否则,执行步骤414。
当物理卷片段大小不小于所述未创建的逻辑卷大小时,还需进一步判断所述物理卷片段大小是否等于所述未创建的逻辑卷大小,如果等于,执行步骤415;如果不等于,也即所述物理卷片段大小大于所述未创建的逻辑卷大小,则执行步骤414。
步骤414:将大于所述未创建的逻辑卷大小的物理卷片段进行拆分。
当物理卷片段大小大于所述未创建的逻辑卷大小时,需要拆分所述物理卷片段,具体的拆分方式同现有技术,这里不再赘述。
步骤415:将逻辑卷片段与物理卷片段建立映射。
同步骤410一样,在本实施例中,将逻辑卷片段与物理卷片段建立映射也有两种情况:一是当物理卷片段大小等于未创建的逻辑卷大小时,直接将逻辑卷片段映射到所述物理卷片段上即可;二是当物理卷片段大小大于所述未创建的逻辑卷大小时,需要先将物理卷片段进行拆分,再将逻辑卷片段映射到所述拆分后的物理卷片段上,也即此时是将逻辑卷片段与所述拆分后的物理卷片段建立映射的。
同样地,在将逻辑卷片段与物理卷片段建立映射后,还需将所述建立映射后的逻辑卷片段对象加到所述分配的逻辑卷对象中的逻辑卷片段链表中。
步骤416:将已与逻辑卷片段建立映射的所有相邻的物理卷片段及与所述相邻的物理卷片段对应的逻辑卷片段进行合并。
当将逻辑卷片段与物理卷片段建立映射后,还需进一步扫描逻辑卷对象的逻辑卷片段链表中各逻辑卷片段所映射的物理卷片段,将其中相邻的物理卷片段进行合并,同时,将所述相邻的物理卷片段所对应的逻辑卷片段也进行合并。
至此,即完成了本发明所述创建逻辑卷的整个过程,也即完成了在创建逻辑卷时能够利用LVM实现映射定制的整个过程。
图5为本发明利用LVM扩展逻辑卷的工作流程图。如图5所示,该流程包括以下步骤:
步骤501:根据扩展逻辑卷的请求得到需要扩展的逻辑卷对象。
同现有利用LVM扩展逻辑卷一样,当需要扩展一个逻辑卷时,会向LVM发出扩展逻辑卷的请求,该请求中不仅包含了需要扩展的逻辑卷的逻辑卷号、需要扩展的逻辑卷大小等信息,而且还包含了需要扩展的逻辑卷所指定映射区域的各区域参数,也即各区域对应的物理卷号、各区域在相应物理卷中的起始位置以及各区域大小等。
进一步地,LVM会根据请求中的逻辑卷号得到对应需要扩展的逻辑卷,并根据相应逻辑卷对象中的逻辑卷所在卷组号得到需要扩展的逻辑卷所在的卷组。
步骤502:为需要扩展的逻辑卷分配第一个逻辑卷片段对象。
其具体分配操作同现有扩展过程中的步骤304。
步骤503~504:获取需要扩展的逻辑卷所指定映射区域中的尚未被处理过的一个映射区域,并判断是否能获取到该映射区域,如果能够获取到,执行步骤506;如果获取不到,说明所有指定的映射区域已经都被处理过了,也就是定制的空间不足,则需执行步骤505。
步骤505:撤销之前分配的逻辑卷片段对象,并以失败结束逻辑卷的扩展过程。
同创建过程不一样的是,在本实施例中,当没有获取到指定映射区域中的映射区域,也即指定映射区域都已经被处理过的时候,由于之前并没有分配逻辑卷对象,因此,只需将分配的所有逻辑卷片段对象进行撤销后,即以失败结束逻辑卷映射定制的扩展过程。
步骤506~507:获取所述获取到的映射区域所对应的物理卷片段,并判断所述获取到的物理卷片段是否已经被映射,如果已经被映射,返回执行步骤503;如果该物理卷片段还未被映射,则执行步骤508。
步骤508:判断所述获取到的未被映射的物理卷片段是否超过获取到的 映射区域的范围,如果超过了获取到的映射区域所描述的范围,执行步骤509;如果没有超过获取到的映射区域所描述的范围,则执行步骤510。
步骤509:当所述获取到的未被映射的物理卷片段超过了获取到的映射区域所描述的范围时,则将所述获取到的未被映射的物理卷片段进行拆分,从而获取映射区域所描述范围内对应的未被映射的物理卷片段。
步骤510:判断物理卷片段大小是否不小于剩余未扩展的逻辑卷大小,如果是,执行步骤513;否则,执行步骤511。
与创建逻辑卷一样,在本实施例中,判断物理卷片段大小与剩余未扩展的逻辑卷大小之间的关系同样有两种情况:一是当所述获取到的未被映射的物理卷片段没有超过获取到的映射区域所描述的范围时,判断的是所述获取到的未被映射的物理卷片段大小与剩余未扩展的逻辑卷大小之间的关系;二是当所述获取到的未被映射的物理卷片段超过了获取到的映射区域所描述的范围时,需要将所述获取到的未被映射的物理卷片段进行拆分,因此判断的是所述拆分后的物理卷片段大小与剩余未扩展的逻辑卷大小之间的关系。
当判断出物理卷片段大小不小于所述剩余未扩展的逻辑卷大小时,执行步骤513;反之,当物理卷片段大小小于所述剩余未扩展的逻辑卷大小时,则需执行步骤511。
步骤511:将逻辑卷片段与物理卷片段建立映射。
当物理卷片段大小小于所述剩余未扩展的逻辑卷大小时,需要将逻辑卷片段直接映射到所述物理卷片段上,也即将逻辑卷片段与物理卷片段建立映射。进一步地,还需将所述建立映射后的逻辑卷片段对象加到所述需要扩展的逻辑卷对象中的逻辑卷片段链表中。
步骤512:为需要扩展的逻辑卷分配一个新的逻辑卷片段对象,并返回执行步骤503。
步骤513:判断物理卷片段大小是否等于所述剩余未扩展的逻辑卷大小,如果是,执行步骤515;否则,执行步骤514。
当物理卷片段大小不小于所述剩余未扩展的逻辑卷大小时,还需进一步 判断所述物理卷片段大小是否等于所述剩余未扩展的逻辑卷大小,如果等于,执行步骤515;如果不等于,也即所述物理卷片段大小大于所述剩余未扩展的逻辑卷大小,则执行步骤514。
步骤514:将大于所述剩余未扩展的逻辑卷大小的物理卷片段进行拆分。
步骤515:将逻辑卷片段与物理卷片段建立映射。
同创建逻辑卷一样,在本实施例中,将逻辑卷片段与物理卷片段建立映射也分为两种情况:一是当物理卷片段大小等于所述剩余未扩展的逻辑卷大小时,直接将逻辑卷片段映射到所述物理卷片段上即可;二是当物理卷片段大小大于所述剩余未扩展的逻辑卷大小时,则需先将物理卷片段进行拆分,再将逻辑卷片段映射到所述拆分后的物理卷片段上,也即将逻辑卷片段与所述拆分后的物理卷片段建立映射。
在将逻辑卷片段与物理卷片段建立映射后,还需将所述建立映射后的逻辑卷片段对象加到所述需要扩展的逻辑卷对象的逻辑卷片段链表中。
步骤516:将已与逻辑卷片段建立映射的所有相邻的物理卷片段及与所述相邻的物理卷片段对应的逻辑卷片段进行合并。
至此,即完成了本发明所述扩展逻辑卷的整个过程,也即完成了在扩展逻辑卷时能够利用LVM实现映射定制的整个过程。
总之,本发明所采用实现LVM映射定制的方法,通过预先设置创建或扩展的逻辑卷的指定映射区域,从而使得在创建或扩展逻辑卷时,能够将所述创建或扩展的逻辑卷映射到满足条件的指定映射区域所对应的物理卷片段上,也即能够根据需求创建或扩展逻辑卷,从而使得创建或扩展逻辑卷时的映射操作更加灵活。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种实现逻辑盘卷管理LVM映射定制的方法,其特征在于,预先设置指定映射区域,该方法包括:
a1.获取所述指定映射区域中的尚未被处理过的一个映射区域,判断是否获取到所述映射区域,如果是,执行步骤a2,否则,以失败结束创建或扩展逻辑卷的操作;
a2.判断所述获取到的映射区域所对应的物理卷片段是否已被映射,如果是,则返回执行步骤a1,否则,执行步骤a3,将创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上;
a3.判断所述获取到的映射区域所对应的物理卷片段是否超过所述获取到的映射区域所描述的范围,如果是,则拆分所述获取到的映射区域所对应的物理卷片段,再将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上;否则,直接将所述创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上;
步骤a3中所述将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上、或所述直接将所述创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上之前该方法还包括:
a4.判断所述拆分后的物理卷片段、或所述获取到的映射区域所对应的物理卷片段大小是否不小于未创建或未扩展的逻辑卷大小,如果是,执行步骤a5,否则,将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上、或所述获取到的映射区域所对应的物理卷片段上;
a5.判断所述拆分后的物理卷片段、或所述获取到的映射区域所对应的物理卷片段大小是否等于未创建或未扩展的逻辑卷大小,如果是,将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上、或所述获取到的映射区域所对应的物理卷片段上,否则,对所述拆分后的物理卷片段、或所述获取到的映射区域所对应的物理卷片段进行拆分后,再与所述创建或扩展的逻辑卷建立映射。
2.如权利要求1所述的方法,其特征在于,所述步骤a1之前该方法还包括为所述创建或扩展的逻辑卷分配第一个逻辑卷片段对象的步骤。
3.如权利要求1所述的方法,其特征在于,步骤a4中所述将所述创建或扩展的逻辑卷映射到所述拆分后的物理卷片段上、或所述获取到的映射区域所对应的物理卷片段上之后该方法还包括为所述创建或扩展的逻辑卷分配一个新的逻辑卷片段对象的步骤。
4.如权利要求3所述的方法,其特征在于,步骤a1中当没有获取到所述映射区域时,所述以失败结束创建或扩展逻辑卷的操作之前该方法还包括将所述分配的逻辑卷片段对象进行撤销的步骤。
5.如权利要求4所述的方法,其特征在于,将创建或扩展的逻辑卷映射到物理卷片段上是通过将所述分配的逻辑卷片段映射到所述物理卷片段上的。
6.如权利要求2所述的方法,其特征在于,步骤a2中所述将创建或扩展的逻辑卷映射到所述获取到的映射区域所对应的物理卷片段上之后该方法还包括:将所述分配的逻辑卷片段对象加到所述创建或扩展的逻辑卷对象的逻辑卷片段链表中。
7.如权利要求6所述的方法,其特征在于,所述将所述分配的逻辑卷片段对象加到所述创建或扩展的逻辑卷对象的逻辑卷片段链表中之后该方法还包括:将与所述创建或扩展的逻辑卷建立映射后的所有相邻的物理卷片段、以及与所述相邻的物理卷片段对应的逻辑卷片段进行合并。
8.如权利要求7所述的方法,其特征在于,当所述创建或扩展的逻辑卷为创建逻辑卷时,所述为创建的逻辑卷分配第一个逻辑卷片段对象之前该方法还包括为所述创建的逻辑卷分配一个逻辑卷对象的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100913131A CN101625628B (zh) | 2009-08-17 | 2009-08-17 | 一种实现逻辑盘卷管理映射定制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100913131A CN101625628B (zh) | 2009-08-17 | 2009-08-17 | 一种实现逻辑盘卷管理映射定制的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101625628A CN101625628A (zh) | 2010-01-13 |
CN101625628B true CN101625628B (zh) | 2011-03-23 |
Family
ID=41521485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100913131A Expired - Fee Related CN101625628B (zh) | 2009-08-17 | 2009-08-17 | 一种实现逻辑盘卷管理映射定制的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101625628B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533420B2 (en) * | 2010-11-24 | 2013-09-10 | Microsoft Corporation | Thin provisioned space allocation |
CN105528302B (zh) * | 2015-12-03 | 2019-09-10 | Tcl集团股份有限公司 | 一种基于逻辑卷的动态管理磁盘的方法及系统 |
CN105630702A (zh) * | 2015-12-18 | 2016-06-01 | 浪潮(北京)电子信息产业有限公司 | 一种逻辑卷创建方法与系统 |
CN106775488A (zh) * | 2016-12-27 | 2017-05-31 | 维沃移动通信有限公司 | 一种文件的存储方法及移动终端 |
CN107728949B (zh) * | 2017-10-20 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 一种自动精简卷测试方法、系统、装置及计算机存储介质 |
CN113568569A (zh) * | 2021-06-21 | 2021-10-29 | 长沙证通云计算有限公司 | 一种基于云平台的san存储对接方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1985323A (zh) * | 2004-05-10 | 2007-06-20 | 松下电器产业株式会社 | 单次写入盘的数据记录/再现 |
CN101067779A (zh) * | 2006-04-04 | 2007-11-07 | 株式会社东芝 | 用于处理来自主机的访问请求的存储系统及方法 |
-
2009
- 2009-08-17 CN CN2009100913131A patent/CN101625628B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1985323A (zh) * | 2004-05-10 | 2007-06-20 | 松下电器产业株式会社 | 单次写入盘的数据记录/再现 |
CN101067779A (zh) * | 2006-04-04 | 2007-11-07 | 株式会社东芝 | 用于处理来自主机的访问请求的存储系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101625628A (zh) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101625628B (zh) | 一种实现逻辑盘卷管理映射定制的方法 | |
KR102198680B1 (ko) | 확장 가능한 멀티-스테이지 데이터 처리 시스템들에서의 효율적인 데이터 캐싱 관리 | |
CN101620515B (zh) | 一种增强逻辑盘卷管理功能的方法 | |
JP4614956B2 (ja) | データの所有権の動的な再割当 | |
CN110825494A (zh) | 物理机调度方法及装置、计算机可存储介质 | |
JP6376865B2 (ja) | 並列ツリー・ベースの予測のための、コンピュータにより実行される方法、ストレージ媒体、およびコンピュータ・システム | |
CN105980988A (zh) | Smp环境中在数据库工作代理间动态分配资源和任务的方法和系统 | |
US6304866B1 (en) | Aggregate job performance in a multiprocessing system by incremental and on-demand task allocation among multiple concurrently operating threads | |
CN106033373A (zh) | 一种云计算平台中虚拟机资源调度方法和调度系统 | |
CN101743534A (zh) | 通过增长和收缩资源分配来进行调度 | |
CN101458635A (zh) | 服务器虚拟环境的磁盘输入/输出调度器及其调度方法 | |
JP5396339B2 (ja) | リソース制御方法及びリソース制御システム | |
CN105874426B (zh) | 一种系统调用命令的批处理方法及装置 | |
CN104871153A (zh) | 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法 | |
CN105786918A (zh) | 基于数据载入存储空间的数据查询方法和装置 | |
CN110941602A (zh) | 数据库的配置方法、装置、电子设备及存储介质 | |
KR102247249B1 (ko) | 데이터베이스 관리 시스템에서 비동기적 데이터 처리를 위한 컴퓨터 프로그램 | |
CN111988160B (zh) | 一种虚拟化网络功能的部署方法和装置 | |
JPH10301604A (ja) | 資材所要量計算装置および資材所要量計算方法 | |
CN112559174A (zh) | 一种区块链并行交易处理方法及装置 | |
CN100473065C (zh) | 一种面向网格的机群作业管理系统及其实现方法 | |
CN106254516A (zh) | 负载均衡方法及装置 | |
CN115525434A (zh) | 资源分配方法、容器管理组件和资源分配系统 | |
CN102214094A (zh) | 经由异步编程模型执行操作 | |
JP4211645B2 (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110323 Termination date: 20130817 |