我创建了一个带有托管磁盘的VM。默认情况下,托管磁盘不再存储在blob存储中。问题是我现在需要osdisk的vhd文件,但我找不到合适的方法来检索它。
我找到的唯一方法是在azure门户中打开磁盘,然后按导出以创建vhd文件的下载链接。这种方法是不受欢迎的。
答案 0 :(得分:1)
确保您的AzureRM Powershell模块是最新的:
Install-Module AzureRM -allowclobber -force
您的Set-AzureRMVMOSDisk命令现在应该具有-ManagedDiskID。只需输入托管磁盘的资源ID即可。
实施例
$NewVM = New-AzureRMVMConfig -VMName VMName - VMSize "Standard_A1_V2"
Set-AzureRMVMOSDisk -VM $NewVM -Name "DiskName" -CreateOption Attach -Caching ReadWrite -Windows -ManagedDiskID "ManagedDiskResourceID"
New-AzureRmVM -ResourceGroupName "ResourceGroupName" -VM $NewVM -Location CanadaEast
答案 1 :(得分:0)
您可以使用PowerShell将托管磁盘的VHD复制/导出到存储帐户
#Connect to Azure and set your azure subscription
#Declare Variables
$resourceGroupName = 'xxxxx-rg'
$snapshotName = 'xxxxxx.md'
$resourceGroupNameStorageAccount = 'xxxx-rg'
$storageAccountName = 'xxxx-storage'
$storageContainerName = 'xxxxx'
$destinationVHDFileName = 'xxxxxx.vhd'
#Get the Storage Account Key of the Destination Storage Account
$storageAccountKey = Get-AzStorageAccountKey -resourceGroupName $resourceGroupNameStorageAccount -AccountName $storageAccountName
#Generate the SAS for the snapshot
$sas = Grant-AzSnapshotAccess -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName -DurationInSecond 3600 -Access Read
#Create the context of the destination storage account for the snapshot
$destinationContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey ($storageAccountKey).Value[0]
#Copy the snapshot to the destination Storage Account
Start-AzStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer $storageContainerName -DestContext $destinationContext -DestBlob $destinationVHDFileName
答案 2 :(得分:-1)
对于托管磁盘,您不使用vhd。相反,对于磁盘部分,您使用这样的模板
"osDisk": {
"osType": "Linux",
"name": "[parameters('VMName')]",
"createOption": "FromImage",
"caching": "ReadWrite",
"managedDisk": {
"id": "ManagedDiskID"
}
}
您通过托管磁盘ID而不是uri
引用磁盘