專利名稱:一種實(shí)現(xiàn)邏輯盤卷管理映射定制的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)設(shè)備管理領(lǐng)域,特別涉及Linux操作系統(tǒng)中 一種實(shí)現(xiàn)邏輯盤巻管理(LVM)映射定制的方法。
背景技術(shù):
LVM是Linux環(huán)境下對存儲(chǔ)設(shè)備分區(qū)進(jìn)行管理的一種機(jī)制,它是建立在存儲(chǔ)設(shè)備分區(qū)之上的 一個(gè)邏輯層,用來提高存儲(chǔ)設(shè)備分區(qū)管理的靈活性的。
圖1為現(xiàn)有技術(shù)中采用LVM對存儲(chǔ)設(shè)備分區(qū)進(jìn)行管理的架構(gòu)。如圖1所示, 一個(gè)存儲(chǔ)設(shè)備分區(qū)只屬于一個(gè)存儲(chǔ)設(shè)備,該架構(gòu)主要包括物理巻、巻組和邏輯巻三個(gè)部分。其中,物理巻是由存儲(chǔ)設(shè)備分區(qū)抽象而成的,每一個(gè)物理巻對應(yīng)一個(gè)不同的存儲(chǔ)設(shè)備分區(qū),它由物理巻號、物理巻大小、物理巻空閑空間、物理巻所在巻組號、物理巻片段鏈表以及物理巻所在巻組鏈表項(xiàng)等組成的物理巻對象共同描述;物理區(qū)塊是物理巻的基本單位;物理巻片段是物理巻中的一段物理區(qū)塊連續(xù)的區(qū)域,它由在物理巻中的起始位置、物理巻片段大小、映射標(biāo)記以及所在物理巻鏈表項(xiàng)來描述,映射標(biāo)記是用來反映該物理巻片段是否已經(jīng)被映射的。巻組是由多個(gè)物理巻組成的,每個(gè)物理巻都可以加到巻組中,且同一個(gè)巻組中的各個(gè)物理巻的物理區(qū)塊的大小是才目同的,它是由巻組號、巻組大小、巻組空閑空間、物理巻鏈表和邏輯巻鏈表等組成的巻組對象來描述的。邏輯巻是所能見到的邏輯的存儲(chǔ)設(shè)備分區(qū),在邏輯巻上部署好文件系統(tǒng)即可對文件進(jìn)行相應(yīng)的操作,它由邏輯巻號、邏l專巻大小、邏輯巻所在巻組號、邏輯巻片段鏈表以及邏輯巻所在巻組鏈表項(xiàng)等組成的邏輯巻對象來描述,與物理巻不同的是, 一個(gè)邏輯巻可以跨多個(gè)存儲(chǔ)設(shè)備分區(qū);同物理巻一樣,邏輯區(qū)塊是邏輯巻的基本單位,且每個(gè)邏輯區(qū)塊都有與其——對應(yīng)的物理區(qū)塊,邏輯區(qū)塊的大小同與其對應(yīng)的物理區(qū)塊的大小是一樣的;邏輯巻片段是邏輯巻中的一段邏輯區(qū)塊連續(xù)的區(qū)域,每個(gè)邏輯巻片段都有與其——對應(yīng)的物理巻片段,它由在邏輯巻中的起始位置、邏輯巻片段大小、所映射的物理巻片段以及所在邏輯巻鏈表項(xiàng)來描述。
LVM管理存儲(chǔ)設(shè)備分區(qū)的具體實(shí)現(xiàn)方式為首先,將每個(gè)存儲(chǔ)設(shè)備分區(qū)抽象成不同的物理巻;其次,將若干個(gè)物理巻連接為一個(gè)巻組,從而形成一個(gè)統(tǒng)一的存儲(chǔ)池;最后,根據(jù)需求在巻組上創(chuàng)建或擴(kuò)展邏輯巻,并在邏輯巻上創(chuàng)建相應(yīng)的文件系統(tǒng),進(jìn)一步地用于后續(xù)使用。
圖2為現(xiàn)有利用LVM創(chuàng)建邏輯巻的工作流程圖。如圖2所示,該流牙呈主要包括以下步驟
步驟201:根據(jù)創(chuàng)建邏輯巻的請求分配一個(gè)邏輯巻對象。
當(dāng)需要?jiǎng)?chuàng)建一個(gè)邏輯巻時(shí),會(huì)向LVM發(fā)出創(chuàng)建邏輯巻的請求,該請求中包含了需要?jiǎng)?chuàng)建的邏輯巻的邏輯巻號、邏輯巻大小以及在哪個(gè)巻組中建立等信息。進(jìn)一步地,LVM會(huì)根據(jù)包含上述信息的請求分配一個(gè)邏輯巻對象,之后對其中包含的邏輯巻號、邏輯巻大小以及邏輯巻所在巻組號等字段賦值,并將分配的邏輯巻對象加到所在巻組對象中的邏輯巻鏈表字段中。
步驟202:獲取邏輯巻可映射到的物理巻片段。
本步驟是通過兩級掃描來荻取邏輯巻可映射的物理巻片段的,具體為首先,掃描邏輯巻所在巻組對象中的物理巻鏈表,獲取相應(yīng)巻組中所有的物理巻;其次,對于獲取到的每一個(gè)物理巻,掃描其中的物理巻片段鏈表,獲取其中映射標(biāo)記未4皮標(biāo)記的物理巻片段,也即未映射的物理巻片段。
在獲取到未映射的物理巻片段后,還需進(jìn)一步地將所有這些未映射的物理巻片段按照由大到小的順序進(jìn)行排序,排序方法有很多種,這里采用的是插入排序即先插入第一個(gè)物理巻片段,以后的每一個(gè)物理巻片段都是^^人已排好序的序列中找到對應(yīng)的位置進(jìn)行插入的,直至最后一個(gè)物理巻片段完成插入操作,也就完成了對未映射物理巻片段的大小排序操作。需要注意的是,在本步驟中對物理巻片段進(jìn)行排序時(shí)是在同一個(gè)物理巻中進(jìn)行的。
步驟203:判斷所有可映射的物理巻片段大小總和是否不小于要求創(chuàng)建的邏輯巻大小,如果是,執(zhí)行步驟205;否則,執(zhí)行步驟204后以失敗結(jié)束邏輯巻的創(chuàng)建過程。
當(dāng)獲取到邏輯巻可映射的所有物理巻片段之后,還需進(jìn)一步判斷所有可映射的物理巻片段大小總和是否不小于要求創(chuàng)建的邏輯巻大小,如果不小于,則執(zhí)行步驟205;否則,執(zhí)行步驟204后,以失敗結(jié)束邏輯巻的創(chuàng)建過程。
步驟204:撤銷分配的邏輯巻對象。
當(dāng)所有可映射的物理巻片段大小總和小于要求創(chuàng)建的邏輯巻大小時(shí),也就不能完成相應(yīng)邏輯巻的創(chuàng)建,,因此,需要撤銷之前分配的邏輯巻對象,并結(jié)束該邏輯巻的創(chuàng)建過程。
步驟205:為邏輯巻分配第一個(gè)邏輯巻片段對象。
上的,而邏輯巻與物理巻并不能直接建立這種映射關(guān)系,因此,當(dāng)所有可映射的物理巻片段大小總和不小于所要?jiǎng)?chuàng)建的邏輯巻大小時(shí),需要為邏輯巻分配一個(gè)邏輯巻片段對象,該邏輯巻片段對象中包含了邏輯巻片段在邏輯巻中的起始位置、邏輯巻片段大小、所映射的物理巻片段以及所在邏輯巻鏈表項(xiàng)等字段。
步驟206:判斷是否有物理巻中最大的物理巻片段大小不小于需要?jiǎng)?chuàng)建的邏輯巻大小,如果是,執(zhí)行步驟207;否則,執(zhí)行步驟212。
在本步驟中,需要遍歷每個(gè)物理巻中可映射的最大的物理巻片段,找到所有這些最大的物理巻片段大小不小于需要?jiǎng)?chuàng)建的邏輯巻大小的物理巻片段,如果能夠找到,執(zhí)行步驟207;否則,執(zhí)行步驟212。
步驟207 208:從找到的物理巻片段中選出最大的一個(gè),并判斷該物理巻片段大小是否等于需要?jiǎng)?chuàng)建的邏輯巻大小,如果等于,執(zhí)行步驟209;否
6則,4丸行步驟210。
將步驟206中找到的不小于需要?jiǎng)?chuàng)建的邏輯巻大小的物理巻片段進(jìn)行排序,選出其中最大的一個(gè)物理巻片段,這里采用的是快速排序的方式。之后,進(jìn)一步判斷選出的最大的一個(gè)物理巻片段大小是否等于需要?jiǎng)?chuàng)建的邏輯巻大小,如果等于,執(zhí)行步驟209;如果不等于,也即物理巻片段大小大于需要?jiǎng)?chuàng)建的邏輯巻大小,則執(zhí)行步驟210。
步驟209:將分配的邏輯巻片段與選出的最大的物理巻片段建立映射。
如果選出的最大的物理巻片段大小正好等于需要?jiǎng)?chuàng)建的邏輯巻大小,則直接將分配的邏輯巻片段與所述最大的物理巻片段建立映射,具體為首先,將物理巻片段的映射標(biāo)記字段設(shè)置為已映射;其次,將分配的邏輯巻片段3于象中所映射到物理巻片段字段設(shè)置為映射到該物理巻片段,并將該邏輯巻片段加到分配的邏輯巻對象中的邏輯巻片段鏈表字段。
在將邏輯巻片段與物理巻片段建立映射之后,即可結(jié)束邏輯巻的創(chuàng)建過程。
步驟210 211:將選出的最大的物理巻片段進(jìn)行拆分,并將分配的邏輯巻片段與拆分后的最大的物理巻片段建立映射后結(jié)束邏輯巻的創(chuàng)建。
如果選出的最大的物理巻片段大小大于需要?jiǎng)?chuàng)建的邏輯巻大小,則需要將最大的物理巻片段拆分成兩個(gè)物理巻片段,并使得拆分后的最大的物理巻片段大小正好等于需要?jiǎng)?chuàng)建的邏輯巻大小,具體拆分方式為分配一個(gè)新的物理巻片段對象,最大的物理巻片段大小設(shè)置為正好等于需要?jiǎng)?chuàng)建的邏輯巻大小,而新的物理巻片段大小設(shè)置為最大的物理巻片段大小與邏輯巻大小之差,同時(shí),設(shè)置兩個(gè)物理巻片段的起始位置,并將新的物理巻片段加到相應(yīng)的物理巻對象的物理巻片段鏈表中。
完成拆分后的最大的物理巻片段大小正好等于需要?jiǎng)?chuàng)建的邏輯巻大小,將它們之間建立映射,并將該邏輯巻片段加到分配的邏輯巻對象中的邏輯巻片段鏈表字段后,即可結(jié)束邏輯巻的創(chuàng)建過程,具體的映射操作同步驟209,這里不再贅述。步驟212:將所有可映射的物理巻片段進(jìn)行排序。
如果沒有一個(gè)可映射的物理巻中最大的物理巻片段大小不小于需要?jiǎng)?chuàng)建的邏輯巻大小,則需要將步驟202中獲取到的所有可映射的物理巻片l殳進(jìn)行排序。
需要注意的是,本步驟中對物理巻片段進(jìn)行排序是在所有物理巻中進(jìn)4亍的,且由于之前已經(jīng)對單個(gè)物理巻中的物理巻片段進(jìn)行了排序,因此,這里采用了歸并排序的方式。
步驟213 214:選擇可映射的最大的物理巻片段,并判斷該物理巻片賴二大小是否不小于剩余未映射的邏輯巻大小,如果是,執(zhí)行步驟217,否則,執(zhí)行步驟215。
從排好序的可映射的物理巻片段中選出最大的一個(gè)物理巻片段,并判斷該物理巻片段大小是否不小于要求創(chuàng)建的剩余未映射的邏輯巻大小,如果不小于,則執(zhí)行步驟217;如果小于,則執(zhí)行步驟215。
步驟215 216:將分配的邏輯巻片段與物理巻片^殳建立映射,再分函己一個(gè)新的邏輯巻片段后,返回執(zhí)行步驟213。
具體的映射和分配操作在前面已經(jīng)介紹過,這里不再贅述。需要注意的是,在執(zhí)行完該操作之后,還需將需要?jiǎng)?chuàng)建的邏輯巻大小設(shè)置為該步驟才喿作之前邏輯巻大小與該步驟所創(chuàng)建的邏輯巻片段大小之差,也即剩余未映射的邏輯巻大小。
步驟217~220:其具體操作同步驟208~211 。至此,即完成了現(xiàn)有利用LVM創(chuàng)建邏輯巻的整個(gè)過程?,F(xiàn)有利用LVM擴(kuò)展邏輯巻的工作流程與創(chuàng)建流程基本一致,圖3即為現(xiàn)有利用LVM擴(kuò)展邏輯巻的工作流程圖。如圖3所示,該流程包括步驟301:根據(jù)擴(kuò)展邏輯巻的請求得到待擴(kuò)展的邏輯巻對象。當(dāng)需要擴(kuò)展一個(gè)邏輯巻時(shí),會(huì)向LVM發(fā)出擴(kuò)展邏輯巻的請求,該請求中包含了需要擴(kuò)展的邏輯巻的邏輯巻號、需要擴(kuò)展的邏輯巻大小等信息。LVM會(huì)根據(jù)邏輯巻號得到需要擴(kuò)展的邏輯巻,并將所述需要擴(kuò)展的邏輯巻
8對象中的邏輯巻大小字段修改為原邏輯巻大小與需要擴(kuò)展的邏輯巻大小之和。
步驟302:獲取需要擴(kuò)展的邏輯巻可映射到的物理巻片段。本步驟也是通過兩級掃描來獲取需要擴(kuò)展的邏輯巻可映射的物理巻片
段的,在得到了可映射的物理巻片段之后,也需要對其在同一個(gè)物理巻中按
照由大到小的順序進(jìn)行排序,其具體操作同步驟202,這里不再贅述。
步驟303:判斷所有可映射的物理巻片段大小總和是否不小于需要擴(kuò)展
的邏輯巻大小,如果是,執(zhí)行步驟304;否則,以失敗結(jié)束邏輯巻的擴(kuò)展過程。
步驟304:為需要擴(kuò)展的邏輯巻分配第一個(gè)邏輯巻片段對象。為邏輯巻分配邏輯巻片段對象的具體操作同步驟205,這里不再贅述。步驟305:判斷是否有物理巻中最大的物理巻片段大小不小于需要擴(kuò)展
的大小,如果是,執(zhí)行步驟306;否則,執(zhí)行步驟3U。
步驟306 307:從不小于需要擴(kuò)展的大小的每個(gè)物理巻中最大的物理巻
片段中選出最大的物理巻片段,并判斷該物理巻片段大小是否等于需要擴(kuò)展
的大小,如果是,執(zhí)行步驟308;否則,執(zhí)行步驟309。
步驟308:將分配的邏輯巻片段與選出的最大的物理巻片段建立映射后,
再執(zhí)行步驟320。
具體的映射操作同步驟209,但需要說明的是,在建立映射后,還需進(jìn)一步地將映射好的邏輯巻片段對象加到需要擴(kuò)展的邏輯巻對象的邏輯巻片段鏈表中,再執(zhí)行步驟320。
步驟309 310:將選出的最大的物理巻片段進(jìn)行拆分,并將分配的邏輯巻片段與拆分后的最大的物理巻片段建立映射后,再執(zhí)行步驟320。
同步驟308 —樣,建立映射后還需進(jìn)一步地將映射好的邏輯巻片段對象加到需要擴(kuò)展的邏輯巻對象的邏輯巻片段鏈表中,再執(zhí)行步驟320。
步驟311 312:其具體操作同步驟212-213。
步驟33:判斷選擇的可映射的最大的物理巻片段大小是否不小于剩余未擴(kuò)展的大小,如果是,只需步驟316;否則,執(zhí)行步驟314。
步驟314 315:其具體操作同步驟215~216,執(zhí)行完該操作后,需要返
回執(zhí)行步驟312。
步驟316 319:具體操作同步驟307 310。
步驟320:將相鄰的物理巻片段及與其相應(yīng)的邏輯巻片段進(jìn)行合并。在映射完成后,可能會(huì)出現(xiàn)同一個(gè)邏輯巻中不同的邏輯巻片段映射到的物理巻片段相鄰的情況,也即一個(gè)物理巻片段的結(jié)束位置正好為另一個(gè)物3里巻片段的起始位置,此時(shí),需要將這相鄰的物理巻片段進(jìn)行合并,相應(yīng);也,與它們分別對應(yīng)的邏輯巻片段也要進(jìn)行合并。
至此,即完成了現(xiàn)有利用LVM擴(kuò)展邏輯巻的整個(gè)過程。通過上述分析可以看出,現(xiàn)有在創(chuàng)建或擴(kuò)展邏輯巻時(shí),都是先將邏輯巻片段映射到可映射的最大的物理巻片段上,目的是為了減少物理巻片段的石年片,并使得創(chuàng)建或擴(kuò)展的邏輯巻中邏輯巻片段所對應(yīng)的物理區(qū)塊盡可能J4連續(xù)。但是,在很多情況下,需要指定邏輯巻片段到某個(gè)物理巻片段的映射,比如在創(chuàng)建或擴(kuò)展不同的邏輯巻時(shí),出于性能隔離的需要,要求不同邏4尋巻的輸入輸出(10)操作盡量減少相互之間的影響,因此,最好是在兩個(gè)不同的存儲(chǔ)設(shè)備中進(jìn)行邏輯巻片段的映射;又比如創(chuàng)建或擴(kuò)展的某個(gè)邏輯巻將來很可能要遷移到另一臺計(jì)算機(jī)上,那么就希望映射到屬于另一臺計(jì)算機(jī)的存儲(chǔ)設(shè)備上;再比如在創(chuàng)建或擴(kuò)展一個(gè)邏輯巻時(shí),物理巻中正好有一個(gè)未^皮映射的且大小相等的物理巻片段,那么盡管這個(gè)物理巻片段可能不是最大的,但是出于減少碎片的考慮,需要將創(chuàng)建或擴(kuò)展的邏輯巻中的邏輯巻片段映射到該物理巻片段上。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種實(shí)現(xiàn)LVM映射定制的方法,能夠根據(jù)需求創(chuàng)建或擴(kuò)展邏輯巻,從而使得創(chuàng)建或擴(kuò)展邏輯巻時(shí)的映射操作更加靈活。為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種實(shí)現(xiàn)LVM映射定制的方法,預(yù)先設(shè)置指定映射區(qū)域,包括
al.獲取所述指定映射區(qū)域中的一個(gè)映射區(qū)域,判斷是否獲取到所述映射區(qū)域,如果是,執(zhí)行步驟a2,否則結(jié)束;
a2.判斷所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段是否已被映射,如果是,則返回執(zhí)行步驟al,否則,將創(chuàng)建或擴(kuò)展的邏輯巻映射到所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段上。
由上述的技術(shù)方案可見,本發(fā)明所采用的實(shí)現(xiàn)LVM映射定制的方法,通過預(yù)先設(shè)置創(chuàng)建或擴(kuò)展的邏輯巻的指定映射區(qū)域,從而使得在創(chuàng)建或擴(kuò)展邏輯巻時(shí),能夠?qū)⑺鰟?chuàng)建或擴(kuò)展的邏輯巻映射到滿足條件的指定映射區(qū)域^所對應(yīng)的物理巻片段上,也即能夠根據(jù)需求創(chuàng)建或擴(kuò)展邏輯巻,從而使得創(chuàng)建或擴(kuò)展邏輯巻時(shí)的映射操作更加靈活。
圖1為現(xiàn)有技術(shù)中采用LVM對存儲(chǔ)設(shè)備分區(qū)進(jìn)行管理的架構(gòu)。圖2為現(xiàn)有利用LVM創(chuàng)建邏輯巻的工作流程圖。圖3為現(xiàn)有利用LVM擴(kuò)展邏輯巻的工作流程圖。圖4為本發(fā)明利用LVM創(chuàng)建邏輯巻的工作流程圖。圖5為本發(fā)明利用LVM擴(kuò)展邏輯巻的工作流程圖。
具體實(shí)施例方式
為解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明提出 一種增強(qiáng)LVM功能的方法,即實(shí)現(xiàn)LVM映射定制的方法,通過預(yù)先設(shè)置創(chuàng)建或擴(kuò)展的邏輯巻的指定映射區(qū)域,從而使得在創(chuàng)建或擴(kuò)展邏輯巻時(shí),能夠?qū)⑺鰟?chuàng)建或擴(kuò)展的邏輯巻映射到滿足條件的指定映射區(qū)域所對應(yīng)的物理巻片段上,也即能夠根據(jù)需求創(chuàng)建或擴(kuò)展邏輯巻,從而使得創(chuàng)建或擴(kuò)展邏輯巻時(shí)的映射操作更加靈活。
本發(fā)明所述方案的具體實(shí)現(xiàn)包括
al.獲取所述指定映射區(qū)域中的一個(gè)映射區(qū)域,判斷是否獲取到所述映射區(qū)域,如果是,執(zhí)行步驟a2,否則結(jié)束;
a2.判斷所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段是否已被映射,^口果是,則返回執(zhí)行步驟al,否則,將創(chuàng)建或擴(kuò)展的邏輯巻映射到所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段上。
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對本發(fā)明進(jìn)一步詳細(xì)說明。
圖4為本發(fā)明利用LVM創(chuàng)建邏輯巻的工作流程圖。如圖4所示,該5克程包括以下步驟
步驟401:根據(jù)創(chuàng)建邏輯巻的請求分配一個(gè)邏輯巻對象。
同現(xiàn)有利用LVM創(chuàng)建邏輯巻一樣,當(dāng)需要?jiǎng)?chuàng)建一個(gè)邏輯巻時(shí),首先會(huì)向LVM發(fā)出創(chuàng)建邏輯巻的請求,該請求中除了包含需要?jiǎng)?chuàng)建的邏輯巻的邏輯巻號、邏輯巻大小以及邏輯巻在哪個(gè)巻組中建立等信息外,還包含了邏豐卑巻指定映射區(qū)域的各區(qū)域參數(shù),也即各區(qū)域?qū)?yīng)的物理巻號、各區(qū)域在相應(yīng)物理巻中的起始位置以及各區(qū)域大小等。
進(jìn)一步地,LVM會(huì)根據(jù)請求中的邏輯巻在哪個(gè)巻組中建立的信息獲取相應(yīng)的巻組,進(jìn)而得到相應(yīng)的巻組對象;并根據(jù)包含上述信息的請求分配一個(gè)邏輯巻對象,對其中的邏輯巻號、邏輯巻大小以及邏輯巻所在巻組號等字段賦值后,將新分配的邏輯巻對象加到與其相應(yīng)的巻組對象中的邏輯巻鏈表中。
步驟402:為邏輯巻分配第一個(gè)邏輯巻片段對象。
為了建立到物理巻片段的映射,在分配好邏輯巻對象后,還需分配一個(gè)包含邏輯巻片段在邏輯巻中的起始位置、邏輯巻片段大小、所映射的物理巻片段以及所在邏輯巻鏈表項(xiàng)等字段的邏輯巻片段對象。
步驟403-404:獲取邏輯巻指定映射區(qū)域中的尚未^皮處理過的一個(gè)映射區(qū)域,并判斷是否獲取到,如果是,執(zhí)行步驟406;否則,執(zhí)行步驟405。
當(dāng)分配好邏輯巻對象與邏輯巻片段對象后,需要獲取指定映射區(qū)域中的還沒有被處理過的一個(gè)映射區(qū)域,并判斷是否能獲取到該映射區(qū)域,如果能夠獲取到,執(zhí)行步驟406;如果不能獲取到該映射區(qū)域,說明已經(jīng)沒有未4皮處理過的映射區(qū)域了,也就是定制的空間不足,則需執(zhí)行步驟405。
步驟405:撤銷之前分配的邏輯巻對象以及邏輯巻片段對象,并以失敗結(jié)束邏輯巻的創(chuàng)建過程。
當(dāng)沒有找到指定映射區(qū)域中的未被處理過的映射區(qū)域,也即指定映射區(qū)域都已經(jīng)被處理過的時(shí)候,需要將之前分配的邏輯巻對象以及分配的所有邏輯巻片段對象進(jìn)行撤銷的操作,并以失敗結(jié)束邏輯巻映射定制的創(chuàng)建過禾呈。
步驟406 407:獲取所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段,并爭'J斷所述獲取到的物理巻片段是否已經(jīng)被映射,如果是,返回執(zhí)行步驟403;否則,執(zhí)行步驟408。
當(dāng)獲取到 一個(gè)映射區(qū)域后,還需進(jìn)一步獲取到該映射區(qū)域所對應(yīng)的物5里巻片段,這里獲取物理巻片段的過程是通過兩級掃描來實(shí)現(xiàn)的,具體實(shí);E見為首先,掃描巻組對象中的物理巻鏈表,找到所述映射區(qū)域所在的物理巻;然后,掃描物理巻對象中的物理巻片段鏈表,找到所述映射區(qū)域所對應(yīng)的物J里巻片段。
當(dāng)獲取到所述映射區(qū)域所對應(yīng)的物理巻片段后,進(jìn)一步地,判斷所迷獲取到的物理巻片段是否已經(jīng)被映射,如果該物理巻片段已經(jīng)被映射,返回才丸行步驟403;如果該物理巻片段還未被映射,則執(zhí)行步驟408。
步驟408:判斷所述獲取到的未被映射的物理巻片段是否超過獲取到的未被映射區(qū)域的范圍,如果是,執(zhí)行步驟409;否則,執(zhí)行步驟410。
當(dāng)獲取到的物理巻片段沒有被映射時(shí),還需進(jìn)一步判斷所述獲取到的4勿理巻片段是否超過了獲取到的未被映射區(qū)域所描述的范圍,如果超過了獲取到的未被映射區(qū)域所描述的范圍,執(zhí)行步驟409;如果沒有超過獲取到的未被映射區(qū)域所描述的范圍,則執(zhí)行步驟410。
步驟409:將所述獲取到的未被映射的物理巻片段進(jìn)行拆分,再執(zhí)行步驟410。
當(dāng)所述獲取到的未被映射的物理巻片段超過了獲取到的未被映射區(qū)i或所描述的范圍時(shí),需要將所述獲取到的未被映射的物理巻片段進(jìn)行拆分,乂人而獲取未被映射區(qū)域所描述范圍內(nèi)對應(yīng)的未被映射的物理巻片段,具體拆分
方式為分配一個(gè)新的物理巻片段對象,將所述獲取到的未被映射的物理巻片段大小設(shè)置為正好等于所述獲取到的未被映射區(qū)域所描述的范圍大小,而新的物理巻片段大小設(shè)置為所述獲取到的未被映射的物理巻片段大小與所述獲取到的未被映射區(qū)域所描述的范圍大小之差,同時(shí),設(shè)置兩個(gè)物理巻片段的起始位置,并將新的物理巻片段加到相應(yīng)的物理巻對象的物理巻片段鏈表中。
步驟410:判斷物理巻片段大小是否不小于未創(chuàng)建的邏輯巻大小,如果是,執(zhí)行步驟413;否則,執(zhí)行步驟411。
需要說明的是,在本實(shí)施例中,判斷物理巻片段大小與未創(chuàng)建的邏輯巻大小之間的關(guān)系有兩種情況 一是當(dāng)所述獲取到的未被映射的物理巻片段沒有超過獲取到的未被映射區(qū)域所描述的范圍時(shí),判斷的是所述獲取到的未凈皮映射的物理巻片段大小與未創(chuàng)建的邏輯巻大小之間的關(guān)系;二是當(dāng)所述獲取到的未被映射的物理巻片段超過了獲取到的未被映射區(qū)域所描述的范圍時(shí),需要將所述獲取到的未被映射的物理巻片段進(jìn)行拆分,因而判斷的是所述拆分后的物理巻片段大小與未創(chuàng)建的邏輯巻大小之間的關(guān)系。
當(dāng)判斷出物理巻片段大小不小于所述未創(chuàng)建的邏輯巻大小時(shí),執(zhí)行步驟413;反之,當(dāng)物理巻片段大小小于所述未創(chuàng)建的邏輯巻大小時(shí),則執(zhí)行步驟411。
步驟411:將邏輯巻片段與物理巻片段建立映射。
當(dāng)物理巻片段大小小于所述未創(chuàng)建的邏輯巻大小時(shí),即可將邏輯巻片#殳映射到所述物理巻片段上,具體的映射方法已為現(xiàn)有技術(shù),這里不再贅述。
需要說明的是,當(dāng)將邏輯巻片段與物理巻片段建立映射后,還需將所述建立映射后的邏輯巻片段對象加到所述分配的邏輯巻對象中的邏輯巻片賴二鏈表中。
步驟412:為創(chuàng)建的邏輯巻分配一個(gè)新的邏輯巻片段對象,并返回執(zhí)4亍
14步驟403。
步驟413:判斷物理巻片段大小是否等于未創(chuàng)建的邏輯巻大小,如果是, 執(zhí)行步驟415;否則,執(zhí)行步驟414。
當(dāng)物理巻片段大小不小于所述未創(chuàng)建的邏輯巻大小時(shí),還需進(jìn)一步判斷 所述物理巻片段大小是否等于所述未創(chuàng)建的邏輯巻大小,如果等于,執(zhí)行步 驟415;如果不等于,也即所述物理巻片段大小大于所述未創(chuàng)建的邏輯巻大 小,則執(zhí)行步驟414。
步驟414:將大于所述未創(chuàng)建的邏輯巻大小的物理巻片段進(jìn)行拆分。
當(dāng)物理巻片段大小大于所述未創(chuàng)建的邏輯巻大小時(shí),需要拆分所述物理 巻片段,具體的拆分方式同現(xiàn)有技術(shù),這里不再贅述。
步驟415:將邏輯巻片段與物理巻片段建立映射。
同步驟410—樣,在本實(shí)施例中,將邏輯巻片段與物理巻片段建立映射 也有兩種情況 一是當(dāng)物理巻片段大小等于未創(chuàng)建的邏輯巻大小時(shí),直接將 邏輯巻片段映射到所述物理巻片段上即可;二是當(dāng)物理巻片段大小大于所述 未創(chuàng)建的邏輯巻大小時(shí),需要先將物理巻片段進(jìn)行拆分,再將邏輯巻片段映 射到所述拆分后的物理巻片段上,也即此時(shí)是將邏輯巻片段與所述拆分后的 物理巻片段建立映射的。
同樣地,在將邏輯巻片段與物理巻片段建立映射后,還需將所述建立映 射后的邏輯巻片段對象加到所述分配的邏輯巻對象中的邏輯巻片段鏈表中。
步驟416:將已與邏輯巻片段建立映射的所有相鄰的物理巻片段及與所 述相鄰的物理巻片段對應(yīng)的邏輯巻片段進(jìn)行合并。
當(dāng)將邏輯巻片段與物理巻片段建立映射后,還需進(jìn)一步掃描邏輯巻對象 的邏輯巻片段鏈表中各邏輯巻片段所映射的物理巻片段,將其中相鄰的物理 巻片段進(jìn)行合并,同時(shí),將所述相鄰的物理巻片段所對應(yīng)的邏輯巻片段也進(jìn) 行合并。
至此,即完成了本發(fā)明所述創(chuàng)建邏輯巻的整個(gè)過程,也即完成了在創(chuàng)建 邏輯巻時(shí)能夠利用LVM實(shí)現(xiàn)映射定制的整個(gè)過程。圖5為本發(fā)明利用LVM擴(kuò)展邏輯巻的工作流程圖。如圖5所示,該流 程包括以下步驟
步驟501:根據(jù)擴(kuò)展邏輯巻的請求得到需要擴(kuò)展的邏輯巻對象。
同現(xiàn)有利用LVM擴(kuò)展邏輯巻一樣,當(dāng)需要擴(kuò)展一個(gè)邏輯巻時(shí),會(huì)向 LVM發(fā)出擴(kuò)展邏輯巻的請求,該請求中不僅包含了需要擴(kuò)展的邏輯巻的邏 輯巻號、需要擴(kuò)展的邏輯巻大小等信息,而且還包含了需要擴(kuò)展的邏輯巻所 指定映射區(qū)域的各區(qū)域參數(shù),也即各區(qū)域?qū)?yīng)的物理巻號、各區(qū)域在相應(yīng)物 理巻中的起始位置以及各區(qū)域大小等。
進(jìn)一步地,LVM會(huì)根據(jù)請求中的邏輯巻號得到對應(yīng)需要擴(kuò)展的邏輯巻, 并根據(jù)相應(yīng)邏輯巻對象中的邏輯巻所在巻組號得到需要擴(kuò)展的邏輯巻所在 的巻組。
步驟502:為需要擴(kuò)展的邏輯巻分配第一個(gè)邏輯巻片段對象。 其具體分配操作同現(xiàn)有擴(kuò)展過程中的步驟304。
步驟503 504:獲取需要擴(kuò)展的邏輯巻所指定映射區(qū)域中的尚未被處理 過的一個(gè)映射區(qū)域,并判斷是否能獲取到該映射區(qū)域,如果能夠獲取到,執(zhí) 行步驟506;如果獲取不到,說明所有指定的映射區(qū)域已經(jīng)都被處理過了 , 也就是定制的空間不足,則需執(zhí)行步驟505。
步驟505:撤銷之前分配的邏輯巻片段對象,并以失敗結(jié)束邏輯巻的擴(kuò) 展過程。
同創(chuàng)建過程不一樣的是,在本實(shí)施例中,當(dāng)沒有獲取到指定映射區(qū)域中 的映射區(qū)域,也即指定映射區(qū)域都已經(jīng)被處理過的時(shí)候,由于之前并沒有分 配邏輯巻對象,因此,只需將分配的所有邏輯巻片段對象進(jìn)行撤銷后,即以 失敗結(jié)束邏輯巻映射定制的擴(kuò)展過程。
步驟506 507:獲取所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段,并判 斷所述獲取到的物理巻片段是否已經(jīng)被映射,如果已經(jīng)被映射,返回執(zhí)行步 驟503;如果該物理巻片段還未被映射,則4丸行步驟508。
步驟508:判斷所述獲取到的未被映射的物理巻片段是否超過獲取到的
16映射區(qū)域的范圍,如果超過了獲取到的映射區(qū)域所描述的范圍,執(zhí)行步-驟
509;如果沒有超過獲取到的映射區(qū)域所描述的范圍,則執(zhí)行步驟510。
步驟509:當(dāng)所述獲取到的未被映射的物理巻片段超過了獲取到的映射 區(qū)域所描述的范圍時(shí),則將所述獲取到的未被映射的物理巻片段進(jìn)行拆分, 從而獲取映射區(qū)域所描述范圍內(nèi)對應(yīng)的未被映射的物理巻片段。
步驟510:判斷物理巻片段大小是否不小于剩余未擴(kuò)展的邏輯巻大小, 如果是,執(zhí)行步驟513;否則,執(zhí)行步驟5U。
與創(chuàng)建邏輯巻一樣,在本實(shí)施例中,判斷物理巻片段大小與剩余未擴(kuò)展 的邏輯巻大小之間的關(guān)系同樣有兩種情況 一是當(dāng)所述獲取到的未被映射的 物理巻片段沒有超過獲取到的映射區(qū)域所描述的范圍時(shí),判斷的是所述獲取 到的未被映射的物理巻片段大小與剩余未擴(kuò)展的邏輯巻大小之間的關(guān)系;二 是當(dāng)所述獲取到的未被映射的物理巻片段超過了獲取到的映射區(qū)域所描述 的范圍時(shí),需要將所述獲取到的未被映射的物理巻片段進(jìn)行拆分,因此判斷 的是所述拆分后的物理巻片段大小與剩余未擴(kuò)展的邏輯巻大小之間的關(guān)系。
當(dāng)判斷出物理巻片段大小不小于所述剩余未擴(kuò)展的邏輯巻大小時(shí),執(zhí)行 步驟513;反之,當(dāng)物理巻片段大小小于所述剩余未擴(kuò)展的邏輯巻大小時(shí), 則需執(zhí)行步驟511。
步驟511:將邏輯巻片段與物理巻片段建立映射。
當(dāng)物理巻片段大小小于所述剩余未擴(kuò)展的邏輯巻大小時(shí),需要將邏輯巻 片段直接映射到所述物理巻片段上,也即將邏輯巻片段與物理巻片段建立映 射。進(jìn)一步地,還需將所迷建立映射后的邏輯巻片段對象加到所述需要擴(kuò)展 的邏輯巻對象中的邏輯巻片段鏈表中。
步驟512:為需要擴(kuò)展的邏輯巻分配一個(gè)新的邏輯巻片段對象,并返回 執(zhí)行步驟503。
步驟513:判斷物理巻片段大小是否等于所述剩余未擴(kuò)展的邏輯巻大小, 如果是,執(zhí)行步驟515;否則,執(zhí)行步驟514。
當(dāng)物理巻片段大小不小于所述剩余未擴(kuò)展的邏輯巻大小時(shí),還需進(jìn)一步判斷所述物理巻片段大小是否等于所述剩余未擴(kuò)展的邏輯巻大小,如果等
于,執(zhí)行步驟515;如果不等于,也即所述物理巻片段大小大于所述剩余未 擴(kuò)展的邏輯巻大小,則執(zhí)行步驟514。
步驟514:將大于所述剩余未擴(kuò)展的邏輯巻大小的物理巻片段進(jìn)行拆分。
步驟515:將邏輯巻片段與物理巻片段建立映射。
同創(chuàng)建邏輯巻一樣,在本實(shí)施例中,將邏輯巻片段與物理巻片段建立映 射也分為兩種情況 一是當(dāng)物理巻片段大小等于所述剩余未擴(kuò)展的邏輯巻大 小時(shí),直接將邏輯巻片段映射到所述物理巻片段上即可;二是當(dāng)物理巻片,更 大小大于所述剩余未擴(kuò)展的邏輯巻大小時(shí),則需先將物理巻片段進(jìn)行拆分, 再將邏輯巻片段映射到所述拆分后的物理巻片段上,也即將邏輯巻片段與所 述拆分后的物理巻片段建立映射。
在將邏輯巻片段與物理巻片段建立映射后,還需將所述建立映射后的邏 輯巻片段對象加到所述需要擴(kuò)展的邏輯巻對象的邏輯巻片段鏈表中。
步驟516:將已與邏輯巻片段建立映射的所有相鄰的物理巻片段及與所 述相鄰的物理巻片段對應(yīng)的邏輯巻片段進(jìn)行合并。
至此,即完成了本發(fā)明所述擴(kuò)展邏輯巻的整個(gè)過程,也即完成了在擴(kuò)展 邏輯巻時(shí)能夠利用LVM實(shí)現(xiàn)映射定制的整個(gè)過程。
總之,本發(fā)明所采用實(shí)現(xiàn)LVM映射定制的方法,通過預(yù)先設(shè)置創(chuàng)建或 擴(kuò)展的邏輯巻的指定映射區(qū)域,從而使得在創(chuàng)建或擴(kuò)展邏輯巻時(shí),能夠?qū)⑺?述創(chuàng)建或擴(kuò)展的邏輯巻映射到滿足條件的指定映射區(qū)域所對應(yīng)的物理巻片 段上,也即能夠根據(jù)需求創(chuàng)建或擴(kuò)展邏輯巻,從而使得創(chuàng)建或擴(kuò)展邏輯巻時(shí) 的映射搡作更加靈活。
綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的 保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改 進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種實(shí)現(xiàn)邏輯盤卷管理LVM映射定制的方法,其特征在于,預(yù)先設(shè)置指定映射區(qū)域,該方法包括a1.獲取所述指定映射區(qū)域中的一個(gè)映射區(qū)域,判斷是否獲取到所述映射區(qū)域,如果是,執(zhí)行步驟a2,否則,以失敗結(jié)束創(chuàng)建或擴(kuò)展邏輯卷的操作;a2.判斷所述獲取到的映射區(qū)域所對應(yīng)的物理卷片段是否已被映射,如果是,則返回執(zhí)行步驟a1,否則,將創(chuàng)建或擴(kuò)展的邏輯卷映射到所述獲取到的映射區(qū)域所對應(yīng)的物理卷片段上。
2、 如權(quán)利要求1所述的方法,其特征在于,所述步驟al之前該方法還包 括為所述創(chuàng)建或擴(kuò)展的邏輯巻分配第一個(gè)邏輯巻片段對象的步驟。
3、 如權(quán)利要求2所述的方法,其特征在于,步驟a2中所述將創(chuàng)建或擴(kuò)展 的邏輯巻映射到所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段上之前該方法還包 括的映射區(qū)域所描述的范圍,如果是,則拆分所述獲取到的映射區(qū)域所對應(yīng)的物 理巻片段,再將所述創(chuàng)建或擴(kuò)展的邏輯巻映射到所述拆分后的物理巻片段上; 否則,直接將所述創(chuàng)建或擴(kuò)展的邏輯巻映射到所述獲取到的映射區(qū)域所對應(yīng)的 物理巻片段上。
4、 如權(quán)利要求3所述的方法,其特征在于,步驟a3中所述將所述創(chuàng)建或 擴(kuò)展的邏輯巻映射到所述拆分后的物理巻片段上、或所述直接將所述創(chuàng)建或擴(kuò)包括a4.判斷所述拆分后的物理巻片段、或所述獲取到的映射區(qū)域所對應(yīng)的物理 巻片段大小是否不小于未創(chuàng)建或未擴(kuò)展的邏輯巻大小,如果是,執(zhí)行步驟a5, 否則,將所述創(chuàng)建或擴(kuò)展的邏輯巻映射到所述拆分后的物理巻片段上、或所述 獲取到的映射區(qū)域所對應(yīng)的物理巻片段上;a5.判斷所述拆分后的物理巻片段、或所述荻取到的映射區(qū)域所對應(yīng)的啦7 理巻片段大小是否等于未創(chuàng)建或未擴(kuò)展的邏輯巻大小,如果是,將所迷創(chuàng)建或 擴(kuò)展的邏輯巻映射到所述拆分后的物理巻片段上、或所述獲取到的映射區(qū)域所 對應(yīng)的物理巻片段上,否則,對所述拆分后的物理巻片段、或所述獲取到的映 射區(qū)域所對應(yīng)的物理巻片段進(jìn)行拆分后,再與所述創(chuàng)建或擴(kuò)展的邏輯巻建立映 射。
5、 如權(quán)利要求4所述的方法,其特征在于,步驟a4中所述將所述創(chuàng)建或 擴(kuò)展的邏輯巻映射到所述拆分后的物理巻片段上、或所述獲取到的映射區(qū)域^斤 對應(yīng)的物理巻片段上之后該方法還包括為所述創(chuàng)建或擴(kuò)展的邏輯巻分配一個(gè)^斤 的邏輯巻片段對象的步驟。
6、 如權(quán)利要求5所述的方法,其特征在于,步驟al中當(dāng)沒有獲取到所述 映射區(qū)域時(shí),所述以失敗結(jié)束創(chuàng)建或擴(kuò)展邏輯巻的搮作之前該方法還包括將所 述分配的邏輯巻片段對象進(jìn)行撤銷的步驟。
7、 如權(quán)利要求6所述的方法,其特征在于,將創(chuàng)建或擴(kuò)展的邏輯巻映射到 物理巻片段上是通過將所述分配的邏輯巻片段映射到所述物理巻片段上的。
8、 如權(quán)利要求2所述的方法,其特征在于,步驟a2中所述將創(chuàng)建或擴(kuò)展 的邏輯巻映射到所述獲取到的映射區(qū)域所對應(yīng)的物理巻片段上之后該方法還包 括將所述分配的邏輯巻片段對象加到所述創(chuàng)建或擴(kuò)展的邏輯巻對象的邏輯巻 片段鏈表中。
9、 如權(quán)利要求8所述的方法,其特征在于,所述將所述分配的邏輯巻片賴二 對象加到所述創(chuàng)建或擴(kuò)展的邏輯巻對象的邏輯巻片段鏈表中之后該方法還包 括將與所述創(chuàng)建或擴(kuò)展的邏輯巻建立映射后的所有相鄰的物理巻片段、以及 與所述相鄰的物理巻片段對應(yīng)的邏輯巻片段進(jìn)行合并。
10、 如權(quán)利要求9所述的方法,其特征在于,當(dāng)所述創(chuàng)建或擴(kuò)展的邏輯巻 為創(chuàng)建邏輯巻時(shí),所述為創(chuàng)建的邏輯巻分配第一個(gè)邏輯巻片段對象之前該方法 還包括為所述創(chuàng)建的邏輯巻分配一個(gè)邏輯巻對象的步驟。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)邏輯盤卷管理LVM映射定制的方法,包括預(yù)先設(shè)置指定映射區(qū)域,獲取所述指定映射區(qū)域中的一個(gè)未被處理的映射區(qū)域,判斷是否獲取到所述映射區(qū)域,如果沒有獲取到,即結(jié)束創(chuàng)建或擴(kuò)展邏輯卷的過程;如果獲取到,則進(jìn)一步判斷所述獲取到的映射區(qū)域所對應(yīng)的物理卷片段是否已經(jīng)被映射,如果是,則返回執(zhí)行獲取所述指定映射區(qū)域中的一個(gè)未被處理的映射區(qū)域的操作,否則,將所述創(chuàng)建或擴(kuò)展的邏輯卷映射到所述獲取到的映射區(qū)域所對應(yīng)的物理卷片段上。應(yīng)用本發(fā)明所述的方法,能夠根據(jù)需求創(chuàng)建或擴(kuò)展邏輯卷,從而使得創(chuàng)建或擴(kuò)展邏輯卷時(shí)的映射操作更加靈活。
文檔編號G06F3/06GK101625628SQ20091009131
公開日2010年1月13日 申請日期2009年8月17日 優(yōu)先權(quán)日2009年8月17日
發(fā)明者宋振華 申請人:宋振華