一種擴(kuò)展虛擬機(jī)磁盤空間的方法、裝置及虛擬機(jī)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬化技術(shù)領(lǐng)域,特別是涉及一種擴(kuò)展虛擬機(jī)磁盤空間的方法、裝置及虛擬機(jī)系統(tǒng)。
【背景技術(shù)】
[0002]近年來虛擬化技術(shù)迅猛發(fā)展,在人們?nèi)粘9ぷ骱蜕钪幸驯粡V泛應(yīng)用。計(jì)算機(jī)資源(例如中央處理器(Central Processing Unit, CPU)、內(nèi)存、網(wǎng)絡(luò)卡數(shù)量、存儲(chǔ)容量等)虛擬化之后,人們對(duì)計(jì)算機(jī)資源的使用方式也發(fā)生了較大的變化,對(duì)于計(jì)算機(jī)資源都是按需申請(qǐng)、按需使用的,即為需要多少資源就申請(qǐng)多少,隨著業(yè)務(wù)量的增加再不斷的擴(kuò)容。
[0003]隨著技術(shù)發(fā)展,對(duì)計(jì)算機(jī)資源擴(kuò)展的需求也越來越多。虛擬機(jī)資源動(dòng)態(tài)調(diào)整成為虛擬化的關(guān)鍵技術(shù)之一。目前,業(yè)界已經(jīng)實(shí)現(xiàn)了在虛擬化資源管理器(Virtual ResourceManager,VRM)完成對(duì)CPU、內(nèi)存、網(wǎng)卡的擴(kuò)展,不需要終端用戶的參與。但是,對(duì)虛擬機(jī)磁盤空間的擴(kuò)展(例如,當(dāng)前虛擬機(jī)D盤空間為20G,隨著需求增加,希望擴(kuò)展至30G)還存在一定的技術(shù)困難。
[0004]現(xiàn)有技術(shù)中,對(duì)于虛擬機(jī)數(shù)據(jù)盤的擴(kuò)展,通常的方法為:先在VRM增加磁盤存儲(chǔ)設(shè)備,然后在終端用戶的虛擬機(jī)中,使用第三方磁盤管理工具,修改虛擬機(jī)的磁盤分區(qū)表,從而實(shí)現(xiàn)擴(kuò)展虛擬機(jī)磁盤空間的目的。
[0005]但是,現(xiàn)有技術(shù)中擴(kuò)展虛擬機(jī)數(shù)據(jù)盤空間的方法,操作較復(fù)雜,需要虛擬機(jī)用戶具備較高的專業(yè)技能才能完成,因此可實(shí)施性較差;同時(shí),現(xiàn)有技術(shù)還不能實(shí)現(xiàn)對(duì)虛擬機(jī)系統(tǒng)盤的空間擴(kuò)展。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供了一種擴(kuò)展虛擬機(jī)磁盤空間的方法、裝置及虛擬機(jī)系統(tǒng),能夠直接由虛擬化資源管理器實(shí)現(xiàn)對(duì)虛擬機(jī)的數(shù)據(jù)盤和系統(tǒng)盤的空間擴(kuò)展,該方法操作簡(jiǎn)單,可實(shí)施性較強(qiáng)。
[0007]第一方面,提供一種擴(kuò)展虛擬機(jī)磁盤空間的方法,所述方法包括:
[0008]關(guān)閉待擴(kuò)展磁盤的虛擬機(jī);
[0009]為所述虛擬機(jī)分配目標(biāo)磁盤,所述目標(biāo)磁盤的空間大小等于所述虛擬機(jī)所需磁盤空間的期望值;
[0010]將所述虛擬機(jī)的當(dāng)前磁盤中的數(shù)據(jù)文件完全復(fù)制到所述目標(biāo)磁盤上;
[0011]調(diào)用磁盤擴(kuò)展工具修改所述目標(biāo)磁盤的主引導(dǎo)記錄MBR以及磁盤文件系統(tǒng),以便識(shí)別所述目標(biāo)磁盤的空間大?。?br>[0012]建立所述目標(biāo)磁盤與所述虛擬機(jī)之間的關(guān)聯(lián),并釋放所述虛擬機(jī)的當(dāng)前磁盤。
[0013]在第一方面的第一種可能的實(shí)現(xiàn)方式中,為所述虛擬機(jī)分配目標(biāo)磁盤包括:向存儲(chǔ)資源池申請(qǐng)空間大小等于所述期望值的目標(biāo)磁盤。
[0014]在第一方面的第二種可能的實(shí)現(xiàn)方式中,為所述虛擬機(jī)分配目標(biāo)磁盤包括:向所述存儲(chǔ)資源池申請(qǐng)擴(kuò)展磁盤,所述擴(kuò)展磁盤的空間大小等于所述期望值與所述當(dāng)前磁盤空間大小的差值;合并所述虛擬機(jī)的當(dāng)前磁盤和所述擴(kuò)展磁盤,作為所述虛擬機(jī)的目標(biāo)磁盤。
[0015]結(jié)合第一方面和第一方面上述任何一種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述調(diào)用磁盤擴(kuò)展工具修改所述目標(biāo)磁盤的主引導(dǎo)記錄MBR文件以及磁盤文件系統(tǒng)分區(qū)表包括:
[0016]修改所述目標(biāo)磁盤的MBR文件中主引導(dǎo)扇區(qū)對(duì)應(yīng)的分區(qū)表項(xiàng)的結(jié)束標(biāo)識(shí)字,使得修改后的結(jié)束標(biāo)識(shí)字對(duì)應(yīng)的磁盤空間大小等于所述期望值;
[0017]修改所述目標(biāo)磁盤的啟動(dòng)$Boot文件中主引導(dǎo)扇區(qū)包括的分區(qū)數(shù)目,使得修改后的主引導(dǎo)扇區(qū)包括的分區(qū)數(shù)目對(duì)應(yīng)的磁盤空間大小等于所述期望值;
[0018]將所述修改后的$Boot文件備份到所述目標(biāo)磁盤的最后一個(gè)分區(qū)中;
[0019]修改所述目標(biāo)磁盤的位圖$Bitmap文件和主文件表MFT記錄。
[0020]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述修改所述目標(biāo)磁盤的位圖文件$Bitmap文件和主文件表MFT記錄包括:
[0021]在所述修改后的$Boot文件的主引導(dǎo)扇區(qū)中查找得到所述MFT記錄的起始位置;
[0022]結(jié)合所述MFT記錄的起始位置,找到所述MFT記錄的第六項(xiàng)的位置,其中,所述MFT記錄的第六項(xiàng)用于存儲(chǔ)所述$Bitmap的屬性信息;
[0023]讀取所述MFT記錄的第六項(xiàng)中存儲(chǔ)的$Bitmap屬性信息,獲取所述$Bitmap的數(shù)據(jù)DATA屬性頭和簇流列表信息;
[0024]分別對(duì)所述$Bitmap的DATA屬性頭的屬性字段和簇流列表信息進(jìn)行修改;
[0025]修改所述$Bitmap的文件內(nèi)容。
[0026]結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述對(duì)所述$Bitmap的DATA屬性頭的屬性字段進(jìn)行修改包括:
[0027]修改后的簇流的結(jié)束虛擬簇號(hào)highest_vcn等于所述目標(biāo)磁盤的$Bitmap數(shù)據(jù)區(qū)的總簇?cái)?shù)減I ;其中,所述$Bitmap數(shù)據(jù)區(qū)是用于存放$Bitmap文件的磁盤空間;
[0028]修改后的為$Bitmap的屬性信息分配的空間字節(jié)數(shù)的大小allocated_size等于對(duì)所述目標(biāo)磁盤的$Bitmap數(shù)據(jù)區(qū)的字節(jié)數(shù)做按簇向上取整運(yùn)算的結(jié)果值;
[0029]修改后的$Bitmap的屬性信息實(shí)際占用的空間字節(jié)數(shù)的大小data_size等于對(duì)所述目標(biāo)磁盤的$Bitmap數(shù)據(jù)區(qū)的字節(jié)數(shù)做按字節(jié)向上取整運(yùn)算的結(jié)果值;
[0030]修改后的$Bitmap的屬性信息的初始大小initialized_size等于所述data_Size0
[0031]結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第六種可能的實(shí)現(xiàn)方式中,所述對(duì)所述$Bitmap的DATA屬性頭的簇流列表信息進(jìn)行修改包括:
[0032]修改后的所述DATA屬性頭的邏輯簇號(hào)Icn等于所述虛擬機(jī)的當(dāng)前磁盤的$Bitmap數(shù)據(jù)區(qū)對(duì)應(yīng)的總簇?cái)?shù)加I ;
[0033]修改后的所述DATA屬性頭的長(zhǎng)度length等于所述目標(biāo)磁盤的$Bitmap數(shù)據(jù)區(qū)對(duì)應(yīng)的總簇?cái)?shù)。
[0034]第二方面,還提供一種擴(kuò)展虛擬機(jī)磁盤空間的裝置,所述裝置包括:
[0035]虛擬機(jī)控制單元,用于關(guān)閉待擴(kuò)展磁盤的虛擬機(jī);
[0036]磁盤分配單元,用于為所述虛擬機(jī)分配目標(biāo)磁盤,所述目標(biāo)磁盤的空間大小等于所述虛擬機(jī)所需磁盤空間的期望值;
[0037]文件復(fù)制單元,用于將所述虛擬機(jī)的當(dāng)前磁盤中的數(shù)據(jù)文件完全復(fù)制到所述目標(biāo)磁盤上;
[0038]文件修改單元,用于調(diào)用磁盤擴(kuò)展工具修改所述目標(biāo)磁盤的主引導(dǎo)記錄MBR以及磁盤文件系統(tǒng),以便識(shí)別所述目標(biāo)磁盤的空間大小;
[0039]磁盤關(guān)聯(lián)單元,用于建立所述目標(biāo)磁盤與所述待擴(kuò)展磁盤的虛擬機(jī)之間的關(guān)聯(lián),并釋放所述待擴(kuò)展磁盤的虛擬機(jī)的當(dāng)前磁盤。
[0040]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述磁盤分配單元包括:第一申請(qǐng)子單元,用于向存儲(chǔ)資源池申請(qǐng)空間大小等于所述期望值的目標(biāo)磁盤。
[0041]在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述磁盤分配單元包括:第二申請(qǐng)子單元,用于向所述存儲(chǔ)資源池申請(qǐng)擴(kuò)展磁盤,所述擴(kuò)展磁盤的空間大小等于所述期望值與所述當(dāng)前磁盤空間大小的差值;
[0042]磁盤合并子單元,用于合并所述虛擬機(jī)的當(dāng)前磁盤和所述擴(kuò)展磁盤,作為所述虛擬機(jī)的目標(biāo)磁盤。
[0043]結(jié)合第二方面和第二方面上述任何一種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述文件修改單元包括:
[0044]第一修改子單元,用于修改所述目標(biāo)磁盤的MBR文件中主引導(dǎo)扇區(qū)對(duì)應(yīng)的分區(qū)表項(xiàng)的結(jié)束標(biāo)識(shí)字,使得修改后的結(jié)束標(biāo)識(shí)字對(duì)應(yīng)的磁盤空間大小等于所述期望值;
[0045]第二修改子單元,用于修改所述目標(biāo)磁盤的啟動(dòng)$Boot文件中主引導(dǎo)扇區(qū)包括的分區(qū)數(shù)目,使得修改后的主引導(dǎo)扇區(qū)包括的分區(qū)數(shù)目對(duì)應(yīng)的磁盤空間大小等于所述期望值;
[0046]文件轉(zhuǎn)移子單元,用于將所述修改后的$Boot文件備份到所述目標(biāo)磁盤的最后一個(gè)分區(qū)中;
[0047]第三修改子單元,用于修改所述目標(biāo)磁盤的位圖$Bitmap文件和主文件表MFT記錄。
[0048]第三方面,提供一種虛擬化資源管理器,所述虛擬化資源管理器包括:如第二方面和第二方面任何一種可能的實(shí)現(xiàn)方式所述的擴(kuò)展虛擬機(jī)磁盤空間的裝置。
[0049]第四方面,提供一種虛擬機(jī)系統(tǒng),所述系統(tǒng)包括:如第三方面所述的虛擬化資源管理器、至少一臺(tái)虛擬化主機(jī)以及存儲(chǔ)資源池;其中,每臺(tái)所述虛擬化主機(jī)可以虛擬得到至少一個(gè)虛擬機(jī)
[0050]本發(fā)明實(shí)施例中,當(dāng)需要對(duì)某個(gè)虛擬機(jī)的磁盤空間進(jìn)行擴(kuò)展時(shí),直接由VRM為該虛擬機(jī)申請(qǐng)期望大小的目標(biāo)磁盤,并由所述VRM直接調(diào)用磁盤擴(kuò)展工具對(duì)所述目標(biāo)磁盤的相關(guān)文件進(jìn)行修改,以實(shí)現(xiàn)VRM對(duì)目標(biāo)磁盤的空間大小的識(shí)別,由此即可實(shí)現(xiàn)對(duì)虛擬機(jī)的磁盤空間的擴(kuò)展。由此可見,本發(fā)明實(shí)施例所述方法簡(jiǎn)便易操作,且不需要用戶親自進(jìn)行文件修改操作,其可實(shí)施性較高,易于實(shí)現(xiàn)。
【附圖說明】
[0051]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0052]圖1為本發(fā)明實(shí)施例所述方法具體實(shí)施的系統(tǒng)架構(gòu)圖;
[0053]圖2為本發(fā)明實(shí)施例一