欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

虛擬磁盤的優(yōu)化縮減的制作方法

文檔序號:6494569閱讀:141來源:國知局
虛擬磁盤的優(yōu)化縮減的制作方法
【專利摘要】本文披露了縮減一個存儲對象的各種系統(tǒng)和方法。例如,一種方法可以包括接收一個請求以便縮減該存儲對象。該存儲對象可以包括多個存儲單元。該方法還可以包括接收識別一組存儲單元的一個第一列表。該列表可以響應(yīng)于縮減該存儲對象的請求而產(chǎn)生。該方法還可以包括從在所接收的列表中未識別的該存儲對象內(nèi)的一組存儲單元來讀取數(shù)據(jù),并將讀取的數(shù)據(jù)從該第一存儲對象復(fù)制到一個第二存儲對象。
【專利說明】虛擬磁盤的優(yōu)化縮減
[0001]威廉E.索伯發(fā)明領(lǐng)域
[0002]本發(fā)明涉及數(shù)據(jù)存儲,并且更具體地涉及重新調(diào)整虛擬磁盤的容量。
[0003]相關(guān)領(lǐng)域說明
[0004]虛擬磁盤是直接或間接從一個或多個底層物理存儲裝置的內(nèi)存中形成的存儲對象。虛擬機將虛擬磁盤解釋為物理存儲裝置,例如硬盤。一種類型的虛擬磁盤是動態(tài)虛擬磁盤。動態(tài)虛擬磁盤可以在容量上從相對較小的初始容量(這種情況中動態(tài)虛擬磁盤使用較少量的存儲空間)變到某種最大容量(其中動態(tài)虛擬磁盤使用更大量的存儲空間)。當(dāng)虛擬機存儲附加數(shù)據(jù)時,虛擬磁盤容量變大。動態(tài)虛擬磁盤高效地利用底層物理存儲裝置的空間,因為動態(tài)虛擬磁盤僅僅在虛擬機實際需要存儲空間時消耗存儲空間。
[0005]但虛擬機不再使用存儲空間的一部分時,可以回收未使用的存儲空間。例如,如果虛擬機在虛擬磁盤上存儲了一個文件,但隨后將該文件指定為刪除,在底層物理存儲裝置中包含該文件的存儲空間就不再由虛擬機主動地使用。這種存儲空間可以例如由管理底層物理存儲裝置的文件系統(tǒng)來回收。這稱為“縮減”虛擬磁盤。然而,縮減虛擬磁盤的常規(guī)方法通常需要大量的輸入和輸出(I/o)操作,這些操作可能負(fù)面地影響性能。
[0006]發(fā)明概沭
[0007]本文披露了縮減一個存儲對象的各種系統(tǒng)和方法。例如,一種方法可以包括接收縮減該存儲對象的一個請求。該存儲對象可以包括多個存儲單元。該方法還可以包括接收識別一組存儲單元的一個列表。該列表可以響應(yīng)于縮減該存儲對象的請求而產(chǎn)生。該方法還包括從該存儲對象中的一組存儲單元(并未在接收的列表中得到識別)讀取數(shù)據(jù),并且包括將讀取的數(shù)據(jù)從該第一存儲對象復(fù)制到一個第二存儲對象。在一個實施例中,該第一和第二存儲對象是動態(tài)虛擬磁盤。
[0008]在一個實施例中,該方法包括響應(yīng)于縮減該存儲對象的請求而創(chuàng)建一個文件。創(chuàng)建該文件可以在不執(zhí)行任何I/o操作的情況下完成。這種情況可以通過檢查與該文件相關(guān)聯(lián)的一個屬性的值來檢測。該列表識別包括在該文件中的存儲對象的多個部分。一旦完成縮減操作,就可以刪除該文件。在一個實施例中,在該列表中識別的這些部分是在創(chuàng)建該文件之前未使用的該存儲對象的多個部分。
[0009]在一個實施例中,該方法包括接收一個第二列表并將該第二列表與該第一列表合并。每個列表對應(yīng)于該存儲對象的一個分區(qū)并且識別這些對應(yīng)的分區(qū)的多個未使用部分。
[0010]一種系統(tǒng)的示例可以包括一個或多個處理器和連接至該一個或多個處理器的內(nèi)存。該內(nèi)存存儲多條程序指令,這些程序指令可用于執(zhí)行像上述方法的一種方法。類似地,這些程序指令可以存儲在一個計算機可讀存儲介質(zhì)上。
[0011]前述內(nèi)容是一個概述,因此不可避免地包含細(xì)節(jié)的簡化、概括以及省略;因而本領(lǐng)域技術(shù)人員將認(rèn)識到概述僅僅是說明性的并且在任何情況下不用于限制。如權(quán)利要求所唯一定義的本發(fā)明的其他方面、發(fā)明特征和優(yōu)點在以下提供的非限制性詳細(xì)描述中將變得明顯。
[0012]附圖簡沭
[0013]通過參考附圖,本發(fā)明可以得到更好的理解,并且其眾多目標(biāo)、特征以及優(yōu)點對本領(lǐng)域技術(shù)人員是明顯的。
[0014]圖1是根據(jù)一個實施例的一種縮減動態(tài)虛擬磁盤的系統(tǒng)的框圖。
[0015]圖2A是根據(jù)一個實施例的動態(tài)虛擬磁盤的圖示。
[0016]圖2B是根據(jù)一個實施例的動態(tài)虛擬磁盤的圖示。
[0017]圖2C是根據(jù)一個實施例的動態(tài)虛擬磁盤的圖示。
[0018]圖3是根據(jù)一個實施例的一種執(zhí)行動態(tài)虛擬磁盤縮減操作的方法的流程圖。
[0019]圖4a的流程圖根據(jù)一個實施例展示了一種執(zhí)行動態(tài)虛擬磁盤縮減操作的方法的多個附加方面。
[0020]圖4b的流程圖根據(jù)一個實施例展示了一種執(zhí)行動態(tài)虛擬磁盤縮減操作的方法的多個附加方面。
[0021]圖5是根據(jù)一個實施例的一種計算裝置的框圖,該框圖展示了如何在軟件中實施
一個容量調(diào)整管理器。
[0022]圖6是根據(jù)一個實施例的一種網(wǎng)絡(luò)系統(tǒng)的框圖,該框圖展示了各種計算裝置如何通過網(wǎng)絡(luò)進行通信。
[0023]盡管易于對本發(fā)明進行各種修改和替代,但在附圖和詳細(xì)說明中將本發(fā)明的具體實施例作為示例來提供。應(yīng)當(dāng)理解的是,附圖和詳細(xì)說明不用于將本發(fā)明限制于所披露的具體形式。相反,本發(fā)明應(yīng)該涵蓋落在所附權(quán)利要求定義的本發(fā)明的精神和范圍之內(nèi)的所有修改形式、等同形式以及替代形式。
[0024]詳細(xì)說明
[0025]在采用虛擬化的系統(tǒng)中,主機裝置上布置了一個或多個虛擬機。這種主機裝置安裝有一個主操作系統(tǒng),該主操作系統(tǒng)提供對主機裝置的資源的訪問并管理它們,例如處理器周期、存儲空間以及網(wǎng)絡(luò)帶寬。主機分配這些資源以便在這個或這些虛擬機中使用。每個虛擬機或來賓可以運行它自己的操作系統(tǒng)和應(yīng)用程序。
[0026]運行在操作系統(tǒng)上的虛擬機以及一個或多個應(yīng)用程序通常使用一些存儲空間。主機通常分配一個或多個虛擬磁盤給虛擬機。一種類型的虛擬磁盤是動態(tài)虛擬磁盤。當(dāng)例如通過主操作系統(tǒng)創(chuàng)建動態(tài)虛擬磁盤時,主機設(shè)置虛擬磁盤的最大容量,例如100千兆字節(jié)(Gb)。該虛擬磁盤被稱為IOOGb虛擬磁盤,并且一旦該虛擬磁盤與虛擬機相關(guān)聯(lián)時,虛擬機就將該虛擬磁盤看作是IOOGb存儲裝置。
[0027]當(dāng)主機首次創(chuàng)建一個動態(tài)虛擬磁盤時,該虛擬磁盤基本上耗用零物理存儲空間,因為虛擬機仍未向虛擬磁盤寫入任何數(shù)據(jù)。也就是說,主機已經(jīng)向該虛擬機磁盤分配了IOOGb的存儲空間,但該虛擬磁盤仍未使用這些存儲空間的任意一部分。主機分配IOOGb是承諾IOOGb的物理存儲空間對與該虛擬磁盤相關(guān)聯(lián)的虛擬機是可用的。動態(tài)地分配虛擬磁盤意味著直到虛擬機將寫操作指向虛擬機時,主機的文件系統(tǒng)實際上才需要向虛擬磁盤分配底層物理存儲裝置的具體物理存儲器。直到虛擬機寫入到存儲空間時,最終可由虛擬磁盤利用的存儲空間才可用于其他目的,例如臨時存儲器。
[0028]主機可以創(chuàng)建的另一種類型的虛擬磁盤是固定盤。在固定盤情況中,在創(chuàng)建固定盤時主機的文件系統(tǒng)預(yù)留了與所分配的空間相對應(yīng)的物理存儲器。在此示例中,如果主機向固定的虛擬磁盤分配100Gb,文件系統(tǒng)就在底層物理存儲裝置上劃撥IOOGb的物理存儲空間并將該存儲空間標(biāo)記為已使用,這樣該存儲空間不能用于任何其他目的。
[0029]在動態(tài)虛擬磁盤的情況中,虛擬機將虛擬磁盤看作是具有IOOGb (或近似IOOGb)的空閑或可利用空間的IOOGb存儲裝置,并且文件系統(tǒng)將虛擬磁盤看作是具有基本為零容量的存儲對象。在創(chuàng)建虛擬磁盤時,虛擬磁盤中的已用空間實際上不為零,因為與該虛擬磁盤相關(guān)聯(lián)的某些元數(shù)據(jù)通常存儲在虛擬機磁盤中。例如,虛擬機磁盤可以包括識別虛擬磁盤中可用空間和已用空間的圖。因此,即使主機分配IOOGb的虛擬磁盤,虛擬機可以將該虛擬磁盤看作是最初具有少于IOOGb的可用空間,并且文件系統(tǒng)可用將該虛擬磁盤看作是容量大于零。
[0030]當(dāng)虛擬機寫到虛擬磁盤時,就消耗或使用了物理存儲空間。通常虛擬機將虛擬磁盤的一部分標(biāo)記為已使用,這減少了虛擬機在虛擬機磁盤中所觀察到的可用空間的容量。虛擬機能夠直接訪問底層物理存儲裝置以便寫入數(shù)據(jù)??商娲?,虛擬機可以將數(shù)據(jù)轉(zhuǎn)移到主機上的文件系統(tǒng),并且文件系統(tǒng)可以對物理存儲裝置進行實際的寫操作。虛擬機還將寫操作通知給文件系統(tǒng)。響應(yīng)于虛擬機的通知,文件系統(tǒng)將存儲虛擬磁盤的底層物理存儲裝置的一部分標(biāo)記為已使用。例如,如果虛擬機寫入IGb的文件,文件系統(tǒng)將虛擬磁盤的容量增加IGb并將等于IGb容量的物理存儲空間的容量標(biāo)記為已使用,因此這些空間不可用于其他目的。以此方式,虛擬磁盤的容量可以隨著時間而增長。
[0031 ] 在一些情況中,虛擬機不再希望存儲先前寫入到虛擬磁盤的數(shù)據(jù)??紤]以下示例。在第一時間點,虛擬機下載軟件包并將該軟件包寫入到虛擬磁盤。在此示例中,該軟件包使用IGb的空間。也就是說,當(dāng)虛擬機將該軟件包寫入到虛擬磁盤時,虛擬機將虛擬磁盤中的空閑空間的容量減少了 IGb并且文件系統(tǒng)將虛擬磁盤的容量增加了 1Gb。如果虛擬機隨后下載了該軟件包的一個較新版本(也使用IGb的存儲空間)并在虛擬磁盤中使用該較新的版本,虛擬機再次將虛擬磁盤中的空閑空間的容量減少IGb并且文件系統(tǒng)再次將虛擬磁盤的容量增加了 1Gb。當(dāng)增加虛擬磁盤文件的容量時,文件系統(tǒng)將底層物理存儲裝置上的相應(yīng)容量的物理存儲空間標(biāo)記為已使用。在此示例中,虛擬磁盤現(xiàn)在存儲了兩個版本的軟件包,一個較新版本和一個舊版本。假設(shè)舊版本是廢棄的,虛擬機可以將舊版本標(biāo)記為刪除。當(dāng)虛擬機將舊版本標(biāo)記為刪除時,虛擬機將虛擬磁盤中的可用空間容量增加1Gb。然而,虛擬機通常不向文件系統(tǒng)通知此事,所以文件系統(tǒng)仍將物理存儲空間分配給兩個版本的軟件包。也就是說,盡管虛擬機只將IGb的虛擬磁盤看作用于存儲較新的軟件包,但文件系統(tǒng)仍認(rèn)為2Gb用于儲存兩個版本的軟件包。
[0032]由于在虛擬機執(zhí)行創(chuàng)建空閑空間的操作(例如,如以上示例中,將數(shù)據(jù)標(biāo)記為刪除)時未通知主機,所以文件系統(tǒng)并不會響應(yīng)于這些操作來減少虛擬磁盤的容量。如果允許這種情況向其邏輯結(jié)論方向發(fā)展,虛擬磁盤文件可能最終增長到它的最大允許容量,并且虛擬機不能夠在虛擬磁盤中存儲任何額外數(shù)據(jù)。在一些情況中這是可能發(fā)生的,盡管虛擬機不再關(guān)心虛擬磁盤中數(shù)據(jù)的十分重要的部分。例如,虛擬機可以指定應(yīng)該將某些數(shù)據(jù)標(biāo)記為刪除。結(jié)果,虛擬機將這些數(shù)據(jù)部分看作是可用空間。然而,虛擬機通常不會將虛擬機不再關(guān)心的數(shù)據(jù)的那些部分傳送至文件系統(tǒng)。因此,文件系統(tǒng)已經(jīng)在底層物理存儲裝置上標(biāo)記為已使用或不可用的物理存儲器(包含虛擬機不再關(guān)心的數(shù)據(jù))。在這種情況中,從虛擬機的角度看,虛擬磁盤具有可用的空間,但從主機的角度看,可以將虛擬磁盤看作是滿的。
[0033]很多原因?qū)е逻@種不良情況。在一個示例中,如果虛擬磁盤文件達(dá)到了它的最大分配容量(從文件系統(tǒng)的角度來看),虛擬機將不能夠執(zhí)行新的數(shù)據(jù)寫操作。而且,存儲空間通常是短缺的,所以在存儲裝置中存儲不再有用的數(shù)據(jù)可能增加存儲系統(tǒng)的成本并不必要地請求獲得額外的存儲裝置。仍進一步地,增加存儲裝置中所用存儲空間的容量在一些情況下可能負(fù)面地影響存儲裝置的性能。例如,當(dāng)一個存儲裝置更滿地載入數(shù)據(jù)時可能要比存儲裝置不那么滿地載入花費更多的時間來讀取或?qū)懭氲酱鎯ρb置。
[0034]為了改善以上不利狀況,傳統(tǒng)的系統(tǒng)可以采用回收虛擬機不再需要的存儲空間的方法。這種做法稱為縮減虛擬磁盤。以下討論一個這類方法以及與常規(guī)方法相關(guān)的一些限制。
[0035]一種縮減虛擬磁盤的方法包括將一種模式(例如,全零)寫入到底層存儲裝置中分配給該虛擬磁盤但包含虛擬機未使用的數(shù)據(jù)的全部區(qū)域。零寫入到的物理存儲裝置中的那些區(qū)域存儲了虛擬機先前寫入但虛擬機不再使用的數(shù)據(jù)。在這種示例中,虛擬機的操作系統(tǒng)與用于組織底層物理存儲裝置上的數(shù)據(jù)的文件系統(tǒng)相兼容。這允許虛擬機指定底層物理存儲裝置中的哪些物理存儲空間應(yīng)當(dāng)以零來覆蓋。
[0036]當(dāng)虛擬機接收到縮減虛擬磁盤的請求時,虛擬機首先識別虛擬磁盤中虛擬機先前使用但目前不再使用的那些部分。然后虛擬機向虛擬機磁盤的那些部分寫入全零。在一個示例中,虛擬機維護虛擬磁盤的一個圖,該圖指示虛擬磁盤的哪些部分包含使用的、或有效的數(shù)據(jù)并且哪些部分不包含這些數(shù)據(jù)。該圖指示虛擬機在虛擬磁盤中使用了多少空間以及虛擬磁盤中多少空間可利用。
[0037]然后主機停止或中止虛擬機的操作。這意味著虛擬機不再能夠?qū)懭氲教摂M磁盤。在一些情況中,虛擬機仍然能夠從虛擬磁盤中讀取。在縮減操作的情況中,虛擬磁盤被稱為源虛擬磁盤,因為虛擬磁盤中的數(shù)據(jù)將要復(fù)制到被稱為目的虛擬磁盤的新虛擬磁盤。
[0038]接著,主機創(chuàng)建新的(目的)虛擬磁盤。文件系統(tǒng)可以向目的虛擬磁盤分配等量的存儲空間。例如,如果主機先前為源虛擬磁盤分配100Gb,主機可以為目的虛擬磁盤分配另一個100Gb。如以上提及,主機將目的虛擬磁盤看作是在創(chuàng)建該目的虛擬磁盤時容量就基本為零的存儲對象。
[0039]接著,主機讀取底層物理存儲裝置中對應(yīng)于源虛擬磁盤的那些部分。主機讀取被文件系統(tǒng)標(biāo)記為由虛擬磁盤使用的所有存儲空間。也就是說,如果文件系統(tǒng)將虛擬磁盤文件的容量看作是IOOGb (這意味著文件系統(tǒng)已經(jīng)將IOOGb的存儲空間標(biāo)記為由虛擬磁盤使用),主機就讀取IOOGb的數(shù)據(jù)。
[0040]對于主機所讀取的底層物理存儲裝置中的每個部分,主機都確定是否該部分填以全零。如果是這樣,主機認(rèn)為物理存儲裝置的這部分未由虛擬機使用。當(dāng)物理存儲裝置的這部分不包含全零時,主機認(rèn)為這部分由虛擬機使用并將存儲在這部分中的數(shù)據(jù)寫入到新的虛擬磁盤。因此,物理存儲裝置中分配給虛擬磁盤并包含全零的任意部分不會從源虛擬磁盤復(fù)制到目的虛擬磁盤。如所提及,包含全零的那些部分是虛擬機所指示的并未由虛擬機使用的那些部分,所以虛擬機向那些部分寫入全零。
[0041]一旦虛擬機所使用的所有數(shù)據(jù)被讀取并復(fù)制到目的虛擬磁盤,目的虛擬磁盤僅包含標(biāo)記為由虛擬機使用的數(shù)據(jù),并且不包含虛擬機不關(guān)心的數(shù)據(jù)。此時,主機可以刪除源虛擬磁盤文件并指示虛擬機利用目的虛擬磁盤恢復(fù)操作。虛擬機可以開始向目的虛擬磁盤寫數(shù)據(jù)并從目的虛擬磁盤讀取。
[0042]從主機的角度看,上述方法可以使虛擬磁盤的容量顯著減少。然而,這樣做需要將零寫入到物理存儲裝置中包含數(shù)據(jù)(這些數(shù)據(jù)不再由虛擬機使用)的所有部分,并讀取物理存儲裝置中虛擬機磁盤已經(jīng)使用的所有部分。在一些情況中,讀和寫(I/o操作)可能消耗大量計算資源,例如處理器周期和數(shù)據(jù)傳輸帶寬。
[0043]考慮將虛擬磁盤看作是IOOGb的示例,但僅包括虛擬機關(guān)心的32Gb數(shù)據(jù)。執(zhí)行以上方法包括虛擬機寫入68Gb的零。然后主機讀取IOOGb的數(shù)據(jù)并將這IOOGb與零相比較。接著,主機將虛擬機關(guān)心的32Gb數(shù)據(jù)寫到新的虛擬磁盤。這總計是200Gb的I/O操作。
[0044]以下針對所附圖示描述一種縮減動態(tài)虛擬磁盤的替代方法。該替代方法減少了執(zhí)行相同縮減的I/O操作量,從而突破了理論最小值。在以上示例中,替代方法包括僅讀取32Gb并且僅寫入32Gb。減少136GB的I/O操作表示68%的節(jié)約量,這意味著相同的縮減操作可以在更短的時長中執(zhí)行并使用相當(dāng)少的計算資源,例如處理器周期和數(shù)據(jù)傳輸帶寬。
[0045]圖1是一種計算系統(tǒng)的框圖。如圖所示,該計算系統(tǒng)包括由網(wǎng)絡(luò)30連接的計算裝置10和存儲裝置20,該存儲裝置包括虛擬磁盤22和虛擬磁盤24。網(wǎng)絡(luò)30可以包括WAN (廣域網(wǎng))(例如互聯(lián)網(wǎng))、一個或多個LAN(局域網(wǎng))和/或一個或多個SAN(存儲區(qū)域網(wǎng))。
[0046]計算裝置10是例如個人計算機、膝上型計算機、服務(wù)器、個人數(shù)字助理、蜂窩電話等這樣的計算裝置。計算裝置10包括操作系統(tǒng)50 (包括文件系統(tǒng)60)和虛擬化模塊70 (包括容量調(diào)整管理器72)。計算裝置10還實現(xiàn)虛擬機40 (I)(包括操作系統(tǒng)42 (I)、容量調(diào)整模塊44(I)和應(yīng)用程序46 (I))和虛擬機40 (2)(包括操作系統(tǒng)42 (2)、容量調(diào)整模塊44(2)和應(yīng)用程序46(2))。
[0047]操作系統(tǒng)50可以通過計算裝置10獲取計算資源,例如處理器或存儲資源(例如存儲器20)。在一個實施例中,存儲器20包括組織成物理集群的物理存儲裝置。集群表示可以讀取或?qū)懭氲酱鎯ζ?0的最少量的數(shù)據(jù),例如4Kb。物理存儲裝置中的每個集群順序地從例如物理集群O (代表第一物理集群)到某個最大數(shù)(代表物理存儲裝置中的最后一個物理集群)進行編號。存儲裝置20可以包括在和/或連接至(例如,通過總線、網(wǎng)絡(luò)或其他適合的互聯(lián)設(shè)備)計算裝置10。存儲裝置20提供持久性的數(shù)據(jù)存儲,這樣存儲在這種存儲裝置上的數(shù)據(jù)甚至在關(guān)閉存儲裝置之后仍保持存儲狀態(tài)。這種存儲裝置例如可以是硬盤、光碟(CD)、數(shù)字通用光盤(DVD)、或其他大容量存儲裝置、或包括這種存儲裝置陣列的存儲系統(tǒng)(例如獨立磁盤冗余陣列(RAID)系統(tǒng)或光存儲自動點唱機)。這種存儲裝置還可以是在這類物理存儲裝置和/或存儲系統(tǒng)上實施的虛擬或邏輯存儲裝置。例如,這類存儲裝置可以是在RAID存儲系統(tǒng)上實施的邏輯卷。另外,這類存儲裝置可以包括一個或多個存儲裝置。存儲裝置還可以包括一種或多種類型的存儲介質(zhì),包括固態(tài)介質(zhì)(例如,閃盤驅(qū)動器)、光介質(zhì)(例如,CD和DVD)以及磁介質(zhì)(例如,硬盤或磁帶)。
[0048]文件系統(tǒng)60可以將數(shù)據(jù)(例如存儲器20中的數(shù)據(jù))組織進入文件和目錄中。文件系統(tǒng)60可以維護存儲器20中的文件和數(shù)據(jù)的物理單元的列表。例如,當(dāng)操作系統(tǒng)50創(chuàng)建新文件時,操作系統(tǒng)50可以將該文件的參數(shù)通知給文件系統(tǒng)60,例如大小和類型、關(guān)聯(lián)關(guān)系和各種其他元數(shù)據(jù)。利用這種信息,文件系統(tǒng)60可以確定例如在存儲器20中哪些集群將存儲該文件的數(shù)據(jù)。類似地,當(dāng)針對存儲器20進行寫操作時,文件系統(tǒng)60分配具體的物理集群以存儲寫入的數(shù)據(jù)。文件系統(tǒng)60持續(xù)跟蹤哪些物理集群已使用、哪些文件在已使用的物理集群中存儲數(shù)據(jù)以及哪些物理集群未使用。
[0049]在一個實施例中,操作系統(tǒng)50創(chuàng)建虛擬磁盤,例如虛擬磁盤22。文件系統(tǒng)60指定存儲器20中的哪些物理集群存儲虛擬磁盤22的數(shù)據(jù)。在一個實施例中,操作系統(tǒng)50指定虛擬磁盤22是動態(tài)虛擬磁盤。動態(tài)虛擬磁盤最初具有相對少量的實際使用存儲器并且在虛擬機(對虛擬磁盤具有寫訪問權(quán))需要更多空間時可以增加。文件系統(tǒng)60將動態(tài)虛擬磁盤22看作是存儲對象,例如文件,該存儲對象最初的容量幾乎為零。因此,當(dāng)最初創(chuàng)建虛擬磁盤22時,文件系統(tǒng)60不會將存儲器20中的物理集群的任何一個識別為實際存儲虛擬磁盤22的數(shù)據(jù)。當(dāng)更多的數(shù)據(jù)由例如虛擬機40寫入到虛擬磁盤22時,文件系統(tǒng)60增加虛擬磁盤22的容量并將存儲器20中的附加物理集群識別為存儲虛擬磁盤22的數(shù)據(jù)。
[0050]操作系統(tǒng)50可以向虛擬機40的一個或多個分配虛擬磁盤22。操作系統(tǒng)50可以通知虛擬機40已經(jīng)給虛擬機40分配并指定了虛擬磁盤。一般而言,虛擬機40是充當(dāng)物理計算機系統(tǒng)的軟件結(jié)構(gòu)。例如,虛擬機40可以運行應(yīng)用程序(例如應(yīng)用程序46),提供服務(wù)并且處理命令。應(yīng)用程序46的示例可以包括針對計費、電子表格、數(shù)據(jù)庫、字處理、媒體消費、采購和開發(fā)、產(chǎn)品開發(fā)等的軟件。虛擬機可以運行它自己的操作系統(tǒng),例如操作系統(tǒng)
42。示例操作系統(tǒng)包括微軟Windows和Unix。當(dāng)應(yīng)用程序46寫數(shù)據(jù)時,操作系統(tǒng)42可以對虛擬磁盤22進行寫操作。操作系統(tǒng)42可以保存一個圖,該圖識別虛擬磁盤22中已使用的多個部分以及可用的多個部分。為了確定虛擬磁盤22中存儲的數(shù)據(jù)在物理上存儲在什么位置,操作系統(tǒng)42可以與文件系統(tǒng)60進行通信。
[0051]操作系統(tǒng)50還可以將虛擬磁盤22的某些特性通知給虛擬機40,例如可用空間的容量。虛擬機40不需要知道虛擬磁盤22是動態(tài)的。當(dāng)操作系統(tǒng)50為虛擬機40分配虛擬磁盤22時,操作系統(tǒng)50通知虛擬機40在虛擬磁盤22中有多少空間對虛擬機40是可利用的。虛擬機40將虛擬磁盤22看作是一個存儲對象,該存儲對象的容量由操作系統(tǒng)50指定。虛擬機40可以不知道用于存儲虛擬磁盤22的物理集群的實際容量或數(shù)量最初是十分小的并且可以在虛擬機40向虛擬磁盤22寫入附加數(shù)據(jù)時增加。例如,操作系統(tǒng)50可以向虛擬磁盤22劃撥IOOGb并將虛擬磁盤22分配給虛擬機40。虛擬機40將虛擬磁盤22看作是IOOGb的存儲對象。文件系統(tǒng)60將虛擬磁盤22看作是OGb的存儲對象。在一個實施例中,虛擬機40維護一個圖(例如位圖),該圖將虛擬磁盤22表示為虛擬集群的順序排列。每個虛擬集群可以有固定的容量。例如,虛擬機40可以將虛擬磁盤22看作是一系列25K的虛擬集群(其中每個虛擬集群是4Kb),在此示例中該虛擬磁盤是100GB的虛擬磁盤。虛擬機40可以使用該圖來識別哪些虛擬集群已使用以及哪些未使用。
[0052]應(yīng)用程序46對虛擬磁盤22的寫操作示例可如下進行。應(yīng)用程序46執(zhí)行寫操作。寫操作包括在應(yīng)用程序46使用的文件中保存數(shù)據(jù),存儲從網(wǎng)絡(luò)下載的文件等。虛擬機40檢測是否虛擬磁盤22具有可用空間。例如,虛擬機40可以檢測虛擬集群的圖以檢測哪些虛擬集群(如果有的話)是可用的。如果虛擬機40檢測到虛擬磁盤22是充滿的,或沒有可用的虛擬集群,寫操作失敗。否則,應(yīng)用程序46向虛擬機40傳遞與寫操作相關(guān)的信息,例如文件名。應(yīng)用程序46還可以向虛擬機40傳遞將要寫入的數(shù)據(jù)。虛擬機40對虛擬磁盤22進行寫操作。為了這樣做,虛擬機40向文件系統(tǒng)60傳遞信息,該信息表示需要寫操作。該信息可以識別將要寫入的數(shù)據(jù)的大小和容量,以及該數(shù)據(jù)所關(guān)聯(lián)的文件的文件名。
[0053]文件系統(tǒng)60檢測是否有足夠的空間分配給虛擬磁盤22以便容納數(shù)據(jù)。例如,如果應(yīng)用程序46正寫入IGb的數(shù)據(jù),并且文件系統(tǒng)60發(fā)現(xiàn)IOOGb分配給虛擬磁盤22且僅使用了 50Gb,文件系統(tǒng)60就會檢測到在虛擬磁盤22中有足夠的分配空間來容納寫操作。在這種情況中,文件系統(tǒng)60可以通知虛擬機40有足夠的可用空間并且寫操作可以進行。否貝U,文件系統(tǒng)60可以指示寫操作應(yīng)該會失敗。可替代地,文件系統(tǒng)60可以為虛擬磁盤22分配額外的存儲空間并允許進行寫操作。
[0054]如果文件系統(tǒng)60檢測到虛擬磁盤22有足夠的分配空間來容納寫操作,文件系統(tǒng)60在存儲器20中分配實際存儲數(shù)據(jù)的一個或多個物理集群或物理集群的范圍。文件系統(tǒng)60還可以向虛擬機40發(fā)送識別物理集群的信息。虛擬機40將數(shù)據(jù)傳輸至文件系統(tǒng)60并更新虛擬集群圖以便將分配給數(shù)據(jù)的虛擬集群識別為已使用。文件系統(tǒng)60可以將數(shù)據(jù)存儲在存儲器20中。可替代地,虛擬機22可以直接向存儲器20傳輸數(shù)據(jù)。存儲器20將數(shù)據(jù)存儲在文件系統(tǒng)60所指定的那些物理集群上。
[0055]當(dāng)虛擬機40不再需要特定的數(shù)據(jù)項時,例如當(dāng)應(yīng)用程序46發(fā)布刪除文件的命令時,虛擬機40可以更新虛擬集群圖以指示存儲數(shù)據(jù)的虛擬機集群不再包含有效數(shù)據(jù)。虛擬集群中的數(shù)據(jù)被指定為刪除并且虛擬集群被標(biāo)記為可用的存儲空間。
[0056]與創(chuàng)建虛擬機和管理虛擬機以及虛擬機資源相關(guān)的操作可以由包括容量調(diào)整管理器72的虛擬化模塊70來執(zhí)行。例如,當(dāng)縮減虛擬磁盤(例如虛擬磁盤22)時,容量調(diào)整管理器72可以與容量調(diào)整模塊(例如容量調(diào)整模塊44)進行通信以縮減虛擬磁盤22。
[0057]在一個實施例中,操作系統(tǒng)50可以檢測指示虛擬磁盤應(yīng)該縮減的條件并將此信息傳送至虛擬模塊70。然后容量調(diào)整管理器72可以通知容量調(diào)整模塊44虛擬磁盤22的縮減正在進行。接著容量調(diào)整模塊44可以在占有虛擬磁盤22的基本上所有空閑空間的虛擬磁盤22中創(chuàng)建文件。容量調(diào)整模塊44可以使用虛擬機40所維護的虛擬集群的圖以便在該文件所占有的虛擬磁盤22中產(chǎn)生虛擬集群列表。這種列表本質(zhì)上是虛擬磁盤22中虛擬磁盤22未使用的所有虛擬集群的列表,無論這些單元從未被寫入到虛擬機40或已經(jīng)之前被其使用以便存儲數(shù)據(jù)并且然后被指定為已經(jīng)被虛擬機40刪除。
[0058]虛擬機40可以將虛擬集群的列表傳送至操作系統(tǒng)50。在一個實施例中,虛擬機40首先將虛擬集群的列表轉(zhuǎn)換為相應(yīng)的物理集群的列表。文件系統(tǒng)60提供具有物理集群的虛擬機40,當(dāng)虛擬機40向物理集群寫入時,這些物理集群存儲虛擬磁盤22的數(shù)據(jù)。這允許虛擬機40在物理集群和虛擬集群之間進行映射。該列表中的物理集群表示一些單元,這些單元包含虛擬機40不再關(guān)心的數(shù)據(jù)。
[0059]操作系統(tǒng)50可以從虛擬機40已經(jīng)寫到的虛擬磁盤22的所有單元(除了列表中識別的單元)讀取數(shù)據(jù),并且將讀取的數(shù)據(jù)復(fù)制到新的虛擬磁盤,例如虛擬磁盤24。在該復(fù)制操作完成后,虛擬磁盤24僅包含虛擬機40關(guān)心的數(shù)據(jù)并且還足夠大來容納該數(shù)據(jù)。也就是說,虛擬磁盤24可能小于虛擬磁盤22,因為虛擬磁盤24只具有用于虛擬機40感興趣的數(shù)據(jù)的存儲空間,盡管虛擬磁盤22可能包括存儲虛擬機40不再關(guān)心的數(shù)據(jù)的存儲空間。
[0060]圖2A是IOOGb虛擬磁盤的圖示,例如圖1的虛擬磁盤22。圖2A展示了從文件系統(tǒng)(例如,圖1的文件系統(tǒng)60)角度看的虛擬磁盤中的已用空間205和未用空間210。已用空間205和未用空間210代表一個或多個物理集群。在一個實施例中,虛擬磁盤是從基本為零字節(jié)的已用存儲空間發(fā)展到幾乎充滿的動態(tài)虛擬磁盤。例如,操作系統(tǒng)(例如圖1的操作系統(tǒng)50)向虛擬磁盤分配了 100Gb。操作系統(tǒng)可以向虛擬機授予寫權(quán)限,例如圖1的虛擬機40。
[0061]在操作系統(tǒng)創(chuàng)建虛擬磁盤并向該虛擬磁盤分配存儲空間(例如,IOOGb)時,文件系統(tǒng)將該虛擬磁盤看作是具有基本為零字節(jié)的空間用于存儲數(shù)據(jù)。此時,不分配物理集群來存儲虛擬磁盤的數(shù)據(jù)。當(dāng)虛擬機將數(shù)據(jù)寫入到虛擬磁盤時,文件系統(tǒng)將底層存儲裝置(例如圖1的存儲器20)中的特定物理集群分配給數(shù)據(jù)并標(biāo)記為已由這些物理集群(包含虛擬機寫入的數(shù)據(jù))使用。隨著時間變化,虛擬磁盤從其最初容量(這種情況下文件系統(tǒng)將幾乎零字節(jié)的存儲空間標(biāo)記為已使用)增長到幾乎90Gb的存儲空間(文件系統(tǒng)將其標(biāo)記為已使用),如圖2A所示。當(dāng)虛擬機寫入到虛擬磁盤時,文件系統(tǒng)標(biāo)記已經(jīng)使用的額外存儲空間(例如,物理集群),并且虛擬磁盤動態(tài)地增長。
[0062]圖2B從虛擬機的角度展示了圖2A的虛擬磁盤。圖2B展示了已用空間215和未用空間220。已用空間215和未用空間220代表一個或多個虛擬集群。寫到虛擬磁盤的虛擬機還可以從虛擬磁盤刪除數(shù)據(jù)。在一個實施例中,虛擬機的一個或多個刪除操作針對于虛擬磁盤中未使用空間220的一些或全部。然而,這些刪除操作不會傳遞到文件系統(tǒng),所以盡管文件系統(tǒng)將虛擬磁盤看作是使用分配給虛擬磁盤的存儲空間的90%,但虛擬機將虛擬磁盤看作是只使用了分配給虛擬磁盤的存儲空間的50%,如圖2B所示。
[0063]圖2C從文件系統(tǒng)角度展示了縮減操作后圖2A的虛擬磁盤,如以下所描述。圖2C展示了已用空間225和未用空間230。已用空間225和未用空間230代表一個或多個物理集群。需要注意的是,盡管已用空間225在圖2C中描繪為一系列連續(xù)定位的集群,但在底層物理存儲裝置中不需要存在這樣的安排。如圖2A和圖2B所示,文件系統(tǒng)將包括在虛擬磁盤中的某些物理集群看作是由虛擬磁盤使用,即使虛擬機將相應(yīng)的虛擬集群看作是未使用的??s減操作使得文件系統(tǒng)將這些區(qū)域看作是未使用的。在縮減操作之后,文件系統(tǒng)將虛擬磁盤看作是使用了大概50%,這與縮減操作之前相反,在這種情況中文件系統(tǒng)認(rèn)為虛擬磁盤使用了 90%。正如所看到的那樣,縮減操作產(chǎn)生可由文件系統(tǒng)使用的額外空間。
[0064]圖3是一種執(zhí)行虛擬磁盤縮減操作的方法的流程圖。在一個實施例中,由一個系統(tǒng)(例如圖1的系統(tǒng))來執(zhí)行該方法??s減操作開始于305??s減操作可以響應(yīng)于用戶命令而啟動。例如,系統(tǒng)管理員可以手動地選擇虛擬磁盤,例如圖1的虛擬磁盤22,并啟動該虛擬磁盤的縮減操作。縮減的虛擬磁盤稱為源虛擬磁盤??商娲?,縮減操作可以響應(yīng)于檢測到閾值條件而自動啟動。例如,操作系統(tǒng)(例如,圖1的操作系統(tǒng)50)可以檢測虛擬磁盤或底層物理存儲裝置(例如,圖1的存儲器20)的使用已經(jīng)達(dá)到某個閾值,例如90%已滿。響應(yīng)于檢測到已達(dá)到該閾值,操作系統(tǒng)可以啟動虛擬磁盤的縮減操作。操作系統(tǒng)可以通過與文件系統(tǒng)(例如,圖1的文件系統(tǒng)60)的通信來檢測達(dá)到該閾值,該文件系統(tǒng)管理虛擬磁盤所使用的存儲空間(例如,圖1的存儲器20)。操作系統(tǒng)還可以周期地或響應(yīng)于檢測到自前一個縮減操作以來的經(jīng)過時間量來啟動縮減操作。
[0065]響應(yīng)于操作系統(tǒng)檢測到將要執(zhí)行縮減操作,操作系統(tǒng)向容量調(diào)整管理器(例如,圖1的容量調(diào)整管理器72)發(fā)布命令以開始縮減。然后容量調(diào)整管理器通知虛擬機(例如,圖1的虛擬機40)中的容量調(diào)整模塊(例如,如圖1所示的容量調(diào)整模塊44)進行縮減操作。容量調(diào)整管理器可以代表主操作系統(tǒng)來執(zhí)行與縮減操作有關(guān)的操作。容量調(diào)整模塊可以代表虛擬機執(zhí)行與縮減操作有關(guān)的操作。
[0066]在310,如參考圖4A進一步描述的,產(chǎn)生集群列表。該列表可以響應(yīng)于接收到縮減操作的通知由容量調(diào)整模塊來產(chǎn)生。該列表識別虛擬磁盤中虛擬機認(rèn)為未使用的單元。列表中識別的這些單元中的一些可以被識別為由文件系統(tǒng)使用。從文件系統(tǒng)的角度來看,文件系統(tǒng)識別為已使用的單元有助于增加虛擬磁盤所利用的存儲空間容量。列表識別虛擬機在虛擬磁盤中所看到的基本上全部未使用空間。在一個替代實施例中,列表可以識別虛擬機認(rèn)為已使用的單元。
[0067]在405,容量調(diào)整模塊(例如,圖1的容量調(diào)整模塊44)接收虛擬磁盤(例如,圖1的虛擬磁盤22)將要縮減的通知。響應(yīng)于通知,在410容量調(diào)整模塊打開一個臨時文件。容量調(diào)整模塊將該文件的容量設(shè)置為在虛擬機(例如圖1的虛擬機40)看來幾乎等于虛擬磁盤中空閑空間的容量。在一個實施例中,虛擬機將所有虛擬集群標(biāo)記為可用空間或不可用空間,并包括該臨時文件中的虛擬集群。虛擬機通常使較少數(shù)量的虛擬集群為空閑。如果在縮減操作后任何操作使得虛擬磁盤擴大,這種剩余空間可用于存儲數(shù)據(jù)。
[0068]創(chuàng)建文件并使虛擬集群標(biāo)記為已使用也使得底層物理集群被標(biāo)記為已使用。這防止可以在底層物理存儲裝置(例如,圖1的存儲器20)上運行的任何碎片整理操作移動這些單元。如果在縮減操作過程中移動了這些單元,縮減操作可能失敗,或錯誤數(shù)據(jù)可能被復(fù)制。
[0069]容量調(diào)整模塊設(shè)置文件的一個屬性,該屬性指定在關(guān)閉該文件時將會刪除該文件。容量調(diào)整模塊還設(shè)置文件的一個屬性,該屬性指定管理該文件的存儲器的文件系統(tǒng)(例如,圖1的文件系統(tǒng)60)不應(yīng)該以零填充為該文件分配的未使用空間,或?qū)Ψ峙浣o該文件的單元執(zhí)行任何寫操作。在一個實施例中,設(shè)置該屬性包括在文件的元數(shù)據(jù)中設(shè)置標(biāo)記。當(dāng)文件系統(tǒng)為該臨時文件分配空間時,文件系統(tǒng)讀取該標(biāo)記的值。
[0070]在一個實施例中,容量調(diào)整模塊創(chuàng)建多個臨時文件。例如,容量調(diào)整模塊可以為每個連續(xù)范圍的虛擬集群創(chuàng)建一個臨時文件。在另一個示例中,虛擬磁盤可以跨越底層物理存儲裝置(例如圖1的存儲器20)的多個分區(qū)。在此示例中,容量調(diào)整模塊可以為虛擬磁盤所跨越的每個分區(qū)創(chuàng)建一個臨時文件??商娲?,虛擬磁盤可以包括在一個單一部分中。
[0071]在415,容量調(diào)整模塊識別被分配用于存儲文件中所包含的數(shù)據(jù)的虛擬集群并創(chuàng)建這些虛擬集群的列表。在420,容量調(diào)整模塊將虛擬集群標(biāo)識符轉(zhuǎn)換為物理集群標(biāo)識符并創(chuàng)建一個新的物理集群標(biāo)識符列表。在一個實施例中,虛擬集群和邏輯集群的大小不同。在這種情況中,單一的虛擬集群編號可以對應(yīng)于多個邏輯集群編號,或反之亦然。在將虛擬集群編號列表轉(zhuǎn)換為邏輯集群編號列表之后,在425容量調(diào)整模塊將該列表傳送至容量調(diào)整管理器。
[0072]返回到圖3,在315操作系統(tǒng)建立一個新的虛擬磁盤,例如圖1的虛擬磁盤24,在315。該虛擬磁盤將用作在源虛擬磁盤上存儲的數(shù)據(jù)的目的虛擬磁盤。操作系統(tǒng)可以為目的虛擬磁盤和源虛擬磁盤分配相同容量的存儲空間,或者操作系統(tǒng)可以為目的虛擬磁盤分配不同容量的存儲空間。操作系統(tǒng)可以指定目的虛擬磁盤是動態(tài)虛擬磁盤。最初,在文件系統(tǒng)看來,目的虛擬磁盤基本上是空的,或容量為零字節(jié)。
[0073]在320,如參考圖4A進一步描述的,操作系統(tǒng)從源虛擬磁盤向目的虛擬磁盤復(fù)制數(shù)據(jù)。在430,容量調(diào)整管理器接收容量調(diào)整模塊產(chǎn)生的列表。在435,操作系統(tǒng)中止虛擬機。當(dāng)中止虛擬機時,虛擬機不能寫入到虛擬磁盤。在中止虛擬機的同時,虛擬機仍可以處理從虛擬磁盤的讀操作。在一個實施例中,操作系統(tǒng)可以完全關(guān)閉虛擬機,這樣在進行縮減操作時虛擬機不執(zhí)行任何操作。
[0074]文件系統(tǒng)維護底層物理存儲裝置的物理集群(用于存儲虛擬磁盤的數(shù)據(jù))列表。在440,操作系統(tǒng)在物理集群列表中選擇第一條項,該第一條項對應(yīng)于物理存儲裝置中的第一物理集群。在440,操作系統(tǒng)將這種物理集群標(biāo)識符與從容量調(diào)整模塊接收的未使用的物理集群列表中的條項相比較,以確定由文件系統(tǒng)標(biāo)記為已使用的物理集群是否由虛擬機使用。如果在兩個列表中都識別了物理集群,操作系統(tǒng)不會從源虛擬磁盤向目的虛擬磁盤復(fù)制物理集群中的數(shù)據(jù),因為從容量調(diào)整模塊接收的列表識別虛擬機不再使用的物理集群并且操作系統(tǒng)不會復(fù)制被識別為虛擬機未使用的集群。如果物理集群被識別為由文件系統(tǒng)和虛擬機使用(例如,物理集群在從容量調(diào)整模塊接收的列表中未得到識別),在435操作系統(tǒng)將該集群從源虛擬磁盤復(fù)制到目的虛擬磁盤。操作系統(tǒng)從源虛擬磁盤的一些單元讀取這些集群并寫入由文件系統(tǒng)分配到目的虛擬磁盤的集群。寫入到目的虛擬磁盤的每個集群使得文件系統(tǒng)動態(tài)地增加目的虛擬磁盤的容量。
[0075]在440,操作系統(tǒng)檢測是否附加的集群仍然從源虛擬磁盤復(fù)制到目的虛擬磁盤。在一個實施例中,這包括遍歷被文件系統(tǒng)識別為由源虛擬磁盤使用的所有集群的列表。如果是這樣,在445操作系統(tǒng)在由文件系統(tǒng)標(biāo)記為已使用的物理集群列表中選擇下一個條項。
[0076]一旦需要復(fù)制到目的虛擬磁盤的所有集群都復(fù)制到目的虛擬磁盤,在435容量調(diào)整模塊關(guān)閉臨時文件,這導(dǎo)致臨時文件的刪除。
[0077]返回到圖3,在325操作系統(tǒng)交換虛擬磁盤。為了這樣做,操作系統(tǒng)授予虛擬機對目的虛擬磁盤的讀和寫訪問權(quán)限,并取消虛擬機訪問源虛擬磁盤的權(quán)限。然后在330,操作系統(tǒng)可以刪除源虛擬磁盤。
[0078]一旦完成縮減操作,在335操作系統(tǒng)重新啟動虛擬機。當(dāng)重新啟動虛擬機時,該虛擬機就可以從目的虛擬機讀取并寫入到它。
[0079]圖5是一種計算裝置的框圖,該框圖展示了可以如何在軟件中實施容量調(diào)整管理器72。計算系統(tǒng)510廣義上代表能夠執(zhí)行計算機可讀指令的任何單處理器或多處理器的計算裝置或系統(tǒng)。計算系統(tǒng)510的多個示例包括但不限于各種裝置中的任意一種或多種,這些裝置包括工作站、個人計算機、膝上型計算機、客戶側(cè)終端、服務(wù)器、分布式計算系統(tǒng)、手持裝置(例如,個人數(shù)字助理和移動電話)、網(wǎng)絡(luò)設(shè)備、存儲控制器(例如,陣列控制器、磁帶驅(qū)動控制器或硬盤驅(qū)動控制器)等。在其最基本的配置中,計算系統(tǒng)510可以包括至少一個處理器514以及一個系統(tǒng)內(nèi)存516。通過執(zhí)行實現(xiàn)容量調(diào)整管理器72的軟件,計算系統(tǒng)510成為一個專用計算裝置,該裝置被配置成用于參與動態(tài)虛擬磁盤縮減操作。
[0080]處理器514總體上代表能夠處理數(shù)據(jù)或解釋并執(zhí)行多個指令的任何類型或形式的處理單元。在某些實施例中,處理器514可以從一個軟件應(yīng)用程序或模塊中接收指令。這些指令可以使處理器514執(zhí)行在此所說明和/或展示的這些實施例中的一個或多個的功能。例如,處理器514可以執(zhí)行和/或作為一種手段用于執(zhí)行此處所描述的操作中的全部或一些。處理器514還可以執(zhí)行和/或作為一種手段來執(zhí)行在此說明和/或展示的任何其他操作、方法、或過程。
[0081]系統(tǒng)內(nèi)存516總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任何類型或形式的易失性或非易失性存儲裝置或介質(zhì)。系統(tǒng)內(nèi)存516的多個示例包括(但不限于)隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃存、或任何其他適當(dāng)?shù)拇鎯ρb置。在一個實施例中,實施RAM模塊135的程序指令可以載入到系統(tǒng)內(nèi)存516中。
[0082]在某些實施例中,除了處理器514和系統(tǒng)內(nèi)存516外,計算系統(tǒng)510還可以包括一個或多個組件或元件。例如,如圖5所示,計算系統(tǒng)510可以包括內(nèi)存控制器518、輸入/輸出(I/O)控制器520、以及通信接口 522,它們中的每一個可以通過通信基礎(chǔ)設(shè)施512相互連接。通信基礎(chǔ)設(shè)施512總體上代表能夠幫助在計算裝置的一個或多個組件之間進行通信的任意類型或形式的基礎(chǔ)設(shè)施。通信基礎(chǔ)設(shè)施512的示例包括但不限于通信總線(例如工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)、外圍組件互聯(lián)(PCI)、第三代總線標(biāo)準(zhǔn)(PCIe)、或類似總線)和網(wǎng)絡(luò)。
[0083]內(nèi)存控制器518總體上代表在計算系統(tǒng)510的一個或多個組件之間操作內(nèi)存或數(shù)據(jù)或者控制通信的任意類型或形式的裝置。例如,在某些實施例中,內(nèi)存控制器518可以通過通信基礎(chǔ)設(shè)施512控制處理器514、系統(tǒng)內(nèi)存516以及I/O控制器520之間的通信。在某些實施例中,內(nèi)存控制器518可以獨立地或與其他元件相結(jié)合地執(zhí)行和/或作為一種手段執(zhí)行在此描述和/或展示的多個步驟或特征中的一個或多個。
[0084]I/O控制器520總體上代表能夠協(xié)調(diào)和/或控制一種計算裝置的輸入和輸出功能的任何類型或形式的模塊。例如,在某些實施例中I/o控制器520可以控制或協(xié)助在計算系統(tǒng)510的一個或多個元件(如處理器514、系統(tǒng)內(nèi)存516、通信接口 522、顯示適配器526、輸入接口 550、以及存儲接口 554)之間的數(shù)據(jù)傳送。
[0085]通信接口 522廣義地代表能夠協(xié)助計算系統(tǒng)510與一個或多個附加裝置之間進行通信的任何類型或形式的通信裝置或適配器。例如,在某些實施例中,通信接口 522可以協(xié)助計算系統(tǒng)510與包括多個附加的計算系統(tǒng)的私有或公共網(wǎng)絡(luò)之間的通信。通信接口 522的示例包括但不限于有線網(wǎng)絡(luò)接口(例如網(wǎng)絡(luò)接口卡)、無線網(wǎng)絡(luò)接口(例如無線網(wǎng)絡(luò)接口卡)、調(diào)制解調(diào)器、以及任何其他適當(dāng)?shù)慕涌?。在至少一個實施例中,通信接口 522可通過到網(wǎng)絡(luò)(如互聯(lián)網(wǎng))的直接鏈接來提供到一臺遠(yuǎn)程服務(wù)器的直接連接。通信接口 522還可以間接地提供這種連接,例如通過局域網(wǎng)(如以太網(wǎng))、個人局域網(wǎng)、電話或纜線網(wǎng)、蜂窩電話連接、衛(wèi)星數(shù)據(jù)連接、或任何其他適當(dāng)?shù)倪B接。
[0086]在某些實施例中,通信接口 522還可以代表一種主機適配器,該主機適配器被配置為用于通過一條外部總線或通信信道協(xié)助計算系統(tǒng)510與一個或多個附加網(wǎng)絡(luò)或存儲裝置之間的通信。主機適配器的示例包括但不限于小型計算機系統(tǒng)接口(SCSI)主機適配器、通用串行總線(USB)主機設(shè)配器、電氣和電子工程學(xué)會(IEEE) 1594主機適配器、串行高級技術(shù)附件(SATA)、串行附接SCSI(SAS)和外部SATA(eSATA)主機適配器、高級技術(shù)附件(ATA)和并行ATA(PATA)主機適配器、光纖通道接口適配器、以太網(wǎng)適配器等。
[0087]通信接口 522還可以允許計算系統(tǒng)510參與分布式計算或遠(yuǎn)程計算。例如,通信接口 522可以從一個遠(yuǎn)程裝置接收指令或向一個遠(yuǎn)程裝置發(fā)送指令用于執(zhí)行。
[0088]如圖5所示,計算系統(tǒng)510還可以包括通過顯示適配器526連接至通信基礎(chǔ)設(shè)施512的至少一個顯示裝置524。顯示裝置524總體上代表能夠可視地呈現(xiàn)顯示適配器526所轉(zhuǎn)發(fā)的顯示信息的任意類型或形式的裝置。相似地,顯示適配器526總體上代表任意類型或形式的裝置,這些裝置被配置用于從通信基礎(chǔ)設(shè)施512 (或從本領(lǐng)域已知的幀緩沖器)轉(zhuǎn)發(fā)圖形、文本以及其他數(shù)據(jù)以便顯示在顯示裝置524上。
[0089]如圖5所示,計算系統(tǒng)510還可以包括通過輸入接口 550連接至通信基礎(chǔ)設(shè)施512的至少一個輸入裝置528。輸入裝置528總體上代表能夠向計算系統(tǒng)510提供由計算機或人員生成的輸入的任意類型或形式的輸入裝置。輸入裝置528的示例包括但不限于鍵盤、定位裝置、語音識別裝置或任意其他輸入裝置。
[0090]如圖5所示,計算系統(tǒng)510還包括通過存儲接口 534連接至通信基礎(chǔ)設(shè)施512的一個數(shù)據(jù)存儲裝置533。存儲裝置533總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任意類型或形式的存儲裝置或介質(zhì)。例如,存儲裝置533可以是磁盤驅(qū)動器(例如,所謂的硬盤驅(qū)動器)、軟盤驅(qū)動器、光盤驅(qū)動器、閃存驅(qū)動器、或者類似裝置。存儲接口 534總體上代表用于在存儲裝置533和計算裝置510的其他組件之間傳輸數(shù)據(jù)的任意類型或形式的接口或裝置。
[0091]在某些實施例中,存儲裝置533可以被配置為用于讀取自和/或?qū)懭氲揭粋€可移動存儲單元,該可移動存儲單元被配置為用于存儲計算機軟件、數(shù)據(jù)、或其他計算機可讀信息。適合的可移動存儲單元的示例包括但不限于軟盤、磁帶、光盤、閃存裝置等等。存儲裝置533還可以包括其他類似的結(jié)構(gòu)或裝置,以允許計算機軟件、數(shù)據(jù)或其他計算機可讀指令下載到計算系統(tǒng)510中。例如,存儲裝置533可以被配置成用于讀或?qū)戃浖?shù)據(jù)或其他計算機可讀信息。存儲裝置533還可以作為計算系統(tǒng)510的一部分或可以是通過其他接口系統(tǒng)訪問的一個分離的裝置。
[0092]很多其他裝置或子系統(tǒng)可以連接至計算系統(tǒng)510上。相反地,為了實施在此描述和/或展示的實施例,不需要圖5中所示的所有組件和裝置。以上提到的這些裝置和子系統(tǒng)還能夠以不同于圖5中所示的方式進行相互連接。
[0093]計算系統(tǒng)510還可使用任意數(shù)量的軟件、固件、和/或硬件的配置。例如,在此披露的實施例中的一個或多個可以被編碼為一種計算機可讀介質(zhì)上的計算機程序(也稱為計算機軟件、軟件應(yīng)用程序、計算機可讀指令、或計算機控制邏輯)。計算機可讀存儲介質(zhì)的示例包括磁存儲介質(zhì)(例如硬盤驅(qū)動器和軟盤)、光存儲介質(zhì)(例如,⑶或DVD-ROM)、電存儲介質(zhì)(例如,固態(tài)驅(qū)動器和閃存)等。這樣的計算程序也可以通過網(wǎng)絡(luò)(例如互聯(lián)網(wǎng)或載體介質(zhì))傳輸?shù)接嬎阆到y(tǒng)510以存儲在內(nèi)存中。
[0094]包含計算機程序的計算機可讀介質(zhì)可以載入到計算系統(tǒng)510中。存儲在計算機可讀介質(zhì)上的所有或部分計算機程序然后可以存儲在系統(tǒng)內(nèi)存516和/或存儲裝置532和533的不同部分上。當(dāng)由處理器514執(zhí)行時,載入到計算系統(tǒng)510中的計算機程序可以使處理器514執(zhí)行和/或作為一種手段執(zhí)行在此描述和/或展示的實施例中的一個或多個的功能。另外或可替代地,在此所說明和/或展示的實施例中的一個或多個可以在固件和/或硬件中實施。例如,可以將計算系統(tǒng)510配置為一種特定用途集成電路(ASIC),該電路被適配為用于實施在此所披露的這些實施例中的一個或多個。
[0095]圖6是網(wǎng)絡(luò)架構(gòu)600的框圖,在該網(wǎng)絡(luò)架構(gòu)中客戶端系統(tǒng)610、620和630以及服務(wù)器640和645可以連接至網(wǎng)絡(luò)650??蛻舳讼到y(tǒng)610、620和630總體上代表任意類型或形式的計算裝置或系統(tǒng)。
[0096]類似地,服務(wù)器640和645總體上代表被配置為用于提供不同的數(shù)據(jù)庫服務(wù)和/或運行某些軟件應(yīng)用程序的計算裝置或系統(tǒng),例如在計算裝置(例如圖5中的計算系統(tǒng)510)上實施的應(yīng)用程序服務(wù)器或數(shù)據(jù)庫服務(wù)器。網(wǎng)絡(luò)650總體上代表任何電信或計算機網(wǎng)絡(luò),例如包括:內(nèi)部網(wǎng)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、個人區(qū)域網(wǎng)(PAN)、或互聯(lián)網(wǎng)。在一個示例中,服務(wù)器640和/或645可以包括如圖1所示的RAM模塊135。
[0097]如圖6所示,一個或多個存儲裝置660(1)-(N)可以直接附接至服務(wù)器640。類似地,一個或多個存儲裝置670 (I)-(N)可以直接附接至服務(wù)器645。存儲裝置660 (I) - (N)和存儲裝置670 (I)-(N)總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任意類型或形式的存儲裝置或介質(zhì)。在某些實施例中,存儲裝置660 (I)-(N)和存儲裝置670 (I)-(N)可以代表網(wǎng)絡(luò)附聯(lián)存儲(NAS)裝置,這些裝置被配置為利用不同協(xié)議(例如網(wǎng)絡(luò)文件系統(tǒng)(NFS)、服務(wù)器消息塊(SMB)、或公共互聯(lián)網(wǎng)文件系統(tǒng)(CIFS))與服務(wù)器640和645進行通?目。
[0098]服務(wù)器640和645還可以連接至存儲區(qū)域網(wǎng)絡(luò)(SAN)結(jié)構(gòu)680。SAN結(jié)構(gòu)680總體上代表能夠協(xié)助多個存儲裝置之間通信的任意類型或形式的計算機網(wǎng)絡(luò)或體系結(jié)構(gòu)。SAN結(jié)構(gòu)680可以協(xié)助服務(wù)器640和645與多個存儲裝置690 (I)-(N)和/或智能存儲器陣列695之間的通信。SAN結(jié)構(gòu)680還可以通過網(wǎng)絡(luò)650以及服務(wù)器640和645協(xié)助客戶端系統(tǒng)610,620和630與存儲裝置690 (I)-(N)和/或智能存儲器陣列695之間的通信,其方式為裝置690 (I)-(N)以及陣列695對客戶端系統(tǒng)610、620和630呈現(xiàn)為本地附接的裝置。與存儲裝置660 (I)-(N)和存儲裝置670 (I)-(N) —樣,存儲裝置690 (I) - (N)和存儲陣列695總體上代表能夠存儲數(shù)據(jù)和/或其他計算機可讀指令的任意類型或形式的存儲裝置或介質(zhì)。
[0099]在某些實施例中,參考圖5的計算系統(tǒng)510,通信接口(例如圖5中的通信接口522)可以用來在每個客戶端系統(tǒng)610、620和630以及網(wǎng)絡(luò)650之間提供連接。客戶端系統(tǒng)610、620和630能夠利用例如網(wǎng)絡(luò)瀏覽器或其他客戶端軟件訪問服務(wù)器640或645的信息。這種軟件可以允許客戶端系統(tǒng)610、620和630訪問由服務(wù)器640、服務(wù)器645、存儲裝置660 (I) - (N)、存儲裝置670 (I) - (N)、存儲裝置690 (I) - (N)或智能存儲器陣列695管理的數(shù)據(jù)。盡管圖6描繪了使用網(wǎng)絡(luò)(例如互聯(lián)網(wǎng))來交換數(shù)據(jù),但在此描述和/或展示的實施例不限于互聯(lián)網(wǎng)或任意具 體的基于網(wǎng)絡(luò)的環(huán)境。
[0100]在至少一個實施例中,在此披露的實施例中的一個或多個的全部或一部分可被編碼為一種計算機程序并且由服務(wù)器640、服務(wù)器645、存儲裝置660(1)-(Ν)、存儲裝置670(1)-(Ν)、存儲裝置690(1)-(Ν)、智能存儲陣列695、或它們中的任意組合加載并執(zhí)行。在此披露的實施例中的一個或多個的全部或一部分還可以被編碼成為一種計算機程序,它存儲在服務(wù)器640中、由服務(wù)器645來運行、并在網(wǎng)絡(luò)650上分發(fā)給客戶端系統(tǒng)610、620、和630。
[0101]在一些示例中,圖1、5和6中的計算裝置的全部或一部分可以代表云計算的或基于網(wǎng)絡(luò)的環(huán)境的多個部分。云計算環(huán)境可以通過互聯(lián)網(wǎng)提供各種服務(wù)和應(yīng)用程序。這些基于云的服務(wù)(例如,軟件即服務(wù)、平臺即服務(wù)、基礎(chǔ)設(shè)施即服務(wù)等)可以通過網(wǎng)絡(luò)瀏覽器或其他的遠(yuǎn)程接口進行訪問。在此所述的不同功能可以通過遠(yuǎn)程桌面環(huán)境或任何其他的基于云的計算環(huán)境來提供。
[0102]另外,在此所述的這些模塊中的一個或多個可以將數(shù)據(jù)、物理裝置、和/或物理裝置的表示從一種形式轉(zhuǎn)換到另一種形式。例如,圖1中的歸檔模塊可以轉(zhuǎn)換計算裝置的行為以使得計算裝置存儲并管理RAM中的數(shù)據(jù)操作。[0103]盡管已經(jīng)結(jié)合一些實施例描述了本發(fā)明,但無意將本發(fā)明限制于本文闡述的具體形式。相反的是,本發(fā)明意在涵蓋可以合理地包含在所附權(quán)利要求定義的本發(fā)明范圍內(nèi)的這些替代形式、修改形式以及等效形式。
【權(quán)利要求】
1.一種方法,包括: 接收一個請求以便對一個第一存儲對象執(zhí)行一個縮減操作,其中該第一存儲對象包括多個存儲單元; 接收識別第一組存儲單元的一個第一列表,其中 該第一組存儲單元是該多個存儲單元的第一子集,并且 響應(yīng)于該執(zhí)行一個縮減操作的請求來接收該列表; 從第二組存儲單元讀取數(shù)據(jù),其中 該第二組存儲單元是該多個存儲單元的第二子集,并且 該第一組存儲單元和第二組存儲單元是互不相交的;并且 將該數(shù)據(jù)復(fù)制到一個第二存儲對象。
2.如權(quán)利要求1所述的方法,其中 該第一存儲對象和第二存儲對象包括多個動態(tài)虛擬磁盤。
3.如權(quán)利要求1所述的方法,其中 該第一組存儲單元識別一個第一文件的多個部分,并且 響應(yīng)于該請求,由一個虛擬機創(chuàng)建該第一文件。
4.如權(quán)利要求3所述的方法,進一步包括:檢測該縮減操作的完成;并且 響應(yīng)于該檢測而刪除該文件。
5.如權(quán)利要求1所述的方法,其中 該第一組存儲單元對應(yīng)于該第一存儲對象的多個未使用部分。
6.如權(quán)利要求1所述的方法,進一步包括: 接收一個第二列表,其中該第一列表對應(yīng)于該第一存儲對象的一個第一分區(qū)的多個未使用部分并且該第二列表對應(yīng)于該第一存儲對象的一個第二分區(qū)的多個未使用部分;并且將該第二列表與該第一列表合并。
7.如權(quán)利要求1所述的方法,進一步包括: 檢測該文件的一個屬性,其中該屬性指示創(chuàng)建該文件不需要任何輸入/輸出(I/o)操作。
8.如權(quán)利要求1所述的方法,進一步包括: 響應(yīng)于接收到該請求為該第二存儲對象分配一定量的存儲空間,其中 該一定量的存儲空間等于分配給該第一存儲對象的第一存儲空間量。
9.一種存儲多個程序指令的計算機可讀存儲介質(zhì),這些程序指令可執(zhí)行用于: 接收一個請求以便對一個第一存儲對象執(zhí)行一個縮減操作,其中該第一存儲對象包括多個存儲單元; 接收識別第一組存儲單元的一個第一列表,其中 該第一組存儲單元是該多個存儲單元的第一子集,并且 響應(yīng)于該執(zhí)行一個縮減操作的請求來接收該列表; 從第二組存儲單元讀取數(shù)據(jù),其中 該第二組存儲單元是該多個存儲單元的第二子集,并且 該第一組存儲單元和第二組存儲單元是互不相交的;并且 將該數(shù)據(jù)復(fù)制到一個第二存儲對象。
10.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中 該第一存儲對象和第二存儲對象包括多個動態(tài)虛擬磁盤。
11.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中 該第一組存儲單元識別一個第一文件的多個部分,并且 響應(yīng)于該請求,由一個虛擬機創(chuàng)建該第一文件。
12.如權(quán)利要求11所述的計算機可讀存儲介質(zhì),其中這些程序指令進一步可執(zhí)行用于: 檢測該縮減操作的完成;并且 響應(yīng)于該檢測而刪除該文件。
13.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中 該第一組存儲單元對應(yīng)于該第一存儲對象的多個未使用部分。
14.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中這些程序指令進一步可執(zhí)行用于: 接收一個第二列表,其中該第一列表對應(yīng)于該第一存儲對象的一個第一分區(qū)的多個未使用部分并且該第二 列表對應(yīng)于該第一存儲對象的一個第二分區(qū)的多個未使用部分;并且 將該第二列表與該第一列表合并。
15.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中這些程序指令進一步可執(zhí)行用于: 檢測該文件的一個屬性,其中該屬性指示創(chuàng)建該文件不需要任何輸入/輸出(I/O)操作。
16.如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其中這些程序指令進一步可執(zhí)行用于: 響應(yīng)于接收到該請求為該第二存儲對象分配一定量的存儲空間,其中 該一定量的存儲空間等于分配給該第一存儲對象的第一存儲空間量。
17.—種系統(tǒng),包括: 一個或多個處理器;以及 連接至該一個或多個處理器的一個內(nèi)存,其中該內(nèi)存存儲可由該一個或多個處理器執(zhí)行的程序指令以便: 接收一個請求以便對一個第一存儲對象執(zhí)行一個縮減操作,其中該第一存儲對象包括多個存儲單元; 接收識別第一組存儲單元的一個第一列表,其中 該第一組存儲單元是該多個存儲單元的第一子集,并且 響應(yīng)于該執(zhí)行一個縮減操作的請求來接收該列表; 從第二組存儲單元讀取數(shù)據(jù),其中 該第二組存儲單元是該多個存儲單元的第二子集,并且 該第一組存儲單元和第二組存儲單元是互不相交的;并且 將該數(shù)據(jù)復(fù)制到一個第二存儲對象。
18.如權(quán)利要求17所述的系統(tǒng),其中 該第一組存儲單元識別一個第一文件的多個部分, 響應(yīng)于該請求,由一個虛擬機創(chuàng)建該第一文件,并且 這些程序指令進一步可執(zhí)行用于 檢測該縮減操作的完成,并且響應(yīng)于該檢測而刪除該文件。
19.如權(quán)利要求17所述的系統(tǒng),其中 該第一組存儲單元對應(yīng)于該第一存儲對象的多個未使用部分。
20.如權(quán)利要求17所述的系統(tǒng),其中這些程序指令進一步可執(zhí)行用于: 接收一個第二列表,其中該第一列表對應(yīng)于該第一存儲對象的一個第一分區(qū)的多個未使用部分并且該第二列表對應(yīng)于該第一存儲對象的一個第二分區(qū)的多個未使用部分;并且將該第二列表與該第一列表合并`。
【文檔編號】G06F3/06GK103443758SQ201280010562
【公開日】2013年12月11日 申請日期:2012年3月9日 優(yōu)先權(quán)日:2011年3月15日
【發(fā)明者】W·E·曹貝樂 申請人:賽門鐵克公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
蒙山县| 石柱| 木兰县| 黑山县| 平利县| 自治县| 额济纳旗| 罗城| 阿尔山市| 淮南市| 崇义县| 满洲里市| 唐河县| 南昌市| 云和县| 广灵县| 牟定县| 宣城市| 台安县| 南投市| 敦化市| 谷城县| 靖远县| 侯马市| 抚松县| 株洲县| 湄潭县| 丹江口市| 尤溪县| 广宗县| 墨竹工卡县| 黄陵县| 洱源县| 林西县| 兰溪市| 扶绥县| 若羌县| 阜平县| 康定县| 伊春市| 阿拉善左旗|