將一般化 VM 從內部部署移至 Azure Stack Hub
您可以從內部部署環境新增虛擬機 (VM) 映像。 您可以將映像建立為虛擬硬碟 (VHD),並將映射上傳至 Azure Stack Hub 實例中的記憶體帳戶。 然後,您可以從 VHD 建立 VM。
一般化磁碟映像是已使用 Sysprep 準備移除任何唯一資訊(例如使用者帳戶)的磁碟映射,可讓您重複使用它來建立多個 VM。 當建立 Azure Stack Hub 雲端操作員計劃作為市集專案的映像時,一般化 VHD 很適合。
如何移動影像
在準備 VHD 時,尋找符合您需求的區段。
請遵循準備 Windows VHD 或 VHDX 中的步驟 上傳至 Azure ,以在上傳之前正確一般化您的 VHD。 您必須針對 Azure Stack Hub 使用 VHD。
驗證 VHD
上傳 VHD 之前,您必須驗證 VHD 是否符合需求。 不符合需求的 VHD 將無法在 Azure Stack Hub 中載入。
您將使用搭配 Hyper-V 找到的 PowerShell 模組。 啟用支援 PowerShell 模組的 Hyper-V 安裝。 您可以使用提升權限的提示開啟 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 管理員或 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 的倍數。 磁碟若為 MiB 的分數,會在從上傳的 VHD 建立映像時導致錯誤。 若要驗證大小,您可以使用 PowerShell 的 Get-VHD Cmdlet 來顯示 "Size",其在 Azure 中必須為 1 MiB 的倍數,而 "FileSize" 則會等於 "Size" 加上供 VHD footer 使用的 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 中重新建立 VM(Hyper-V)。
上傳至記憶體帳戶
您可以使用入口網站上傳 VHD,或使用您在入口網站中建立的容器,使用 AzCopy。
產生SAS URL並上傳 VHD 的入口網站
登入 Azure Stack Hub 使用者入口網站。
選取 [儲存體 帳戶],然後選取現有的記憶體帳戶或建立新的儲存體帳戶。
選取 記憶體帳戶刀鋒視窗中的 [Blob ]。 選取 [容器] 以建立新的容器。
輸入容器的名稱,然後選取 [僅限 Blob 的匿名讀取存取權]。
如果您要使用 AzCopy 來上傳映像,而不是入口網站,請建立 SAS 令牌。 選取記憶體帳戶中的 [共用存取簽章],然後選取 [產生 SAS] 和 [連接字串]。 複製並記下 Blob 服務 SAS URL。 使用 AzCopy 上傳 VHD 時,您將使用此 URL。
選取您的容器,然後選取 [ 上傳]。 上傳您的 VHD。
AzCopy VHD
使用 Azure 儲存體 Explorer 或 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 中使用資料傳輸工具 儲存體。
在 Azure Stack Hub 中建立映像
登入 Azure Stack Hub 使用者入口網站。
如果您是建立平臺映像的雲端操作員,請遵循新增平臺映像中的指示,透過系統管理員入口網站或系統管理員端點新增 VHD。
在使用者入口網站中,選取 [所有服務>映射>新增]。
在 [建立映射] 中:
輸入影像的名稱。
選取您的 [訂用帳戶]。
建立或新增映像至 資源群組。
選取 ASDK 的區域,也稱為 「位置」。
選取符合映像的OS類型。
選取 [瀏覽],然後流覽至 儲存體 帳戶、容器和 VHD。 選擇選取。
選取 [ 帳戶類型]。
- 進階版 磁碟 (SSD) 由固態硬碟支援,並提供一致的低延遲效能。 它們提供價格和效能之間的最佳平衡,非常適合 I/O 密集的應用程式和生產工作負載。
- 標準磁碟 (HDD) 是由磁碟驅動器所支援,對於不常存取數據的應用程式,最好使用。 區域備援磁碟是由區域備援記憶體 (ZRS) 所支援,可跨多個區域復寫您的數據,即使單一區域已關閉,仍可供使用。
針對主機攔截選取 [ 讀取/寫入 ]。
選取 建立。
建立映像之後,請使用映像來建立新的 VM。