【问题标题】:Restore managed OS disk snapshot to existing VM将托管 OS 磁盘快照还原到现有 VM
【发布时间】:2017-04-20 15:40:19
【问题描述】:

one 类似,但仅使用 powershell 并使用托管磁盘和现有 VM。

我拍摄了托管 OS 磁盘的快照并想恢复它,但不知道如何恢复。我已经尝试了很多方法,但现在认为即使 VM 已解除分配,您也无法分离 OS 磁盘。无论我对reference 进行了多少研究,我都找不到任何东西可以帮助我将快照恢复到现有磁盘。这甚至可能吗?

【问题讨论】:

    标签: powershell azure azure-powershell azure-managed-disk


    【解决方案1】:

    我找不到任何东西可以帮助我将快照恢复到现有的 磁盘。这甚至可能吗?

    据我所知,Azure 确实支持将快照还原到现有磁盘。

    但我们可以使用快照创建托管磁盘并将其附加到现有 VM。

    这是使用快照创建托管磁盘的 PowerShell 脚本:

    PS C:\Users> $resourceGroupName = 'vm'
    PS C:\Users> $snapshotResourceGroupName = 'vm'
    PS C:\Users> $snapshotName = 'manageddisk1'
    PS C:\Users> $managedDiskType = 'StandardLRS'
    PS C:\Users> $location = 'eastus'
    PS C:\Users> $managedDiskCreateOption = 'Copy'
    PS C:\Users> $diskName = 'manageddisk2'
    PS C:\Users> $snapshot = Get-AzureRmSnapshot -SnapshotName $snapshotName -ResourceGroupName $snapshotResourceGr
    oupName
    PS C:\Users> $diskConfig = New-AzureRmDiskConfig -AccountType $managedDiskType -Location $location -CreateOptio
    n $managedDiskCreateOption -SourceResourceId $snapshot.Id
    PS C:\Users> New-AzureRmDisk -DiskName $diskName -Disk $diskConfig -ResourceGroupName $resourceGroupName
    
    
    AccountType        : StandardLRS
    TimeCreated        : 4/21/2017 1:26:27 PM
    OsType             : Windows
    CreationData       : Microsoft.Azure.Management.Compute.Models.CreationData
    DiskSizeGB         : 128
    EncryptionSettings :
    OwnerId            :
    ProvisioningState  : Succeeded
    Id                 : /subscriptions/5384xxxx-xxxx-xxxx-xxxx-xxxxe29axxxx/resourceGroups/vm/providers/Microsoft.Compute/
                         disks/manageddisk2
    Name               : manageddisk2
    Type               : Microsoft.Compute/disks
    Location           : eastus
    Tags               :
    

    如果你想将它附加到现有的虚拟机,我们可以使用这个脚本:

    PS C:\Users> $datadisk2 = Get-AzureRmDisk -ResourceGroupName vm -DiskName manageddisk2
    PS C:\Users> $vmName = 'jasonvm'
    PS C:\Users> $rgname = 'vm'
    PS C:\Users> $dataDiskName = 'manageddisk2'
    PS C:\Users> $vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
    PS C:\Users> $vm = Add-AzureRmVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataD
    isk2.Id -Lun 2
    PS C:\Users> Update-AzureRmVM -VM $vm -ResourceGroupName $rgName
    
    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    

    这样,我们就可以在 Azure VM 中找到这个托管磁盘:

    【讨论】:

    • 为什么不支持?一旦它是一个“磁盘”,你就不能用它来创建一个新的虚拟机吗?
    • 但我只能将它用于数据盘,对吗?不是操作系统磁盘?
    • 你也可以用这个快照创建一个os磁盘,然后用这个磁盘创建一个新的虚拟机。
    • @ctrldot 我的意思是 azure 不支持直接从快照恢复数据到现有磁盘,正如你所说,我们可以使用快照创建 OS 磁盘然后使用此 OS 磁盘创建新的虚拟机
    • @sirdank 你是对的,当我们想把它附加到一个现有的虚拟机上时,它就像一个数据盘。如果您希望我们将此快照作为 OS 磁盘,我们可以使用此快照创建一个 OS 磁盘,然后使用此磁盘创建新的 vm
    【解决方案2】:

    New-AzureRMDiskConfig 命令有一个开关-SourceResourceId,您可以使用它来指向您创建的快照。

    例如:

    $diskConfig = New-AzureRMDiskConfig -CreateOption Copy -SourceResourceId <<id>> -Location westus -DiskSizeGB 64 -AccountType StandardLRS
    

    资源 ID 是托管磁盘快照的 ID,可在门户中该快照的属性下找到。

    之后,您将从此磁盘配置创建一个新磁盘。例如

    $disk = New-AzureRmDisk -DiskName "name" -Disk $diskConfig -ResourceGroupName rgname
    

    运行后,您将在目标资源组中看到一个新磁盘。然后,您可以根据需要使用它来创建 VM 或附加。

    更新:可以找到官方文档here。请注意 在那个例子中他们使用-CreateOption Import而不是 像我一样复制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      相关资源
      最近更新 更多