從 Azure 市場匯出Cloud Volumes ONTAP的 VHD 映像
一旦 VHD 映像發佈到 Azure 雲端,它就不再由NetApp管理。相反,已發布的圖像被放置在 Azure 市場上。當映像在 Azure 市場上暫存和發佈時,Azure 會修改 VHD 開頭的 1 MB 和結尾的 512 位元組。要驗證VHD檔案的簽名,需要從Azure市場匯出Azure修改後的VHD鏡像。
確保您的系統上安裝了 Azure CLI,或可以透過 Azure 入口網站使用 Azure Cloud Shell。有關如何安裝 Azure CLI 的詳細信息,請參閱 "Microsoft 文件:如何安裝 Azure CLI"。
-
使用 version_readme 檔案的內容將系統上的Cloud Volumes ONTAP版本對應到 Azure 市場映像版本。 Cloud Volumes 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" ]
-
確定要建立虛擬機器的區域。區域名稱用作 `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 ...
-
查看下表中對應Cloud Volumes ONTAP版本和 VM 部署類型的 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 及更高版本
NetApp控制台
ontap_cloud_gen2
9.16.1
Azure 市場
ontap_cloud_direct
9.16.1
主機
ontap_cloud
9.15.1
主機
ontap_cloud
9.15.0
控制台,單節點部署
ontap_cloud_byol
9.15.0
控制台、高可用性 (HA) 部署
ontap_cloud_byol_ha
-
對應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 映像。
-
設定市場圖像的 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 ...
-
從市場映像建立一個具有匹配映像版本的新託管磁碟:
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
-
將 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
-
將產生的映像下載到您的 Linux 系統。使用 `wget`下載VHD檔案的指令:
wget <URL of filename/Containers/vm-images/9150.01000024.05090105.vhd>
URL 遵循標準格式。為了實現自動化,您可以獲得如下所示的 URL 字串。或者,您可以使用 Azure CLI `az`命令來取得 URL。範例 URL:https://examplesaname.bluexpinfraprod.eastus2.data.azurecr.io/vm-images/9150.01000024.05090105.vhd[]
-
清理託管磁碟
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 檔案。
-
登入 Azure CLI 並列出市場圖像:
% az login --use-device-code
-
要登錄,請使用網頁瀏覽器開啟頁面 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" }, ...
-
從具有匹配映像版本的市場映像建立新的託管磁碟。
% 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.bluexpinfraprod.eastus2.data.azurecr.io/xxxxxxx/abcd?sv=2018-03-28&sr=b&si=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx&sigxxxxxxxxxxxxxxxxxxxxxxxx" } % export diskAccessSAS="https://md-xxxxxx.bluexpinfraprod.eastus2.data.azurecr.io/xxxxxxx/abcd?sv=2018-03-28&sr=b&si=xxxxxxxx-xxxx-xx-xx-xx&sigxxxxxxxxxxxxxxxxxxxxxxxx"
為了使流程自動化,需要從標準輸出中提取 SAS。請參閱相應文件以獲取指導。
-
從託管磁碟匯出 VHD 檔案。
-
建立具有適當存取等級的容器。在此範例中,名為 `vm-images`和 `Container`使用訪問級別。
-
從 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 }
-
-
檢查 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.bluexpinfraprod.eastus2.data.azurecr.io/xxxxx/abcd?sv=2018-03-28&sr=b&si=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "status": "success", "statusDescription": null }, ....
-
將生成的映像下載到您的 Linux 伺服器。
wget <URL of file examplesaname/Containers/vm-images/9150.01000024.05090105.vhd>
URL 遵循標準格式。為了實現自動化,您可以獲得如下所示的 URL 字串。或者,您可以使用 Azure CLI `az`命令來取得 URL。範例 URL:https://examplesaname.bluexpinfraprod.eastus2.data.azurecr.io/vm-images/9150.01000024.05090105.vhd[]
-
清理託管磁碟
az disk revoke-access --name $diskName --resource-group $diskRG az disk delete --name $diskName --resource-group $diskRG --yes