將虛擬機器從 VMware ESXi 遷移到 Red Hat OpenShift Virtualization
使用 Shift Toolkit 將虛擬機器從 VMware ESXi 遷移到 Red Hat OpenShift Virtualization,方法是準備虛擬機器、轉換磁碟格式和設定目標環境。
Shift Toolkit 能夠透過目標環境中的磁碟格式轉換和網路重新配置,實現虛擬化平台之間的虛擬機器遷移。
開始之前
在開始遷移之前,請確認滿足以下先決條件。
-
安裝了以下運算子的 OpenShift 叢集端點:
-
OpenShift虛擬化操作員
-
NetApp Trident CSI 驅動程式
-
新墨西哥州立大學
-
-
NetApp Trident CSI 設定了適當的後端和儲存類
-
已配置正確的 VLAN 的 NodeNetworkConfigurationPolicy 和 NetworkAttachmentDefinitions (NAD)
-
OpenShift 叢集可透過目前主機檔案條目進行網路存取
-
叢集管理員級別權限
-
Kubeconfig 檔案已下載
-
VMDK 可以透過多種方式進行配置:所有 VMDK 可以駐留在單一 NFSv3 磁碟區上(無需儲存 vMotion),每個 VMDK 可以放置在自己的個別磁碟區上,或多個 VMDK 可以組織在磁碟區內的 qtree 中。
Shift Toolkit 會自動偵測佈局並選擇合適的複製方法和 NAS 儲存驅動程式。 當 VMDK 放置在 qtree 中時,Shift Toolkit 使用 ONTAP-NAS-economy 驅動程式。 -
VMware 工具正在客戶虛擬機器上執行。
-
待遷移的虛擬機器處於運作狀態,以便進行準備。
-
必須先關閉虛擬機器電源才能觸發遷移
-
VMware Tools 的移除將在虛擬機器啟動後在目標虛擬機器管理程式上進行。
-
ONTAP-NAS:所有 VMDK 可以位於同一磁碟區上,也可以每個 VMDK 位於各自的磁碟區上。虛擬機器選擇可以在資料儲存層級進行,也可以在虛擬機器層級進行。
-
ONTAP-NAS-Economy:VMDK 必須位於單一磁碟區上,且磁碟區名稱必須遵循下列命名約定:
trident_qtree_pool_<storage-prefix>_<10 random characters>。資源群組內的 VM 選擇僅在資料儲存層級進行。對於 ONTAP-NAS-Economy,必須預先存在符合上述命名慣例的磁碟區,且該磁碟區必須用作 VMware vCenter 上的資料存放區。這表示虛擬機器應透過 Storage vMotioned 移至此特定資料存放區,或將現有資料存放區重新命名以符合命名慣例: trident_qtree_pool_<storage-prefix>_<10 random characters>。對於 ONTAP-NAS-Economy,Trident 後端配置(TBC)應將參數 Deny New Volume Pools`設為 `true。所使用的儲存類別也應將 storagePools 限制為tbc name: <aggr name where the trident_qtree_pool_<storage-prefix>_<10 random characters> resides>。ONTAP-NAS-Economy 驅動程式的範例 TBC 配置
apiVersion: v1 kind: Secret metadata: name: nas-eco-data-1172-secret namespace: trident type: Opaque stringData: username: <svm-admin-username> password: <svm-admin-password> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: nas-eco-data-1172 namespace: trident spec: backendName: nas-eco-data-1172 credentials: name: nas-eco-data-1172-secret dataLIF: "192.168.1.100" denyNewVolumePools: "False" managementLIF: "192.168.1.50" storageDriverName: ontap-nas-economy svm: data_1172 version: 1在建立 trident_qtree_pool_<storage-prefix>_<10 random characters>作為初始 PVC 建立的一部分之後,應立即將參數denyNewVolumePools設定為true。將此值設定為true可確保 Trident 使用現有的 qtree 資源池來放置基於 qtree 的 PVC。可以使用以下命令對 TBC 進行修補:
oc patch tbc nas-eco-data-1172 -n trident --type=merge -p '{"spec":{"denyNewVolumePools":"true"}}'儲存類別的範例 YAML
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nas-eco-data-1172 annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: csi.trident.netapp.io parameters: backendType: ontap-nas-economy fsType: nfs storagePools: "nas-eco-data-1172:NSOL_NetApp_C800_T18U13_02_SSD_CAP_1" allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate -
ONTAP-SAN:VMDK 應放置在個別磁碟區上(模擬 VMDK 至 PVC/PV 結構),並使用 Storage vMotion。虛擬機器選擇在虛擬機器層級進行。
-
ONTAP-SAN-Economy:VMDK 必須位於單一 NFSv3 磁碟區上,且磁碟區名稱必須遵循下列命名約定:
trident_lun_。資源群組內的 VM 選擇僅在資料存放區層級進行。對於 ONTAP-SAN-Economy,符合命名慣例的磁碟區 trident_lun_`必須預先存在,並且必須用作 VMware vCenter 上的資料存放區。這表示 VM 應透過 Storage vMotioned 移至此特定資料存放區,或將現有資料存放區重新命名以符合命名慣例 `trident_lun_。ONTAP-SAN-Economy 的範例 TBC 配置
apiVersion: v1 kind: Secret metadata: name: ontap-san800-eco-secret namespace: trident type: Opaque stringData: username: <svm-admin-username> password: <svm-admin-password> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: ontap-san800-eco namespace: trident spec: backendName: ontap-san800-eco aggregate: NSOL_NetApp_C800_T18U13_01_SSD_CAP_1 credentials: name: ontap-san800-eco-secret dataLIF: "192.168.1.110" defaults: protocol: iSCSI snapshotPolicy: none spaceAllocate: "true" spaceReserve: none tieringPolicy: none managementLIF: "192.168.1.60" storage: - labels: backend: san800-eco storageDriverName: ontap-san-economy svm: data_1172 version: 1ONTAP-SAN-Economy 儲存類別配置範例
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sc-ontap-san-eco provisioner: csi.trident.netapp.io parameters: backendType: ontap-san-economy selector: "backend=san800-eco" allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate對於 ONTAP-SAN 和 ONTAP-SAN-Economy,VM 應先從任何區塊型資料儲存區透過 Storage vMotioned 遷移至 ONTAP NFSv3 磁碟區。然後,Shift Toolkit 會將 VMDK 轉換為 LUN,並將其作為 PVC 匯入至對應的命名空間。
資源組的虛擬機器選擇可以在虛擬機器層級或資料儲存層級進行。根據選擇情況,工作流程會選擇對應的 ONTAP NAS 或 SAN 儲存驅動程式。例如,如果選擇單一虛擬機器,則使用 ONTAP-NAS 驅動程式。如果多個 VMDK 位於同一磁碟區上,則根據來源磁碟區及其 SVM,以及在 OpenShift 端配置的 TBC 和儲存類別,使用 ONTAP-NAS 或 ONTAP-NAS-Economy 驅動程式。
-
對於 Windows 虛擬機器:使用本機管理員憑證
-
對於 Linux 虛擬機器:使用具有執行 sudo 命令而無需密碼提示權限的用戶
-
對於 Windows 虛擬機器:將 VirtIO ISO 掛載到虛擬機器(從 [此處應填寫下載連結] 下載)。"這裡" )
準備腳本使用 .msi 套件來安裝驅動程式和 qemu-guest-agents。
步驟 1:新增目標網站(OpenShift)
將目標 OpenShift 虛擬化環境加入到 Shift 工具包。
-
點擊“新增網站”,然後選擇“目標位置”。
顯示範例
-
請輸入目的地站點詳細資料:
-
網站名稱:請為網站提供一個名稱。
-
虛擬機器管理程式:選擇 OpenShift
-
站點位置:選擇預設選項
-
連接器:選擇預設選項
-
-
按一下“繼續”。
顯示範例
-
請輸入 OpenShift 詳細資訊:
-
端點:OpenShift 叢集端點的完全限定網域名稱(例如,api.demomigsno.demoval.com)
-
上傳 kubeconfig 檔案:使用權限最小的 kubeconfig 檔案。
檔案副檔名必須為yaml。
顯示範例
-
-
按一下“建立網站”。
顯示範例
來源磁碟區和目標磁碟區將相同,因為磁碟格式轉換是在同一磁碟區內的磁碟區層級進行的。
步驟 2:建立資源組
將虛擬機器組織成資源群組,以保留啟動順序和啟動延遲配置。
確保將 VM VMDK 遷移到新建立的ONTAP SVM 上的各個資料儲存磁碟區。
-
導航至“資源組”,然後按一下“建立新資源組”。
-
從下拉式選單中選擇來源站點,然後按一下「建立」。
-
提供資源組詳細資訊並選擇工作流程:
-
基於複製的遷移:執行從來源虛擬機器到目標虛擬機器的端對端遷移
-
基於複製的轉換:將磁碟格式轉換為選定的虛擬機器管理程式類型
-
-
按一下“繼續”。
-
使用搜尋選項選擇虛擬機器。
資源組的虛擬機器選擇是基於虛擬機器本身,而不是資料儲存層級。 顯示範例
顯示範例
-
更新遷移詳情:
-
選擇*目標網站*
-
選擇*目標 OpenShift 條目*
-
選擇儲存等級
顯示範例
如果只有一個 TBC, Trident後端會自動對應到來源磁碟區;但是,如果有多個 TBC,則可以選擇後端。
-
-
配置所有選定虛擬機器的啟動順序和啟動延遲:
-
1:第一台啟動的虛擬機
-
3:預設值
-
5:最後一個啟動的虛擬機
-
-
按一下“建立資源組”。
顯示範例
資源組已創建,可以進行藍圖配置。
步驟 3:建立遷移藍圖
建立遷移計劃藍圖,包括平台映射、網路配置和虛擬機器設定。
-
導航至“藍圖”並點擊“建立新藍圖”。
-
為藍圖命名並配置主機映射:
-
選擇「來源站點」和關聯的 vCenter
-
選擇*目標網站*和關聯的 OpenShift 目標
-
配置叢集和主機映射
顯示範例
-
-
選擇資源組詳細信息,然後按一下“繼續”。
-
如果存在多個資源組,請設定資源組的執行順序。
-
配置網路映射到對應的邏輯網路。
OpenShift 叢集中應該已經設定了網路連線定義,並且設定了對應的 VLAN 和 trunk 選項。對於測試遷移,請選擇「不配置網路」以避免生產網路衝突;轉換後手動分配網路設定。 顯示範例
-
查看儲存類別和後端映射(根據虛擬機器選擇自動選擇)。
確保事先將 VMDK 檔案遷移到各個磁碟區,以便可以從 PVC 建立虛擬機器並啟動虛擬機器。 -
在虛擬機器詳細資訊下,選擇配置詳細信息,並為每種作業系統類型提供服務帳戶憑證:
-
Windows系統:使用具有本機管理員權限的使用者(也可以使用網域憑證)
-
Linux:使用可以無需密碼提示即可執行 sudo 命令的用戶
顯示範例
配置選擇可讓您選擇磁碟映像格式、跳過覆蓋 prepareVM,以及選擇是否將磁碟區從父磁碟區分割。預設情況下,分割克隆功能已停用,工作流程預設使用 RAW 格式。
-
-
配置IP設定:
-
無需配置:預設選項
-
保留 IP 位址:保持與來源系統相同的 IP 位址
-
DHCP:為目標虛擬機器指派 DHCP 權限
在 prepareVM 階段,確保虛擬機器已啟動並安裝了 VMware Tools。
-
-
配置虛擬機器設定:
-
調整 CPU/RAM 參數(可選)
-
修改啟動順序和啟動延遲
-
開啟電源:選擇在遷移後開啟虛擬機器電源(預設:開啟)
-
移除 VMware Tools:轉換後移除 VMware Tools(預設:已選取)
-
虛擬機器韌體:BIOS > BIOS 和 EFI > EFI(自動)
-
保留 MAC 位址:出於許可要求,請保留 MAC 位址。
如果需要在保留 MAC 位址的同時保留介面名稱,請確保在來源 VM 上建立適當的 udev 規則。 -
服務帳戶覆蓋:如有需要,請指定單獨的服務帳戶
-
-
按一下“繼續”。
-
(可選)選擇日期和時間安排遷移。
至少提前 30 分鐘安排遷移,以便留出時間準備虛擬機器。 -
點選「建立藍圖」。
Shift Toolkit 會啟動 prepareVM 作業,該作業會在來源虛擬機器上執行腳本,為遷移做好準備。
顯示範例
準備過程:
-
注入腳本以更新 VirtIO 驅動程式、安裝 qemu-agent、移除 VMware Tools、備份 IP 詳細資訊並更新 fstab 檔案。
-
使用 PowerCLI 連接到客戶虛擬機器(Linux 或 Windows)並更新 VirtIO 驅動程式
-
對於 Windows 虛擬機器:將腳本儲存在
C:\NetApp -
對於 Linux 虛擬機器:將腳本儲存在
/NetApp`和 `/opt
|
|
對於任何支援的虛擬機器作業系統,Shift Toolkit 會在磁碟轉換之前自動安裝必要的 VirtIO 驅動程序,以確保轉換後成功啟動。 |
當 prepareVM 成功完成時,藍圖狀態將更新為「PrepareVM 完成」。遷移將按計劃時間進行,或者也可以點擊「遷移」選項手動啟動。
顯示範例
顯示範例
步驟 4:執行遷移
觸發遷移工作流程,將虛擬機器從 VMware ESXi 轉換為 OpenShift Virtualization。
所有虛擬機器均依照計畫的維護時間表正常關機。
-
在藍圖上,按一下「遷移」。
顯示範例
-
Shift Toolkit 執行下列步驟:
-
刪除藍圖中所有虛擬機器的現有快照
-
觸發來源虛擬機器快照
-
在磁碟轉換之前觸發磁碟區快照
-
克隆各個磁碟區
-
將每個 VMDK 的 VMDK 格式轉換為 RAW 格式
Shift Toolkit 會自動尋找與每個虛擬機器關聯的所有 VMDK,包括主啟動磁碟。
-
|
|
如果存在多個 VMDK 檔案,則每個 VMDK 都將根據所使用的儲存驅動程式進行轉換並放置在自己的 PVC 中。 |
-
清理卷,使其僅保留 disk.img 文件
將虛擬機器磁碟映像轉換為 RAW 格式後,Shift Toolkit 會清理卷,將原始檔案重新命名為 disk.img,並指派必要的權限。
-
使用Trident導入功能以 PVC 格式匯入銷售量。
然後使用NetApp Trident API 將磁碟區作為 PVC 匯入。
-
使用虛擬機器特定的 YAML 檔案建立虛擬機
PVC 匯入完畢且 PV 就位後,Shift Toolkit 使用 OC CLI 根據作業系統使用 yaml 檔案建立每個虛擬機器。
|
|
虛擬機器在「預設」命名空間下建立。 |
-
在目標位置啟動虛擬機
根據虛擬機器作業系統,Shift Toolkit 會自動指派虛擬機器啟動選項以及儲存控制器介面。對於 Linux 發行版,可以使用 VirtIO 或 VirtIO SCSI。對於 Windows 系統,虛擬機器啟動時使用 SATA 接口,然後排程腳本會自動安裝 VirtIO 驅動程式並將介面變更為 VirtIO。
-
在每個虛擬機器上註冊網絡
網路是根據藍圖選擇進行分配的。
-
使用 cron 作業移除 VMware Tools 並指派 IP 位址
顯示範例
|
|
作業完成後,即可對藍圖執行驗證選項。如需更多資訊,請參閱 驗證遷移。 |
使用 Migration Toolkit for Virtualization 搭配 Shift Toolkit(腳本方式)
本節介紹如何使用NetApp Shift Toolkit 和 Migration Toolkit for Virtualization (MTV) 實現向 Red Hat OpenShift Virtualization 的無縫遷移。
確保滿足以下先決條件:
-
已安裝 OpenShift Virtualization Operator 和NetApp Trident CSI 驅動程式的 OpenShift 集群
-
MTV 2.9.4(含轉換模式)
-
"Shift 工具包"已安裝
由於僅使用 Shift Toolkit API,因此無需配置 Shift Toolkit 資源群組或藍圖。 -
在 OpenShift 叢集上擁有管理員等級權限
-
安裝了 OC 命令列工具的 Linux 執行個體
-
已匯出 Kubeconfig 或已執行 OC 登入以連線至叢集
-
從 Shift Toolkit UI 下載名為「Shift-VM-to-OpenShift-MTV」的腳本(設定 > 開發者存取權限 > 腳本攔截器)
-
解壓縮檔案:
unzip Shift-VM-to-OpenShift-MTV.zip -
請確保已安裝 Python3:
dnf install python3 -
安裝 OpenJDK 8 或更高版本:
yum install java-1.8.0-openjdk -
安裝要求:
pip install -r requirements.txt
-
-
MTV 的虛擬機器需求:VMDK 檔案可以採用不同的組織方式:它們可以全部放置在單一磁碟區中(無需儲存 vMotion),也可以分別指派到不同的磁碟區中,或分組放置在 NFS 磁碟區內的 qtree 中。腳本會自動偵測佈局,並根據 TBC UUID 選擇合適的複製方法和 NAS 儲存驅動程式。
-
使用 MTV 創建遷移計劃。
為了利用快速 VMDK 轉換,請為虛擬機器建立遷移計劃,並確保 YAML 檔案中包含以下參數:
-
targetNamespace: default -
type: conversion -
storage: {}應事先制定計劃,以確保 MTV 配置的 IP 設定得以保留。
-
-
將 vCenter 中的虛擬機器和ONTAP儲存上的磁碟區進行對應。
使用腳本建立必要的 PVC 並將其匯入到 OpenShift 叢集。 PVC必須帶有以下標籤和註釋:
標籤:
-
PVC 中的 vmID 和 vmUUID(堆高機會找出這些值)
註:
-
vmdk 磁碟名稱
forklift.konveyor.io/disk-source該腳本確保為每個PVC設定這些屬性,並更新disk.img的權限:
-
"owner": { "id": 107 } -
"group": { "id": 107 } -
"mode": "0655"
-
-
請使用以下詳細資訊更新 JSON 檔案:
-
* ONTAP叢集*:可以是 SVM;可以使用 vsadmin。如果克隆卷不需要立即分離,請將 splitclone 設定為「False」。
-
vCenter:發現虛擬機器及其關聯 VMDK 檔案的最低 RBAC 權限
-
* Trident儲存類別*:應為 NFS 後端,且 YAML 檔案中版本資訊正確。
-
OpenShift:指定項目名稱(預設值僅用作範例)
其餘值保持預設值。
-
-
滿足先決條件後,執行 `python3 main.py`建立 PVC 並將其匯入到 OpenShift 叢集。
-
PVC 導入後,使用 MTV 觸發遷移,以建立具有相應規範的 VM。
顯示範例
顯示範例
-
使用 MTV 轉換 VMDK。
腳本會自動尋找與每個虛擬機器關聯的所有 VMDK,包括主啟動磁碟。
如果存在多個 VMDK 文件,則每個 VMDK 文件都會被轉換。 -
上傳 RAW 鏡像到 OpenShift 虛擬化平台。
此腳本使用Trident CSI 將磁碟區作為 PVC 匯入到叢集中。 PVC yaml 檔案中填入了標籤和註解。
-
創建具有 MTV 的虛擬機器。
導入完成後,呼叫 MTV 計畫開始遷移。 UI 顯示為“冷”,但根據轉換的 yaml 規範,MTV 會檢查每個 PVC 和 vmID/vmUUID,映射它們,並初始化遷移。
顯示範例
虛擬機器是在「預設」虛擬機器專案下建立的,但可以在 MTV 遷移計劃 YAML 中修改此設定。 -
首次使用 MTV 啟動 VM。
根據虛擬機器作業系統,MTV 會自動分配虛擬機器啟動選項以及儲存控制器介面。
顯示範例
遷移在 6 分鐘內完成,虛擬機器擁有 1.5TB 資料磁碟(分佈在 3 個 PVC 上)。這展示了一種使用ONTAP儲存重新安置虛擬機器的精簡、低影響方法。
該腳本可以透過設定檔案或指定參數來執行。以下範例展示如何使用參數執行腳本:
該腳本還支援跨 SVM 複製,使其能夠根據提供的輸入參數在不同的 SVM 之間建立 PVC。 python3 main.py --mode params --ontap-server 10.192.102.56 --ontap-username admin --ontap-password 'correct password' --ontap-source-vserver manila --ontap-target-vserver manila --ontap-data-lif 10.63.172.249 --ontap-skip-ssl --vcenter-server 10.63.172.125 --vcenter-username administrator@demoenv.com --vcenter-password 'correct password' --vcenter-skip-ssl --shift-server 10.61.187.117 --shift-username admin --shift-password 'correct password' --trident-backend-name tbc-ontap-manila-nimo --trident-backend-uuid 778245f4-1f50-453c-b81c-3dd82e166bbc --trident-storage-class nimmanila --mtv-project openshift-mtv --mtv-plan casetst --ocp-server https://api.demomigsno.demoval.com:6443 --ocp-token sha256~co89ATebn-ktVyrMbNJUGByVWph_kjLamYtIOPmqfQM --ocp-project default --import-volume --execution-mode clone_shrink --snapshot-prefix ""遷移完成後,需要分離複製磁碟區。分離方法取決於 ONTAP 版本:ONTAP 9.17.1 及更新版本使用 clone split,舊版則使用 vol move。提供的 ZIP 套件中的「Post migrate」資料夾內包含一個用於啟動分離程序的指令碼。
影片示範
以下影片示範了本解決方案中概述的流程。