Skip to main content
Cloud Volumes ONTAP
所有雲端供應商
  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure
  • 所有雲端供應商
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

從 Azure 市場匯出適用於 Cloud Volumes ONTAP 的 VHD 映像

貢獻者 netapp-manini netapp-driley

VHD 映像發佈到 Azure 雲端後,將不再由 NetApp 管理。而是將發佈的映像放在 Azure 市場上。當映像在 Azure 市場上暫存並發佈時,Azure 會修改 VHD 開頭的 1 MB 空間和結尾的 512 位元組空間。若要驗證 VHD 檔案的簽名,您需要從 Azure 市場匯出 Azure 修改後的 VHD 映像。

開始之前

確保系統上已安裝 Azure CLI,或可透過 Azure 入口網站使用 Azure Cloud Shell。有關如何安裝 Azure CLI 的詳細信息,請參閱 "Azure 文件:如何安裝 Azure CLI"

步驟
  1. 使用 version_readme 檔案的內容,將系統上的 Cloud Volumes ONTAP 版本對應到 Azure 市場映像版本。 CloudVolumes ONTAP 版本表示為 buildname Azure 市場鏡像版本表示為 `version`在版本映射中。

    在下列範例中,Cloud Volumes ONTAP 版本 9.15.0P1`對應到 Azure 市場映像版本 `9150.01000024.05090105 。此 Azure 市場映像版本稍後會用於設定映像 URN 。

    [
     "buildname": "9.15.0P1",
        "publisher": "netapp",
         "version": "9150.01000024.05090105"
    
    ]
  2. 確定要在其中建立虛擬機器的區域。區域名稱將用作 `locName`設定市場鏡像的 URN 變數。若要列出可用區域,請執行以下命令:

    az account list-locations -o table

    在此表中,區域名稱出現在 `Name`場地。

    $ az account list-locations -o table
    DisplayName               Name                 RegionalDisplayName
    ------------------------  -------------------  -------------------------------------
    East US                   eastus               (US) East US
    East US 2                 eastus2              (US) East US 2
    South Central US          southcentralus       (US) South Central US
    ...
  3. 請查看下表中對應 Cloud Volumes ONTAP 版本和虛擬機器部署類型的 SKU 名稱。 SKU名稱用作 `skuName`設定市場影像的 URN 時的變數。

    例如, Cloud Volumes ONTAP 9.15.0 的所有單一節點部署都應使用 ontap_cloud_byol SKU 名稱。

    * Cloud Volumes ONTAP 版本 *

    透過虛擬機器部署

    * SKU 名稱 *

    9.17.1 及更高版本

    Azure 市場

    ontap_cloud_direct_gen2

    9.17.1 及更高版本

    藍圖

    ontap_cloud_gen2

    9.16.1

    Azure 市場

    ONTAP 雲端 _DIRECT

    9.16.1

    藍圖

    ONTAP 雲端

    9.15.1..

    藍圖

    ONTAP 雲端

    9.15.0

    BlueXP,單節點部署

    ONTAP 雲端

    9.15.0

    BlueXP,高可用性(HA)部署

    ONTAP 雲端 _ byol_ha

  4. 對應 ONTAP 版本和 Azure 市場映像後,使用 Azure Cloud Shell 或 Azure CLI 從 Azure 市場匯出 VHD 檔案。

使用 Linux 上的 Azure Cloud Shell 匯出 VHD 文件

從 Azure Cloud Shell 中,將市場映像匯出為 VHD 檔案(例如,9150.01000024.05090105.vhd),然後下載到本機 Linux 系統。執行以下步驟從 Azure 市場取得 VHD 映像。

步驟
  1. 設定市場鏡像的 URN 和其他參數。 URN格式為 <publisher>:<offer>:<sku>:<version> 。或者,您可以列出 NetApp 市場圖像來確認正確的映像版本。

    PS /home/user1> $urn="netapp:netapp-ontap-cloud:ontap_cloud_byol:9150.01000024.05090105"
    PS /home/user1> $locName="eastus2"
    PS /home/user1> $pubName="netapp"
    PS /home/user1> $offerName="netapp-ontap-cloud"
    PS /home/user1> $skuName="ontap_cloud_byol"
    PS /home/user1> Get-AzVMImage -Location $locName -PublisherName $pubName -Offer $offerName -Sku $skuName |select version
    ...
    141.20231128
    9.141.20240131
    9.150.20240213
    9150.01000024.05090105
    ...
  2. 從具有匹配映像版本市場映像建立新的託管磁碟:

    PS /home/user1> $diskName = “9150.01000024.05090105-managed-disk"
    PS /home/user1> $diskRG = “fnf1”
    PS /home/user1> az disk create -g $diskRG -n $diskName --image-reference $urn
    PS /home/user1> $sas = az disk grant-access --duration-in-seconds 3600 --access-level Read --name $diskName --resource-group $diskRG
    PS /home/user1> $diskAccessSAS = ($sas | ConvertFrom-Json)[0].accessSas
  3. 將 VHD 檔案從託管磁碟匯出到 Azure 儲存體。建立具有適當存取等級的容器。在本例中,我們使用了名為 `vm-images`和 `Container`訪問級別。從 Azure 入口網站取得儲存帳戶存取金鑰:儲存帳戶 > examplesaname > 存取金鑰 > key1 > key > 顯示 > <copy>

    PS /home/user1> $storageAccountName = “examplesaname”
    PS /home/user1> $containerName = “vm-images”
    PS /home/user1> $storageAccountKey = "<replace with the above access key>"
    PS /home/user1> $destBlobName = “9150.01000024.05090105.vhd”
    PS /home/user1> $destContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
    PS /home/user1> Start-AzureStorageBlobCopy -AbsoluteUri $diskAccessSAS -DestContainer $containerName -DestContext $destContext -DestBlob $destBlobName
    PS /home/user1> Get-AzureStorageBlobCopyState –Container $containerName –Context $destContext -Blob $destBlobName
  4. 將產生的映像下載到你的 Linux 系統。使用 `wget`下載VHD檔案的指令:

    wget <URL of filename/Containers/vm-images/9150.01000024.05090105.vhd>

    URL 遵循標準格式。為了實現自動化,您可以如下所示派生 URL 字串。或者,您可以使用 Azure CLI `az`命令取得 URL。範例 URL: https://examplesaname.blob.core.windows.net/vm-images/9150.01000024.05090105.vhd

  5. 清理託管磁碟

    PS /home/user1> Revoke-AzDiskAccess -ResourceGroupName $diskRG -DiskName $diskName
    PS /home/user1> Remove-AzDisk -ResourceGroupName $diskRG -DiskName $diskName

使用 Linux 上的 Azure CLI 匯出 VHD 文件

使用本機 Linux 系統的 Azure CLI 將市場映像匯出到 VHD 檔案。

步驟
  1. 登入 Azure CLI 並列出市場圖像:

    % az login --use-device-code
  2. 要登錄,請使用網頁瀏覽器開啟頁面 https://microsoft.com/devicelogin並輸入驗證碼。

    % az vm image list --all --publisher netapp --offer netapp-ontap-cloud --sku ontap_cloud_byol
    ...
    {
    "architecture": "x64",
    "offer": "netapp-ontap-cloud",
    "publisher": "netapp",
    "sku": "ontap_cloud_byol",
    "urn": "netapp:netapp-ontap-cloud:ontap_cloud_byol:9150.01000024.05090105",
    "version": "9150.01000024.05090105"
    },
    ...
  3. 從具有匹配映像版本的市場映像建立新的託管磁碟。

    % export urn="netapp:netapp-ontap-cloud:ontap_cloud_byol:9150.01000024.05090105"
    % export diskName="9150.01000024.05090105-managed-disk"
    % export diskRG="new_rg_your_rg"
    % az disk create -g $diskRG -n $diskName --image-reference $urn
    % az disk grant-access --duration-in-seconds 3600 --access-level Read --name $diskName --resource-group $diskRG
    {
      "accessSas": "https://md-xxxxxx.blob.core.windows.net/xxxxxxx/abcd?sv=2018-03-28&sr=b&si=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx&sigxxxxxxxxxxxxxxxxxxxxxxxx"
    }
    % export diskAccessSAS="https://md-xxxxxx.blob.core.windows.net/xxxxxxx/abcd?sv=2018-03-28&sr=b&si=xxxxxxxx-xxxx-xx-xx-xx&sigxxxxxxxxxxxxxxxxxxxxxxxx"

    為了實現流程自動化,需要從標準輸出中提取 SAS。請參閱相關文件以取得指導。

  4. 從託管磁碟匯出 VHD 檔案。

    1. 建立一個具有適當存取等級的容器。在本例中,容器名為 `vm-images`和 `Container`使用訪問級別。

    2. 從 Azure 入口網站取得儲存帳戶存取金鑰:儲存帳戶 > examplesaname > 存取金鑰 > key1 > key > 顯示 > <copy>

      您也可以使用 `az`此步驟的命令。

    % export storageAccountName="examplesaname"
    % export containerName="vm-images"
    % export storageAccountKey="xxxxxxxxxx"
    % export destBlobName="9150.01000024.05090105.vhd"
    
    % az storage blob copy start --source-uri $diskAccessSAS --destination-container $containerName --account-name $storageAccountName --account-key $storageAccountKey --destination-blob $destBlobName
    
    {
      "client_request_id": "xxxx-xxxx-xxxx-xxxx-xxxx",
      "copy_id": "xxxx-xxxx-xxxx-xxxx-xxxx",
      "copy_status": "pending",
      "date": "2022-11-02T22:02:38+00:00",
      "etag": "\"0xXXXXXXXXXXXXXXXXX\"",
      "last_modified": "2022-11-02T22:02:39+00:00",
      "request_id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
      "version": "2020-06-12",
      "version_id": null
    }
  5. 檢查 blob 副本的狀態。

    % az storage blob show --name $destBlobName --container-name $containerName --account-name $storageAccountName
    
    ....
        "copy": {
          "completionTime": null,
          "destinationSnapshot": null,
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
          "incrementalCopy": null,
          "progress": "10737418752/10737418752",
          "source": "https://md-xxxxxx.blob.core.windows.net/xxxxx/abcd?sv=2018-03-28&sr=b&si=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "status": "success",
          "statusDescription": null
        },
    ....
  6. 將生成的映像下載到您的 Linux 伺服器。

    wget <URL of file examplesaname/Containers/vm-images/9150.01000024.05090105.vhd>

    URL 遵循標準格式。為了實現自動化,您可以如下所示派生 URL 字串。或者,您可以使用 Azure CLI `az`命令取得 URL。範例 URL: https://examplesaname.blob.core.windows.net/vm-images/9150.01000024.05090105.vhd

  7. 清理託管磁碟

    az disk revoke-access --name $diskName --resource-group $diskRG
    az disk delete --name $diskName --resource-group $diskRG --yes