專利名稱:虛擬硬盤的容量擴展方法
技術領域:
本發明是關于一種硬盤的容量擴展方法,特別是一種虛擬硬盤的容量擴展方法。
背景技術:
虛擬機(Virtual Machine, VM)以及云端運算(Cloud Computing)等將實體資源 虛擬化后提供給使用者的技術,以及其所帶來的利益,正受到全世界的注目。其中云端運算 為一種新的基于因特網(Internet)的運算方式,其能通過因特網上不同的服務為個人或 企業的使用者提供所需運算。云端運算的資源是虛擬化的,實體資源被虛擬化后通過因特 網提供給使用者。使用者不需要了解「云端」中實體資源及其相關配置的細節,不必具有相 應的專業知識,也無需對實體資源直接進行控制。使用者可以只關注自己真正需要什么樣 的資源以及如何通過網絡來得到相應的服務。而虛擬機是將一個或多個處理器、內存或是儲存裝置等實體資源集合起來后,在 實體資源上被建立的虛擬平臺。虛擬機亦可以被視為在實體資源的計算機平臺和終端用戶 的使用者之間建立一種環境。使用者基于這個虛擬平臺所建立的環境來進行所需的運算或 是執行應用程序(Application)。架構在相同實體資源上的每一個虛擬機都可以用有自己 的虛擬資源,例如虛擬的運算單元或虛擬硬盤(Virtual Hard Disk,VHD)。虛擬機亦可像 具有實體的普通的計算機一樣執行程序,或用有自己的操作系統(Operating System, OS) 以及應用程序。然而既然虛擬機是架構在實體資源上,使用者在使用虛擬機時亦可能遇到(虛 擬)資源不足的情形。也就是說,使用者可能會遇到虛擬硬盤不敷使用等情況。在實體硬 盤(Physical Hard Disk)等資源還足夠的時候,擴展使用者的虛擬硬盤的做法很簡單,只 要將剩余的實體硬盤分配給使用者即可。然而當實體硬盤本身的剩余容量亦不敷使用時, 為使用者擴展虛擬硬盤的方法或變的復雜且費時許多。傳統的擴展方法需在添加新的實體 硬盤后,將使用者原先具有的數據復制到新的實體硬盤以及虛擬硬盤。當使用者的數據是 以兆字節(Terabyte,TB)為單位或是更大時,傳統的擴展方法需耗費極為漫長的時間。龐 大的數據在搬移的過程中不但有可能會產生損失;當搬移的過程中發生任何錯誤時,都會 對使用者造成莫大的傷害。
發明內容
本發明所要解決的技術問題在于,提供一種虛擬硬盤(Virtual Hard Disk, VHD) 的容量擴展方法,其用以擴展一第一實體硬盤(physical hard disk)中被指派給一虛擬機 (Virtual Machine,VM)的一第一虛擬硬盤的容量。虛擬硬盤的容量擴展方法包括提供一 第二實體硬盤,其中第二實體硬盤的可用容量不小于一擴充總容量;停止對第一虛擬硬盤 的存取操作;于第二實體硬盤上建立容量為擴展總容量的一第二虛擬硬盤;連結第二虛擬 硬盤與第一虛擬硬盤的儲存空間;以及運行一虛擬機管理器(Virtual Machine Manager, VMM)程序,以將第二虛擬硬盤指派給虛擬機,并恢復虛擬機對第二虛擬硬盤的存取操作。
較佳的是,其中第一虛擬硬盤的容量加上第一實體硬盤剩余的可用容量小于擴展 總容量。為了刪除原先存放于第一虛擬硬盤的數據,根據本發明的虛擬硬盤的容量擴展方 法在「運行虛擬機管理器程序」的步驟之后另可包括接收一刪除命令,其中刪除命令指定 僅存在于第一虛擬硬盤中的一刪除目標檔案;以及刪除第一虛擬硬盤中的刪除目標檔案, 或是刪除目標檔案與第二虛擬硬盤的連結。而為了在「運行虛擬機管理器程序」的步驟之后新增檔案,虛擬硬盤的容量擴展方 法另可包括接收一新增命令,其中新增命令包括一新增目標檔案;以及將新增目標檔案 新增于第二虛擬硬盤。也就是說,容量擴展之后,新增的數據是被存放于第二虛擬硬盤。根據本發明的一實施范例,在「將新增目標檔案新增于第二虛擬硬盤」的步驟之 后,另可包括接收一修改命令,其中修改命令指定第二虛擬硬盤中的一修改目標檔案,修 改命令中并包括一修改數據;以及依據修改數據修改修改目標檔案。而在「將新增目標檔案新增于第二虛擬硬盤」的步驟之后,亦可包括接收刪除命 令,其中刪除命令指定第二虛擬硬盤中的刪除目標檔案;以及由第二虛擬硬盤中刪除此刪 除目標檔案。換句話說,新增于第二虛擬硬盤的數據可以被直接存取以、修改或是刪除。根據本發明的一實施范例,為了修改原先存放于第一虛擬硬盤的數據,根據本發 明的虛擬硬盤的容量擴展方法在「運行虛擬機管理器程序」的步驟之后另可包括接收修 改命令,其中修改命令指定第一虛擬硬盤中的修改目標檔案,修改命令并包括修改數據;以 及將修改數據新增于第二虛擬硬盤,并將修改數據作為修改目標檔案的一部份與修改目標 檔案相連接。其中修改數據為目標檔案被改過的部分,且僅有修改數據的部分被儲存于第 二虛擬硬盤。為了讀取上述因被修改過而被分開存放于第一虛擬硬盤以及第二虛擬硬盤的數 據,在「將修改數據新增于第二虛擬硬盤,并將修改數據作為修改目標檔案的一部份與修改 目標檔案相連接」的步驟之后,另可包括接收一讀取命令,其中讀取命令指定一讀取目標 檔案,且讀取目標檔案部分存在于第一虛擬硬盤以及第二虛擬硬盤;讀取第一虛擬硬盤以 及第二虛擬硬盤中的讀取目標檔案;以及合并并輸出由第一虛擬硬盤以及第二虛擬硬盤中 讀取的讀取目標檔案。最后,為了刪除上述因被修改過而被分開存放于第一虛擬硬盤以及第二虛擬硬盤 的數據,在「將修改數據新增于第二虛擬硬盤,并將修改數據作為修改目標檔案的一部份與 修改目標檔案相連接」的步驟之后,亦可包括接收刪除命令,其中刪除命令指定刪除目標 檔案,且刪除目標檔案是部分存在于第一虛擬硬盤以及第二虛擬硬盤;以及第二虛擬硬盤 中的刪除目標檔案,以及刪除目標檔案與第一虛擬硬盤的連結。綜上所述,本發明所提供的虛擬硬盤的容量擴展方法是可擴展指派給虛擬機的第 一虛擬硬盤的容量,且虛擬硬盤的容量擴展方法并不需搬移第一虛擬硬盤內原有的數據。 而在擴展容量之后,客戶端亦能一如往常地讀取、新增、修改或刪除檔案;且這些作業亦不 需要將第一虛擬硬盤內原有的數據搬移去第二虛擬硬盤。
圖1所示為根據本發明-圖2所示為根據本發明-圖3所示為根據本發明-圖4所示為根據本發明-主要組件符號說明
-實施范例的虛擬機的方塊示意圖; -實施范例的容量擴展前的虛擬硬盤的對應示意圖; 實施范例的虛擬硬盤的容量擴展方法的流程示意圖;以及 -實施范例的容量擴展后的虛擬硬盤的對應示意圖。
10 20 22 24 30
32,32a 34 36 38
客戶端 儲存池
第一實體硬盤 第二實體硬盤 虛擬機管理器 虛擬機 虛擬硬盤 第一虛擬硬盤 第二虛擬硬盤
具體實施例方式以下在實施方式中詳細敘述本發明的詳細特征以及優點,其內容足以使任何熟悉 相關技術的人了解本發明的技術內容并據以實施,且根據本說明書所揭露的內容、申請專 利范圍及附圖,任何熟悉相關技術的人可輕易地理解本發明相關的目的及優點。本發明提供一種虛擬硬盤(Virtual Hard Disk, VHD)的容量擴展方法,其用以擴 展一第一實體硬盤(physical hard disk)中被指派給一虛擬機(VirtualMachine,VM)的 一第一虛擬硬盤的容量。請參閱「圖1」,其為根據本發明一實施范例之虛擬機的方塊示意 圖。如圖所示,客戶端10可通過一虛擬管理器(Virtual Machine Manager,VMM) 30與遠程 的虛擬機32聯機。其中每一個虛擬機32都具有至少一虛擬硬盤34,而虛擬硬盤34建立于 一儲存池20中的第一實體硬盤22。第一實體硬盤22為架構虛擬機32所需的實體硬設備(即實體資源)中的儲存設 備,可以例如是硬盤、固態硬盤(Solid State Disk,SSD)或是磁盤陣列(Redundant Array of Independent Disks, RAID).而儲存池20則為提供給虛擬機32使用的所有儲存設備的 集合。儲存池20除了包括第一實體硬盤22之外,另可包括其它的實體硬盤以供虛擬機32使用。為了架構虛擬機32,在第一實體硬盤22等實體資源上可先架構一虛擬平臺 (host,未繪示),再于虛擬平臺上建立這些虛擬機32。更詳細地說,一個虛擬平臺上可被配 置至少一個虛擬機32,且這些虛擬機32均由架構虛擬平臺的實體資源運行。每一個虛擬 機32都可具有自己的虛擬資源,以提供給聯機的客戶端10使用。客戶端10可以將聯機的 虛擬機32視為一個具有處理器與儲存裝置的普通的計算機,在虛擬機32中安裝一操作系 統(Operating System, OS)各式各樣的應用程序(Application)并使用之。換句話說,虛 擬機32之間是可以互相獨立的。架構在同一個實體資源上的虛擬機32甚至可以安裝不同 的操作系統例如窗口(Windows)操作系統或是Linux操作系統。且對于客戶端10而言,每一個虛擬機32都擁有自己的虛擬硬盤34可以使用。接下來將詳述本發明所提供的虛擬硬盤的容量擴展方法,以說明如何擴展第一虛 擬硬盤的容量。請先參照「圖2」,其為根據本發明一實施范例的容量擴展前的虛擬硬盤的 對應示意圖。如「圖2」所示,儲存池20中的第一實體硬盤22的所有的可用空間可被分割成多 個部分(虛擬硬盤34),且可以個別提供給不同的虛擬機32使用。其中第一虛擬硬盤36分 配給虛擬機32a使用,而其余的虛擬硬盤34則分配給其它的虛擬機32。根據本發明的一實施范例,第一實體硬盤22處于儲存空間比較緊張的狀態。當使 用者覺得第一虛擬硬盤36的儲存空間不足而想要擴展容量時,使用者想要擴展的容量大 于第一實體硬盤22剩余的可用空間(意即尚未被配置為虛擬硬盤34的空間)。更詳細地 說,使用者要將原先的第一虛擬硬盤36的總容量擴展為一擴展總容量,而第一虛擬硬盤36 的總容量加上第一實體硬盤22的剩余的可用容量小于使用者指定的擴展總容量。請同時參閱「圖3」以及「圖4」,其分別為根據本發明一實施范例的虛擬硬盤的容 量擴展方法的流程示意圖以及容量擴展后的虛擬硬盤的對應示意圖。于虛擬硬盤的容量擴 展方法中,首先提供一第二實體硬盤與儲存池20(步驟S110),且第二實體硬盤的可用容量 不小于擴充總容量。由于擴展第一虛擬硬盤36時,第一虛擬硬盤36無法接受虛擬機32a任何的存取, 因此需先停止虛擬機32a對第一虛擬硬盤36的存取操作(步驟S120)。為了確保在擴展容 量的途中第一虛擬硬盤36不會被虛擬機32a存取到,亦可直接停止虛擬機32a。接著于新增的第二實體硬盤24上建立容量為擴展總容量的一第二虛擬硬盤 38(步驟S130)。以Linux的VHD-util (應用程序)工具為例,可建立一個VHD格式的空白 檔案作為第二虛擬硬盤38,并對這個空白檔案配置相關的數據。得到容量為擴展總容量的 第二虛擬硬盤38后,連結第二虛擬硬盤38與第一虛擬硬盤36的儲存空間(步驟S140)。 也就是說,僅需將第二虛擬硬盤38與第一虛擬硬盤36的儲存空間產生連結,而不需將第一 虛擬硬盤36中的數據移轉至第二虛擬硬盤38中。以Linux的VHD-util為例,當虛擬硬34式文件類型時,步驟S130以及步驟S140 可以下述的指令范例實施之。vhd-util create-name = VD2_size = 20G_parent = VD1步驟S130以及步驟S140以可以用例如邏輯塊管理器(Logical VolumeManager, LVM)的邏輯塊(Logical Volume,LM,或稱為塊設備)類型實作,指令的范例如下。.lvcreate-name = lvd2_size = 20G VG_Storage2vhd-util create-name = /dev/VG-Storage2/lvd2-size = 20G_parent = lvdl最后,再運行一虛擬機管理器程序,以將第二虛擬硬盤38指派給虛擬機32a,并恢 復虛擬機32a對第二虛擬硬盤38的存取操作(步驟S150)。虛擬機管理器程序為運行于虛 擬機管理器30的程序,其余步驟S150中將第二虛擬硬盤38連結與虛擬機32a,以讓客戶端 10能夠使用。而就客戶端10看起來,虛擬機32僅對應于容量為擴充總容量的第二虛擬硬 盤38,且第二虛擬硬盤38的儲存空間是連續的。接下來將說明客戶端10如何以虛擬機32a來讀取、新增、修改或刪除存放于第一 虛擬硬盤36與第二虛擬硬盤38中的檔案或數據。較佳的是,數據(data,亦即上述的數據)的保存是以固定長度的塊(block)為單位。存放在于第二虛擬硬盤38上的數據塊,以第二 虛擬硬盤38上為準;而于第二虛擬硬盤38上不存在的數據塊,則以第一虛擬硬盤36為準。首先為了在擴展容量之后新增檔案,虛擬硬盤的容量擴展方法另可包括接收一 新增命令,其中新增命令包括一新增目標檔案;以及將新增目標檔案新增于第二虛擬硬盤 38。也就是說,容量擴展之后,作為新增目標檔案的使用者新增的數據被存放于第二虛擬硬 盤38。于第二虛擬硬盤38新增了新增目標檔案之后,被新增的檔案可供虛擬機32a直接 由第二虛擬硬盤38中讀取、修改或刪除。因此虛擬硬盤的容量擴展方法另可包括接收一修改命令,其中修改命令指定第 二虛擬硬盤38中的一修改目標檔案,修改命令中并包括一修改數據;以及依據修改數據修 改修改目標檔案。且虛擬硬盤的容量擴展方法亦可包括接收一刪除命令,其中刪除命令指定第二 虛擬硬盤38中的刪除目標檔案;以及由第二虛擬硬盤38中刪除此刪除目標檔案。而于修改原先存放于第一虛擬硬盤36的數據時,在容量擴展之后虛擬硬盤的容 量擴展方法另可包括接收修改命令,其中修改命令指定第一虛擬硬盤36中的修改目標檔 案,修改命令并包括修改數據;以及將修改數據新增于第二虛擬硬盤38。其中修改數據為 修改目標檔案被改過的部分,也就是原始版本與修改后的版本的差異。換句話說,被修改過 的原先存放于第一虛擬硬盤36的數據會被分為兩部分,其中僅有修改數據被存放在第二 虛擬硬盤38,而原先存放于第一虛擬硬盤36的部分并不會被修改。為了讀取上述因被修改過而被分開存放于第一虛擬硬盤36以及第二虛擬硬盤38 的數據,可接收一讀取命令,其中讀取命令指定一讀取目標檔案。且讀取目標檔案已被修改 過而部分存在于第一虛擬硬盤36以及第二虛擬硬盤38。讀取分別存放于第一虛擬硬盤36 以及第二虛擬硬盤38中的讀取目標檔案后,接著合并由第一虛擬硬盤36以及第二虛擬硬 盤38中讀取的讀取目標檔案,并輸出給客戶端10。且刪除上述因被修改過而被分開存放于第一虛擬硬盤36以及第二虛擬硬盤38的 數據時,虛擬硬盤的容量擴展方法亦可包括接收刪除命令,其中刪除命令指定刪除目標檔 案,且刪除目標檔案部分存在于第二虛擬硬盤38 ;以及,刪除第二虛擬硬盤38中的刪除目 標檔案,以及刪除目標檔案與第一虛擬硬盤36的連結。更詳細的說,第二虛擬硬盤38中可維護一檔案配置表(File AllocationTable, FAT),其中檔案配置表與第二虛擬硬盤38的刪除目標檔案之間的連結(link)字段被刪除。 且被分開存放于第一虛擬硬盤36以及第二虛擬硬盤38的刪除目標檔案之中,第一虛擬硬 盤36以及第二虛擬硬盤38間的連結亦被刪除。第二虛擬硬盤38中刪除目標檔案所包括的 數據塊可以被初始化,也就是可用空的數據塊將原先刪除目標檔案所占用的數據塊覆蓋, 使得客戶端10不會再讀取到刪除目標檔案。而第一虛擬硬盤36中原有的數據(即存放于 第一虛擬硬盤36中的部分的刪除目標檔案)可以不被刪除。最后,要刪除第一虛擬硬盤36中在擴展容量前所存放的數據時,可直接刪除第一 虛擬硬盤36上的刪除目標檔案,亦可僅刪除刪除目標檔案與第二虛擬硬盤38之間的連結。 也就是說,虛擬硬盤的容量擴展方法另可包括接收刪除命令,其中刪除命令指定僅存在于 第一虛擬硬盤36中的刪除目標檔案;以及刪除第一虛擬硬盤36中的刪除目標檔案,或是刪除目標檔案與第二虛擬硬盤38的連結。刪除目標檔案與第二虛擬硬盤38的連結之后,雖 存放于第一虛擬硬盤36中刪除目標檔案未被刪除,亦可使得客戶端10不會再讀取到刪除 目標檔案。綜上所述,本發明所提供的虛擬硬盤的容量擴展方法可在第一實體硬盤的儲存空 間不足時,擴展架構于第一實體硬盤上之第一虛擬硬盤的容量。且虛擬硬盤的容量擴展方 法并不需搬移第一虛擬硬盤內原有的數據,而能夠非常快速地提供客戶端第二虛擬硬盤。 此外,在擴展容量之后,客戶端亦能一如往常地讀取、新增、修改或刪除檔案;且這些作業亦 不需要將第一虛擬硬盤內原有的數據搬移去第二虛擬硬盤。雖然本發明已以較佳實施例揭露如上,然其并非用以限定本發明,在不背離本發 明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發明作出各種相應的改變和 變形,但這些相應的改變和變形都應屬于本發明所附的權利要求的保護范圍。
權利要求
一種虛擬硬盤的容量擴展方法,用以擴展一第一實體硬盤中被指派給一虛擬機的一第一虛擬硬盤的容量,其特征在于,該方法包括提供一第二實體硬盤,該第二實體硬盤的可用容量不小于一擴充總容量;停止對該第一虛擬硬盤的存取操作;于該第二實體硬盤上建立容量為該擴展總容量的一第二虛擬硬盤;連結該第二虛擬硬盤與該第一虛擬硬盤的儲存空間;以及運行一虛擬機管理器程序,以將該第二虛擬硬盤指派給該虛擬機,并恢復該虛擬機對該第二虛擬硬盤的存取操作。
2.如權利要求1所述的虛擬硬盤的容量擴展方法,其特征在于,在該運行該虛擬機管 理器程序的步驟之后另包括接收一新增命令,其中該新增命令包括一新增目標檔案;以及 將該新增目標檔案新增于該第二虛擬硬盤。
3.如權利要求2所述的虛擬硬盤的容量擴展方法,其特征在于,在該將該新增目標檔 案新增于該第二虛擬硬盤的步驟之后,另包括接收一修改命令,其中該修改命令指定該第二虛擬硬盤中的一修改目標檔案,該修改 命令并包括一修改數據;以及依據該修改數據修改該修改目標檔案。
4.如權利要求2所述的虛擬硬盤的容量擴展方法,其特征在于,在該將該新增目標檔 案新增于該第二虛擬硬盤的步驟之后,另包括接收一刪除命令,其中該刪除命令指定該第二虛擬硬盤中的一刪除目標檔案;以及 由該第二虛擬硬盤中刪除該刪除目標檔案。
5.如權利要求1所述的虛擬硬盤的容量擴展方法,其特征在于,在該運行該虛擬機管 理器程序的步驟之后另包括接收一修改命令,其中該修改命令指定該第一虛擬硬盤中的一修改目標檔案,該修改 命令并包括一修改數據;以及將該修改數據新增于該第二虛擬硬盤,并將該修改數據作為該修改目標檔案的一部份 與該修改目標檔案相連接。
6.如權利要求5所述的虛擬硬盤的容量擴展方法,其特征在于,在該將該修改數據新 增于該第二虛擬硬盤,并將該修改數據作為該修改目標檔案的一部份與該修改目標檔案相 連接的步驟之后,另包括接收一讀取命令,其中該讀取命令指定一讀取目標檔案,且該讀取目標檔案部分存在 于該第一虛擬硬盤以及該第二虛擬硬盤;讀取該第一虛擬硬盤以及該第二虛擬硬盤中的該讀取目標檔案;以及 合并并輸出由該第一虛擬硬盤以及該第二虛擬硬盤中讀取的該讀取目標檔案。
7.如權利要求5所述的虛擬硬盤的容量擴展方法,其特征在于,在該將該修改數據新 增于該第二虛擬硬盤,并將該修改數據作為該修改目標檔案的一部份與該修改目標檔案相 連接的步驟之后,另包括接收一刪除命令,其中該刪除命令指定一刪除目標檔案,且該刪除目標檔案部分存在 于該第一虛擬硬盤以及該第二虛擬硬盤;以及刪除該該第二虛擬硬盤中的該刪除目標檔案,以及該刪除目標檔案與該第一虛擬硬盤 的連結。
8.如權利要求1所述的虛擬硬盤的容量擴展方法,其特征在于,在該運行該虛擬機管 理器程序的步驟之后另包括接收一刪除命令,其中該刪除命令指定僅存在于該第一虛擬硬盤中的一刪除目標檔 案;以及刪除該第一虛擬硬盤中的該刪除目標檔案,或是刪除該目標檔案與該第二虛擬硬盤的 連結。
9.如權利要求1所述的虛擬硬盤的容量擴展方法,其特征在于,該第一虛擬硬盤的容 量加上該第一實體硬盤的可用容量小于該擴展總容量。
全文摘要
本發明公開了一種虛擬硬盤的容量擴展方法,用以擴展第一實體硬盤中被指派給虛擬機的第一虛擬硬盤的容量。虛擬硬盤的容量擴展方法包括提供第二實體硬盤,其中第二實體硬盤的可用容量不小于擴充總容量;停止對第一虛擬硬盤的存取操作;于第二實體硬盤上建立容量為擴展總容量的第二虛擬硬盤;連結第二虛擬硬盤與第一虛擬硬盤的儲存空間;以及運行虛擬機管理器程序,以將第二虛擬硬盤指派給虛擬機,并恢復虛擬機對第二虛擬硬盤的存取操作。
文檔編號G06F3/06GK101876884SQ20091025332
公開日2010年11月3日 申請日期2009年11月30日 優先權日2009年11月30日
發明者閆碩, 陳玄同 申請人:英業達股份有限公司