將 VM 從 Azure 移至 Azure Stack Hub
您可以將虛擬硬碟 (VHD) 從在 Azure 中建立的虛擬機器 (VM) 上傳至您的 Azure Stack Hub 執行個體。
準備 VHD 並從 Azure 下載
準備 VHD 時,尋找您適合您需求的特定小節。
- 遵循使用 PowerShell 從特製化磁碟建立 Windows VM 一文中的步驟,以準備 VHD。
- 若要部署 VM 擴充功能,請確定 VM 代理程式 .msi 可供使用。
如需資訊和步驟,請參閱 Azure 虛擬機器代理程式概觀。 在移動 VM 之前,請確定已在 VM 上安裝該擴充功能。 如果 VHD 中沒有該 VM 代理程式,則擴充功能部署會失敗。 佈建時,您不需要設定 OS 設定檔,或是設定$vm.OSProfile.AllowExtensionOperations = $true
。
驗證 VHD
上傳 VHD 前,您必須先驗證 VHD 是否符合需求。 不符合需求的 VHD 將無法載入在 Azure Stack Hub 中。
您將使用透過在 Hyper-V 中找到的 PowerShell 模組。 啟用 Hyper-V 會安裝支援的 PowerShell 模組。 您可以透過已提升權限的提示字元開啟 PowerShell,並執行下列 Cmdlet:
Get-Command -Module hyper-v
如果您沒有 Hyper-V 命令,請參閱使用 Hyper-V 與 Windows PowerShell。
取得機器上 VHD 的路徑。 執行下列 Cmdlet:
get-vhd <path-to-your-VHD>
此 Cmdlet 會傳回 VHD 物件並顯示內容,例如:
ComputerName : YOURMACHINENAME Path : <path-to-your-VHD> VhdFormat : VHD VhdType : Fixed FileSize : 68719477248 Size : 68719476736 MinimumSize : 32212254720 LogicalSectorSize : 512 PhysicalSectorSize : 512 BlockSize : 0 ParentPath : DiskIdentifier : 3C084D21-652A-4C0E-B2D1-63A8E8E64C0C FragmentationPercentage : 0 Alignment : 1 Attached : False DiskNumber : IsPMEMCompatible : False AddressAbstractionType : None Number :
使用 VHD 物件,檢查是否符合 Azure Stack Hub 的需求。
此外 Azure Stack Hub 僅支援第一 (1) 代 VM 的映像。
如果您的 VHD 與 Azure Stack Hub 不相容,您將必須返回來源映像和 Hyper-V、建立符合需求的 VHD,然後上傳。 若要將上傳程序中可能的損毀降至最低,請使用 AzCopy。
如何修正 VHD
您必須符合下列需求,才能與 Azure Stack Hub 的 VHD 相容。
VHD 是固定類型
識別:使用 get-vhd
Cmdlet 以取得 VHD 物件。
修正:您可以將 VHDX 檔案轉換成 VHD、將動態擴充的磁碟轉換成固定大小的磁碟,但您無法變更 VM 的世代。
使用 Hyper-V 管理員或 PowerShell 來轉換磁碟。
VHD 的虛擬大小下限至少為 20 MB
識別:使用 get-vhd
Cmdlet 以取得 VHD 物件。
修正:使用 Hyper-V 管理員或 PowerShell 來調整磁碟大小。
VHD 已校準
識別:使用 get-vhd
Cmdlet 以取得 VHD 物件。
修正:虛擬大小必須是一 (1) MB 的倍數。
磁碟必須將虛擬大小與 1 MiB。 如果您的 VHD 是 1 MiB 分數,您必須將磁碟大小調整為 1 MiB 的倍數。 從上傳的 VHD 建立映像時,屬於 MiB 分數的磁碟會導致錯誤。 若要確認大小,您可以使用 PowerShell 的 Get-VHD Cmdlet 來顯示 "Size",在 Azure 中必須為 1 MiB 的倍數,而 "FileSize" 則會等於 VHD 頁尾的 "Size" 加上 512 個位元組。
使用Hyper-V 管理員或 PowerShell 來調整磁碟大小。
VHD blob 長度
識別:使用 get-vhd
Cmdlet 來顯示 Size
修正:VHD blob 長度 = 虛擬大小 + vhd 頁尾長度 (512)。 Blob 最後的小型頁尾會說明 VHD 的屬性。
Size
在 Azure 中必須是 1 MiB 的倍數,且 FileSize
在 VHD 頁尾中必須等於 Size
+ 512 個位元組。
使用 Hyper-V 管理員或 PowerShell 來調整磁碟大小。
第一代 VM
識別:若要確認您的虛擬機器是否為第 1 代,請使用 Cmdlet Get-VM | Format-Table Name, Generation
。
修正:您將需要在 Hypervisor (Hyper-V) 中重新建立 VM。
連線至儲存體帳戶
您可以透過入口網站上傳 VHD,或透過入口網站中建立的容器使用 AzCopy。
用於產生 SAS URL 和上傳 VHD 的入口網站
登入 Azure Stack Hub 使用者入口網站。
選取 [儲存體帳戶] 並選取現有儲存體帳戶,或建立新的儲存體帳戶。
在儲存體帳戶刀鋒視窗中,選取儲存體帳戶的 [Blob]。 選取 [容器] 以建立新的容器。
輸入容器的名稱,然後選取 [Blob (僅限 Blob 的匿名讀取存取)]。
如果您要使用 AzCopy 來上傳您的映像,而非入口網站,請建立 SAS 權杖。 在儲存體帳戶中選取 [共用存取簽章],然後選取 [產生 SAS 和連接字串]。 複製並記錄 [Blob 服務 SAS URL]。 使用 AzCopy 來上傳 VHD 時,您將會使用此 URL。
選取容器,然後選取 [上傳]。 上傳您的 VHD。
AzCopy VHD
使用 Azure 儲存體總管或 AzCopy 來降低 VHD 在上傳程序中損毀的機率,而您的上傳將會加快。 下列步驟會在 Windows 10 電腦上使用 AzCopy。 AzCopy 是命令列公用程式,可讓您在儲存體帳戶之間複製 Blob 或檔案。
如果您尚未安裝 AzCopy,請安裝 AzCopy。 您可以在開始使用 AzCopy 一文中找到下載和開始使用 AzCopy 的尋找指示。 記下您儲存二進位檔的位置。 您可 將 AzCopy 新增至您的路徑,以便從 PowerShell 命令列使用此項目。
開啟 PowerShell 以從 shell 使用 AzCopy。
使用 AzCopy 將您的 VHD 上傳至儲存體帳戶中的容器。
$env:AZCOPY_DEFAULT_SERVICE_API_VERSION = "2017-11-09" azcopy cp "/path/to/file.vhd" "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS] --blob-type=PageBlob
注意
使用類似將單一檔案上傳至虛擬目錄的語法,上傳您的 VHD。 新增 --blob-type=PageBlob
,以確保 VHD 會以 [分頁 Blob] 形式上傳,而非預設的 [區塊]。
如需使用 AzCopy 和其他儲存體工具的詳細資訊,請參閱使用 Azure Stack Hub 儲存體中的資料轉送工具。
建立 VM
自訂映像有兩種形式:特製化和一般化。
登入 Azure Stack Hub 使用者入口網站。
如果您是建立平台磁碟的雲端操作員,請依照新增平台映像中的指示,透過系統管理員入口網站或系統管理員端點來新增 VHD。
在使用者入口網站中,選取 [所有服務]>[磁碟]>[新增]。
在 [建立受控磁碟] 中:
輸入您映射的 [名稱]。
選取您的 [訂用帳戶]。
建立或新增映像至 [資源群組]。
選取 ASDK 的 [位置] (也稱為區域)。
選取 [帳戶類型] 。
- [進階磁碟 (SSD)] 採用固態硬碟,可提供一致、低延遲的效能。 進階磁碟可讓您在價格和效能之間取得最佳的平衡,並且適用於 I/O 密集型應用程式和生產工作負載。
- [標準磁碟 (HDD)]採用磁碟機,適用於不常存取資料的應用程式。 區域備援磁碟採用區域備援儲存體 (ZRS),此儲存體可跨多個區域複寫資料,且即使在單一區域停止運作時也可供使用。
選取 [儲存體 blob],[來源類型]。 您會透過儲存體帳戶中的 blob 建立磁碟。
針對 VHD 來源,請選取:
- 儲存體帳戶所在的來源訂用帳戶。
- 選取 [瀏覽],然後瀏覽至您的儲存體帳戶、容器和 VHD。 選擇 [選取] 。
- 選取符合 VHD 的 [OS 類型]。
選取磁碟 [大小 (GiB)],此大小等於或大於您的 VHD。
選取 [建立]。
建立磁碟後,您就可以使用該磁碟來建立新的 VM。