星期三, 七月 16, 2008

vmware-vdiskmanager:擴充現有VMWare虛擬磁碟的容量

使用VMWare建立虛擬機器並用了一陣子之後,可能會發生當初建立的虛擬磁碟容量不足的情況。此時,除了可以新增虛擬磁碟,也能以VMWare提供的,來擴充現有的虛擬磁碟容量。

檔名為vmware-vdiskmanager.exe的虛擬磁碟管理工具,是一支位於VMWare安裝目錄裡的命令列工具;VMWare Server或VMWare Workstation等VMWare都提供這支工具。我使用的是Windows版的VMWare Server,因此本文是以Windows環境及VMWare示範。

vmware-vdiskmanager擴充容量的注意事項

繼續說明之前必須強調,雖然vmware-vdiskmanager可以擴充現有虛擬磁碟的容量,但它其實是以新增分割區的方式,將使用者指定容量的分割區,加入現有的虛擬磁碟。

舉例來說,假設現有的虛擬磁碟有1個8 GB的分割區,若以此法擴充到10 GB,擴充的結果是現有的虛擬磁碟將包含2個分割區:原有的8 GB和新增(擴充)的2 GB。

也就是說,vmware-vdiskmanager無法直接擴充guest系統裡的C磁碟容量。這是使用vmware-vdiskmanager之前必須要有的認知。

這支虛擬磁碟管理工具的功能很多,利用 /? 可看到所有的選項說明;或者可到VMWare網站搜尋VMware Virtual Disk Manager User's Guide,能找到一份PDF的說明文件

建議的擴充前置作業

循前例,我要利用vmware-vdiskmanager將名為hd1.vmdk的8 GB虛擬磁碟,擴充成10 GB。作法很簡單,但做之前建議:

  1. 檢查虛擬磁碟的狀況。不見得要在guest系統裡執行磁碟檢查工具(例如Windows內建的chkdsk),也可以利用VMWare的虛擬磁碟掛載工具,將虛擬磁碟掛載到host系統檢查(vmware-mount的用法可參閱vmware-mount:將VMWare虛擬磁碟掛載到主系統)。
  2. 建議先備份虛擬機器的所有檔案。
  3. 刪除不必要的snapshot(就算刪除也沒關係,因為上個步驟已經備份了)。

vmware-vdiskmanager的容量擴充指令

循前例的擴充指令如下:

vmware-vdiskmanager -x 10gb hd1.vmdk

  • -x:表示要擴充虛擬磁碟容量。
  • 10 gb:擴充之後的容量,單位除了gb,也可以用mb、kb。
  • hd1.vmdk:欲擴充的虛擬磁碟檔名。

請注意vmware-vdiskmanager工具和虛擬磁碟檔名的路徑,上述指令省略了這些路徑,但必須依據實際狀況加入。以下是本文範例的執行結果擷取圖:

擴充後的處理

執行後檢視VMWare的Virtual Machine Setting,可發現虛擬磁碟的容量已經擴充,但若進入guest系統(安裝的是Windows XP),另以『檔案總管』觀察,會發現硬碟機的容量、數量都沒有改變。如前述,因為擴充的容量是以分割區加入guest系統,因此再以Windows內建的『磁碟管理』觀察,就會發現虛擬磁碟多了一塊2 GB的分割區:

vmware-vdiskmanager-2

現在有以下選擇:

  • 利用其他的工具合併這兩個分割區(VMWare知識庫文件http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647列舉了一些)。
  • 利用Windows內建的『新增磁碟分割精靈』處理這塊新的分割區,但可以指定磁碟代號給新的分割區,或將新的分割區掛在空的NTFS資料夾(這兩種作法請參考Windows XP使用手冊或內建說明)。

其他作法?

能直接擴充而不是以新增分割區的方式擴充虛擬磁碟容量嗎?

我覺得有一個可行的方法,但尚未實作過,僅供各位參考:

  1. 進入guest系統(可能是以DOS光碟片或磁片開機進入,端視後續的工具而定)。
  2. 利用磁碟複製工具(例如Symantec Ghost)複製整個磁碟映像。
  3. 結束guest系統(關機)。
  4. 新建虛擬機器,並指定擴充後的虛擬磁碟容量。
  5. 再以步驟1的方式進入新建的guest系統。
  6. 利用磁碟複製工具將步驟2所建的映像還原到虛擬磁碟。

[Updated]我已實作出上述直接擴充的作法,詳情請參閱直接擴充現有的VMWare虛擬磁碟容量

4 意見:

Kirin Lin 提到...

擴充虛擬磁碟的步驟我有做過,使用類似最後其他做法的方式:
1. 在虛擬機器中新增一個預擴充後的虛擬磁碟。
2. 使用磁碟複製工具(如 ghost 或 Clonezilla)複製磁碟映像。
3. 修改舊的虛擬機器設定,掛上新的虛擬磁碟後開機即可。

賴榮樞 提到...

感謝Kirin兄留言指教。

月光森林 提到...

Acronis Disk Director Suite先前嘗試過一種做法:
以vmware-vdiskmanager -x來extend vmdk之後, 對Guest OS而言是這顆磁碟的長度變長了,因此會在磁碟的尾端多出一段未配置空間,這時候開進OS中(或Windows PE), 以Acronis Disk Director Suite來管理磁碟分割區,調整原有分割即可

賴榮樞 提到...

感謝您的留言。