將 VM 從 Azure 移至 Azure Stack Hub
您可以將虛擬硬碟 (VHD) 從在 Azure 中建立的虛擬機器 (VM) 上傳至您的 Azure Stack Hub 實例。
從 Azure 上準備並下載您的 VHD
在準備 VHD 時,尋找符合您需求的區段。
- 請依照 使用 PowerShell 準備 VHD,從特製化磁碟建立 Windows VM 一文中的步驟作。
- 若要部署 VM 擴充功能,請確定 VM 代理程式 .msi 可用。
如需資訊和步驟,請參閱 Azure 虛擬機器代理程式概觀。 在移動 VM 之前,請確定擴充功能已安裝在 VM 上。 如果 VM 代理程式不存在於 VHD 中,擴充功能部署將會失敗。 您不需要在布建時設定 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
必須符合下列需求,才能符合 VHD 與 Azure Stack Hub 的相容性。
VHD 是固定類型
識別:使用 get-vhd
Cmdlet 來取得 VHD 物件。
修正:您可以將 VHDX 檔案轉換成 VHD、將動態擴充的磁碟轉換成固定大小的磁碟,但無法變更 VM 的產生。
使用 Hyper-V Manager 或 PowerShell 來轉換磁碟。
VHD 的虛擬大小下限至少為 20 MB
識別:使用 get-vhd
Cmdlet 來取得 VHD 物件。
修正:使用 Hyper-V Manager 或 PowerShell 調整磁碟大小。
VHD 已對齊
識別:使用 get-vhd
Cmdlet 來取得 VHD 物件。
修正:虛擬大小必須是一個 (1) MB 的倍數。
磁碟必須符合 1 MiB 的虛擬大小。 如果您的 VHD 是 1 MiB 的一小部分,您必須將磁碟大小調整為 1 MiB 的倍數。 小於一 MiB 的磁碟會在從上傳的 VHD 建立映像時造成錯誤。 若要驗證大小,您可以使用 PowerShell Get-VHD Cmdlet 來顯示「Size」,在 Azure 中,該數值必須為 1 MiB 的倍數,而「FileSize」則等於「Size」加上 VHD 頁尾的 512 個字節。
使用 Hyper-V Manager 或 PowerShell 來調整磁碟的大小。
VHD Blob 長度
識別:使用 get-vhd
Cmdlet 來顯示 Size
修正:VHD Blob 長度 = 虛擬大小 + VHD 頁尾長度 (512)。 Blob 結尾的一個小型頁腳描述 VHD 的屬性。
Size
必須是 Azure 中 1 MiB 的倍數,且 FileSize
,這等於 VHD 頁尾的 Size
+ 512 個字節。
使用 Hyper-V Manager 或 PowerShell 來調整磁碟的大小。
第一代 VM
識別:若要確認虛擬機是否為第 1 代,請使用 cmdlet Get-VM | Format-Table Name, Generation
。
修正:您必須在 Hypervisor 中重新建立 VM(Hyper-V)。
上傳至記憶體帳戶
您可以使用入口網站上傳 VHD,或使用您在入口網站中建立的容器,使用 AzCopy。
用於生成 SAS URL 和上傳 VHD 的入口網站
登入 Azure Stack Hub 使用者入口網站。
選取 [儲存器帳戶],然後選取現有的記憶體帳戶或建立新的記憶體帳戶。
在您的儲存體帳戶的 [儲存體帳戶] 刀鋒視窗中,選取 [Blobs]。 選取 [容器] 以建立新的容器。
輸入容器的名稱,然後選取 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 以從命令列介面使用 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。