前言
以下介紹如何將一個 VMWare VM(vmdk) 移轉到 Azure 上。
開始之前請先下載並安裝以下軟體,
Microsoft Virtual Machine Converter 3.0 : 透過它的 PowerShell Cmdlet 來將 VMDK 轉成 VHD,請將它解壓縮後,放到 C:\Program Files 目錄之中。
AzCopy : 透過它將 VHD 上傳到 Azure Disk (可與vmdk 放在相同目錄)
Azure CLI : 透過它來建立 Azure Disk 並建立 Azure VM
實作
一、將 vmdk 轉成 vhd
需要透過 Microsoft Virtual Machine Converter 3.0 來將 VMDK 轉成 VHD
1.下載 Microsoft Virtual Machine Converter 3.0 ,將它解壓縮後,放到 C:\Program Files 目錄之中,它的目錄為 Microsoft Virtual Machine Converter
2.以系統管理員身份開啟 Powershell ,執行以下指令(SourceLiteralPath 及 DestinationLiteralPath 請依vmdk 存放路徑來調整),來將 vmdk 轉成 vhd
1 | Import-Module 'C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1' |
原本 vmdk檔 為 32GB 轉完後,VHD檔約為 60多GB
註: 我只要將目前這一個 VM 上傳上去,所以不會使用執行 Sysprep 。
二、將 VHD 檔設定為固定的大小(要整數GB),例如將它改成 64GB/128GB/256GB/512GB …
1.以系統管理員身份開啟 Powershell 並將 VHD 檔案大小改成 64GB
1 | Resize-VHD -Path c:\vm\win2012.vhd -SizeBytes 64GB |
2.將大小的位元組記錄下來(68,719,477,248 位元組),
三、透過 Azure CLI 建立空的 Azure Disk
1.開啟 Command 視窗
2.登入 Azure
1 | az login |
3.設定預設的訂閱
1 | az account set --subscription "你的Azure訂閱Id" |
4.建立 資源群組(如果要使用即有資源群組也可以)
1 | az group create --location eastus --name vwwareVMs |
5.建立 Azure Disk 並將 Vhd 的大小設定到 –upload-size-bytes 參數
1 | az disk create -n vmwareDisk -g vwwareVMs -l eastus --for-upload --upload-size-bytes 68719477248 --sku standardssd_lrs --hyper-v-generation V1 |
註: VHD 的大小需與 Azure Disk 的大小相同,否則透過 AZCopy 時,會發生以下的錯誤
source file is not same size as the destination page blob. Source size is {VHD大小} bytes but destination size is {azure disk大小} bytes.
四、透過 Azure CLI Azure Disk 的可寫入 SAS
1 | az disk grant-access -n vmwareDisk -g vwwareVMs --access-level Write --duration-in-seconds 86400 |
五、透過 AzCopy 將 vhd 上傳到 Azure Disk
1 | AzCopy.exe copy "C:\VM\win2012.vhd" "上面accessSAS的值" --blob-type PageBlob |
這裡就給它慢慢地上傳上去 …
六、取消 Azure Disk 的 SAS
1 | az disk revoke-access -n vmwareDisk -g vwwareVMs |
七、建立VM,設定 OS Disk 為我們上傳上去的 vmwareDisk
1 | az vm create --resource-group vwwareVMs --location eastus --name vmwareVM1 --os-type windows --attach-os-disk vmwareDisk |
建立完成後,就可以透過 遠端連線 連進入,並將 VMware Tools 移除。
也可以在 Portal.Azure 中調整 VM 的大小,自動關機 …。
完整的 Script 如下,
以系統管理員身份開啟 PowerShell
1 | Import-Module 'C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1' |
開啟 Command
1 |
|
註:如果上述不成功的話,當轉成 VHD 後,用地端的 Hyper-V 開起來,測試看看運作是否正常,從新增移除程式那,將 VMware Tools 移除,然後依 準備 Windows VHD 或 VHDX 以上傳至 Azure 的內容來設定 VM。
參考資料
準備 Windows VHD 或 VHDX 以上傳至 Azure
將 VHD 上傳至 Azure,或將受控磁碟複製到另一個區域-Azure CLI
How to Convert VMware VMDK Files Into Hyper-V VHD Files
Resize-VHD
Microsoft Virtual Machine Converter 3.0
The upload size in bytes # - 512 bytes for the VHD footer (# in this case) must be a multiple of MiB.
受控磁碟-定價