两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種虛擬磁盤的管理方法及裝置制造方法

文檔序號:6521452閱讀:232來源:國知局
一種虛擬磁盤的管理方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種虛擬磁盤的管理方法和裝置,用于提高瘦磁盤的IO性能。在本發(fā)明的一些實施例中,方法包括:判斷當(dāng)前IO寫請求是否已被分配存儲塊;若當(dāng)前IO寫請求沒有被分配存儲塊,則判斷當(dāng)前的IO模型的類型;若當(dāng)前的IO模型的類型是順序模型,則對當(dāng)前IO寫請求需要訪問的存儲塊進(jìn)行預(yù)置零操作,并將當(dāng)前IO寫請求的數(shù)據(jù)寫入已被預(yù)置零的所述存儲塊;若當(dāng)前的IO模型的類型是隨機模型,則直接將當(dāng)前IO寫請求的數(shù)據(jù)寫入當(dāng)前IO寫請求需要訪問的存儲塊。該方法既利用了瘦磁盤能夠降低存儲空間及成本的優(yōu)點,又提高了瘦磁盤的IO性能。
【專利說明】一種虛擬磁盤的管理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù),具體涉及一種虛擬磁盤的管理方法及裝置。
【背景技術(shù)】
[0002]在虛擬化領(lǐng)域,虛擬機的虛擬磁盤的實際載體可以是物理磁盤、物理磁盤上的邏輯卷或者物理磁盤上的一個單獨文件。對于文件方式的虛擬磁盤,可以是占用實際使用空間的瘦磁盤。使用瘦磁盤作為虛擬磁盤的實際載體時,主機需要隨著輸入輸出(InputOutput, 10)操作為虛擬機分配磁盤空間,使瘦磁盤在使用過程中實時增長。
[0003]假設(shè)虛擬機的系統(tǒng)卷為10G,虛擬機實際占用的空間只有1G,瘦磁盤就是指占用了 IG的瘦文件,而其它9G空間并未被實際分配空間,S卩,未被預(yù)置零;該瘦磁盤在虛擬機使用過程中實時增長,最終可能達(dá)到10G。
[0004]瘦磁盤的優(yōu)點是可以減少存儲空間,大量降低存儲成本,創(chuàng)建時間短;缺點是由于需要在用戶寫數(shù)據(jù)時分配空間,因此其IO性能非常低。

【發(fā)明內(nèi)容】

[0005]本發(fā)明實施例提供虛擬磁盤的管理方法及裝置,以解決現(xiàn)有技術(shù)中瘦磁盤的IO性能非常低的問題。
[0006]本發(fā)明第一方面提供一種虛擬磁盤的管理方法,包括:判斷當(dāng)前輸入輸出IO寫請求是否已被分配存儲塊;若所述當(dāng)前IO寫請求沒有被分配存儲塊,則判斷當(dāng)前的IO模型的類型;若所述當(dāng)前的IO模型的類型是順序模型,則對所述當(dāng)前IO寫請求需要訪問的存儲塊進(jìn)行預(yù)置零操作,并將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入已被預(yù)置零的所述存儲塊;若所述當(dāng)前的IO模型的類型是隨機模型,則直接將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入所述當(dāng)前IO寫請求需要訪問的存儲塊。
[0007]在第一種實現(xiàn)方式中,所述判斷當(dāng)前的IO模型的類型包括:根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型。
[0008]結(jié)合第一方面的第一種實現(xiàn)方式,在第二種實現(xiàn)方式中,所述根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型包括:計算所述用戶態(tài)進(jìn)程中的第一類IO寫請求的數(shù)量,所述第一類IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊相鄰;判斷所述第一類IO寫請求的數(shù)量是否達(dá)到第一臨界值,若所述第一類IO寫請求的數(shù)量達(dá)到第一臨界值,則判斷所述當(dāng)前的IO模型的類型是順序模型,若所述第一類IO寫請求的數(shù)量沒有達(dá)到第一臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
[0009]結(jié)合第一方面的第一種實現(xiàn)方式,在第三種實現(xiàn)方式中,所述根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型包括:計算所述用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊的距離;設(shè)定至少二個差值范圍,并為每個差值范圍設(shè)定不同的權(quán)重;統(tǒng)計距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量;根據(jù)距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量以及所述每個差值范圍設(shè)定不同的權(quán)重,計算距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和,計算所述求和得到的數(shù)值與所述用戶態(tài)進(jìn)程中各個IO寫請求的總數(shù)量的比值;判斷所述比值是否達(dá)到第二臨界值,若所述比值達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是順序模型,若所述比值沒有達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
[0010]本發(fā)明第二方面提供另一種虛擬磁盤的管理方法,包括:根據(jù)輸入輸出IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑;若后臺空閑,則在后臺對虛擬磁盤進(jìn)行預(yù)置零操作。
[0011]在第一種實現(xiàn)方式中,所述根據(jù)IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑包括:計算用戶態(tài)進(jìn)程中的IO請求的數(shù)量是否低于第三臨界值;若所述用戶態(tài)進(jìn)程中的IO請求的數(shù)量低于第三臨界值,則判斷主機的后臺空閑。
[0012]在第二種實現(xiàn)方式中,所述根據(jù)IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑包括:計算用戶態(tài)進(jìn)程的每一種IO隊列中的IO請求的數(shù)量,并為每一種IO隊列設(shè)定不同的權(quán)重;計算每一種IO隊列中的IO請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和;判斷所述求和得到的數(shù)值是否低于第四臨界值,若所述求和得到的數(shù)值低于第四臨界值,則判斷主機的后臺空閑。
[0013]結(jié)合第二方面或者第二方面的第一種或第二種實現(xiàn)方式,在第三種實現(xiàn)方式中,所述在后臺對虛擬磁盤進(jìn)行預(yù)置零操作包括:獲取虛擬磁盤的置零閾值;在后臺對虛擬磁盤的預(yù)置零范圍進(jìn)行預(yù)置零操作,所述預(yù)置零范圍是指所述置零閾值內(nèi)尚未被實際分配給虛擬機的存儲空間。
[0014]結(jié)合第二方面的第三種實現(xiàn)方式,在第四種實現(xiàn)方式中,所述獲取虛擬磁盤的置零閾值之前還包括:計算設(shè)定周期內(nèi)下發(fā)的IO請求的數(shù)量,在所述數(shù)量低于下限值時,增大所述置零閾值,在所述數(shù)量高于上限值時,減少所述置零閾值。
[0015]結(jié)合第二方面的第三種實現(xiàn)方式,在第五種實現(xiàn)方式中,所述獲取虛擬磁盤的置零閾值之前還包括:計算設(shè)定周期內(nèi)的IO流量,所述IO流量是指所述設(shè)定周期內(nèi)需要寫入所述虛擬磁盤的數(shù)據(jù)的多少;若所述IO流量大于上限值,則增大所述置零閾值;若所述IO流量小于下限值,則減少所述置零閾值。
[0016]本發(fā)明第三方面提供一種虛擬磁盤的管理裝置,包括:分配判斷模塊,用于判斷當(dāng)前輸入輸出IO寫請求是否已被分配存儲塊;10模型判斷模塊,用于在所述分配判斷模塊判斷當(dāng)前IO寫請求沒有被分配存儲塊時,判斷當(dāng)前的IO模型的類型;讀寫模塊,用于在所述IO模型判斷模塊判斷所述當(dāng)前的IO模型的類型是順序模型時,對所述當(dāng)前IO寫請求需要訪問的存儲塊進(jìn)行預(yù)置零操作,并將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入已被預(yù)置零的所述存儲塊;在所述IO模型判斷模塊判斷所述當(dāng)前的IO模型的類型是隨機模型時,直接將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入所述當(dāng)前IO寫請求需要訪問的存儲塊。
[0017]在第一種實現(xiàn)方式中,所述IO模型判斷模塊,具體用于根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型。
[0018]結(jié)合第三方面的第一種實現(xiàn)方式,在第二種實現(xiàn)方式中,所述IO模型判斷模塊包括:第一計算單元,用于計算所述用戶態(tài)進(jìn)程中的第一類IO寫請求的數(shù)量,所述第一類IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊相鄰;判斷單元,用于判斷所述第一計算單元計算得到的所述第一類IO寫請求的數(shù)量是否達(dá)到第一臨界值,若所述第一類IO寫請求的數(shù)量達(dá)到第一臨界值,則判斷所述當(dāng)前的IO模型的類型是順序模型,若所述第一類IO寫請求的數(shù)量沒有達(dá)到第一臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
[0019]結(jié)合第三方面的第一種實現(xiàn)方式,在第三種實現(xiàn)方式中,所述IO模型判斷模塊包括:第二計算單元,用于計算所述用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊的距離,設(shè)定至少二個差值范圍,并為每個差值范圍設(shè)定不同的權(quán)重;統(tǒng)計距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量,根據(jù)所述距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量以及所述每個差值范圍設(shè)定不同的權(quán)重,計算距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和,計算所述求和得到的數(shù)值與所述用戶態(tài)進(jìn)程中各個IO寫請求的總數(shù)量的比值;判斷單元,用于判斷所述第二計算單元計算得到的所述比值是否達(dá)到第二臨界值,若所述比值達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是順序模型,若所述比值沒有達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
[0020]本發(fā)明第四方面提供另一種虛擬磁盤的管理裝置,包括:判斷模塊,用于根據(jù)輸入輸出IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑;預(yù)置零模塊,用于在所述判斷模塊判斷所述主機的后臺空閑時,在后臺對虛擬磁盤進(jìn)行預(yù)置零操作。
[0021]在第一種實現(xiàn)方式中,所述判斷模塊包括:第一判斷單元,用于計算用戶態(tài)進(jìn)程中的IO請求的數(shù)量是否低于第三臨界值,若所述用戶態(tài)進(jìn)程中的IO請求的數(shù)量低于第三臨界值,則判斷主機的后臺空閑。
[0022]在第二種實現(xiàn)方式中,所述判斷模塊包括:第二判斷單元,用于計算用戶態(tài)進(jìn)程的每一種IO隊列中的IO請求的數(shù)量,并為每一種IO隊列設(shè)定不同的權(quán)重,計算每一種IO隊列中的IO請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和;判斷所述求和得到的數(shù)值是否低于第四臨界值,若所述求和得到的數(shù)值低于第四臨界值,則判斷主機的后臺空閑。
[0023]結(jié)合第四方面或者第四方面的第一種或第二種實現(xiàn)方式,在第三種實現(xiàn)方式中,所述預(yù)置零模塊,具體用于獲取虛擬磁盤的置零閾值;在后臺對虛擬磁盤的預(yù)置零范圍進(jìn)行預(yù)置零操作,所述預(yù)置零范圍是指所述置零閾值內(nèi)尚未被實際分配給虛擬機的存儲空間。
[0024]結(jié)合第四方面的第三種實現(xiàn)方式,在第四種實現(xiàn)方式中,所述裝置還包括:第一調(diào)整模塊,用于計算設(shè)定周期內(nèi)下發(fā)的IO請求的數(shù)量,在所述數(shù)量低于下限值時,增大所述置零閾值,在所述數(shù)量高于上限值時,減少所述置零閾值。所述預(yù)置零模塊,具體用于獲取所述第一調(diào)整模塊調(diào)整過的置零閾值。
[0025]結(jié)合第四方面的第三種實現(xiàn)方式,在第四種實現(xiàn)方式中,還包括:所述裝置還包括:第二調(diào)整模塊,用于計算設(shè)定周期內(nèi)的IO流量,所述IO流量是指所述設(shè)定周期內(nèi)需要寫入所述虛擬磁盤的數(shù)據(jù)的多少;若所述IO流量大于上限值,則增大所述置零閾值;若所述IO流量小于下限值,則減少所述置零閾值;所述預(yù)置零模塊,具體用于獲取所述第二調(diào)整模塊調(diào)整過的置零閾值。[0026]由上可見,在本發(fā)明的一些實施方式中,判斷當(dāng)前IO寫請求尚未被分配存儲塊時,對當(dāng)前的IO模型的類型進(jìn)行預(yù)判,若當(dāng)前的IO模型是順序模型,則對需要訪問的存儲塊預(yù)置零后寫入數(shù)據(jù),若當(dāng)前的IO模型是隨機模型,則直接將數(shù)據(jù)寫入需要訪問存儲塊,使得:若當(dāng)前的IO模型是隨機模型,則通過取消預(yù)置零操作,提高當(dāng)前IO操作的性能;若當(dāng)前的IO模型是順序模型,則通過預(yù)置零,使后續(xù)的IO請求對應(yīng)的操作有較大幾率落在已經(jīng)置零的區(qū)域,因而,可以提高后續(xù)IO操作的性能;從而,既利用了瘦磁盤能夠降低存儲空間及成本的優(yōu)點,又提高了瘦磁盤的IO性能。
[0027]在本發(fā)明的另一些實施方式中,判斷主機的后臺空閑時,在后臺對虛擬磁盤進(jìn)行預(yù)置零,使得:虛擬磁盤除了包括虛擬機實際占用、存儲了虛擬機數(shù)據(jù)的存儲空間外,還包括了已被預(yù)置零的存儲空間,且,已被預(yù)置零的存儲空間不斷增長,當(dāng)進(jìn)行IO操作,這些IO操作落入這些已被預(yù)置零的存儲空間時,則不必隨IO分配空間,提升了 IO操作的性能。
【專利附圖】

【附圖說明】
[0028]為了更清楚地說明本發(fā)明實施例技術(shù)方案,下面將對實施例和現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
[0029]圖1是虛擬化集群系統(tǒng)的架構(gòu)圖;
[0030]圖2是瘦磁盤的IO流程的示意圖;
[0031]圖3是本發(fā)明一個實施例提供的虛擬磁盤管理方法的流程圖;
[0032]圖4是用戶態(tài)進(jìn)程進(jìn)程內(nèi)部四個IO隊列與IO環(huán)的關(guān)系圖;
[0033]圖5是本發(fā)明另一個實施例提供的虛擬磁盤管理方法的流程圖;
[0034]圖6是預(yù)置零范圍的示意圖;
[0035]圖7a和7b是本發(fā)明實施例方法的一個詳細(xì)流程圖;
[0036]圖8是本發(fā)明一個實施例提供的虛擬磁盤的管理裝置的示意圖;
[0037]圖9是本發(fā)明另一實施例提供的虛擬磁盤的管理裝置的示意圖;
[0038]圖10是本發(fā)明又一實施例提供的虛擬磁盤的管理裝置的示意圖;
[0039]圖11是本發(fā)明一個實施例提供的計算機設(shè)備的示意圖;
[0040]圖12是本發(fā)明另一個實施例提供的計算機設(shè)備的示意圖。
【具體實施方式】
[0041]本發(fā)明實施例提供一種虛擬磁盤的管理方法及裝置,既可以利用瘦磁盤文件能夠降低存儲空間及成本的優(yōu)點,又可以提高瘦磁盤文件的IO性能,解決了現(xiàn)有技術(shù)不能兼顧提升瘦磁盤IO性能和降低存儲空間及成本的問題。
[0042]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。[0043]下面分別通過具體實施例進(jìn)行詳細(xì)的描述。
[0044]首先,請參考圖1,圖1是本發(fā)明實施例技術(shù)方案所應(yīng)用的虛擬化集群系統(tǒng)的架構(gòu)圖。虛擬機(Virtual Machine, VM)通常運行在部署于主機的虛擬機管理器(hypervisor,又可稱為虛擬機監(jiān)視器)上,例如運行在xen (Xen是一個開放源代碼虛擬機監(jiān)視器,由劍橋大學(xué)開發(fā))上,并由主機進(jìn)行統(tǒng)一管理。虛擬機的內(nèi)存、中央處理器(Central ProcessingUnit, CPU)、網(wǎng)絡(luò)資源等都由主機進(jìn)行模擬,而存儲資源通常由存儲局域網(wǎng)絡(luò)(StorageArea Network, SAN)供給,一般主機通過網(wǎng)卡或HBA (Host Bus Adapter,主機總線適配器)卡連接SAN設(shè)備,SAN上的一個邏輯存儲設(shè)備被映射為主機上的一個磁盤;集群文件系統(tǒng)是在一個集群內(nèi)部運行于多個主機上的文件系統(tǒng),它在各個主機之間存在通信機制來保證存儲陣列上的數(shù)據(jù)有效可用。
[0045]本發(fā)明實施例采用文件方式的虛擬磁盤,即,虛擬機的虛擬磁盤可以是集群文件系統(tǒng)上的單個文件,該文件通常是有文件格式的,也可以是無文件格式(raw)的;具體可以是增量的瘦磁盤文件。本發(fā)明實施例中,虛擬機的虛擬磁盤由瘦磁盤文件(所說的瘦磁盤文件可簡稱為瘦磁盤)進(jìn)行模擬,其10 (Input Output,輸入輸出)流程如圖2所示,包括:
[0046]虛擬機下發(fā)的所有10請求首先會由虛擬機內(nèi)部安裝的前端驅(qū)動進(jìn)行處理,前端驅(qū)動類似于真實的磁盤驅(qū)動一樣。前端驅(qū)動會將10請求遞交給運行在主機中的后端進(jìn)程。前端驅(qū)動和后端進(jìn)程通過虛擬機管理器例如xen中的10環(huán)進(jìn)行交互。10環(huán)是一塊固定的共享內(nèi)存,用于在虛擬機之間或進(jìn)程之間,例如在xen的虛擬客戶機(DomU)和虛擬母機(DomO,又稱為管理虛擬機,用于管理同一臺主機上的其它虛擬機,例如管理虛擬客戶機)之間,傳遞10請求和響應(yīng),10環(huán)利用生產(chǎn)者和消費者的機理來產(chǎn)生發(fā)送以及響應(yīng)10請求。
[0047]當(dāng)10請求由前端驅(qū)動放到10環(huán)中后,該10請求對應(yīng)的內(nèi)存頁會被映射給后端進(jìn)程,當(dāng)10請求的響應(yīng)返回給前端驅(qū)動時,該請求對應(yīng)的內(nèi)存頁會被解映射,以此避免內(nèi)存拷貝帶來的10時延。
[0048]對于瘦磁盤場景的虛擬磁盤,瘦磁盤通常是一種帶有自身文件格式的文件,這里會有一個用戶態(tài)進(jìn)程用于管理瘦磁盤,并由內(nèi)核模擬出一個虛擬塊設(shè)備用于對接后端進(jìn)程。后端進(jìn)程會將從10環(huán)中收到的10請求遞交給內(nèi)核的通用塊層、10調(diào)度層,最終到虛擬塊設(shè)備。
[0049]后端進(jìn)程下發(fā)的10請求交給虛擬塊設(shè)備后,同樣走10環(huán)的模式交給用戶態(tài)進(jìn)程處理,用戶態(tài)進(jìn)程從10環(huán)收到該10請求后,將該10請求轉(zhuǎn)換成對瘦磁盤文件的讀寫,交給文件系統(tǒng)、通用塊層、10調(diào)度器,最終真正到達(dá)瘦磁盤。
[0050]一般的,10請求包括10寫請求和10讀請求,用戶態(tài)進(jìn)程從10環(huán)收到10寫請求時,才開始為10寫請求分配虛擬磁盤空間,而分配空間時速度很慢,10性能非常低,嚴(yán)重影響用戶體驗。
[0051]為了解決瘦磁盤隨10操作分配空間導(dǎo)致10性能非常低的問題,基于上述瘦磁盤的10流程,本發(fā)明實施例提出以下技術(shù)方案。
[0052]請參考圖3,本發(fā)明一個實施例提供的虛擬磁盤管理方法包括:
[0053]110、判斷當(dāng)前10寫請求是否已被分配存儲塊。
[0054]管理虛擬磁盤的用戶態(tài)進(jìn)程(該用戶態(tài)進(jìn)程具體可以是磁盤管理進(jìn)程)和內(nèi)核態(tài)的交互是通過10環(huán)進(jìn)行的。10環(huán)中可存放多個10請求。用戶態(tài)進(jìn)程內(nèi)部也會有多個10請求在處理,并可分為四個IO隊列,分別是:新取上來的IO隊列,正在下發(fā)的IO隊列,失敗預(yù)備重發(fā)的IO隊列,以及完成IO隊列;它們與IO環(huán)之間的關(guān)系如圖4所示。
[0055]當(dāng)用戶態(tài)進(jìn)程從IO環(huán)收到新下發(fā)的IO寫請求并進(jìn)行處理時時,該正在處理的當(dāng)前IO寫請求對應(yīng)的操作,可能落入已被分配空間的瘦磁盤文件內(nèi),也可能落入瘦磁盤文件范圍之外;如果落入瘦磁盤文件內(nèi),說明當(dāng)前的瘦磁盤足夠使用,無需擴張;如果落入瘦磁盤范圍之外,則需要擴張瘦磁盤。
[0056]因此,用戶態(tài)進(jìn)程收到IO寫請求后,需要首先判斷當(dāng)前IO寫請求是否已被分配存儲塊,即,判斷當(dāng)前IO請求對應(yīng)的寫操作是否落入已被分配空間的瘦磁盤文件范圍之內(nèi),若否,需要考慮隨IO分配空間,即,通過對需要訪問的存儲塊進(jìn)行預(yù)置零操作,將該存儲塊實際分配給虛擬機。
[0057]其中,所說的存儲塊是對虛擬磁盤進(jìn)行置零操作的基本單位,該存儲塊的大小可以根據(jù)實際應(yīng)用場景設(shè)定,例如,可以包括一個或多個扇區(qū),一種實施方式中,所說的磁盤塊的大小具體可以是4k。
[0058]120、若當(dāng)前IO寫請求沒有被分配存儲塊,則判斷當(dāng)前的IO模型類型。
[0059]IO模型的類型一般包括兩種,一種是順序模型,另一種是隨機模型。本發(fā)明一些實施方式中,順序模型是指連續(xù)兩個IO請求相鄰,即,連續(xù)兩個IO請求對應(yīng)的存儲塊相鄰;隨機模型是指連續(xù)兩個IO請求分離,即,連續(xù)兩個IO請求對應(yīng)的存儲塊是遠(yuǎn)離的,不相鄰的。
[0060]在IO模型是隨機模型時,由于不能預(yù)測下一個IO寫請求需要訪問的虛擬磁盤位置,即便在當(dāng)前IO操作過程中對需要訪問的存儲塊進(jìn)行預(yù)置零,下一個IO寫請求對應(yīng)的寫操作落入該存儲塊的幾率也是非常小的,并不能提升下一個IO寫請求的訪問速度和處理性能,因此,可以無需進(jìn)行預(yù)置零操作,按照常規(guī)方式更新元數(shù)據(jù)即可,以此提高當(dāng)前IO操作的性能。相反,在IO模型是順序模型時,如果在當(dāng)前IO操作過程中,對需要訪問的存儲塊進(jìn)行預(yù)置零,則下一個IO寫請求對應(yīng)的寫操作有很大的可能落入該存儲塊,從而,可以提升下一個IO請求的訪問速度和處理性能。
[0061]于是,用戶態(tài)進(jìn)程判斷當(dāng)前IO寫請求沒有被分配存儲塊時,即,判斷當(dāng)前IO寫請求需要訪問的存儲塊位于瘦磁盤文件范圍之外時,可以對IO模型進(jìn)行預(yù)判,只有IO模型是順序模型時,才有必要進(jìn)行預(yù)置零操作。
[0062]本發(fā)明的一些實施例中,可以以用戶態(tài)進(jìn)程中的多個IO寫請求為輸入,根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型是順序模型或隨機模型。
[0063]具體的IO模型預(yù)判算法可以有多種,下面舉例說明:
[0064]—種實施方式中,可以首先確定用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊;計算用戶態(tài)進(jìn)程中的第一類IO寫請求的數(shù)量,其中,第一類IO請求需要訪問的存儲塊與當(dāng)前IO寫請求需要訪問的存儲塊相鄰;判斷第一類IO寫請求的數(shù)量是否達(dá)到第一臨界值,若達(dá)到,則判斷當(dāng)前的IO模型是順序模型,若未達(dá)到,則判斷當(dāng)前的IO模型是隨機模型。SP,以用戶態(tài)進(jìn)程的4個IO隊列中的IO請求的總數(shù)量為原型輸入,遍歷計算與正在處理的當(dāng)前IO寫請求需要訪問的存儲塊相鄰的IO請求的數(shù)量。假設(shè)當(dāng)前IO請求需要訪問的虛擬磁盤位置為44k,請求長度為4k,則遍歷所有IO請求,當(dāng)發(fā)現(xiàn)有I個其它IO請求需要訪問的存儲塊與44k或者48k相鄰,則相鄰IO請求的數(shù)量計數(shù)加I。IO請求訪問存儲塊的相鄰程度以相鄰IO請求的數(shù)量來衡量,第一臨界值可以簡單的初始化為I或2或其它數(shù)值。如果相鄰IO請求的數(shù)量超過第一臨界值,則判斷為當(dāng)前IO模型是順序模型。
[0065]另一種實施方式中,可以首先確定用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊;計算各個IO寫請求需要訪問的存儲塊與當(dāng)前IO寫請求需要訪問的存儲塊的距離,設(shè)定至少二個差值范圍,并為每個差值范圍設(shè)定不同的權(quán)重;統(tǒng)計距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量;根據(jù)距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量以及每個差值范圍設(shè)定不同的權(quán)重,計算距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和,計算求和得到的數(shù)值與用戶態(tài)進(jìn)程中各個IO寫請求的總數(shù)量的比值;判斷該比值是否達(dá)到第二臨界值,若達(dá)到,則判斷當(dāng)前的IO模型是順序模型,若未達(dá)到,則判斷當(dāng)前的IO模型是隨機模型。例如,以用戶態(tài)進(jìn)程的4個IO隊列中的IO請求的總數(shù)量為原型輸入,假設(shè)總共有32個IO請求,統(tǒng)計32個IO請求中需要訪問的存儲塊與處理中的當(dāng)前IO需要訪問的存儲塊的距離小于IM的有X個,IM到IOM的有y個,IOM到100M的有z個。以該三者的數(shù)量乘以各自權(quán)重得到的數(shù)值與IO寫請求的總數(shù)量的比值來衡量IO請求的相鄰程度。計算公式可以是這樣的:
[0066]Seq=0.8* (x/ (x+y+z)) +0.3* (y/ (x+y+z)) +0.1* (z/ (x+y+z))。
[0067]第二閾值可以初始化為0.5或其它數(shù)值。如果比值Seq高于第二臨界值,則判斷為順序模型,否則,判斷為隨機模型。
[0068]130、若當(dāng)前的IO模型的類型是順序模型,則對當(dāng)前IO寫請求需要訪問的存儲塊進(jìn)行預(yù)置零操作,并將當(dāng)前IO寫請求的數(shù)據(jù)寫入已被預(yù)置零的存儲塊;若當(dāng)前的IO模型的類型是隨機模型,則直接將當(dāng)前IO寫請求的數(shù)據(jù)寫入當(dāng)前IO寫請求需要訪問的存儲塊。
[0069]在IO模型是順序模型時,用戶態(tài)進(jìn)程首先對需要訪問的存儲塊進(jìn)行預(yù)置零,然后才更新元數(shù)據(jù),即,將當(dāng)前IO寫請求的數(shù)據(jù)寫入已被預(yù)置零的該存儲塊。舉例說明,假設(shè)某寫IO寫請求需要訪問的存儲塊位于該虛擬磁盤的44k的位置,如果該存儲塊尚未被實際分配給虛擬機,則首先將44k位置的該存儲塊預(yù)先寫成全0,使得該存儲塊被虛擬機實際占有,然后再在該存儲塊中寫該IO寫請求需要寫的數(shù)據(jù)內(nèi)容。由于IO模型是順序模型,則下一個IO請求對應(yīng)的操作有很大的可能仍落入該存儲塊,則,處理下一個IO時不需要進(jìn)行預(yù)置零操作,于是,可以提升下一個IO請求的訪問速度和處理性能。
[0070]在IO模型是隨機模型時,下一個IO請求需要訪問的虛擬磁盤位置,落入當(dāng)前IO需要訪問的存儲塊的幾率非常小,因此,只需要更新元數(shù)據(jù),即,只需要將當(dāng)前IO寫請求的數(shù)據(jù)寫入需要訪問的存儲塊即可,無需對當(dāng)前IO需要訪問的存儲塊進(jìn)行預(yù)置零操作,從而,可以提高當(dāng)前IO操作的性能。
[0071]由上可見,在本發(fā)明的一些可行的實施方式中,判斷當(dāng)前IO寫請求尚未被分配存儲塊時,對IO模型的類型進(jìn)行預(yù)判,若當(dāng)前的IO模型是順序模型,則對需要訪問的存儲塊預(yù)置零后寫入數(shù)據(jù),若當(dāng)前的IO模型是隨機模型,則直接將數(shù)據(jù)寫入需要訪問的存儲塊,使得:若當(dāng)前的IO模型是隨機模型,則通過取消預(yù)置零操作,提高當(dāng)前IO操作的性能;若當(dāng)前的IO模型是順序模型,則通過預(yù)置零,使后續(xù)的IO請求對應(yīng)的操作有較大幾率落在已經(jīng)置零的區(qū)域,相當(dāng)于在厚磁盤進(jìn)行IO操作,因而,可以提高后續(xù)IO操作的性能;從而,既利用了瘦磁盤能夠降低存儲空間及成本的優(yōu)點,又提高了瘦磁盤的IO性能。
[0072]請參考圖5,本發(fā)明另一個實施例提供的虛擬磁盤管理方法可包括:[0073]210、根據(jù)IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑;
[0074]220、若后臺空閑,則在后臺對虛擬磁盤進(jìn)行預(yù)置零操作。
[0075]本實施例通過在后臺預(yù)置零,可以不斷增大瘦磁盤文件,當(dāng)后續(xù)IO操作落入已被預(yù)先置零的瘦磁盤文件范圍內(nèi)時,可以不必隨IO分配空間,從而提高IO操作性能。
[0076]本發(fā)明的一些實施例中,可以以用戶態(tài)進(jìn)程中的多個IO請求為輸入,根據(jù)IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑。具體的IO空閑度預(yù)判算法可以有多種,下面舉例說明:
[0077]一種實施方式中,可以計算用戶態(tài)進(jìn)程中的IO請求的總數(shù)量是否低于第三臨界值,若低于,則判斷主機的后臺空閑;若不低于,則判斷主機的后臺繁忙。該種方式的含義是,通過統(tǒng)計一定時間內(nèi)下發(fā)的IO請求的數(shù)量是否低于第三臨界值,來確定IO請求下發(fā)的頻繁程度,從而判斷后臺是否空閑。第三臨界值可初始化為3或其它數(shù)值。
[0078]另一種實施方式中,可以計算用戶態(tài)進(jìn)程的每一種IO隊列中的IO請求的數(shù)量,并為每一種IO隊列設(shè)定不同的權(quán)重,計算每一種IO隊列中的IO請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和;判斷所述求和得到的數(shù)值是否低于第四臨界值,若低于,則判斷主機的后臺空閑;若不低于,則判斷主機的后臺繁忙。舉例說明,可以以4個IO隊列中的IO請求的總數(shù)量為原型輸入,假設(shè)新取上來的IO隊列中的IO數(shù)量加上正在下發(fā)的IO隊列中的IO數(shù)量的和為X,失敗重發(fā)IO隊列中的IO數(shù)量為y,完成請求IO隊列中的IO數(shù)量為z。以該三者的數(shù)量乘以各自權(quán)重系數(shù)得到的數(shù)值來衡量IO空閑度。公式可以是這樣的:Idle=l*x+0.5*y+0.l*z。第四臨界值可初始化為2或其它數(shù)值。
[0079]本發(fā)明的一些實施例中,所說的在后臺對虛擬磁盤進(jìn)行預(yù)置零操作包括:獲取虛擬磁盤的置零閾值;在后臺對虛擬磁盤的預(yù)置零范圍進(jìn)行置零,該預(yù)置零范圍是指置零閾值內(nèi)尚未被實際分配給虛擬機的存儲空間。如圖6所示,預(yù)置零范圍是從當(dāng)前瘦磁盤的真實數(shù)據(jù)尾開始,直到置零閾值上限值的一段存儲空間。
[0080]本實施例中,通過設(shè)置置零閾值,來限定進(jìn)行預(yù)置零的范圍,S卩,限定瘦磁盤的大小,避免占用過多的磁盤空間,從而降低存儲成本,以便在提升瘦磁盤IO性能和降低存儲成本之間取得平衡。其中,置零閾值可以根據(jù)用戶的使用情況進(jìn)行初始化,例如,可以將其上限值初始化為250M??臻e后臺進(jìn)行預(yù)置零操作時,需要首先判斷當(dāng)前預(yù)置零范圍是否超過置零閾值;若未超過,才在后臺對當(dāng)前預(yù)置零范圍進(jìn)行預(yù)置零操作。
[0081]該置零閾值可以是從磁盤文件某個固定位置開始的一段例如250M的磁盤空間,也可以是從瘦磁盤文件的真實數(shù)據(jù)尾開始的一段例如250M的磁盤空間。另外,置零閾值的大小可以是固定的,例如固定為250M ;也可以隨實際應(yīng)用動態(tài)調(diào)整其大小。
[0082]本發(fā)明的一些實施例中,可以根據(jù)IO請求下發(fā)的頻繁程度,實時調(diào)整置零閾值的大小,以滿足用戶使用需求。例如,可以計算設(shè)定周期內(nèi)下發(fā)的IO請求的數(shù)量,在該數(shù)量低于下限值時,認(rèn)為IO請求下發(fā)的頻繁程度較低,后臺較為空閑,則增大置零閾值,使得下個時間周期內(nèi)的IO請求更大可能落在已經(jīng)置零的區(qū)域。在該數(shù)量高于上限值時,認(rèn)為IO請求下發(fā)的頻繁程度較高,后臺較為繁忙時,則減少置零閾值。
[0083]本發(fā)明的另一些實施例中,可以計算設(shè)定周期內(nèi)的IO流量,根據(jù)IO流量的大小實時調(diào)整置零閾值的大小。IO流量是指設(shè)定周期內(nèi)需要寫入虛擬磁盤的數(shù)據(jù)的多少。若IO流量大于上限值,則增大置零閾值;若0流量小于下限值,則減少置零閾值。例如當(dāng)此前30s內(nèi)處理的IO流量大于上限值如600M,則認(rèn)為IO流量較大,可以增大置零閾值;如果IO請求流量小于下限值如100M,則認(rèn)為IO流量較小,可以降低置零閾值。
[0084]以上一些實施例中,通過自動化調(diào)整置零閾值,可以使IO空閑度預(yù)判更智能化,更有效的發(fā)揮功能。
[0085]關(guān)于本發(fā)明實施例一些具體應(yīng)用的流程圖,請參考圖7a和圖7b所不。
[0086]由上可見,在本發(fā)明的一些可行的實施方式中,判斷主機的后臺空閑時,在后臺對虛擬磁盤進(jìn)行預(yù)置零,使得:虛擬磁盤除了包括虛擬機實際占用、存儲了虛擬機數(shù)據(jù)的存儲空間外,還包括了已被預(yù)置零的存儲空間,且,已被預(yù)置零的存儲空間不斷增長,當(dāng)進(jìn)行IO操作,這些IO操作落入這些已被預(yù)置零的存儲空間時,則不必隨IO分配空間,提升了 IO操作的性能。
[0087]以上,圖3實施例和圖5實施例分別提供了兩種不同的虛擬機磁盤的管理方法,這兩種方法可以分別實施,也可以結(jié)合實施。
[0088]為便于更好的理解本發(fā)明實施例的技術(shù)方案,下面通過一個具體場景下的實施方式為例進(jìn)行介紹。
[0089]例如這樣的實施場景,某臺虛擬機的用戶卷D盤,使用瘦磁盤的方式模擬虛擬磁盤。
[0090]當(dāng)虛擬機剛安裝好操作系統(tǒng)并開始運行時,用戶卷D盤中的數(shù)據(jù)為空,則瘦磁盤的實際占用空間只是瘦磁盤的元數(shù)據(jù),大約為24k大小。
[0091]此時,由于剛開始運行用戶的IO請求較少,此時后臺空閑置O會啟動,預(yù)置O的閾值初始化為250M,則瘦磁盤的大小會逐漸增加到250M。
[0092]假設(shè)當(dāng)瘦磁盤增長了 250M后,用戶開始執(zhí)行拷貝某個IG大小的視頻文件到D盤的動作,此時IO流量突然上升,在剛開始的階段,IO會落在250M已經(jīng)預(yù)置了 O的區(qū)域中,這種情況下IO不需要再分配空間,性能與厚磁盤基本持平。但剩下的750M內(nèi)容的IO會落在還沒有來得及分配空間的區(qū)域,此時,性能會較低,這種情況下,可啟用IO模型預(yù)判,由于是拷貝動作,IO模型通常為順序模型,會隨用戶IO進(jìn)行置O操作。則后續(xù)IO的性能得到提升。
[0093]這里如果不是拷貝動作,而是類似VSI辦公操作,則,當(dāng)用戶使用了 250M之后,通常會被IO模型預(yù)判認(rèn)為為隨機模型,不會隨用戶IO進(jìn)行置O操作。這樣當(dāng)IO落在250M之外時,由于不需要置零操作,IO性能可以得到提升。
[0094]隨著用戶使用,如果用戶是視頻愛好者,經(jīng)常性的下載大文件,IO流量較大,這種情況下250M的閾值明顯太小,由于有自動化調(diào)整后臺置零閾值技術(shù),因此會將250M的閾值增加到500M甚至更大來適應(yīng)用戶的需求。如果用戶只是一個文檔編輯者,可能不會經(jīng)常產(chǎn)生大文件,這種情況下250M的閾值可以減少到128M,以此來節(jié)省瘦磁盤空間。
[0095]以上,本發(fā)明實施例技術(shù)方案通過IO預(yù)判,解決了瘦磁盤在首次寫情況下的性能下降問題,IOPS (Input/Output Operations Per Second,每秒進(jìn)行讀寫操作的次數(shù))可以提升20%以上。本實施例技術(shù)方案在xen平臺上的vhd (Virual Hard Disk,虛擬磁盤格式)瘦磁盤上實現(xiàn)后,在虛擬機內(nèi)部進(jìn)行iometer測試,分別對vhd上瘦磁盤的兩種格式:精簡卷和差分卷進(jìn)行測試,測試用例覆蓋順序模型和隨機模型,測試得到的iops如下表I所示。其中,iometer是一個工作在單系統(tǒng)和集群系統(tǒng)上用來衡量和描述1/0子系統(tǒng)的工具。[0096]表1
[0097]
【權(quán)利要求】
1.一種虛擬磁盤的管理方法,其特征在于,包括: 判斷當(dāng)前輸入輸出IO寫請求是否已被分配存儲塊; 若所述當(dāng)前IO寫請求沒有被分配存儲塊,則判斷當(dāng)前的IO模型的類型; 若所述當(dāng)前的IO模型的類型是順序模型,則對所述當(dāng)前IO寫請求需要訪問的存儲塊進(jìn)行預(yù)置零操作,并將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入已被預(yù)置零的所述存儲塊; 若所述當(dāng)前的IO模型的類型是隨機模型,則直接將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入所述當(dāng)前IO寫請求需要訪問的存儲塊。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷當(dāng)前的IO模型的類型包括: 根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型包括: 計算所述用戶態(tài)進(jìn)程中的第一類IO寫請求的數(shù)量,所述第一類IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊相鄰; 判斷所述第一類IO寫請求的數(shù)量是否達(dá)到第一臨界值,若所述第一類IO寫請求的數(shù)量達(dá)到第一臨界值,則判斷 所述當(dāng)前的IO模型的類型是順序模型,若所述第一類IO寫請求的數(shù)量沒有達(dá)到第一臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型包括: 計算所述用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊的距離; 設(shè)定至少二個差值范圍,并為每個差值范圍設(shè)定不同的權(quán)重; 統(tǒng)計距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量; 根據(jù)距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量以及所述每個差值范圍設(shè)定不同的權(quán)重,計算距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和,計算所述求和得到的數(shù)值與所述用戶態(tài)進(jìn)程中各個IO寫請求的總數(shù)量的比值;判斷所述比值是否達(dá)到第二臨界值,若所述比值達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是順序模型,若所述比值沒有達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
5.一種虛擬磁盤的管理方法,其特征在于,包括: 根據(jù)輸入輸出IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑; 若后臺空閑,則在后臺對虛擬磁盤進(jìn)行預(yù)置零操作。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑包括: 計算用戶態(tài)進(jìn)程中的IO請求的數(shù)量是否低于第三臨界值; 若所述用戶態(tài)進(jìn)程中的IO請求的數(shù)量低于第三臨界值,則判斷主機的后臺空閑。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑包括: 計算用戶態(tài)進(jìn)程的每一種IO隊列中的IO請求的數(shù)量,并為每一種IO隊列設(shè)定不同的權(quán)重; 計算每一種IO隊列中的IO請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和; 判斷所述求和得到的數(shù)值是否低于第四臨界值,若所述求和得到的數(shù)值低于第四臨界值,則判斷主機的后臺空閑。
8.根據(jù)權(quán)利要求5至7任一所述的方法,其特征在于,所述在后臺對虛擬磁盤進(jìn)行預(yù)置零操作包括: 獲取虛擬磁盤的置零閾值; 在后臺對虛擬磁盤的預(yù)置零范圍進(jìn)行預(yù)置零操作,所述預(yù)置零范圍是指所述置零閾值內(nèi)尚未被實際分配給虛擬機的存儲空間。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述獲取虛擬磁盤的置零閾值之前還包括: 計算設(shè)定周期內(nèi)下發(fā)的IO請求的數(shù)量,在所述數(shù)量低于下限值時,增大所述置零閾值,在所述數(shù)量高于上限值時,減少所述置零閾值。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述獲取虛擬磁盤的置零閾值之前還包括: 計算設(shè)定周期內(nèi)的IO流量,所述IO流量是指所述設(shè)定周期內(nèi)需要寫入所述虛擬磁盤的數(shù)據(jù)的多少;` 若所述IO流量大于上限值,則增大所述置零閾值; 若所述IO流量小于下限值,則減少所述置零閾值。
11.一種虛擬磁盤的管理裝置,其特征在于,包括: 分配判斷模塊,用于判斷當(dāng)前輸入輸出IO寫請求是否已被分配存儲塊; IO模型判斷模塊,用于在所述分配判斷模塊判斷當(dāng)前IO寫請求沒有被分配存儲塊時,判斷當(dāng)前的IO模型的類型; 讀寫模塊,用于在所述IO模型判斷模塊判斷所述當(dāng)前的IO模型的類型是順序模型時,對所述當(dāng)前IO寫請求需要訪問的存儲塊進(jìn)行預(yù)置零操作,并將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入已被預(yù)置零的所述存儲塊;在所述IO模型判斷模塊判斷所述當(dāng)前的IO模型的類型是隨機模型時,直接將所述當(dāng)前IO寫請求的數(shù)據(jù)寫入所述當(dāng)前IO寫請求需要訪問的存儲塊。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于: 所述IO模型判斷模塊,具體用于根據(jù)用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊的相鄰程度,判斷當(dāng)前的IO模型的類型。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述IO模型判斷模塊包括: 第一計算單元,用于計算所述用戶態(tài)進(jìn)程中的第一類IO寫請求的數(shù)量,所述第一類IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊相鄰; 判斷單元,用于判斷所述第一計算單元計算得到的所述第一類IO寫請求的數(shù)量是否達(dá)到第一臨界值,若所述第一類IO寫請求的數(shù)量達(dá)到第一臨界值,則判斷所述當(dāng)前的IO模型的類型是順序模型,若所述第一類IO寫請求的數(shù)量沒有達(dá)到第一臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
14.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述IO模型判斷模塊包括:第二計算單元,用于計算所述用戶態(tài)進(jìn)程中各個IO寫請求需要訪問的存儲塊與所述當(dāng)前IO寫請求需要訪問的存儲塊的距離,設(shè)定至少二個差值范圍,并為每個差值范圍設(shè)定不同的權(quán)重;統(tǒng)計距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量,根據(jù)所述距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量以及所述每個差值范圍設(shè)定不同的權(quán)重,計算距離在每個差值范圍內(nèi)的IO寫請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和,計算所述求和得到的數(shù)值與所述用戶態(tài)進(jìn)程中各個IO寫請求的總數(shù)量的比值; 判斷單元,用于判斷所述第二計算單元計算得到的所述比值是否達(dá)到第二臨界值,若所述比值達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是順序模型,若所述比值沒有達(dá)到第二臨界值,則判斷所述當(dāng)前的IO模型的類型是隨機模型。
15.一種虛擬磁盤的管理裝置,其特征在于,包括: 判斷模塊,用于根據(jù)輸入輸出IO請求下發(fā)的頻繁程度,判斷主機的后臺是否空閑; 預(yù)置零模塊,用于在所述判斷模塊判斷所述主機的后臺空閑時,在后臺對虛擬磁盤進(jìn)行預(yù)置零操作。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述判斷模塊包括: 第一判斷單元,用于計算用戶態(tài)進(jìn)程中的IO請求的數(shù)量是否低于第三臨界值,若所述用戶態(tài)進(jìn)程中的IO請求的數(shù)量低于第三臨界值,則判斷主機的后臺空閑。
17.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述判斷模塊包括: 第二判斷單元,用于計算用戶態(tài)進(jìn)程的每一種IO隊列中的IO請求的數(shù)量,并為每一種IO隊列設(shè)定不同的權(quán)重,計算`每一種IO隊列中的IO請求的數(shù)量與對應(yīng)的權(quán)重的乘積,并對得到的所有乘積求和;判斷所述求和得到的數(shù)值是否低于第四臨界值,若所述求和得到的數(shù)值低于第四臨界值,則判斷主機的后臺空閑。
18.根據(jù)權(quán)利要求15至17中任一項所述的裝置,其特征在于: 所述預(yù)置零模塊,具體用于獲取虛擬磁盤的置零閾值;在后臺對虛擬磁盤的預(yù)置零范圍進(jìn)行預(yù)置零操作,所述預(yù)置零范圍是指所述置零閾值內(nèi)尚未被實際分配給虛擬機的存儲空間。
19.根據(jù)權(quán)利要求18所述的裝置,其特征在于,還包括: 第一調(diào)整模塊,用于計算設(shè)定周期內(nèi)下發(fā)的IO請求的數(shù)量,在所述數(shù)量低于下限值時,增大所述置零閾值,在所述數(shù)量高于上限值時,減少所述置零閾值。 所述預(yù)置零模塊,具體用于獲取所述第一調(diào)整模塊調(diào)整過的置零閾值。
20.根據(jù)權(quán)利要求18所述的裝置,其特征在于,還包括: 第二調(diào)整模塊,用于計算設(shè)定周期內(nèi)的IO流量,所述IO流量是指所述設(shè)定周期內(nèi)需要寫入所述虛擬磁盤的數(shù)據(jù)的多少;若所述IO流量大于上限值,則增大所述置零閾值;若所述IO流量小于下限值,則減少所述置零閾值; 所述預(yù)置零模塊,具體用于獲取所述第二調(diào)整模塊調(diào)整過的置零閾值。
【文檔編號】G06F9/455GK103631537SQ201310629173
【公開日】2014年3月12日 申請日期:2013年11月29日 優(yōu)先權(quán)日:2013年11月29日
【發(fā)明者】陸麗娜, 吳斌 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
故城县| 鄂尔多斯市| 苏尼特右旗| 独山县| 中卫市| 北京市| 乌拉特中旗| 高要市| 鲁山县| 广西| 诸城市| 含山县| 齐河县| 都兰县| 安平县| 娱乐| 高密市| 娄烦县| 平原县| 防城港市| 义马市| 余江县| 威信县| 大冶市| 庆元县| 正安县| 习水县| 三江| 宝坻区| 文昌市| 竹北市| 施秉县| 宁安市| 北碚区| 航空| 略阳县| 四子王旗| 祥云县| 中西区| 灵丘县| 台中市|