如何将 Azure 磁盘恢复到以前的快照?

How to revert an azure disk back to its former snapshot?

我有一个 Azure 虚拟机,通过门户选择了它的磁盘,并创建了它的快照。我现在如何恢复到磁盘的快照(通过门户或 CLI)?

我不想从快照创建新磁盘或 VM,只是恢复原状。

How do I now revert back to that snapshot for the Disk (via portal or CLI)?

您是说要使用此快照来回滚您的系统吗?

遗憾的是,目前 Azure 支持此功能,我们无法使用快照恢复。

在 Azure 中,我们不能直接还原 Azure VM,我们应该从该快照创建磁盘或 VM。

默认情况下,快照用于 Azure 备份。在 Azure 恢复服务中,我们可以从快照中恢复 VM。还原此 VM 是使用此 OS 磁盘创建新 VM,而不是回滚。

我使用 Azure PowerShell 成功地做到了,使用 Set-AzVMOSDisk. There is a module 不幸的是它只能恢复它创建的快照,但它的代码演示了它是如何工作的。

总结:

Get-AzSnapshot -ResourceGroupName "..." # to find the Disk ID
$vm = Get-AzVM -Name "..."
$old_disk = Get-AzDisk -Name $vm.StorageProfile.OsDisk.name
$diskconf = New-AzDiskConfig -AccountType $old_disk.sku.name -Location $old_disk.Location -SourceResourceId "Id of the disk" -CreateOption Copy
$newdisk = NewAzDisk -Disk $diskconf -ResourceGroupName "..." -DiskName "OS_disk_$((New-Guid).ToString())"
Set-AzVMOSDisk -VM $vm -ManagedDiskId $newdisk.Id -Name $newdisk.Name
Update-AzVM -ResourceGroupName "..." -VM $vm

这在 Azure 门户

中使用云 shell 适用于 eastus zone 1
$SnapshotName = "my_snapshot"
$SnapshotResourceGroup = "my_resource_group" 
$DiskNameOS = "my_new_snapshotdisk" 
$snapshotinfo = Get-AzSnapshot -ResourceGroupName $SnapshotResourceGroup -SnapshotName $snapshotName
New-AzDisk -DiskName $DiskNameOS (New-AzDiskConfig  -zone 1 -Location eastus -CreateOption Copy -SourceResourceId $snapshotinfo.Id) -ResourceGroupName $SnapshotResourceGroup

之后我转到门户中的 VM,选择“磁盘”并选择“交换 os 磁盘”。

我是用下面的 PS 脚本完成的。它停止 VM,使用快照创建一个新磁盘,然后将 VM 交换到这个新磁盘。已在停止的 VM 上创建快照。

$resourceGroupName = '...' 
$location = 'eastus2' 
$vmName = '...'
$snapshotName = '...' 

$snapshotinfo = Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName 

$vm = Get-AzVM `
-ResourceGroupName $resourceGroupName `
-Name $vmName 

Stop-AzVM -ResourceGroupName $resourceGroupName -Name $vm.Name -Force

# Create the new disk that you want to swap in
$newDiskName = $($vmName + "_disk_" + (Get-Date).ToString("yyyyMMddhhmm"))
$newDisk = New-AzDisk -DiskName $newDiskName (New-AzDiskConfig  -zone 1 -Location $location -CreateOption Copy -SourceResourceId $snapshotinfo.Id) -ResourceGroupName $resourceGroupName

Set-AzVMOSDisk -VM $vm -ManagedDiskId $newDisk.Id -Name $newDisk.Name 
Update-AzVM -ResourceGroupName $resourceGroupName -VM $vm 

Start-AzVM -Name $vm.Name -ResourceGroupName $resourceGroupName