云計(jì)算中虛擬桌面存儲(chǔ)動(dòng)態(tài)分配的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及虛擬系統(tǒng),具體是指一種云計(jì)算中虛擬桌 面存儲(chǔ)動(dòng)態(tài)分配的系統(tǒng)及方法。
【背景技術(shù)】
[0002] (1)虛擬桌面存儲(chǔ)介紹
[0003] 云桌面系統(tǒng)為客戶提供的是云桌面服務(wù),系統(tǒng)可以根據(jù)用戶的要求創(chuàng)建桌面,并 分配桌面給用戶使用。而桌面的創(chuàng)建和運(yùn)行(在虛擬化服務(wù)器上運(yùn)行)除了需要服務(wù)器的 CHJ和內(nèi)存資源外,還需要為其分配物理存儲(chǔ)資源來保存桌面的操作系統(tǒng)(Guest OS)和桌 面中用戶自己的數(shù)據(jù)。而為了給虛擬桌面分配存儲(chǔ),大多數(shù)云桌面系統(tǒng)采用鏡像文件的方 式。系統(tǒng)為每個(gè)桌面創(chuàng)建一個(gè)或多個(gè)鏡像文件,如一個(gè)鏡像文件用于保存虛擬桌面的操作 系統(tǒng),其它鏡像文件用于保存用戶的數(shù)據(jù)等。同時(shí)為了共享存儲(chǔ),提高存儲(chǔ)資源的利用率, 大多數(shù)系統(tǒng)的采用的鏡像文件格式都支持動(dòng)態(tài)增長特性,如VmWare的VMDK,Qemu的QC0W2, QED,Hyper-V的VHD等。動(dòng)態(tài)增長的鏡像文件所占物理存儲(chǔ)的實(shí)際大小并不是固定不變 的。當(dāng)創(chuàng)建這種鏡像文件時(shí),由于里面沒有保存任何數(shù)據(jù),因此其實(shí)際所占物理存儲(chǔ)大小可 能只有幾兆,只有當(dāng)往鏡像文件保存數(shù)據(jù)時(shí),文件的大小才逐漸隨著保存內(nèi)容的增多而自 動(dòng)(動(dòng)態(tài))增大。
[0004] (2)鏈接式克隆技術(shù)(link clone)
[0005] 大多數(shù)虛擬化系統(tǒng)使用的鏡像文件都支持鏈接式克隆技術(shù),可以把每個(gè)桌面都需 要的相同操作系統(tǒng)制作成支持鏈接式克隆技術(shù)的母鏡像。這樣在創(chuàng)建桌面時(shí),將會(huì)新創(chuàng)建 一個(gè)空的鏡像文件,并把空的鏡像文件與存放操作系統(tǒng)的母鏡像文件鏈接起來。鏈接的效 果從桌面中看就是磁盤分區(qū)(如C盤)已經(jīng)帶有操作系統(tǒng)了。這樣桌面運(yùn)行時(shí),所有對操 作系統(tǒng)的訪問,將從母鏡像讀??;當(dāng)桌面需要修改這個(gè)磁盤時(shí),所有修改數(shù)據(jù)保存在空的鏡 像文件中。母鏡像是只讀的,這樣支持多個(gè)桌面的鏡像文件鏈接到同一個(gè)母鏡像。
[0006] (3)存儲(chǔ)擴(kuò)容
[0007] 隨著系統(tǒng)中創(chuàng)建的桌面數(shù)越來越多,以及桌面鏡像文件的不斷增大,可用的物理 存儲(chǔ)不斷減少,直到達(dá)到某一警戒線,存儲(chǔ)需要擴(kuò)容。存儲(chǔ)擴(kuò)容有兩種方式(如圖Ia及圖 Ib所示),一種是在原存儲(chǔ)的基礎(chǔ)增加磁盤,擴(kuò)大原存儲(chǔ)的容量,同時(shí)擴(kuò)展原存儲(chǔ)的文件系 統(tǒng)到新增磁盤上;另一種方式是新增存儲(chǔ)作為一單獨(dú)存儲(chǔ),并在其上創(chuàng)建新文件系統(tǒng),原文 件系統(tǒng)無需擴(kuò)展。第一種方式中存儲(chǔ)的擴(kuò)容是有限制的,首先它受文件系統(tǒng)最大大小的限 制,所有的文件系統(tǒng)可管理的空間大小都有限制的。如GFS2集群文件系統(tǒng)理論容量支持 8EB,但實(shí)際支持100TB。而且隨著文件系統(tǒng)的不斷增大,性能將不斷降低。因此,云桌面系 統(tǒng)基本上都支持第二種方式擴(kuò)容。
[0008] (4)多存儲(chǔ)下虛擬桌面的存儲(chǔ)分配
[0009] 由上可見,隨著系統(tǒng)虛擬桌面的增加以及鏡像文件的增多,許多系統(tǒng)存儲(chǔ)擴(kuò)容時(shí) 將采用第二種方式。而在多存儲(chǔ)的系統(tǒng)中,創(chuàng)建虛擬機(jī)桌面時(shí)需要為桌面鏡像文件選擇所 用的存儲(chǔ)??梢允枪芾韱T手工選擇的,也可以通過程序中制定的策略和算法自動(dòng)選擇。不 同的系統(tǒng)使用不同的方式來選擇存儲(chǔ)。由于鏡像文件的動(dòng)態(tài)增長特性,因此不能簡單的根 據(jù)各存儲(chǔ)的空閑空間大小來分配內(nèi)存,算法需要解決下列幾個(gè)問題:
[0010] (4. 1)假設(shè)某個(gè)存儲(chǔ)的物理大小為1T,已在這個(gè)存儲(chǔ)上創(chuàng)建了 4個(gè)桌面,每個(gè)桌面 要求的鏡像文件的大小為250G,這樣4個(gè)桌面總共要求的存儲(chǔ)大小剛好為1T,可由于鏡像 文件的支持動(dòng)態(tài)增長,實(shí)際上每個(gè)鏡像文件占用的物理存儲(chǔ)大小沒有250G,可能只有很小 的幾十兆(剛創(chuàng)建時(shí),沒有數(shù)據(jù)保存在里面)。在這種情況下,是否還可以在這個(gè)存儲(chǔ)上創(chuàng) 建新的桌面。如果不允許,則存儲(chǔ)將空閑許多空間,無法充分利用;如果允許,也需要考慮桌 面申請的存儲(chǔ)與空閑存儲(chǔ)的關(guān)系,不能在存儲(chǔ)空閑的情況下無限制的創(chuàng)建桌面。不然,隨著 桌面的使用,鏡像文件大小的不斷增加,很快存儲(chǔ)上的所有空間將被占滿,桌面必須頻繁的 在不同存儲(chǔ)上迀移,影響用戶的桌面體驗(yàn)和系統(tǒng)的穩(wěn)定。
[0011] (4. 2)假設(shè)有兩個(gè)存儲(chǔ),總大小相同,剩余的空間大小也相同,但每個(gè)存儲(chǔ)上桌面 申請的存儲(chǔ)大小不一樣,如第一個(gè)存儲(chǔ)中的所有桌面要求使用IT空間,而第二個(gè)存儲(chǔ)中的 所有桌面要求使用1.25T空間。那在這種情況下算法要能夠選擇第一個(gè)存儲(chǔ)作為正確的選 擇,而不是由于空閑大小一樣隨機(jī)選擇一個(gè)存儲(chǔ)作為下一個(gè)桌面創(chuàng)建的存儲(chǔ)。
[0012] (4.3)當(dāng)存儲(chǔ)的總大小,空閑大小,存儲(chǔ)中各個(gè)桌面要求的空間大小都不同時(shí),算 法要能考慮到這三方面,計(jì)算的結(jié)果能夠有效地選擇正確的存儲(chǔ)。
【發(fā)明內(nèi)容】
[0013] 本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種能夠?yàn)樘摂M桌面分配不 同的存儲(chǔ)、使各存儲(chǔ)空間得到均衡有效使用、提高存儲(chǔ)空間的利用率和虛擬機(jī)的磁盤IO性 能的云計(jì)算中虛擬桌面存儲(chǔ)動(dòng)態(tài)分配的系統(tǒng)及方法。
[0014] 為了實(shí)現(xiàn)上述目的,本發(fā)明的云計(jì)算中虛擬桌面存儲(chǔ)動(dòng)態(tài)分配的系統(tǒng)及方法具有 如下構(gòu)成:
[0015] 該云計(jì)算中虛擬桌面存儲(chǔ)動(dòng)態(tài)分配的系統(tǒng),其主要特點(diǎn)是,所述的系統(tǒng)包括:
[0016] 數(shù)據(jù)采集模塊,用以獲取各個(gè)存儲(chǔ)的相關(guān)參數(shù);
[0017] 數(shù)據(jù)模塊,用以保存數(shù)據(jù)采集模塊獲取的各個(gè)存儲(chǔ)的相關(guān)參數(shù);
[0018] 計(jì)算模塊,用以根據(jù)所述的數(shù)據(jù)模塊獲取的相關(guān)參數(shù)計(jì)算各個(gè)存儲(chǔ)的最大可申請 空間,并返回所述的最大可申請空間大于〇的存儲(chǔ);以及計(jì)算待創(chuàng)建的虛擬桌面在各個(gè)存 儲(chǔ)創(chuàng)建時(shí),各個(gè)存儲(chǔ)的空間申請率;
[0019] 執(zhí)行模塊,用以根據(jù)該各個(gè)存儲(chǔ)的空間申請率選擇空間申請率最小的存儲(chǔ)創(chuàng)建該 待創(chuàng)建的虛擬桌面。
[0020] 本發(fā)明還涉及一種云計(jì)算中虛擬桌面存儲(chǔ)動(dòng)態(tài)分配方法,其主要特點(diǎn)是,所述的 方法包括以下步驟:
[0021] (1)所述的數(shù)據(jù)模塊通過所述的數(shù)據(jù)采集模塊獲取各個(gè)存儲(chǔ)的相關(guān)參數(shù);
[0022] (2)所述的計(jì)算模塊根據(jù)所述的數(shù)據(jù)模塊獲取的相關(guān)參數(shù)計(jì)算各個(gè)存儲(chǔ)的最大可 申請空間,并返回所述的最大可申請空間大于0的存儲(chǔ);
[0023] (3)所述的計(jì)算模塊計(jì)算待創(chuàng)建的虛擬桌面在各個(gè)存儲(chǔ)創(chuàng)建時(shí),各個(gè)存儲(chǔ)的空間 申請率,并返回符合要求的存儲(chǔ);
[0024] (4)所述的執(zhí)行模塊根據(jù)該各個(gè)存儲(chǔ)的空間申請率選擇空間申請率最小的存儲(chǔ)創(chuàng) 建該待創(chuàng)建的虛擬桌面。
[0025] 進(jìn)一步地,所述的步驟(1)具體為:
[0026] 所述的數(shù)據(jù)模塊通過所述的數(shù)據(jù)采集模塊獲取各個(gè)存儲(chǔ)的以下參數(shù):
[0027] 各個(gè)掛載于虛擬化服務(wù)器上的存儲(chǔ)的物理空間大小ST1;
[0028] 各個(gè)掛載于虛擬化服務(wù)器上的存儲(chǔ)的當(dāng)前已使用的物理空間大小SU1;
[0029] 待創(chuàng)建的虛擬桌面請求的存儲(chǔ)大小DAx;
[0030] 待創(chuàng)建的虛擬桌面初始創(chuàng)建使用的存儲(chǔ)大小DUx;
[0031] 各個(gè)存儲(chǔ)上每個(gè)虛擬桌面申請的存儲(chǔ)大小DAl j;
[0032] 各個(gè)存儲(chǔ)上每個(gè)虛擬桌面實(shí)際已占用的空間大小DUlj;
[0033] 用以表示各個(gè)存儲(chǔ)中所有虛擬桌面請求的空間大小和空間的總物理大小關(guān)系的 存儲(chǔ)共享因子k ;
[0034] 用以表示各個(gè)掛載于虛擬化服務(wù)器上的存儲(chǔ)的最大使用率u ;
[0035] 其中,i指各個(gè)掛載于虛擬化服務(wù)器上的存儲(chǔ),j指在各個(gè)存儲(chǔ)上創(chuàng)建的各個(gè)虛擬 桌面,X指要?jiǎng)?chuàng)建的虛擬桌面。
[0036] 更進(jìn)一步地,所述的計(jì)算模塊根據(jù)所述的數(shù)據(jù)模塊獲取的相關(guān)參數(shù)計(jì)算各個(gè)存儲(chǔ) 的最大可申請空間,具體為:
[0037] 所述的計(jì)算模塊根據(jù)以下公式(1)計(jì)算各個(gè)存儲(chǔ)的最大可申請空間:
[0038] SA1= kX (uXST -SU1) (1)
[0039] 其中,SA1為第i個(gè)存儲(chǔ)的最大可申