2011-06-15

VirtualBox - 虛擬硬碟對拷及重建 UUID

凍仁近幾個月都用 Debian (Host) + Windows XP (Guest) 上班比較多,當中也會遇到得雙開 XP 的情形發生。但要怎麼用最快速的方法建置第二個 XP 呢?嘗試過 Clonezilla 的備份還原方案,除了會失敗以外這還是個笨方法!好在虛擬機器們都有提供虛擬硬碟(*.vdi)對拷的解決方案(Solutions)。

1. 使用 VM 工具複製 vdi 並重新產生 UUID

jonny@host:~$ VBoxManage clonehd --format VDI old.vdi new.vdi [Enter]
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 973184af-47fd-47f3-97ed-d4ded73724d1
# VBoxManage clonevdi old.vdi new.vdi
# 此指令凍仁實作後還得手動修改 uuid 才行。


2. 手動複製 vdi 後使用 VM 工具重新產生 UUID

2.1. 只有手動複製 vdi 是無法在 VirtoalBox 裡正常使用的。
jonny@host:~$ cp old.vdi new.vdi [Enter]

2.2. 搭配 VirtualBox 管理工具修改 UUID。
# VirutalBox 4.0 以上請使用以下指令。
jonny@host:~$ VBoxManage internalcommands sethduuid new.vdi [Enter]
UUID changed to: 646660cb-2681-4702-bed8-30a40cf48ef0

# VirutalBox 3.2 以下請改用以下指令。
jonny@host:~$ VBoxManage internalcommands setvdiuuid new.vdi [Enter]

2012-05-31


當 Virtualbox 偵測到虛擬硬碟有 UUID 相同(衝突)時會有以下錯誤訊息,這時只需要更新 UUID 即可解決。
Failed to open the hard disk /media/data_ntfs/home.d/virtualbox/rhel5_x86_64.vdi.

Cannot register the hard disk '/media/data_ntfs/home.d/virtualbox/rhel5_x86_64.vdi' {14432390-4f9c-46d4-9ef6-ca0bc2db0461} because a hard disk '/media/data_ext3/home.d/virtualbox/RHEL 5/rhel5_x86_64.vdi' with UUID {14432390-4f9c-46d4-9ef6-ca0bc2db0461} already exists.

Result Code: NS_ERROR_INVALID_ARG (0x80070057)
Component: VirtualBox
Interface: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}

資料來源:
VirtualBox 兩三事: 複製vdi 及 修改 uuid « Ant's ATField