使用 VDDK 直接萃取功能,將資料從 遷移至 IBM Cloud 虛擬伺服器 vCenter

使用 VDDK 直接提取功能搭配 virt-v2v,將 VMware 虛擬機器從 vCenter 遷移至 IBM Cloud VPC 虛擬伺服器,並進行自動磁碟轉換。

架構元件

下表描述 VDDK Direct Extraction 移轉的架構元件。

VDDK 直接抽取轉移方法的架構元件
架構元件 說明
VMware 虛擬磁碟開發套件 (VDDK) VMware 的 API 函式庫來存取虛擬磁碟。 您可以從 VMware 的開發者入口下載。
支援 VDDK 的 libguestfs 使用 nbdkit VDDK 外掛程式建立的 virt-v2v 工具。 這需要 Red Hat Enterprise Linux (RHEL)( Ubuntu 的版本不包含 VDDK 支援)。
工作虛擬伺服器實例 基於 RHEL 的實例,已安裝 libguestfs-tools 和 VDDK。
vCenter 存取 從 Worker 虛擬伺服器實例到 vCenter 和 vSphere 主機的網路連線,具有允許虛擬機器磁碟存取的憑證。

VDDK 直接提取遷移過程概述

以下步驟列出使用 VDDK Direct Extraction 進行遷移的流程。

  1. 部署 RHEL( Red Hat Enterprise Linux )工作節點虛擬伺服器實例

    1. RHEL 8 或 9 實例
    2. 安裝 libguestfs-tools:dnf install libguestfs-tools
    3. 網路連線至 vCenter
  2. 安裝 VMware VDDK

    1. 從 VMware 開發者入口網站下載 (需要 VMware 帳戶)
    2. 解壓縮至工作節點虛擬伺服器實例上的某個目錄(例如:/opt/vmware-vix-disklib-distrib
  3. 收集 vCenter 資訊

    1. vCenter 主機名稱/IP
    2. vCenter 憑證(domain\user 格式)
    3. 目標虛擬機器名稱
    4. 執行虛擬機器的 ESXi 主機 (透過 vCenter 發現 )
    5. vCenter 證書縮圖:
    openssl s_client -connect vcenter.example.com:443 </dev/null 2>/dev/null | \
      openssl x509 -fingerprint -noout -in /dev/stdin | \
      cut -d= -f2
    
  4. 建立目標磁碟區

    1. 使用暫存虛擬伺服器實例方法(方法 2 步驟 2-4)
    2. 附加至工作節點虛擬伺服器執行個體
  5. 設定 /etc/hosts (經常需要)

    1. 如果 DNS 無法正確解析,請新增 vCenter 和 ESXi 主機
    2. VDDK 對於主機名稱解析可能很挑剔
  6. 使用 VDDK 執行 virt-v2v

    1. 建立密碼檔案
       echo 'YourPasswordHere' > /tmp/vcenter-passwd
       chmod 600 /tmp/vcenter-passwd
    
    1. 運行 virt-v2v
       virt-v2v \
         -ic 'vpx://vsphere.local\%5cAdministrator\@vcenter.example.com/Datacenter/Cluster/esxi-host.example.com?no_verify=1' \
         'VM-Name' \
         -ip /tmp/vcenter-passwd \
         -o disk \
         -os /tmp \
         -it vddk \
         -io vddk-libdir=/opt/vmware-vix-disklib-distrib \
         -io vddk-thumbprint=A2:41:6A:FA:81:CA:4B:06:AE:EB:C4:1B:0F:FE:23:22:D0:E8:89:02 \
         --block-driver virtio-scsi
    

    參數: - -ic:輸入連線字串 (vpx:// for vCenter ) - \%5c 是 URL 在 domain\user 中為反斜杠編碼 - ?no_verify=1 跳過 SSL 證書驗證 - 'VM-Name':虛擬機器在 vCenter - -ip:密碼檔案路徑 - -o disk -os /tmp:輸出到目錄 /tmp - -it vddk:輸入傳輸 VDDK - -io vddk-libdir:VDDK 安裝路徑 - -io vddk-thumbprint: vCenter 憑證縮圖 - --block-driver virtio-scsi:適用於 Windows 虛擬機器 (第一個磁碟需要 SCSI 驅動程式)

  7. 使用 Symlink Trick 直接連接到裝置

    通常 virt-v2v 會寫入目錄中的檔案。 直接寫入區塊裝置:

    # virt-v2v will create file named VM-Name-sda
    ln -fs /dev/vdb /tmp/VM-Name-sda
    # Run virt-v2v, it writes to symlink which points to device
    virt-v2v ... (same command as above)
    
  8. 從磁碟區建立虛擬伺服器實例

    • 與方法 2/3 相同:從 Worker 脫離,從現有磁碟區建立虛擬伺服器實體

設計優勢

下表列出了 VDDK Direct Extraction 移轉的設計優勢。

VDDK 直接抽取轉移方法的設計優勢
設計優勢 說明
單一指令遷移 一個 virt-v2v 調用就能完成所有工作 - 從 vCenter, 擷取、轉換格式、注入驅動程式、寫入目的地。
無匯出步驟 類似於即時網路傳輸遷移,消除匯出開銷。
適合自動化 工作後可輕鬆編寫腳本進行大規模遷移。
整合式轉型 驅動程式注入和作業系統準備會自動進行。

設計限制與局限性

下表列出了 VDDK Direct Extraction 遷移的約束和限制。

VDDK 直接萃取移轉方法的限制與約束
限制或約束 說明
vCenter 僅 無法使用 VCFaaS (無法存取 vCenter API)。
RHEL/ Ubuntu 工具的缺口

關鍵挑戰

  • libguestfs 的 RHEL 版本包含 VDDK 支援 (nbdkit 外掛程式)

  • virt-v2v 的 RHEL 版本不支援 --block-driver virtio-scsi (Windows 需要)

  • Ubuntu 的 virt-v2v 版本支援 --block-driver virtio-scsi

  • Ubuntu 版本不包含 VDDK 支援

您必須選擇其中一個:

  • 在 Ubuntu 上使用 VDDK 外掛自行建立 libguestfs

  • 使用 RHEL 進行 VDDK 擷取、寫入檔案、傳輸至 Ubuntu 系統進行 virt-v2v 轉換
複雜的先決條件 需要安裝 VDDK、vCenter API 存取、證書縮圖、精確連線字串。 比其他方法的設定更多。
網路需求 工作站虛擬伺服器實例必須直接連接到 vCenter 和 ESXi 主機。 可能需要新增防火牆規則。

VDDK Direct Extraction 遷移功能強大,適用於大規模的 vCenter 遷移,在許多虛擬機器上,前期的設定和工具建置投資都能獲得回報。 不建議用於小型遷移或 VCFaaS 環境。 如果您選擇這種方法,請預留時間進行工具設定和測試。