將 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 中。

  1. 您將使用透過在 Hyper-V 中找到的 PowerShell 模組。 啟用 Hyper-V 會安裝支援的 PowerShell 模組。 您可以透過已提升權限的提示字元開啟 PowerShell,並執行下列 Cmdlet:

    Get-Command -Module hyper-v
    

    如果您沒有 Hyper-V 命令,請參閱使用 Hyper-V 與 Windows PowerShell

  2. 取得機器上 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                  :
    
  3. 使用 VHD 物件,檢查是否符合 Azure Stack Hub 的需求。

    此外 Azure Stack Hub 僅支援第一 (1) 代 VM 的映像。

  4. 如果您的 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 的入口網站

  1. 登入 Azure Stack Hub 使用者入口網站。

  2. 選取 [儲存體帳戶] 並選取現有儲存體帳戶,或建立新的儲存體帳戶。

  3. 在儲存體帳戶刀鋒視窗中,選取儲存體帳戶的 [Blob]。 選取 [容器] 以建立新的容器。

  4. 輸入容器的名稱,然後選取 [Blob (僅限 Blob 的匿名讀取存取)]。

  5. 如果您要使用 AzCopy 來上傳您的映像,而非入口網站,請建立 SAS 權杖。 在儲存體帳戶中選取 [共用存取簽章],然後選取 [產生 SAS 和連接字串]。 複製並記錄 [Blob 服務 SAS URL]。 使用 AzCopy 來上傳 VHD 時,您將會使用此 URL。

  6. 選取容器,然後選取 [上傳]。 上傳您的 VHD。

AzCopy VHD

使用 Azure 儲存體總管或 AzCopy 來降低 VHD 在上傳程序中損毀的機率,而您的上傳將會加快。 下列步驟會在 Windows 10 電腦上使用 AzCopy。 AzCopy 是命令列公用程式,可讓您在儲存體帳戶之間複製 Blob 或檔案。

  1. 如果您尚未安裝 AzCopy,請安裝 AzCopy。 您可以在開始使用 AzCopy 一文中找到下載和開始使用 AzCopy 的尋找指示。 記下您儲存二進位檔的位置。 您可 將 AzCopy 新增至您的路徑,以便從 PowerShell 命令列使用此項目。

  2. 開啟 PowerShell 以從 shell 使用 AzCopy。

  3. 使用 AzCopy 將您的 VHD 上傳至儲存體帳戶中的容器。

    set 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

自訂映像有兩種形式:特製化一般化

  1. 登入 Azure Stack Hub 使用者入口網站。

    如果您是建立平台磁碟的雲端操作員,請依照新增平台映像中的指示,透過系統管理員入口網站或系統管理員端點來新增 VHD。

  2. 在使用者入口網站中,選取 [所有服務]>[磁碟]>[新增]。

  3. 在 [建立受控磁碟] 中:

    1. 輸入您映射的 [名稱]。

    2. 選取您的 [訂用帳戶]。

    3. 建立或新增映像至 [資源群組]。

    4. 選取 ASDK 的 [位置] (也稱為區域)。

    5. 選取 [帳戶類型] 。

      • [進階磁碟 (SSD)] 採用固態硬碟,可提供一致、低延遲的效能。 進階磁碟可讓您在價格和效能之間取得最佳的平衡,並且適用於 I/O 密集型應用程式和生產工作負載。
      • [標準磁碟 (HDD)]採用磁碟機,適用於不常存取資料的應用程式。 區域備援磁碟採用區域備援儲存體 (ZRS),此儲存體可跨多個區域複寫資料,且即使在單一區域停止運作時也可供使用。
    6. 選取 [儲存體 blob],[來源類型]。 您會透過儲存體帳戶中的 blob 建立磁碟。

    7. 針對 VHD 來源,請選取:

      1. 儲存體帳戶所在的來源訂用帳戶。
      2. 選取 [瀏覽],然後瀏覽至您的儲存體帳戶、容器和 VHD。 選擇 [選取] 。
      3. 選取符合 VHD 的 [OS 類型]。
    8. 選取磁碟 [大小 (GiB)],此大小等於或大於您的 VHD。

    9. 選取 [建立]。

  4. 建立磁碟後,您就可以使用該磁碟來建立新的 VM。

後續步驟

將 VM 移至 Azure Stack Hub 的概觀