Eseguire il backup e il ripristino di macchine virtuali di Azure con PowerShell
Questo articolo illustra come eseguire il backup e il ripristino di una macchina virtuale di Azure in un insieme di credenziali di Servizi di ripristino Backup di Azure usando i cmdlet di PowerShell.
In questo articolo viene spiegato come:
- Creare un insieme di credenziali di Servizi di ripristino e impostare il contesto dell'insieme di credenziali.
- Definire un criterio di backup
- Applicare un criterio di backup per proteggere più macchine virtuali
- Attivare un processo di backup su richiesta per le macchine virtuali protette Prima di poter eseguire il backup o proteggere una macchina virtuale, è necessario completare i prerequisiti per preparare l'ambiente per la protezione delle macchine virtuali.
Prima di iniziare
- Altre informazioni sugli insiemi di credenziali di Servizi di ripristino.
- Esaminare l'architettura per il backup di macchine virtuali di Azure, informazioni sul processo di backup e esaminare il supporto, le limitazioni e i prerequisiti.
- Esaminare la gerarchia degli oggetti di PowerShell per Servizi di ripristino.
Gerarchia di oggetti dei servizi di ripristino
La gerarchia degli oggetti viene riepilogata nel diagramma seguente.
Esaminare il riferimento ai cmdletAz.RecoveryServices nella libreria di Azure.
Configurare e registrare
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Per iniziare:
Cercare i cmdlet PowerShell di Azure Backup disponibili digitando il comando seguente:
Get-Command *azrecoveryservices*
Verranno visualizzati alias e cmdlet per Backup di Azure, Azure Site Recovery e l'insieme di credenziali di Servizi di ripristino. L'immagine seguente è un esempio di quanto verrà visualizzato. Non è l'elenco completo dei cmdlet.
Accedere all'account Azure tramite Connect-AzAccount. Questo cmdlet visualizza una pagina Web che richiede le credenziali dell'account:
- In alternativa, è possibile includere le credenziali dell'account come parametro nel cmdlet Connect-AzAccount, usando il parametro -Credential.
- Se si è un partner CSP che lavora per conto di un tenant, specificare il cliente come tenant usando il proprio tenantID o il nome di dominio primario tenant. Ad esempio: Connect-AzAccount -Tenant "fabrikam.com"
Associare la sottoscrizione che si vuole usare all'account perché un account può avere molte sottoscrizioni:
Select-AzSubscription -SubscriptionName $SubscriptionName
Se si usa Backup di Azure per la prima volta, è necessario usare il cmdlet Register-AzResourceProvider per registrare il provider di servizi di ripristino di Azure con la sottoscrizione.
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
È possibile verificare che i provider siano stati registrati correttamente usando i comandi seguenti:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
Nell'output del comando RegistrationState dovrebbe essere modificato in Registered. In caso contrario, eseguire nuovamente il cmdlet Register-AzResourceProvider .
Creare un insieme di credenziali di Servizi di ripristino
Nei passaggi seguenti viene descritto come creare un insieme di credenziali dei servizi di ripristino. Un insieme di credenziali dei servizi di ripristino è diverso da un insieme di credenziali di backup.
L'insieme di credenziali dei Servizi di ripristino è una risorsa Resource Manager, pertanto è necessario inserirlo all'interno di un gruppo di risorse. È possibile usare un gruppo di risorse esistente o creare un gruppo di risorse con il cmdlet New-AzResourceGroup . Quando si crea un nuovo gruppo di risorse, è necessario specificare il nome e il percorso per il gruppo di risorse.
New-AzResourceGroup -Name "test-rg" -Location "West US"
Usare il cmdlet New-AzRecoveryServicesVault per creare un nuovo insieme di credenziali di Servizi di ripristino. Assicurarsi di specificare per l'insieme di credenziali lo stesso percorso usato per il gruppo di risorse.
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
Specificare il tipo di ridondanza di archiviazione da usare. È possibile usare l'archiviazione con ridondanza locale, l'archiviazione con ridondanza geografica (GRS) o l'archiviazione con ridondanza della zona (ZRS). Nell'esempio seguente l'opzione -BackupStorageRedundancy per testvault è impostata su GeoRedundant.
$vault1 = Get-AzRecoveryServicesVault -Name "testvault" Set-AzRecoveryServicesBackupProperty -Vault $vault1 -BackupStorageRedundancy GeoRedundant
Suggerimento
Molti cmdlet di Backup di Azure richiedono l'oggetto dell'insieme di credenziali dei servizi di ripristino come input. Per questo motivo, è utile archiviare l'oggetto dell'insieme di credenziali dei servizi di ripristino di backup in una variabile.
Visualizzare gli insiemi di credenziali in un abbonamento
Per visualizzare tutti gli insiemi di credenziali nella sottoscrizione, usare Get-AzRecoveryServicesVault:
Get-AzRecoveryServicesVault
L'output è simile all'esempio seguente. Si noti che vengono inclusi gli elementi ResourceGroupName e Location associati.
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
Eseguire il backup delle VM di Azure
Usare un insieme di credenziali di Servizi di ripristino per proteggere le macchine virtuali. Prima di applicare la protezione, impostare il contesto dell'insieme di credenziali (tipo di dati protetti nell'insieme di credenziali) e verificare i criteri di protezione. I criteri di protezione rappresentano la pianificazione per l'esecuzione dei processi di backup e il periodo di conservazione di ogni snapshot del backup.
Impostazione del contesto dell'insieme di credenziali
Prima di abilitare la protezione in una macchina virtuale, usare Set-AzRecoveryServicesVaultContext per impostare il contesto dell'insieme di credenziali. Una volta impostato il contesto dell'insieme di credenziali, si applica a tutti i cmdlet successivi. L'esempio seguente imposta il contesto per l'insieme di credenziali, testvault.
Get-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "Contoso-docs-rg" | Set-AzRecoveryServicesVaultContext
Recuperare l'ID dell'insieme di credenziali
Si prevede di deprecare l'impostazione del contesto dell'insieme di credenziali in conformità alle linee guida Azure PowerShell. È invece possibile archiviare o recuperare l'ID dell'insieme di credenziali e passarlo ai comandi pertinenti. Quindi, se non è stato impostato il contesto dell'insieme di credenziali o si vuole specificare il comando da eseguire per un determinato insieme di credenziali, passare l'ID dell'insieme di credenziali come "-vaultID" a tutto il comando pertinente, come indicato di seguito:
$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$targetVault.ID
Oppure
$targetVaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID
Modifica delle impostazioni di replica di archiviazione
Usare il comando Set-AzRecoveryServicesBackupProperty per impostare la configurazione della replica di archiviazione dell'insieme di credenziali su LRS/GRS
Set-AzRecoveryServicesBackupProperty -Vault $targetVault -BackupStorageRedundancy GeoRedundant/LocallyRedundant
Nota
La ridondanza dell'archiviazione può essere modificata solo se non ci sono elementi di backup protetti nell'insieme di credenziali.
Creare i criteri di protezione
Quando si crea un insieme di credenziali di Servizi di ripristino, questo è dotato di protezione predefinita e criteri di conservazione. I criteri di protezione predefinita attivano un processo di backup ogni giorno all'ora specificata. I criteri di conservazione predefiniti consentono di mantenere il punto di recupero giornaliero per 30 giorni. È possibile usare i criteri predefiniti per proteggere rapidamente la macchina virtuale e modificare i criteri in un secondo momento con dettagli diversi.
Usare Get-AzRecoveryServicesBackupProtectionPolicy per visualizzare i criteri di protezione disponibili nell'insieme di credenziali. È possibile usare questo cmdlet per ottenere un criterio specifico o per visualizzare i criteri associati a un tipo di carico di lavoro. L'esempio seguente ottiene i criteri per il tipo di carico di lavoro AzureVM.
Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
L'output è simile all'esempio seguente:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
DefaultPolicy AzureVM AzureVM 4/14/2016 5:00:00 PM
Nota
Il fuso orario del campo BackupTime in PowerShell è UTC. Tuttavia, l'orario di backup nel portale di Azure è allineato al fuso orario locale.
I criteri di protezione del backup sono associati almeno a un criterio di conservazione. Un criterio di conservazione definisce per quanto tempo un punto di recupero viene mantenuto prima dell'eliminazione.
- Per visualizzare il criterio di conservazione predefinito usare Get-AzRecoveryServicesBackupRetentionPolicyObject.
- Analogamente, è possibile usare Get-AzRecoveryServicesBackupSchedulePolicyObject per ottenere i criteri di pianificazione predefiniti.
- Il cmdlet New-AzRecoveryServicesBackupProtectionPolicy crea un oggetto di PowerShell che contiene le informazioni relative ai criteri di backup.
- Gli oggetti dei criteri di conservazione e di pianificazione vengono usati come input per il cmdlet New-AzRecoveryServicesBackupProtectionPolicy.
Per impostazione predefinita, un'ora di inizio viene definita nell'oggetto Criteri di pianificazione. Usare l'esempio seguente per modificare l'ora di inizio all'ora di inizio desiderata. Anche l'ora di inizio desiderata deve essere in formato UTC. Nell'esempio seguente si presuppone che l'ora di inizio desiderata sia 01:00 UTC per i backup giornalieri.
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z"
$UtcTime = $UtcTime.ToUniversalTime()
$schpol.ScheduleRunTimes[0] = $UtcTime
Importante
È necessario fornire l'ora di inizio solo in 30 minuti. Nell'esempio precedente, può essere solo "01:00:00" o "02:30:00". L'ora di inizio non può essere "01:15:00"
Nell'esempio seguente i criteri di pianificazione e i criteri di conservazione vengono archiviati nelle variabili. L'esempio usa tali variabili per definire i parametri durante la creazione di un criterio di protezione, NewPolicy.
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -WorkloadType "AzureVM" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $targetVault.ID
L'output è simile all'esempio seguente:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
NewPolicy AzureVM AzureVM 4/24/2016 1:30:00 AM
Abilitare la protezione
Dopo aver definito i criteri di protezione è necessario abilitarli per un elemento. Usare Enable-AzRecoveryServicesBackupProtection per abilitare la protezione. Per abilitare la protezione sono necessari due oggetti, l'elemento e i criteri. Dopo aver associato i criteri all'insieme di credenziali, il flusso di lavoro di backup verrà attivato al momento definito nella pianificazione dei criteri.
Importante
Quando si usa PowerShell per abilitare il backup per più macchine virtuali contemporaneamente, assicurarsi che a un singolo criterio non siano associate più di 100 macchine virtuali. Si tratta di una procedura consigliata. Attualmente, il client di PowerShell non si blocca in modo esplicito se sono presenti più di 100 macchine virtuali, ma il controllo dovrebbe essere aggiunto in futuro.
Gli esempi seguenti abilitano la protezione per l'elemento V2VM usando i criteri NewPolicy. Gli esempi variano a seconda del fatto che la macchina virtuale sia crittografata o meno e in base al tipo di crittografia.
Per abilitare la protezione in macchine virtuali di Resource Manager non crittografate:
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Per abilitare la protezione in macchine virtuali crittografate con BEK e KEK è necessario concedere al servizio Backup di Azure le autorizzazioni necessarie per la lettura di chiavi e segreti dall'insieme di credenziali delle chiavi.
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
Per abilitare la protezione in macchine virtuali crittografate solo con BEK è necessario concedere al servizio Backup di Azure le autorizzazioni necessarie per la lettura dei segreti dall'insieme di credenziali delle chiavi.
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
Nota
Se si usa il cloud Azure per enti pubblici, usare il valore ff281ffe-705c-4f53-9f37-a40e6f2c68f3
per il parametro ServicePrincipalName nel cmdlet Set-AzKeyVaultAccessPolicy.
Se si vuole eseguire il backup selettivo di alcuni dischi ed escludere altri come indicato in questi scenari, è possibile configurare la protezione e il backup solo dei dischi pertinenti come documentato qui.
Monitoraggio di un processo di backup
È possibile monitorare le operazioni a esecuzione prolungata, ad esempio i processi di backup, senza usare il portale di Azure. Per ottenere lo stato di un processo in corso, usare il cmdlet Get-AzRecoveryservicesBackupJob . Questo cmdlet ottiene i processi di backup per un insieme di credenziali specifico e tale insieme di credenziali è indicato nel relativo contesto. L'esempio seguente ottiene lo stato di un processo in corso sotto forma di matrice e archivia lo stato nella variabile $joblist.
$joblist = Get-AzRecoveryservicesBackupJob –Status "InProgress" -VaultId $targetVault.ID
$joblist[0]
L'output è simile all'esempio seguente:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Anziché eseguire il polling di questi processi per il completamento, che non è necessario codice aggiuntivo, usare il cmdlet Wait-AzRecoveryServicesBackupJob . Questo cmdlet sospende l'esecuzione fino al completamento del processo o fino a quando non viene raggiunto il valore di timeout specificato.
Wait-AzRecoveryServicesBackupJob -Job $joblist[0] -Timeout 43200 -VaultId $targetVault.ID
Gestire i backup delle macchine virtuali di Azure
Modificare i criteri di protezione
Per modificare i criteri di protezione, usare Set-AzRecoveryServicesBackupProtectionPolicy per modificare gli oggetti SchedulePolicy o RetentionPolicy.
Modifica dell'ora pianificata
Quando si crea un criterio di protezione, viene assegnato un'ora di inizio per impostazione predefinita. Gli esempi seguenti illustrano come modificare l'ora di inizio di un criterio di protezione.
$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
Modifica della conservazione
Nell'esempio seguente viene modificato il punto di recupero a 365 giorni.
$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
Configurazione della conservazione degli snapshot di ripristino istantaneo
Nota
Da Azure PowerShell versione 1.6.0 in poi, è possibile aggiornare il periodo di conservazione snapshot di ripristino immediato nei criteri usando PowerShell
$bkpPol = Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
$bkpPol.SnapshotRetentionInDays=7
Set-AzRecoveryServicesBackupProtectionPolicy -policy $bkpPol -VaultId $targetVault.ID
Il valore predefinito sarà 2. È possibile impostare il valore con un minimo di 1 e un massimo di 5. Per i criteri di backup settimanali, il periodo è impostato su 5 e non può essere modificato.
Creazione di Backup di Azure gruppo di risorse durante la conservazione degli snapshot
Nota
A partire da Azure PowerShell versione 3.7.0, è possibile creare e modificare il gruppo di risorse creato per l'archiviazione di snapshot istantanei.
Per altre informazioni sulle regole di creazione del gruppo di risorse e altri dettagli pertinenti, vedere la documentazione relativa a Backup di Azure gruppo di risorse Macchine virtuali.
$bkpPol = Get-AzureRmRecoveryServicesBackupProtectionPolicy -name "DefaultPolicyForVMs"
$bkpPol.AzureBackupRGName="Contosto_"
$bkpPol.AzureBackupRGNameSuffix="ForVMs"
Set-AzureRmRecoveryServicesBackupProtectionPolicy -policy $bkpPol
Escludere i dischi per una macchina virtuale protetta
Il backup di macchine virtuali di Azure offre la possibilità di escludere o includere in modo selettivo i dischi utili in questi scenari. Se la macchina virtuale è già protetta dal backup di macchine virtuali di Azure e se viene eseguito il backup di tutti i dischi, è possibile modificare la protezione in modo da includere o escludere in modo selettivo i dischi, come indicato qui.
Attivare un backup
Usare Backup-AzRecoveryServicesBackupItem per attivare un processo di backup. Se si tratta del backup iniziale, è un backup completo. I backup successivi saranno incrementali. Nell'esempio seguente viene eseguito il backup di una macchina virtuale da conservare per 60 giorni.
$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
L'output è simile all'esempio seguente:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Nota
Il fuso orario dei campi StartTime ed EndTime in PowerShell è UTC. Tuttavia, l'orario visualizzato nel portale di Azure è allineato al fuso orario locale.
Modificare i criteri per gli elementi di backup
È possibile modificare i criteri esistenti o modificare i criteri dell'elemento di cui è stato eseguito il backup da Policy1 a Policy2. Per cambiare i criteri per un elemento sottoposto a backup, recuperare i criteri pertinenti e eseguire il backup dell'elemento e usare il comando Enable-AzRecoveryServices con l'elemento di backup come parametro.
$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
Il comando attende il completamento del backup di configurazione e restituisce l'output seguente.
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
Arresta protezione
Mantenere i dati
Se si vuole arrestare la protezione, è possibile usare il cmdlet Disable-AzRecoveryServicesBackupProtection di PowerShell. In questo modo i backup pianificati verranno arrestati, ma i dati di cui è stato eseguito il backup fino ad ora vengono conservati per sempre.
$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -Name "<backup item name>" -VaultId $targetVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID
Riprendere il backup
Se la protezione viene arrestata e i dati di backup vengono conservati, è possibile riprendere la protezione ancora una volta. È necessario assegnare un criterio per la protezione rinnovata. Il cmdlet è uguale a quello dei criteri di modifica degli elementi di backup.
$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
Elimina dati di backup
Per rimuovere completamente i dati di backup archiviati nell'insieme di credenziali, aggiungere il flag '-RemoveRecoveryPoints' al comando di protezione 'disable'.
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID -RemoveRecoveryPoints
Ripristinare una macchina virtuale di Azure
Esiste una differenza importante tra il ripristino di una macchina virtuale usando il portale di Azure e il ripristino di una macchina virtuale usando PowerShell. Con PowerShell l'operazione di ripristino è completata quando sono stati creati i dischi e le informazioni sulla configurazione dal punto di ripristino L'operazione di ripristino non crea la macchina virtuale. Per creare una macchina virtuale dal disco, vedere la sezione Creare la macchina virtuale da dischi ripristinati. Se non si vuole ripristinare l'intera macchina virtuale, ma si vuole ripristinare o recuperare alcuni file da un backup della macchina virtuale di Azure, vedere la sezione relativa al recupero di file.
Suggerimento
L'operazione di ripristino non crea la macchina virtuale.
Il grafico seguente mostra la gerarchia degli oggetti da RecoveryServicesVault fino a BackupRecoveryPoint.
Per ripristinare i dati di backup, identificare l'elemento sottoposto a backup e il punto di ripristino che contiene i dati temporizzati. Usare Restore-AzRecoveryServicesBackupItem per ripristinare i dati dall'insieme di credenziali all'account.
I passaggi di base per ripristinare una macchina virtuale di Azure sono:
- Selezionare la macchina virtuale.
- Scegliere un punto di ripristino.
- Ripristinare i dischi.
- Creare la macchina virtuale dai dischi archiviati.
Ora è anche possibile usare PowerShell per ripristinare direttamente il contenuto di backup in una macchina virtuale (originale/nuovo), senza eseguire separatamente i passaggi precedenti. Per altre informazioni, vedere Ripristinare i dati in una macchina virtuale usando PowerShell.
Selezionare la macchina virtuale (durante il ripristino dei file)
Per ottenere l'oggetto di PowerShell che identifica l'elemento di backup corretto, iniziare dal contenitore nell'insieme di credenziali e procedere verso il basso nella gerarchia degli oggetti. Per selezionare il contenitore che rappresenta la macchina virtuale, usare il cmdlet Get-AzRecoveryServicesBackupContainer e inviarlo tramite pipe al 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
Scegliere un punto di ripristino (durante il ripristino dei file)
Usare il cmdlet Get-AzRecoveryServicesBackupRecoveryPoint per elencare tutti i punti di recupero dell'elemento di backup. Quindi scegliere il punto di ripristino per ripristinare. Se non si è certi del punto di ripristino da usare, è consigliabile scegliere il punto recoveryPointType = AppConsistent più recente nell'elenco.
Nello script seguente, la variabile $rp è una matrice di punti di ripristino per l'elemento di backup selezionato, degli ultimi sette giorni. La matrice viene ordinata in ordine inverso di tempo con il punto di ripristino più recente in posizione 0 nell'indice. Per scegliere il punto di ripristino, usare l'indicizzazione standard della matrice di PowerShell. Nell'esempio $rp [0] seleziona il punto di ripristino più recente.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
L'output è simile all'esempio seguente:
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
Ripristinare i dischi
Usare il cmdlet Restore-AzRecoveryServicesBackupItem per ripristinare i dati e la configurazione di un elemento di backup in un punto di ripristino. Dopo aver identificato un punto di ripristino, usarlo come valore per il parametro -RecoveryPoint. Nell'esempio precedente , $rp[0] era il punto di ripristino da usare. Nell'esempio di codice seguente $rp[0] è il punto di ripristino da usare per il ripristino del disco.
Per ripristinare i dischi e le informazioni di configurazione:
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID
$restorejob
Ripristinare i dischi gestiti
Nota
Se la macchina virtuale supportata ha dischi gestiti e si desidera ripristinarli come dischi gestiti, è stata introdotta la funzionalità dal modulo RM Azure PowerShell versione 6.7.0. in poi.
Indicare un parametro aggiuntivo TargetResourceGroupName per specificare il gruppo di risorse in cui verranno ripristinati i dischi gestiti.
Importante
È consigliabile usare il parametro TargetResourceGroupName per il ripristino dei dischi gestiti perché comporta miglioramenti significativi delle prestazioni. Se questo parametro non è specificato, non è possibile trarre vantaggio dalla funzionalità di ripristino immediato e l'operazione di ripristino sarà più lenta rispetto al confronto. Se lo scopo è ripristinare i dischi gestiti come dischi non gestiti, non specificare questo parametro e rendere chiara l'intenzione fornendo il -RestoreAsUnmanagedDisks
parametro. Il -RestoreAsUnmanagedDisks
parametro è disponibile da Azure PowerShell 3.7.0 in avanti. Nelle versioni future, sarà obbligatorio fornire uno di questi parametri per l'esperienza di ripristino corretta.
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID
Il file VMConfig.JSON verrà ripristinato nell'account di archiviazione e i dischi gestiti verranno ripristinati nel gruppo di risorse di destinazione specificato.
L'output è simile all'esempio seguente:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Restore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Usare il cmdlet Wait-AzRecoveryServicesBackupJob per attendere il completamento del processo Di ripristino.
Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200
Al termine del processo Di ripristino, usare il cmdlet Get-AzRecoveryServicesBackupJobDetail per ottenere i dettagli dell'operazione di ripristino. La proprietà JobDetails contiene le informazioni necessarie per ricreare la macchina virtuale.
$restorejob = Get-AzRecoveryServicesBackupJob -Job $restorejob -VaultId $targetVault.ID
$details = Get-AzRecoveryServicesBackupJobDetail -Job $restorejob -VaultId $targetVault.ID
Uso dell'identità gestita per ripristinare i dischi
Backup di Azure consente anche di usare l'identità gestita durante l'operazione di ripristino per accedere agli account di archiviazione in cui è necessario ripristinare i dischi. Questa opzione è attualmente supportata solo per il ripristino del disco gestito.
Se si vuole usare l'identità gestita assegnata dal sistema dell'insieme di credenziali per ripristinare i dischi, passare un flag aggiuntivo -UseSystemAssignedIdentity al comando Restore-AzRecoveryServicesBackupItem. Se si vuole usare un'identità gestita assegnata dall'utente, passare un parametro -UserAssignedIdentityId con l'ID di azure Resource Manager dell'identità gestita dell'insieme di credenziali come valore del parametro. Per informazioni su come abilitare l'identità gestita per gli insiemi di credenziali, vedere questo articolo .
Ripristinare dischi selettivi
Un utente può ripristinare in modo selettivo alcuni dischi anziché l'intero set di backup. Specificare i LUN del disco necessari come parametro per ripristinarli solo anziché l'intero set come documentato qui.
Importante
È necessario eseguire il backup selettivo dei dischi per ripristinare in modo selettivo i dischi. Sono disponibili altri dettagli qui.
Dopo aver ripristinato i dischi, passare alla sezione successiva per creare la macchina virtuale.
Ripristinare i dischi in un'area secondaria
Se il ripristino tra aree è abilitato nell'insieme di credenziali con cui sono state protette le macchine virtuali, i dati di backup vengono replicati nell'area secondaria. È possibile usare i dati di backup per eseguire un ripristino. Seguire questa procedura per attivare un ripristino nell'area secondaria:
Recuperare l'ID dell'insieme di credenziali con cui le macchine virtuali sono protette.
Selezionare l'elemento di backup corretto da ripristinare.
Selezionare il punto di ripristino appropriato nell'area secondaria da usare per eseguire il ripristino.
Per completare questo passaggio, eseguire questo comando:
$rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID $rp=$rp[0]
Eseguire il cmdlet Restore-AzRecoveryServicesBackupItem con il
-RestoreToSecondaryRegion
parametro per attivare un ripristino nell'area secondaria.Per completare questo passaggio, eseguire questo comando:
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -VaultLocation $targetVault.Location -RestoreToSecondaryRegion -RestoreOnlyOSDisk
L'output sarà simile all'esempio seguente:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ---------- V2VM CrossRegionRestore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Eseguire il cmdlet Get-AzRecoveryServicesBackupJob con il
-UseSecondaryRegion
parametro per monitorare il processo di ripristino.Per completare questo passaggio, eseguire questo comando:
Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -To (Get-Date).ToUniversalTime() -UseSecondaryRegion -VaultId $targetVault.ID
L'output sarà simile all'esempio seguente:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ----- V2VM CrossRegionRestore InProgress 2/8/2021 4:24:57 PM 2d071b07-8f7c-4368-bc39-98c7fb2983f7
Ripristino tra zone
È possibile ripristinare le macchine virtuali aggiunte all'area di Azure in tutte le zone di disponibilità della stessa area.
Per ripristinare una macchina virtuale in un'altra zona, specificare il TargetZoneNumber
parametro nel cmdlet Restore-AzRecoveryServicesBackupItem .
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID -TargetZoneNumber 3
L'output sarà simile all'esempio seguente:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
zonevmeus2 Restore InProgress 1/3/2022 10:27:20 AM b2298...
Il ripristino tra zone è supportato solo negli scenari in cui:
- La macchina virtuale di origine è aggiunta all'area e non è crittografata.
- Il punto di ripristino è presente solo nel livello dell'insieme di credenziali. Non sono supportati solo snapshot o livelli di snapshot e insieme di credenziali.
- L'opzione di ripristino consiste nel creare una nuova macchina virtuale o ripristinare dischi. Sostituisci l'opzione Dischi sostituisce i dati di origine; pertanto, l'opzione della zona di disponibilità non è applicabile.
- Creazione di macchine virtuali/dischi nella stessa area quando la ridondanza dell'archiviazione dell'insieme di credenziali è ZRS. Si noti che non funziona se la ridondanza dell'archivio dell'insieme di credenziali è GRS, anche se la macchina virtuale di origine è aggiunta all'area.
- Creazione di vm/dischi nell'area associata quando la ridondanza dell'archivio dell'insieme di credenziali è abilitata per il ripristino tra aree e se l'area associata supporta le zone.
Sostituire i dischi nella macchina virtuale di Azure
Per sostituire i dischi e le informazioni di configurazione, seguire questa procedura:
- Passaggio 1: Ripristinare i dischi
- Passaggio 2: Scollegare il disco dati con PowerShell
- Passaggio 3: Collegare il disco dati alla macchina virtuale Windows con PowerShell
Creare una macchina virtuale da dischi ripristinati
Dopo aver ripristinato i dischi, usare la procedura seguente per creare e configurare la macchina virtuale dal disco.
Nota
- È necessario il modulo AzureAz 3.0.0 o versione successiva.
- Per creare macchine virtuali crittografate da dischi ripristinati, il ruolo di Azure deve disporre dell'autorizzazione per eseguire l'azione, ovvero Microsoft.KeyVault/vaults/deploy/action. Se il ruolo non dispone di questa autorizzazione, creare un ruolo personalizzato con questa azione. Per altre informazioni, vedere Ruoli personalizzati in Azure.
- Dopo aver ripristinato i dischi, è ora possibile ottenere un modello di distribuzione che può essere usato direttamente per creare una nuova macchina virtuale. YOu non necessita di cmdlet di PowerShell diversi per creare macchine virtuali gestite/non gestite che sono crittografate/non crittografate.
Creare una macchina virtuale usando il modello di distribuzione
I dettagli del processo risultante includono l'URI del modello che può essere sottoposto a query e distribuito.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$templateBlobURI = $properties["Template Blob Uri"]
Il modello non è direttamente accessibile perché si trova nell'account di archiviazione del cliente e nel contenitore specificato. Per accedere a questo modello, è necessario l'URL completo (insieme a un token di firma di accesso condiviso temporaneo).
Estrarre prima il nome del modello dall'URI templateBlobURI. Il formato è indicato di seguito. È possibile usare l'operazione di divisione in PowerShell per estrarre il nome del modello finale da questo URL.
https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
L'URL completo può quindi essere generato come illustrato qui.
Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name> $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
Distribuire il modello per creare una nuova macchina virtuale, come illustrato qui.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup -TemplateUri $templateBlobFullURI
Creare una macchina virtuale usando il file di configurazione
Nella sezione seguente sono elencati i passaggi necessari per creare una macchina virtuale usando il file VMConfig .
Nota
È consigliabile usare il modello di distribuzione dettagliato sopra per creare una macchina virtuale. Questa sezione (punti 1-6) sarà presto deprecata.
Ricercare i dettagli del processo nelle proprietà del disco ripristinato.
$properties = $details.properties $storageAccountName = $properties["Target Storage Account Name"] $containerName = $properties["Config Blob Container Name"] $configBlobName = $properties["Config Blob Name"]
Impostare il contesto di archiviazione di Azure e ripristinare il file di configurazione JSON.
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
Usare il file di configurazione JSON per creare la configurazione della macchina virtuale.
$vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
Collegare il disco del sistema operativo e i dischi dei dati. Questo passaggio include esempi di varie configurazioni di macchine virtuali gestite e crittografate. Usare l'esempio adatto alla configurazione della propria macchina virtuale.
- Macchine virtuali non gestite e non crittografate: usare l'esempio seguente per macchine virtuali non gestite e non crittografate.
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" }
- Macchine virtuali non gestite e crittografate con Azure AD (solo BEK): per le macchine virtuali non gestite e crittografate con Azure AD (solo con BEK) è necessario ripristinare il segreto nell'insieme di credenziali delle chiavi prima di collegare i dischi. Per altre informazioni, vedere Ripristinare una macchina virtuale crittografata da un punto di ripristino di Backup di Azure. L'esempio seguente illustra come collegare dischi del sistema operativo e i dati per le macchine virtuali crittografate. Durante l'impostazione del disco del sistema operativo, assicurarsi di indicare il tipo di sistema operativo pertinente.
$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" }
- Macchine virtuali non gestite e crittografate con Azure AD (BEK e KEK): per le macchine virtuali non gestite e crittografate con Azure AD (con BEK e KEK) ripristinare la chiave e il segreto nell'insieme di credenziali delle chiavi prima di collegare i dischi. Per altre informazioni, vedere Ripristinare una macchina virtuale crittografata da un punto di ripristino di Backup di Azure. L'esempio seguente illustra come collegare dischi del sistema operativo e i dati per le macchine virtuali crittografate.
$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" }
- Macchine virtuali non gestite e crittografate senza Azure AD (solo BEK): per le macchine virtuali non gestite e crittografate senza Azure AD (solo con BEK), se l'insieme di credenziali delle chiavi e il segreto di origine non sono disponibili, ripristinare i segreti nell'insieme di credenziali delle chiavi seguendo la procedura in Restore an non-encrypted virtual machine from an Azure Backup recovery point (Ripristinare una macchina virtuale non crittografata da un punto di ripristino di Backup di Azure). Eseguire quindi gli script seguenti per impostare i dettagli di crittografia nel BLOB del sistema operativo ripristinato (questo passaggio non è necessario per un BLOB di dati). Recuperare $dekurl dall'insieme di credenziali delle chiavi ripristinato.
Lo script seguente deve essere eseguito solo quando l'insieme di credenziali/segreto di origine non è disponibile.
$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()
Quando i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel BLOB del sistema operativo, collegare i dischi usando lo script riportato di seguito.
Se il keyVault o i segreti di origine sono già disponibili, lo script precedente non deve essere eseguito.
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" }
- Macchine virtuali non gestite e crittografate senza Azure AD (BEK e KEK): per le macchine virtuali non gestite e crittografate senza Azure AD (crittografate usando la chiave KEK BEK&), se keyVault/chiave/segreto di origine non sono disponibili, ripristinare la chiave e i segreti nell'insieme di credenziali delle chiavi usando la procedura descritta in Ripristinare una macchina virtuale non crittografata da un punto di ripristino Backup di Azure. Eseguire quindi gli script seguenti per impostare i dettagli di crittografia nel BLOB del sistema operativo ripristinato (questo passaggio non è necessario per un BLOB di dati). Recuperare $dekurl e $kekurl dall'insieme di credenziali delle chiavi ripristinato.
Lo script seguente deve essere eseguito solo quando l'insieme di credenziali delle chiavi/chiave/segreto di origine non è disponibile.
$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()
Quando la chiave e i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel BLOB del sistema operativo, collegare i dischi usando lo script riportato di seguito.
Se l'insieme di credenziali delle chiavi/segreti di origine è disponibile, lo script precedente non deve essere eseguito.
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" }
Macchine virtuali gestite e non crittografate: per le macchine virtuali gestite e non crittografate, collegare i dischi gestiti ripristinati. Per informazioni dettagliate, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell.
Macchine virtuali gestite e crittografate con Azure AD (solo BEK): per le macchine virtuali gestite e crittografate con Azure AD (solo con BEK) collegare i dischi gestiti ripristinati. Per informazioni dettagliate, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell.
Macchine virtuali gestite e crittografate con Azure AD (BEK e KEK): per le macchine virtuali gestite e crittografate con Azure AD (con BEK e KEK) collegare i dischi gestiti ripristinati. Per informazioni dettagliate, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell.
Macchine virtuali gestite e crittografate senza Azure AD (solo BEK) - Per le macchine virtuali crittografate gestite senza Azure AD (solo con BEK), se keyVault/segreto di origine non sono disponibili, ripristinare i segreti nell'insieme di credenziali delle chiavi usando la procedura in Ripristinare una macchina virtuale non crittografata da un punto di ripristino Backup di Azure. Eseguire quindi gli script seguenti per impostare i dettagli di crittografia sul disco del sistema operativo ripristinato (questo passaggio non è necessario per un disco dati). Recuperare $dekurl dall'insieme di credenziali delle chiavi ripristinato.
Lo script seguente deve essere eseguito solo quando l'insieme di credenziali/segreto di origine non è disponibile.
$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
Quando i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel disco del sistema operativo, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell per collegare i dischi gestiti ripristinati.
- Macchine virtuali gestite e crittografate senza Azure AD (BEK e KEK): per le macchine virtuali gestite e crittografate senza Azure AD (crittografate con la chiave KEK BEK&), se keyVault/chiave/segreto di origine non sono disponibili, ripristinare la chiave e i segreti nell'insieme di credenziali delle chiavi usando la procedura descritta in Ripristinare una macchina virtuale non crittografata da un punto di ripristino Backup di Azure. Eseguire quindi gli script seguenti per impostare i dettagli di crittografia sul disco del sistema operativo ripristinato (questo passaggio non è necessario per i dischi dati). Recuperare $dekurl e $kekurl dall'insieme di credenziali delle chiavi ripristinato.
Lo script seguente deve essere eseguito solo quando l'insieme di credenziali delle chiavi/chiave/segreto di origine non è disponibile.
$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
Quando la chiave e i segreti sono disponibili e le informazioni dettagliate sulla crittografia sono impostate nel disco del sistema operativo, vedere Collegare un disco dati a una macchina virtuale Windows con PowerShell per collegare i dischi gestiti ripristinati.
Configurare le impostazioni di rete.
$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
Creare la macchina virtuale.
New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
Eseguire il push dell'estensione ADE. Se non viene eseguito il push delle estensioni ADE, i dischi dati verranno contrassegnati come non crittografati, quindi è obbligatorio eseguire i passaggi seguenti:
Per una macchina virtuale con Azure AD: usare il comando seguente per abilitare manualmente la crittografia per i dischi dati
Solo BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -VolumeType Data
BEK e KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
Per una macchina virtuale senza Azure AD: usare il comando seguente per abilitare manualmente la crittografia per i dischi dati.
Se durante l'esecuzione del comando richiede AADClientID, è necessario aggiornare il Azure PowerShell.
Solo BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
BEK e KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
Nota
Assicurarsi di eliminare manualmente i file JASON creati come parte del processo di ripristino della macchina virtuale crittografata.
Ripristinare file da un backup della macchina virtuale di Azure
Oltre al ripristino di dischi è anche possibile ripristinare singoli file da un backup della macchina virtuale di Azure. La funzionalità di ripristino dei file consente di accedere a tutti i file inclusi in un punto di ripristino. Gestire i file tramite Esplora file come si farebbe con i file normali.
La procedura di base per il ripristino di un file dal backup di una macchina virtuale di Azure si articola nei passaggi seguenti:
- Selezionare la macchina virtuale
- Scegliere un punto di ripristino
- Montare i dischi del punto di ripristino
- Copiare i file necessari
- Smontare il disco
Selezionare la macchina virtuale (durante il ripristino della macchina virtuale)
Per ottenere l'oggetto di PowerShell che identifica l'elemento di backup corretto, iniziare dal contenitore nell'insieme di credenziali e procedere verso il basso nella gerarchia degli oggetti. Per selezionare il contenitore che rappresenta la macchina virtuale, usare il cmdlet Get-AzRecoveryServicesBackupContainer e inviarlo tramite pipe al 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
Scegliere un punto di ripristino (durante il ripristino della macchina virtuale)
Usare il cmdlet Get-AzRecoveryServicesBackupRecoveryPoint per elencare tutti i punti di recupero dell'elemento di backup. Quindi scegliere il punto di ripristino per ripristinare. Se non si è certi del punto di ripristino da usare, è consigliabile scegliere il punto recoveryPointType = AppConsistent più recente nell'elenco.
Nello script seguente, la variabile $rp è una matrice di punti di ripristino per l'elemento di backup selezionato, degli ultimi sette giorni. La matrice viene ordinata in ordine inverso di tempo con il punto di ripristino più recente in posizione 0 nell'indice. Per scegliere il punto di ripristino, usare l'indicizzazione standard della matrice di PowerShell. Nell'esempio $rp [0] seleziona il punto di ripristino più recente.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
L'output è simile all'esempio seguente:
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
Montare i dischi del punto di ripristino
Usare il cmdlet Get-AzRecoveryServicesBackupRPMountScript per ottenere lo script per montare tutti i dischi del punto di ripristino.
Nota
I dischi sono montati come dischi collegati iSCSI al computer in cui viene eseguito lo script. Il montaggio avviene immediatamente e non si incorre in alcun addebito.
Get-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
L'output è simile all'esempio seguente:
OsType Password Filename
------ -------- --------
Windows e3632984e51f496 V2VM_wus2_8287309959960546283_451516692429_cbd6061f7fc543c489f1974d33659fed07a6e0c2e08740.exe
Eseguire lo script nel computer in cui si vogliono recuperare i file. Per eseguire lo script è necessario immettere la password specificata. Dopo aver collegato i dischi, usare Esplora risorse per esplorare i nuovi volumi e file. Per altre informazioni, vedere l'articolo Backup , Ripristinare i file dal backup delle macchine virtuali di Azure.
Smontare i disco
Dopo aver copiato i file necessari, usare Disable-AzRecoveryServicesBackupRPMountScript per smontare i dischi. Assicurarsi di smontare i dischi in modo che l'accesso ai file del punto di ripristino venga rimosso.
Disable-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
Ripristinare i dati nella macchina virtuale usando PowerShell
È ora possibile ripristinare direttamente i dati in una macchina virtuale originale/alternativa senza eseguire più passaggi.
Ripristinare i dati nella macchina virtuale originale
$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
L'ultimo comando attiva un'operazione di ripristino del percorso originale per ripristinare i dati sul posto nella macchina virtuale esistente.
Ripristinare i dati in una macchina virtuale appena creata
$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
L'ultimo comando attiva un'operazione di ripristino del percorso alternativo per creare una nuova macchina virtuale in Target_RG gruppo di risorse in base agli input specificati dai parametri TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. In questo modo si garantisce che i dati vengano ripristinati nella macchina virtuale, nella rete virtuale e nella subnet necessarie.
Passaggi successivi
Se si preferisce usare PowerShell per coinvolgere le risorse di Azure, vedere l'articolo PowerShell Distribuire e gestire il backup in Azure per server Windows/client Windows mediante PowerShell. Se si gestiscono i backup DPM, vedere l'articolo Distribuire e gestire il backup per DPM.