將多磁碟的 VMware 虛擬機器透過直接卷宗複製功能遷移至 IBM Cloud
利用 qemu-img 或 virt-v2v 進行直接卷宗複製,以實現完整的磁碟層級控制,將多磁碟的 VMware 虛擬機器 (VM) 遷移至 IBM Cloud VPC 虛擬伺服器。
架構元件
下表列出了直接磁碟區複製遷移的架構元件。
| 架構元件 | 說明 |
|---|---|
| 工作虛擬伺服器實例 |
臨時虛擬伺服器實例,作為您的遷移工作區。 此虛擬伺服器執行個體需要以下先決條件:
|
| 暫存虛擬伺服器實例 | 僅為產生具有正確組態的開機和資料卷而建立的短期虛擬伺服器實例。 立即刪除此虛擬伺服器實例,但保留其磁碟區。 |
| 目標容量 | 成為您已遷移 VM 的磁碟的實際磁碟區。 |
複製直接磁碟區遷移程序概觀
以下步驟說明使用直接磁碟區複製進行遷移的過程。
-
提供工作者虛擬伺服器實例
- Ubuntu 或具有足夠工作空間的 RHEL 實例
- 如果 VMDK 需要工作空間,可附加大型輔助磁碟區
- 安裝所需工具
qemu-imglibguestfs-tools(適用於 virt-v2v )
-
建立短期虛擬伺服器執行個體
- 設定它以符合您的目標 VM (作業系統、開機磁碟大小、輔助磁碟數量/大小)
- 關鍵:停用所有磁碟區的自動刪除功能
- 關鍵:開機磁碟區使用
general-purpose儲存設定檔 - 網路設定可隨意拋棄
- 注意體積大小和順序
-
刪除短暫虛擬伺服器實例,保留磁碟區
- 透過 UI 或 CLI 刪除虛擬伺服器實例
- 確認卷冊仍然存在並可供附加
-
將卷附加到工作者虛擬伺服器實例
- 依建立的順序附加它們
- 注意裝置名稱 (例如 /dev/vdb, /dev/vdc, 等)
- 驗證尺寸:
blockdev --getsize64 /dev/vdb
-
傳輸和轉換 VM 磁碟
- 如果已輸出:將 VMDK 複製到工作虛擬伺服器實例
- 轉換和書寫一步完成:
qemu-img convert -f vmdk -O raw source-vm-boot.vmdk /dev/vdb qemu-img convert -f vmdk -O raw source-vm-data.vmdk /dev/vdc- 可選擇使用 virt-v2v 來注入 Windows 驅動程式 (請參閱下列 Windows 章節)
-
驗證與沖洗
- 抽查分割區表:
fdisk -l /dev/vdb - 刷新緩衝區:
blockdev --flushbufs /dev/vdb
- 抽查分割區表:
-
從工作者分離磁碟區
- 分離所有目標磁碟區
- 現在可以將它們連接至最後的虛擬伺服器實例了
-
從現有的開機磁碟區建立 Final 虛擬伺服器實體
- 請選擇「現有開機磁碟區」,而不是選擇影像
- 選擇您填入的開機磁碟區
- 設定網路、安全群組、SSH 金鑰 (如果是現有的 VM,即使不使用也需要)
- 對於次要磁碟區:使用 CLI/API 或在建立並重新啟動後附加
-
遷移後組態
- 啟動虛擬伺服器實例,若網路設定需要調整,可透過 VNC 主控台存取
- 確認所有磁碟都存在並已掛載
- 如果您向上調整了開機磁碟分割的大小,請展開它
直接批量複製設計優勢
下表列出了直接磁碟區複製遷移的設計優點。
| 設計優勢 | 說明 |
|---|---|
| 多磁碟支援 | 多磁碟支援可處理任何磁碟數量的虛擬機,最多可達 VPC 的 12 個磁碟限制。 |
| 無圖像擴散 | 您不會為每個虛擬機器建立自訂影像。 您的自訂影像清單保持乾淨。 |
| 靈活的轉型 | 可輕鬆與 virt-v2v 整合,以進行驅動程式注入、作業系統調整等。 |
| 儲存效率選項 | 如果您將基礎範本匯入為自訂影像,並將其作為暫存虛擬伺服器實例的開機磁碟區來源 (步驟 2),最後的開機磁碟區會繼承連結複製空間效率。 |
直接容量複製設計的限制與約束
下表列出了直接磁碟區複製遷移的約束和限制。
| 限制或約束 | 說明 |
|---|---|
| 編排複雜度 | 有更多的步驟和移動部件。 您需要穩固的 runbooks,最好是自動化 (Terraform、Ansible、腳本)。 |
| 卷附屬項的限制 |
IBM Cloud 的使用者介面 (UI) 不支援在建立虛擬伺服器執行個體時附加次要磁碟區。 您必須執行以下其中一項操作:
|
| 出口管理費用 | 如果您從 VMware 匯出 VMDK,您仍會產生該開銷(雖然比匯出 OVA 少)。 |
使用網路傳輸跳過匯出
您可以結合方法 2 與網路傳輸技術(詳見方法 3),以完全避免匯出 VMDK。 從 ISO 啟動您的來源 VM,建立與 Worker 虛擬伺服器實例的網路連線,並直接串流磁碟內容:
-
在 Worker 虛擬伺服器實例 (目的地) 上,發出下列指令:
nc -l 192.168.100.5 8080 | gunzip | dd of=/dev/vdb bs=16M status=progress -
在來源虛擬機器 (從 ISO 開機) 上,發出下列指令:
dd if=/dev/sda bs=16M | gzip | nc -N -v 192.168.100.5 8080
此流程可消除出口時間和出口儲存需求。
使用此流程處理多磁碟虛擬機器、需要精確控制的場景,或避免自訂影像擴散很重要的場景。 您也可以透過網路傳輸來提高效率。