Een back-up maken van azure-VM's en deze herstellen met behulp van Azure PowerShell
In dit artikel wordt beschreven hoe u een back-up maakt van een Virtuele Azure-machine in een Azure Backup Recovery Services-kluis met behulp van PowerShell-cmdlets.
Azure Backup biedt onafhankelijke en geïsoleerde back-ups om bescherming te bieden tegen onbedoelde vernietiging van de gegevens op uw VM's. Back-ups worden in een Recovery Services-kluis opgeslagen waarin het beheer van herstelpunten is ingebouwd. Het is eenvoudig om te configureren en de schaal aan te passen, back-ups worden geoptimaliseerd en u kunt, indien nodig, eenvoudig herstelbewerkingen uitvoeren.
Voordat u een back-up kunt maken van een virtuele machine (of als u deze wilt beveiligen) moet u de vereisten voltooien voor het voorbereiden van uw omgeving voor het beveiligen van uw VM's.
Voordat u begint
- Meer informatie over Recovery Services-kluizen.
- Bekijk de architectuur voor Azure VM-back-up, meer informatie over het back-upproces en bekijk de ondersteuning, beperkingen en vereisten.
- Controleer de PowerShell-objecthiërarchie voor Recovery Services.
Recovery Services-objecthiërarchie
De objecthiërarchie wordt samengevat in het volgende diagram.
Raadpleeg de naslaginformatie voor de Az.RecoveryServices-cmdlet in de Azure-bibliotheek.
Instellen en registreren
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
U gaat als volgt aan de slag:
Zoek de Beschikbare Azure Backup PowerShell-cmdlets door de volgende opdracht te typen:
Get-Command *azrecoveryservices*
De aliassen en cmdlets voor Azure Backup, Azure Site Recovery en de Recovery Services-kluis worden weergegeven. De volgende afbeelding is een voorbeeld van wat u ziet. Het is niet de volledige lijst met cmdlets.
Meld u aan bij uw Azure-account met behulp van Connect-AzAccount. Met deze cmdlet wordt u gevraagd om uw accountreferenties op te geven op een webpagina:
- U kunt uw accountreferenties ook opnemen als een parameter in de cmdlet Connect-AzAccount met behulp van de parameter -Credential.
- Als u een CSP-partner bent die namens een tenant werkt, geeft u de klant op als tenant, met behulp van de tenant-id of primaire domeinnaam van de tenant. Bijvoorbeeld: Connect-AzAccount -Tenant "fabrikam.com"
Koppel het abonnement dat u wilt gebruiken aan het account, omdat een account verschillende abonnementen kan hebben:
Select-AzSubscription -SubscriptionName $SubscriptionName
Als u Azure Backup voor het eerst gebruikt, moet u de cmdlet Register-AzResourceProvider gebruiken om de Azure Recovery Service-provider bij uw abonnement te registreren.
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
U kunt controleren of de providers zijn geregistreerd met behulp van de volgende opdrachten:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
In de uitvoer van de opdracht moet de RegistrationState worden gewijzigd in Geregistreerd. Als dat niet het gaat, voert u de cmdlet Register-AzResourceProvider opnieuw uit.
Een Recovery Services-kluis maken
De volgende stappen leiden u door het maken van een Recovery Services-kluis. Een Recovery Services-kluis verschilt van een Backup-kluis.
De Recovery Services-kluis is een Resource Manager-resource, dus u moet deze in een resourcegroep plaatsen. U kunt een bestaande resourcegroep gebruiken of een resourcegroep maken met de cmdlet New-AzResourceGroup. Geef bij het maken van een resourcegroep de naam en locatie voor de resourcegroep op.
New-AzResourceGroup -Name "test-rg" -Location "West US"
Gebruik de cmdlet New-AzRecoveryServicesVault om de Recovery Services-kluis te maken. Zorg ervoor dat u dezelfde locatie voor de kluis opgeeft als die voor de resourcegroep is gebruikt.
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
Geef het type opslagredundantie op dat moet worden gebruikt. U kunt lokaal redundante opslag (LRS), geografisch redundante opslag (GRS) of zone-redundante opslag (ZRS) gebruiken. In het volgende voorbeeld ziet u de optie -BackupStorageRedundancy die is
testvault
ingesteld op GeoRedundant.$vault1 = Get-AzRecoveryServicesVault -Name "testvault" Set-AzRecoveryServicesBackupProperty -Vault $vault1 -BackupStorageRedundancy GeoRedundant
Tip
Voor veel Azure Backup-cmdlets is het object Recovery Services-kluis als invoer vereist. Daarom is het handiger het object Backup Recovery Services-kluis in een variabele op te slaan.
De kluizen in een abonnement weergeven
Als u alle kluizen in het abonnement wilt weergeven, gebruikt u Get-AzRecoveryServicesVault:
Get-AzRecoveryServicesVault
De uitvoer is vergelijkbaar met het volgende voorbeeld. U ziet dat de bijbehorende ResourceGroupName en Locatie zijn opgegeven.
Name : Contoso-vault
ID : /subscriptions/1234
Type : Microsoft.RecoveryServices/vaults
Location : WestUS
ResourceGroupName : Contoso-docs-rg
SubscriptionId : 1234-567f-8910-abc
Properties : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties
Back-ups maken van Azure-VM's
Gebruik een Recovery Services-kluis om uw virtuele machines te beveiligen. Voordat u de beveiliging toepast, stelt u de kluiscontext (het type gegevens dat in de kluis is beveiligd) in en controleert u het beveiligingsbeleid. Het beveiligingsbeleid is het schema wanneer de back-uptaken worden uitgevoerd en hoe lang elke back-upmomentopname wordt bewaard.
Kluiscontext instellen
Voordat u beveiliging inschakelt op een virtuele machine, gebruikt u Set-AzRecoveryServicesVaultContext om de kluiscontext in te stellen. Zodra deze is ingesteld, is deze op alle navolgende cmdlets van toepassing. In het volgende voorbeeld wordt de kluiscontext voor de kluis ingesteld. testvault
Get-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "Contoso-docs-rg" | Set-AzRecoveryServicesVaultContext
De kluis-id ophalen
We zijn van plan om de kluiscontextinstelling af te schalen in overeenstemming met de Azure PowerShell-richtlijnen. In plaats daarvan kunt u de kluis-id opslaan of ophalen en deze doorgeven aan relevante opdrachten. Als u de kluiscontext niet hebt ingesteld of de opdracht wilt opgeven die moet worden uitgevoerd voor een bepaalde kluis, geeft u de kluis-id als '-vaultID' als volgt door aan alle relevante opdrachten:
$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$targetVault.ID
Or
$targetVaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID
Opslagreplicatie-instellingen wijzigen
De opdracht Set-AzRecoveryServicesBackupProperty gebruiken om de opslagreplicatieconfiguratie van de kluis in te stellen op LRS/GRS
Set-AzRecoveryServicesBackupProperty -Vault $targetVault -BackupStorageRedundancy GeoRedundant/LocallyRedundant
Notitie
Opslagredundantie kan alleen worden gewijzigd als er geen back-upitems zijn die zijn beveiligd met de kluis.
Een beveiligingsbeleid maken
Als u een Recovery Services-kluis maakt, gaat deze gepaard met standaardbeleid voor beveiliging en retentie. Volgens het standaardbeveiligingsbeleid wordt elke dag op een bepaald tijdstip een back-uptaak getriggerd. Volgens het standaardbewaarbeleid wordt het dagelijkse herstelpunt gedurende dertig dagen bewaard. U kunt het standaardbeleid gebruiken om uw virtuele machine snel te beveiligen en het beleid later te bewerken met verschillende details.
Gebruik Get-AzRecoveryServicesBackupProtectionPolicy om het beveiligingsbeleid weer te geven dat beschikbaar is in de kluis. U kunt deze cmdlet gebruiken om een specifiek beleid op te halen of om het beleid weer te geven dat is gekoppeld aan een workloadtype. In het volgende voorbeeld wordt beleid opgehaald voor het workloadtype AzureVM.
Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
De uitvoer lijkt op die in het volgende voorbeeld:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
DefaultPolicy AzureVM AzureVM 4/14/2016 5:00:00 PM
Notitie
De tijdzone van het veld BackupTime in PowerShell is UTC. Wanneer de back-uptijd echter wordt weergegeven in Azure Portal, wordt de tijd aangepast aan uw lokale tijdzone.
Een back-upbeveiligingsbeleid is gekoppeld aan ten minste één bewaarbeleid. Een bewaarbeleid bepaalt hoe lang een herstelpunt wordt bewaard voordat het wordt verwijderd.
- Gebruik Get-AzRecoveryServicesBackupRetentionPolicyObject om het standaardretentiebeleid weer te geven.
- Op dezelfde manier kunt u Get-AzRecoveryServicesBackupSchedulePolicyObject gebruiken om het standaardschemabeleid te verkrijgen.
- Met de cmdlet New-AzRecoveryServicesBackupProtectionPolicy wordt een PowerShell-object gemaakt dat back-upbeleidsgegevens bevat.
- De plannings- en bewaarbeleidsobjecten worden gebruikt als invoer voor de cmdlet New-AzRecoveryServicesBackupProtectionPolicy.
Standaard wordt een begintijd gedefinieerd in het planningsbeleidsobject. Gebruik het volgende voorbeeld om de begintijd te wijzigen in de gewenste begintijd. De gewenste begintijd moet ook in UTC staan. In het volgende voorbeeld wordt ervan uitgegaan dat de gewenste begintijd 01:00 UUR UTC is voor dagelijkse back-ups.
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z"
$UtcTime = $UtcTime.ToUniversalTime()
$schpol.ScheduleRunTimes[0] = $UtcTime
Belangrijk
U moet de begintijd in slechts 30 minuten veelvouden opgeven. In het bovenstaande voorbeeld kan dit alleen '01:00:00' of '02:30:00' zijn. De begintijd kan niet '01:15:00' zijn
In het volgende voorbeeld worden het planningsbeleid en het bewaarbeleid opgeslagen in variabelen. In het voorbeeld worden deze variabelen gebruikt om de parameters te definiëren bij het maken van een beveiligingsbeleid, NewPolicy.
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -WorkloadType "AzureVM" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $targetVault.ID
De uitvoer lijkt op die in het volgende voorbeeld:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
NewPolicy AzureVM AzureVM 4/24/2016 1:30:00 AM
Beveiliging inschakelen
Nadat u het beveiligingsbeleid hebt gedefinieerd, moet u het beleid voor een item nog steeds inschakelen. Gebruik Enable-AzRecoveryServicesBackupProtection om beveiliging in te schakelen. Voor het inschakelen van beveiliging zijn twee objecten vereist: het item en het beleid. Zodra het beleid is gekoppeld aan de kluis, wordt de back-upwerkstroom geactiveerd op het moment dat is gedefinieerd in het beleidsschema.
Belangrijk
Zorg er tijdens het gebruik van PowerShell voor het inschakelen van back-ups voor meerdere VM's tegelijk voor dat er niet meer dan 100 VM's aan één beleid zijn gekoppeld. Dit is een aanbevolen best practice. Op dit moment blokkeert de PowerShell-client niet expliciet als er meer dan 100 VM's zijn, maar deze controle wordt in de toekomst toegevoegd.
In de volgende voorbeelden wordt beveiliging ingeschakeld voor het item, V2VM, met behulp van het beleid NewPolicy. De voorbeelden verschillen op basis van of de virtuele machine is versleuteld en welk type versleuteling.
De beveiliging op niet-versleutelde Resource Manager-VM's inschakelen:
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Als u de beveiliging wilt inschakelen voor versleutelde VM's (versleuteld met BEK en KEK), moet u de Azure Backup-service machtigen om sleutels en geheimen uit de sleutelkluis te lezen.
Set-AzKeyVaultAccessPolicy -VaultName "KeyVaultName" -ResourceGroupName "RGNameOfKeyVault" -PermissionsToKeys backup,get,list -PermissionsToSecrets get,list -ServicePrincipalName 262044b1-e2ce-469f-a196-69ab7ada62d3
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Als u de beveiliging wilt inschakelen op versleutelde VM's (alleen versleuteld met BEK), moet u de Azure Backup-service toestemming geven om geheimen uit de sleutelkluis te lezen.
Set-AzKeyVaultAccessPolicy -VaultName "KeyVaultName" -ResourceGroupName "RGNameOfKeyVault" -PermissionsToSecrets backup,get,list -ServicePrincipalName 262044b1-e2ce-469f-a196-69ab7ada62d3
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Notitie
Als u de Azure Government-cloud gebruikt, gebruikt u de waarde ff281ffe-705c-4f53-9f37-a40e6f2c68f3
voor de parameter ServicePrincipalName in de cmdlet Set-AzKeyVaultAccessPolicy .
Als u selectief een back-up wilt maken van een paar schijven en andere wilt uitsluiten zoals vermeld in deze scenario's, kunt u alleen de beveiliging en back-up van de relevante schijven configureren, zoals hier wordt beschreven.
Een back-uptaak bewaken
U kunt langlopende bewerkingen, zoals back-uptaken, bewaken zonder Azure Portal te gebruiken. Gebruik de cmdlet Get-AzRecoveryservicesBackupJob om de status van een actieve taak op te halen. Met deze cmdlet worden de back-uptaken voor een specifieke kluis opgehaald en die kluis wordt opgegeven in de kluiscontext. In het volgende voorbeeld wordt de status van een actieve taak als matrix opgeslagen en wordt de status opgeslagen in de $joblist variabele.
$joblist = Get-AzRecoveryservicesBackupJob –Status "InProgress" -VaultId $targetVault.ID
$joblist[0]
De uitvoer lijkt op die in het volgende voorbeeld:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Gebruik de cmdlet Wait-AzRecoveryServicesBackupJob in plaats van deze taken te peilen voor voltooiing. Dit is onnodige extra code. Met deze cmdlet wordt de uitvoering onderbroken totdat de taak is voltooid of de opgegeven time-outwaarde is bereikt.
Wait-AzRecoveryServicesBackupJob -Job $joblist[0] -Timeout 43200 -VaultId $targetVault.ID
Back-ups van Azure-VM's beheren
Een beveiligingsbeleid wijzigen
Als u het beveiligingsbeleid wilt wijzigen, gebruikt u Set-AzRecoveryServicesBackupProtectionPolicy om de SchedulePolicy- of RetentionPolicy-objecten te wijzigen.
Geplande tijd wijzigen
Wanneer u een beveiligingsbeleid maakt, wordt standaard een begintijd toegewezen. In de volgende voorbeelden ziet u hoe u de begintijd van een beveiligingsbeleid wijzigt.
$SchPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z" (This is the time that you want to start the backup)
$UtcTime = $UtcTime.ToUniversalTime()
$SchPol.ScheduleRunTimes[0] = $UtcTime
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $pol -SchedulePolicy $SchPol -VaultId $targetVault.ID
Retentie wijzigen
In het volgende voorbeeld wordt de bewaarperiode van het herstelpunt gewijzigd in 365 dagen.
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
$retPol.DailySchedule.DurationCountInDays = 365
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $pol -RetentionPolicy $RetPol -VaultId $targetVault.ID
Momentopnameretentie configureren
Notitie
Vanaf Azure PowerShell versie 1.6.0 kunt u de bewaarperiode voor momentopnamen in het beleid bijwerken met behulp van PowerShell
$bkpPol = Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
$bkpPol.SnapshotRetentionInDays=7
Set-AzRecoveryServicesBackupProtectionPolicy -policy $bkpPol -VaultId $targetVault.ID
De standaardwaarde is 2. U kunt de waarde instellen met minimaal 1 en maximaal 5. Voor wekelijks back-upbeleid is de periode ingesteld op 5 en kan deze niet worden gewijzigd.
Azure Backup-resourcegroep maken tijdens het bewaren van momentopnamen
Notitie
Vanaf Azure PowerShell versie 3.7.0 kunt u de resourcegroep maken en bewerken die is gemaakt voor het opslaan van momentopnamen.
Raadpleeg de documentatie van de Azure Backup-resourcegroep voor virtual machines voor meer informatie over regels voor het maken van resourcegroepen en andere relevante details.
$bkpPol = Get-AzureRmRecoveryServicesBackupProtectionPolicy -name "DefaultPolicyForVMs"
$bkpPol.AzureBackupRGName="Contosto_"
$bkpPol.AzureBackupRGNameSuffix="ForVMs"
Set-AzureRmRecoveryServicesBackupProtectionPolicy -policy $bkpPol
Schijven uitsluiten voor een beveiligde VM
Azure VM Backup biedt een mogelijkheid om selectief schijven uit te sluiten of op te nemen die nuttig zijn in deze scenario's. Als de virtuele machine al is beveiligd door azure VM-back-up en als er een back-up van alle schijven wordt gemaakt, kunt u de beveiliging zo wijzigen dat schijven selectief worden opgenomen of uitgesloten, zoals hier wordt vermeld.
Een back-up activeren
Gebruik Backup-AzRecoveryServicesBackupItem om een back-uptaak te activeren. Als het de eerste back-up is, is het een volledige back-up. Volgende back-ups maken een incrementele kopie. In het volgende voorbeeld wordt een vm-back-up 60 dagen bewaard.
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$item = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
$endDate = (Get-Date).AddDays(60).ToUniversalTime()
$job = Backup-AzRecoveryServicesBackupItem -Item $item -VaultId $targetVault.ID -ExpiryDateTimeUTC $endDate
De uitvoer lijkt op die in het volgende voorbeeld:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Notitie
De tijdzone van de velden StartTime en EndTime in PowerShell is UTC. Wanneer de tijd echter wordt weergegeven in Azure Portal, wordt de tijd aangepast aan uw lokale tijdzone.
Beleid voor back-upitems wijzigen
U kunt bestaand beleid wijzigen of het beleid van het item waarvan een back-up is gemaakt wijzigen van Policy1 in Policy2. Als u wilt schakelen tussen beleidsregels voor een back-upitem, haalt u het relevante beleid op en maakt u een back-up van het item en gebruikt u de opdracht Enable-AzRecoveryServices met back-upitem als parameter.
$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName> -VaultId $targetVault.ID
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType AzureVM -BackupManagementType AzureVM -Name "<BackupItemName>" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1 -VaultId $targetVault.ID
De opdracht wacht totdat de back-up is geconfigureerd en retourneert de volgende uitvoer.
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
TestVM ConfigureBackup Completed 3/18/2019 8:00:21 PM 3/18/2019 8:02:16 PM 654e8aa2-4096-402b-b5a9-e5e71a496c4e
Beveiliging stoppen
Gegevens behouden
Als u de beveiliging wilt stoppen, kunt u de PowerShell-cmdlet Disable-AzRecoveryServicesBackupProtection gebruiken. Hierdoor worden de geplande back-ups gestopt, maar er wordt tot nu toe een back-up gemaakt van de gegevens.
$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -Name "<backup item name>" -VaultId $targetVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID
Back-up hervatten
Als de beveiliging is gestopt en de back-upgegevens behouden blijven, kunt u de beveiliging nogmaals hervatten. U moet een beleid toewijzen voor de vernieuwde beveiliging. De cmdlet is hetzelfde als het wijzigingsbeleid van back-upitems.
$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName> -VaultId $targetVault.ID
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType AzureVM -BackupManagementType AzureVM -Name "<BackupItemName>" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1 -VaultId $targetVault.ID
Back-upgegevens verwijderen
Als u de opgeslagen back-upgegevens in de kluis volledig wilt verwijderen, voegt u de vlag -RemoveRecoveryPoints toe aan de beveiligingsopdracht Uitschakelen.
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID -RemoveRecoveryPoints
Een azure-VM herstellen
Er is een belangrijk verschil tussen het herstellen van een VIRTUELE machine met behulp van Azure Portal en het herstellen van een VIRTUELE machine met behulp van PowerShell. Met PowerShell is de herstelbewerking voltooid zodra de schijven en configuratiegegevens van het herstelpunt zijn gemaakt. Met de herstelbewerking wordt de virtuele machine niet gemaakt. Als u een virtuele machine van schijf wilt maken, raadpleegt u de sectie De VIRTUELE machine maken op basis van herstelde schijven. Als u de hele virtuele machine niet wilt herstellen, maar een paar bestanden van een Back-up van een Azure-VM wilt herstellen of herstellen, raadpleegt u de sectie bestandsherstel.
Tip
Met de herstelbewerking wordt de virtuele machine niet gemaakt.
In de volgende afbeelding ziet u de objecthiërarchie van beneden RecoveryServicesVault
naar de BackupRecoveryPoint
.
Als u back-upgegevens wilt herstellen, identificeert u het back-upitem en het herstelpunt dat de gegevens van een bepaald tijdstip bevat. Gebruik Restore-AzRecoveryServicesBackupItem om gegevens uit de kluis te herstellen naar uw account.
De basisstappen voor het herstellen van een Virtuele Azure-machine zijn:
- Selecteer de VM.
- Kies een herstelpunt.
- Herstel de schijven.
- Maak de VIRTUELE machine op basis van opgeslagen schijven.
U kunt nu ook PowerShell gebruiken om de back-upinhoud rechtstreeks te herstellen naar een virtuele machine (origineel/nieuw), zonder de bovenstaande stappen afzonderlijk uit te voeren. Zie Gegevens herstellen naar virtuele machine met behulp van PowerShell voor meer informatie.
Selecteer de VIRTUELE machine (bij het herstellen van bestanden)
Als u het PowerShell-object wilt ophalen dat het juiste back-upitem identificeert, begint u vanuit de container in de kluis en werkt u naar beneden in de objecthiërarchie. Als u de container wilt selecteren die de VIRTUELE machine vertegenwoordigt, gebruikt u de cmdlet Get-AzRecoveryServicesBackupContainer en sluist u deze naar de cmdlet Get-AzRecoveryServicesBackupItem .
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
Kies een herstelpunt (bij het herstellen van bestanden)
Gebruik de cmdlet Get-AzRecoveryServicesBackupRecoveryPoint om alle herstelpunten voor het back-upitem weer te geven. Kies vervolgens het herstelpunt dat u wilt herstellen. Als u niet zeker weet welk herstelpunt u wilt gebruiken, is het raadzaam om het meest recente RecoveryPointType = AppConsistent-punt in de lijst te kiezen.
In het volgende script is de variabele, $rp, een matrix met herstelpunten voor het geselecteerde back-upitem, van de afgelopen zeven dagen. De matrix wordt in omgekeerde volgorde gesorteerd met het laatste herstelpunt op index 0. Gebruik standaard PowerShell-matrixindexering om het herstelpunt te kiezen. In het voorbeeld selecteert $rp[0] het meest recente herstelpunt.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
De uitvoer lijkt op die in het volgende voorbeeld:
RecoveryPointAdditionalInfo :
SourceVMStorageType : NormalStorage
Name : 15260861925810
ItemName : VM;iaasvmcontainer;RGName1;V2VM
RecoveryPointId : /subscriptions/XX/resourceGroups/ RGName1/providers/Microsoft.RecoveryServices/vaults/testvault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainer;RGName1;V2VM/protectedItems/VM;iaasvmcontainer; RGName1;V2VM/recoveryPoints/15260861925810
RecoveryPointType : AppConsistent
RecoveryPointTime : 4/23/2016 5:02:04 PM
WorkloadType : AzureVM
ContainerName : IaasVMContainer;iaasvmcontainer; RGName1;V2VM
ContainerType : AzureVM
BackupManagementType : AzureVM
De schijven herstellen
Gebruik de cmdlet Restore-AzRecoveryServicesBackupItem om de gegevens en configuratie van een back-upitem te herstellen naar een herstelpunt. Zodra u een herstelpunt hebt geïdentificeerd, gebruikt u dit als de waarde voor de parameter -RecoveryPoint . In het bovenstaande voorbeeld is $rp[0] het herstelpunt dat moet worden gebruikt. In de volgende voorbeeldcode is $rp[0] het herstelpunt dat moet worden gebruikt voor het herstellen van de schijf.
De schijven en configuratiegegevens herstellen:
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID
$restorejob
Beheerde schijven herstellen
Notitie
Als de ondersteunde VIRTUELE machine beheerde schijven heeft en u deze wilt herstellen als beheerde schijven, hebben we de mogelijkheid geïntroduceerd vanuit de Azure PowerShell RM-module v 6.7.0. vooruit.
Geef een extra parameter TargetResourceGroupName op om de RG op te geven waarnaar beheerde schijven worden hersteld.
Belangrijk
Het wordt sterk aanbevolen om de parameter TargetResourceGroupName te gebruiken voor het herstellen van beheerde schijven, omdat dit resulteert in aanzienlijke prestatieverbeteringen. Als deze parameter niet is opgegeven, kunt u niet profiteren van de functionaliteit voor direct herstellen en is de herstelbewerking langzamer in vergelijking. Als het doel is om beheerde schijven als niet-beheerde schijven te herstellen, geeft u deze parameter niet op en maakt u de intentie duidelijk door de -RestoreAsUnmanagedDisks
parameter op te geven. De -RestoreAsUnmanagedDisks
parameter is beschikbaar vanaf Azure PowerShell 3.7.0 en hoger. In toekomstige versies is het verplicht om een van deze parameters op te geven voor de juiste herstelervaring.
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID
Het VMConfig.JSON-bestand wordt hersteld naar het opslagaccount en de beheerde schijven worden hersteld naar de opgegeven doel-RG.
De uitvoer lijkt op die in het volgende voorbeeld:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Restore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Gebruik de cmdlet Wait-AzRecoveryServicesBackupJob om te wachten totdat de hersteltaak is voltooid.
Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200
Zodra de hersteltaak is voltooid, gebruikt u de cmdlet Get-AzRecoveryServicesBackupJobDetail om de details van de herstelbewerking op te halen. De eigenschap JobDetails bevat de informatie die nodig is om de VIRTUELE machine opnieuw op te bouwen.
$restorejob = Get-AzRecoveryServicesBackupJob -Job $restorejob -VaultId $targetVault.ID
$details = Get-AzRecoveryServicesBackupJobDetail -Job $restorejob -VaultId $targetVault.ID
Beheerde identiteit gebruiken om schijven te herstellen
Met Azure Backup kunt u ook beheerde identiteit (MSI) gebruiken tijdens het herstellen om toegang te krijgen tot opslagaccounts waarnaar schijven moeten worden hersteld. Deze optie wordt momenteel alleen ondersteund voor herstel van beheerde schijven.
Als u de door het systeem toegewezen beheerde identiteit van de kluis wilt gebruiken om schijven te herstellen, geeft u een extra vlag -UseSystemAssignedIdentity door aan de opdracht Restore-AzRecoveryServicesBackupItem. Als u een door de gebruiker toegewezen beheerde identiteit wilt gebruiken, geeft u een parameter -UserAssignedIdentityId door met de Azure Resource Manager-id van de beheerde identiteit van de kluis als de waarde van de parameter. Raadpleeg dit artikel voor meer informatie over het inschakelen van beheerde identiteiten voor uw kluizen.
Selectieve schijven herstellen
Een gebruiker kan selectief enkele schijven herstellen in plaats van de volledige back-upset. Geef de vereiste schijf-LUN's op als parameter om ze alleen te herstellen in plaats van de volledige set, zoals hier wordt beschreven.
Belangrijk
Eén moet selectief een back-up maken van schijven om schijven selectief te herstellen. Meer informatie vindt u hier.
Nadat u de schijven hebt hersteld, gaat u naar de volgende sectie om de virtuele machine te maken.
Schijven herstellen naar een secundaire regio
Als herstel tussen regio's is ingeschakeld voor de kluis waarmee u uw VM's hebt beveiligd, worden de back-upgegevens gerepliceerd naar de secundaire regio. U kunt de back-upgegevens gebruiken om een herstelbewerking uit te voeren. Voer de volgende stappen uit om een herstelbewerking in de secundaire regio te activeren:
Haal de kluis-id op waarmee uw VM's worden beveiligd.
Selecteer het juiste back-upitem dat u wilt herstellen.
Selecteer het juiste herstelpunt in de secundaire regio die u wilt gebruiken om de herstelbewerking uit te voeren.
Voer deze opdracht uit om deze stap te voltooien:
$rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID $rp=$rp[0]
Voer de cmdlet Restore-AzRecoveryServicesBackupItem uit met de
-RestoreToSecondaryRegion
parameter om een herstelbewerking in de secundaire regio te activeren.Voer deze opdracht uit om deze stap te voltooien:
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -VaultLocation $targetVault.Location -RestoreToSecondaryRegion -RestoreOnlyOSDisk
De uitvoer ziet er ongeveer als volgt uit:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ---------- V2VM CrossRegionRestore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Voer de cmdlet Get-AzRecoveryServicesBackupJob uit met de
-UseSecondaryRegion
parameter om de hersteltaak te bewaken.Voer deze opdracht uit om deze stap te voltooien:
Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -To (Get-Date).ToUniversalTime() -UseSecondaryRegion -VaultId $targetVault.ID
De uitvoer ziet er ongeveer als volgt uit:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ----- V2VM CrossRegionRestore InProgress 2/8/2021 4:24:57 PM 2d071b07-8f7c-4368-bc39-98c7fb2983f7
Zoneoverschrijdende herstelbewerking
U kunt vastgemaakte VM's in een Azure-zone herstellen in alle beschikbaarheidszones van dezelfde regio.
Als u een VM wilt herstellen naar een andere zone, geeft u de TargetZoneNumber
parameter op in de cmdlet Restore-AzRecoveryServicesBackupItem .
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID -TargetZoneNumber 3
De uitvoer ziet er ongeveer als volgt uit:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
zonevmeus2 Restore InProgress 1/3/2022 10:27:20 AM b2298...
Cross-zoneal restore wordt alleen ondersteund in scenario's waarin:
- De bron-VM is vastgemaakt aan de zone en is NIET versleuteld.
- Het herstelpunt is alleen aanwezig in de kluislaag. Alleen momentopnamen of momentopnamen en kluislaag worden niet ondersteund.
- De hersteloptie is het maken van een nieuwe VIRTUELE machine of het herstellen van schijven. De optie Schijven vervangen de brongegevens; Daarom is de optie beschikbaarheidszone niet van toepassing.
- Vm/schijven maken in dezelfde regio wanneer de opslagredundantie van de kluis ZRS is. Houd er rekening mee dat het niet werkt als de opslagredundantie van de kluis GRS is, ook al is de bron-VM zone vastgemaakt.
- Vm's/schijven maken in de gekoppelde regio wanneer opslagredundantie van de kluis is ingeschakeld voor herstel tussen regio's en als de gekoppelde regio zones ondersteunt.
Schijven in Azure VM vervangen
Voer de volgende stappen uit om de schijven en configuratiegegevens te vervangen:
- Stap 1: de schijven herstellen
- Stap 2: Gegevensschijf loskoppelen met behulp van PowerShell
- Stap 3: Gegevensschijf koppelen aan Windows-VM met PowerShell
Een virtuele machine maken op basis van herstelde schijven
Nadat u de schijven hebt hersteld, gebruikt u de volgende stappen om de virtuele machine te maken en te configureren vanaf schijf.
Notitie
- AzureAz-module 3.0.0 of hoger is vereist.
- Als u versleutelde VM's van herstelde schijven wilt maken, moet uw Azure-rol gemachtigd zijn om de actie Microsoft.KeyVault/vaults/deploy/action uit te voeren. Als uw rol niet over deze machtiging beschikt, maakt u een aangepaste rol met deze actie. Zie aangepaste Azure-rollen voor meer informatie.
- Nadat u schijven hebt hersteld, kunt u nu een implementatiesjabloon ophalen die u rechtstreeks kunt gebruiken om een nieuwe virtuele machine te maken. YOu heeft geen verschillende PowerShell-cmdlets nodig om beheerde/onbeheerde VM's te maken die zijn versleuteld/niet-versleuteld.
Een virtuele machine maken met behulp van de implementatiesjabloon
De resulterende taakdetails bevatten de sjabloon-URI die kan worden opgevraagd en geïmplementeerd.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$templateBlobURI = $properties["Template Blob Uri"]
De sjabloon is niet direct toegankelijk omdat deze zich onder het opslagaccount van de klant en de opgegeven container bevindt. We hebben de volledige URL nodig (samen met een tijdelijk SAS-token) om toegang te krijgen tot deze sjabloon.
Pak eerst de sjabloonnaam uit de templateBlobURI. De indeling wordt hieronder vermeld. U kunt de splitsbewerking in PowerShell gebruiken om de uiteindelijke sjabloonnaam uit deze URL te extraheren.
https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
Vervolgens kan de volledige URL worden gegenereerd, zoals hier wordt uitgelegd.
Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name> $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
Implementeer de sjabloon om een nieuwe VIRTUELE machine te maken, zoals hier wordt uitgelegd.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup -TemplateUri $templateBlobFullURI
Een VIRTUELE machine maken met behulp van het configuratiebestand
In de volgende sectie vindt u de stappen die nodig zijn om een virtuele machine te maken met behulp van VMConfig
een bestand.
Notitie
Het wordt ten zeerste aanbevolen om de hierboven beschreven implementatiesjabloon te gebruiken om een VIRTUELE machine te maken. Deze sectie (punten 1-6) wordt binnenkort afgeschaft.
Voer een query uit op de herstelde schijfeigenschappen voor de taakdetails.
$properties = $details.properties $storageAccountName = $properties["Target Storage Account Name"] $containerName = $properties["Config Blob Container Name"] $configBlobName = $properties["Config Blob Name"]
Stel de Azure Storage-context in en herstel het JSON-configuratiebestand.
Set-AzCurrentStorageAccount -Name $storageaccountname -ResourceGroupName "testvault" $destination_path = "C:\vmconfig.json" Get-AzStorageBlobContent -Container $containerName -Blob $configBlobName -Destination $destination_path $obj = ((Get-Content -Path $destination_path -Raw -Encoding Unicode)).TrimEnd([char]0x00) | ConvertFrom-Json
Gebruik het JSON-configuratiebestand om de VM-configuratie te maken.
$vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
Koppel de besturingssysteemschijf en gegevensschijven. Deze stap bevat voorbeelden voor verschillende beheerde en versleutelde VM-configuraties. Gebruik het voorbeeld dat past bij uw VM-configuratie.
- Niet-beheerde en niet-versleutelde VM's : gebruik het volgende voorbeeld voor niet-beheerde, niet-versleutelde VM's.
Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach" $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType foreach($dd in $obj.'properties.StorageProfile'.DataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }
- Niet-beheerde en versleutelde VM's met Microsoft Entra ID (alleen BEK): voor niet-beheerde, versleutelde VM's met Microsoft Entra-id (alleen versleuteld met BEK), moet u het geheim herstellen naar de sleutelkluis voordat u schijven kunt koppelen. Zie voor meer informatie een versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. In het volgende voorbeeld ziet u hoe u besturingssysteem- en gegevensschijven koppelt voor versleutelde VM's. Wanneer u de besturingssysteemschijf instelt, moet u het relevante type besturingssysteem vermelden.
$dekUrl = "https://ContosoKeyVault.vault.azure.net:443/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $dekUrl = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.storageProfile'.osDisk.vhd.uri -DiskEncryptionKeyUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -CreateOption "Attach" -Windows/Linux $vm.StorageProfile.OsDisk.OsType = $obj.'properties.storageProfile'.osDisk.osType foreach($dd in $obj.'properties.storageProfile'.dataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }
- Niet-beheerde en versleutelde VM's met Microsoft Entra ID (BEK en KEK): voor niet-beheerde, versleutelde VM's met Microsoft Entra-id (versleuteld met BEK en KEK), herstelt u de sleutel en het geheim naar de sleutelkluis voordat u de schijven koppelt. Zie Een versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt voor meer informatie. In het volgende voorbeeld ziet u hoe u besturingssysteem- en gegevensschijven koppelt voor versleutelde VM's.
$dekUrl = "https://ContosoKeyVault.vault.azure.net:443/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $kekUrl = "https://ContosoKeyVault.vault.azure.net:443/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.storageProfile'.osDisk.vhd.uri -DiskEncryptionKeyUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -CreateOption "Attach" -Windows $vm.StorageProfile.OsDisk.OsType = $obj.'properties.storageProfile'.osDisk.osType foreach($dd in $obj.'properties.storageProfile'.dataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }
- Niet-beheerde en versleutelde VM's zonder Microsoft Entra ID (alleen BEK): voor niet-beheerde, versleutelde VM's zonder Microsoft Entra-id (alleen versleuteld met BEK), als bronsleutelkluis /geheim niet beschikbaar is, herstelt u de geheimen niet naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsgegevens in te stellen voor de herstelde besturingssysteem-blob (deze stap is niet vereist voor een gegevensblob). De $dekurl kan worden opgehaald uit de herstelde keyVault.
Het volgende script moet alleen worden uitgevoerd wanneer de bronsleutelkluis/het geheim niet beschikbaar is.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $encSetting = "{""encryptionEnabled"":true,""encryptionSettings"":[{""diskEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""secretUrl"":""$dekUrl""}}]}" $osBlobName = $obj.'properties.StorageProfile'.osDisk.name + ".vhd" $osBlob = Get-AzStorageBlob -Container $containerName -Blob $osBlobName $osBlob.ICloudBlob.Metadata["DiskEncryptionSettings"] = $encSetting $osBlob.ICloudBlob.SetMetadata()
Nadat de geheimen beschikbaar zijn en de versleutelingsgegevens ook zijn ingesteld op de blob van het besturingssysteem, koppelt u de schijven met behulp van het onderstaande script.
Als de bronsleutelkluis/geheimen al beschikbaar zijn, hoeft het bovenstaande script niet te worden uitgevoerd.
Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach" $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType foreach($dd in $obj.'properties.StorageProfile'.DataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }
- Niet-beheerde en versleutelde VM's zonder Microsoft Entra ID (BEK en KEK): voor niet-beheerde, versleutelde VM's zonder Microsoft Entra-id (versleuteld met BEK & KEK), als bronsleutelkluis /sleutel/geheim niet beschikbaar is, herstelt u de sleutel en geheimen niet naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsgegevens in te stellen voor de herstelde besturingssysteem-blob (deze stap is niet vereist voor een gegevensblob). De $dekurl en $kekurl kunnen worden opgehaald uit de herstelde sleutelkluis.
Het onderstaande script moet alleen worden uitgevoerd wanneer de bronsleutelkluis/sleutel/geheim niet beschikbaar is.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $kekUrl = "https://ContosoKeyVault.vault.azure.net/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $encSetting = "{""encryptionEnabled"":true,""encryptionSettings"":[{""diskEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""secretUrl"":""$dekUrl""},""keyEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""keyUrl"":""$kekUrl""}}]}" $osBlobName = $obj.'properties.StorageProfile'.osDisk.name + ".vhd" $osBlob = Get-AzStorageBlob -Container $containerName -Blob $osBlobName $osBlob.ICloudBlob.Metadata["DiskEncryptionSettings"] = $encSetting $osBlob.ICloudBlob.SetMetadata()
Nadat de sleutel/geheimen beschikbaar zijn en de versleutelingsgegevens zijn ingesteld op de besturingssysteemblob, koppelt u de schijven met behulp van het onderstaande script.
Als de bronsleutelKluis/sleutel/geheimen beschikbaar zijn, hoeft het bovenstaande script niet te worden uitgevoerd.
Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach" $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType foreach($dd in $obj.'properties.StorageProfile'.DataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }
Beheerde en niet-versleutelde VM's : voor beheerde niet-versleutelde VM's koppelt u de herstelde beheerde schijven. Zie Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell voor uitgebreide informatie.
Beheerde en versleutelde VM's met Microsoft Entra ID (alleen BEK): voor beheerde versleutelde VM's met Microsoft Entra-id (alleen versleuteld met BEK), koppelt u de herstelde beheerde schijven. Zie Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell voor uitgebreide informatie.
Beheerde en versleutelde VM's met Microsoft Entra ID (BEK en KEK): voor beheerde versleutelde VM's met Microsoft Entra-id (versleuteld met BEK en KEK), koppelt u de herstelde beheerde schijven. Zie Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell voor uitgebreide informatie.
Beheerde en versleutelde VM's zonder Microsoft Entra-id (alleen BEK): voor beheerde, versleutelde VM's zonder Microsoft Entra-id (alleen versleuteld met BEK), als bronsleutelkluis /geheim niet beschikbaar is, herstelt u de geheimen naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsgegevens in te stellen op de herstelde besturingssysteemschijf (deze stap is niet vereist voor een gegevensschijf). De $dekurl kan worden opgehaald uit de herstelde keyVault.
Het onderstaande script moet alleen worden uitgevoerd wanneer de bronsleutelkluis/het geheim niet beschikbaar is.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $diskupdateconfig = New-AzDiskUpdateConfig -EncryptionSettingsEnabled $true $encryptionSettingsElement = New-Object Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement $encryptionSettingsElement.DiskEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndSecretReference $encryptionSettingsElement.DiskEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault $encryptionSettingsElement.DiskEncryptionKey.SourceVault.Id = $keyVaultId $encryptionSettingsElement.DiskEncryptionKey.SecretUrl = $dekUrl $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings = New-Object System.Collections.Generic.List[Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement] $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings.Add($encryptionSettingsElement) $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettingsVersion = "1.1" Update-AzDisk -ResourceGroupName "testvault" -DiskName $obj.'properties.StorageProfile'.osDisk.name -DiskUpdate $diskupdateconfig
Nadat de geheimen beschikbaar zijn en de versleutelingsgegevens zijn ingesteld op de besturingssysteemschijf, raadpleegt u Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell om de herstelde beheerde schijven te koppelen.
- Beheerde en versleutelde VM's zonder Microsoft Entra-id (BEK en KEK): voor beheerde, versleutelde VM's zonder Microsoft Entra-id (versleuteld met BEK & KEK), als bronsleutelkluis /sleutel/geheim niet beschikbaar is, herstelt u de sleutel en geheimen niet naar de sleutelkluis met behulp van de procedure in Een niet-versleutelde virtuele machine herstellen vanaf een Azure Backup-herstelpunt. Voer vervolgens de volgende scripts uit om versleutelingsgegevens in te stellen op de herstelde besturingssysteemschijf (deze stap is niet vereist voor gegevensschijven). De $dekurl en $kekurl kunnen worden opgehaald uit de herstelde sleutelkluis.
Het volgende script moet alleen worden uitgevoerd wanneer de bronsleutelKluis/sleutel/geheim niet beschikbaar is.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $kekUrl = "https://ContosoKeyVault.vault.azure.net/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $diskupdateconfig = New-AzDiskUpdateConfig -EncryptionSettingsEnabled $true $encryptionSettingsElement = New-Object Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement $encryptionSettingsElement.DiskEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndSecretReference $encryptionSettingsElement.DiskEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault $encryptionSettingsElement.DiskEncryptionKey.SourceVault.Id = $keyVaultId $encryptionSettingsElement.DiskEncryptionKey.SecretUrl = $dekUrl $encryptionSettingsElement.KeyEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndKeyReference $encryptionSettingsElement.KeyEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault $encryptionSettingsElement.KeyEncryptionKey.SourceVault.Id = $keyVaultId $encryptionSettingsElement.KeyEncryptionKey.KeyUrl = $kekUrl $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings = New-Object System.Collections.Generic.List[Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement] $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings.Add($encryptionSettingsElement) $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettingsVersion = "1.1" Update-AzDisk -ResourceGroupName "testvault" -DiskName $obj.'properties.StorageProfile'.osDisk.name -DiskUpdate $diskupdateconfig
Nadat de sleutel/geheimen beschikbaar zijn en de versleutelingsgegevens zijn ingesteld op de besturingssysteemschijf, raadpleegt u Een gegevensschijf koppelen aan een Windows-VM met behulp van PowerShell om de herstelde beheerde schijven te koppelen.
Stel de netwerkinstellingen in.
$nicName="p1234" $pip = New-AzPublicIpAddress -Name $nicName -ResourceGroupName "test" -Location "WestUS" -AllocationMethod Dynamic $virtualNetwork = New-AzVirtualNetwork -ResourceGroupName "test" -Location "WestUS" -Name "testvNET" -AddressPrefix 10.0.0.0/16 $virtualNetwork | Set-AzVirtualNetwork $vnet = Get-AzVirtualNetwork -Name "testvNET" -ResourceGroupName "test" $subnetindex=0 $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName "test" -Location "WestUS" -SubnetId $vnet.Subnets[$subnetindex].Id -PublicIpAddressId $pip.Id $vm=Add-AzVMNetworkInterface -VM $vm -Id $nic.Id
Maak de virtuele machine.
New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
Push ADE-extensie. Als de ADE-extensies niet worden gepusht, worden de gegevensschijven gemarkeerd als niet-versleuteld. Dit is dus verplicht voor de onderstaande stappen:
Voor VM met Microsoft Entra-id : gebruik de volgende opdracht om handmatig versleuteling in te schakelen voor de gegevensschijven
Alleen BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -VolumeType Data
BEK en KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
Voor VM zonder Microsoft Entra-id : gebruik de volgende opdracht om handmatig versleuteling in te schakelen voor de gegevensschijven.
Als tijdens de uitvoering van de opdracht wordt gevraagd om AADClientID, moet u uw Azure PowerShell bijwerken.
Alleen BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
BEK en KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
Notitie
Zorg ervoor dat u de JASON-bestanden die zijn gemaakt als onderdeel van het versleutelde VM-herstelschijfproces handmatig verwijdert.
Bestanden terugzetten vanuit een back-up van een Virtuele Azure-machine
Naast het herstellen van schijven kunt u ook afzonderlijke bestanden herstellen vanuit een Back-up van een Virtuele Azure-machine. De functionaliteit voor herstelbestanden biedt toegang tot alle bestanden in een herstelpunt. Beheer de bestanden via Bestandenverkenner zoals u zou doen voor normale bestanden.
De basisstappen voor het herstellen van een bestand vanuit een Back-up van een Virtuele Azure-machine zijn:
- Selecteer de VIRTUELE machine
- Een herstelpunt kiezen
- De schijven van het herstelpunt koppelen
- De vereiste bestanden kopiëren
- De schijf ontkoppelen
Selecteer de VIRTUELE machine (bij het herstellen van de VM)
Als u het PowerShell-object wilt ophalen dat het juiste back-upitem identificeert, begint u vanuit de container in de kluis en werkt u naar beneden in de objecthiërarchie. Als u de container wilt selecteren die de VIRTUELE machine vertegenwoordigt, gebruikt u de cmdlet Get-AzRecoveryServicesBackupContainer en sluist u deze naar de cmdlet Get-AzRecoveryServicesBackupItem .
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
Kies een herstelpunt (bij het herstellen van de VM)
Gebruik de cmdlet Get-AzRecoveryServicesBackupRecoveryPoint om alle herstelpunten voor het back-upitem weer te geven. Kies vervolgens het herstelpunt dat u wilt herstellen. Als u niet zeker weet welk herstelpunt u wilt gebruiken, is het raadzaam om het meest recente RecoveryPointType = AppConsistent-punt in de lijst te kiezen.
In het volgende script is de variabele, $rp, een matrix met herstelpunten voor het geselecteerde back-upitem, van de afgelopen zeven dagen. De matrix wordt in omgekeerde volgorde gesorteerd met het laatste herstelpunt op index 0. Gebruik standaard PowerShell-matrixindexering om het herstelpunt te kiezen. In het voorbeeld selecteert $rp[0] het meest recente herstelpunt.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
De uitvoer lijkt op die in het volgende voorbeeld:
RecoveryPointAdditionalInfo :
SourceVMStorageType : NormalStorage
Name : 15260861925810
ItemName : VM;iaasvmcontainer;RGName1;V2VM
RecoveryPointId : /subscriptions/XX/resourceGroups/ RGName1/providers/Microsoft.RecoveryServices/vaults/testvault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainer;RGName1;V2VM/protectedItems/VM;iaasvmcontainer; RGName1;V2VM/recoveryPoints/15260861925810
RecoveryPointType : AppConsistent
RecoveryPointTime : 4/23/2016 5:02:04 PM
WorkloadType : AzureVM
ContainerName : IaasVMContainer;iaasvmcontainer; RGName1;V2VM
ContainerType : AzureVM
BackupManagementType : AzureVM
De schijven van het herstelpunt koppelen
Gebruik de cmdlet Get-AzRecoveryServicesBackupRPMountScript om het script op te halen om alle schijven van het herstelpunt te koppelen.
Notitie
De schijven worden gekoppeld als iSCSI-gekoppelde schijven op de computer waarop het script wordt uitgevoerd. Het koppelen vindt onmiddellijk plaats en er worden geen kosten in rekening gebracht.
Get-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
De uitvoer lijkt op die in het volgende voorbeeld:
OsType Password Filename
------ -------- --------
Windows e3632984e51f496 V2VM_wus2_8287309959960546283_451516692429_cbd6061f7fc543c489f1974d33659fed07a6e0c2e08740.exe
Voer het script uit op de computer waarop u de bestanden wilt herstellen. Als u het script wilt uitvoeren, moet u het opgegeven wachtwoord invoeren. Nadat de schijven zijn gekoppeld, gebruikt u Windows Bestandenverkenner om door de nieuwe volumes en bestanden te bladeren. Zie het artikel Backup, Bestanden herstellen van back-up van virtuele Azure-machines voor meer informatie.
De schijven ontkoppelen
Nadat de vereiste bestanden zijn gekopieerd, gebruikt u Disable-AzRecoveryServicesBackupRPMountScript om de schijven los te koppelen. Zorg ervoor dat u de schijven ontkoppelt, zodat de toegang tot de bestanden van het herstelpunt wordt verwijderd.
Disable-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
Gegevens herstellen naar een virtuele machine met behulp van PowerShell
U kunt nu gegevens rechtstreeks herstellen naar de oorspronkelijke/alternatieve VM zonder meerdere stappen uit te voeren.
Gegevens herstellen naar de oorspronkelijke VM
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "resourceGroup" -Name "vaultName"
$BackupItem = Get-AzRecoveryServicesBackupItem -BackupManagementType "AzureVM" -WorkloadType "AzureVM" -Name "V2VM" -VaultId $vault.ID
$StartDate = (Get-Date).AddDays(-7)
$EndDate = Get-Date
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -StartDate $StartDate.ToUniversalTime() -EndDate $EndDate.ToUniversalTime() -VaultId $vault.ID
$OriginalLocationRestoreJob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -StorageAccountName "DestStorageAccount" -StorageAccountResourceGroupName "DestStorageAccRG" -VaultId $vault.ID -VaultLocation $vault.Location
WorkloadName Operation Status StartTime EndTime
------------ --------- ------ --------- -------
V2VM Restore InProgress 26-Apr-16 1:14:01 PM 01-Jan-01 12:00:00 AM
Met de laatste opdracht wordt een oorspronkelijke herstelbewerking voor de locatie geactiveerd om de gegevens in-place op de bestaande VM te herstellen.
Gegevens herstellen naar een zojuist gemaakte VIRTUELE machine
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "resourceGroup" -Name "vaultName"
$BackupItem = Get-AzRecoveryServicesBackupItem -BackupManagementType "AzureVM" -WorkloadType "AzureVM" -Name "V2VM" -VaultId $vault.ID
$StartDate = (Get-Date).AddDays(-7)
$EndDate = Get-Date
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -StartDate $StartDate.ToUniversalTime() -EndDate $EndDate.ToUniversalTime() -VaultId $vault.ID
$AlternateLocationRestoreJob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -TargetResourceGroupName "Target_RG" -StorageAccountName "DestStorageAccount" -StorageAccountResourceGroupName "DestStorageAccRG" -TargetVMName "TagetVirtualMachineName" -TargetVNetName "Target_VNet" -TargetVNetResourceGroup "" -TargetSubnetName "subnetName" -VaultId $vault.ID -VaultLocation $vault.Location
WorkloadName Operation Status StartTime EndTime
------------ --------- ------ --------- -------
V2VM Restore InProgress 26-Apr-16 1:14:01 PM 01-Jan-01 12:00:00 AM
Met de laatste opdracht wordt een herstelbewerking voor een alternatieve locatie geactiveerd om een nieuwe VM te maken in Target_RG resourcegroep volgens de invoer die is opgegeven door de parameters TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Dit zorgt ervoor dat de gegevens worden hersteld in de vereiste VM, het virtuele netwerk en het subnet.
Volgende stappen
Als u liever PowerShell gebruikt om contact op te nemen met uw Azure-resources, raadpleegt u het PowerShell-artikel Back-up implementeren en beheren voor Windows Server. Als u DPM-back-ups beheert, raadpleegt u het artikel Back-up implementeren en beheren voor DPM.