Tworzenie kopii zapasowych i przywracanie maszyn wirtualnych platformy Azure przy użyciu programu PowerShell

W tym artykule wyjaśniono, jak utworzyć kopię zapasową i przywrócić maszynę wirtualną platformy Azure w magazynie usługi Azure Backup Recovery Services przy użyciu poleceń cmdlet programu PowerShell.

W tym artykule omówiono sposób wykonywania następujących zadań:

  • Utwórz magazyn usługi Recovery Services i ustaw kontekst magazynu.
  • Definiowanie zasad tworzenia kopii zapasowych
  • Stosowanie zasad tworzenia kopii zapasowych w celu ochrony wielu maszyn wirtualnych
  • Wyzwalanie zadania tworzenia kopii zapasowej na żądanie dla chronionych maszyn wirtualnych Zanim będzie można utworzyć kopię zapasową (lub chronić) maszynę wirtualną, należy spełnić wymagania wstępne, aby przygotować środowisko do ochrony maszyn wirtualnych.

Przed rozpoczęciem

  • Dowiedz się więcej o magazynach usługi Recovery Services.
  • Zapoznaj się z architekturą tworzenia kopii zapasowych maszyn wirtualnych platformy Azure, dowiedz się więcej o procesie tworzenia kopii zapasowych i zapoznaj się z pomocą techniczną, ograniczeniami i wymaganiami wstępnymi.
  • Zapoznaj się z hierarchią obiektów programu PowerShell dla usług Recovery Services.

Hierarchia obiektów usługi Recovery Services

Hierarchia obiektów jest podsumowana na poniższym diagramie.

Hierarchia obiektów usługi Recovery Services

Zapoznaj się z dokumentacją poleceń cmdletaz.RecoveryServices w bibliotece platformy Azure.

Konfigurowanie i rejestrowanie

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie Azure PowerShell, aby rozpocząć pracę. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Aby rozpocząć:

  1. Pobieranie najnowszej wersji programu PowerShell

  2. Znajdź dostępne polecenia cmdlet programu PowerShell Azure Backup, wpisując następujące polecenie:

    Get-Command *azrecoveryservices*
    

    Wyświetlane są aliasy i polecenia cmdlet dla Azure Backup, usługi Azure Site Recovery i magazynu usługi Recovery Services. Na poniższej ilustracji przedstawiono przykład tego, co zobaczysz. Nie jest to pełna lista poleceń cmdlet.

    lista usług Recovery Services

  3. Zaloguj się do konta platformy Azure przy użyciu polecenia Connect-AzAccount. To polecenie cmdlet powoduje wyświetlenie strony internetowej z monitem o podanie poświadczeń konta:

    • Alternatywnie możesz dołączyć poświadczenia konta jako parametr w poleceniu cmdlet Connect-AzAccount przy użyciu parametru -Credential .
    • Jeśli jesteś partnerem CSP pracującym w imieniu dzierżawy, określ klienta jako dzierżawę przy użyciu identyfikatora dzierżawy lub głównej nazwy domeny dzierżawy. Na przykład: Connect-AzAccount -Tenant "fabrikam.com"
  4. Skojarz subskrypcję, której chcesz użyć z kontem, ponieważ konto może mieć kilka subskrypcji:

    Select-AzSubscription -SubscriptionName $SubscriptionName
    
  5. Jeśli używasz Azure Backup po raz pierwszy, musisz użyć polecenia cmdlet Register-AzResourceProvider, aby zarejestrować dostawcę usługi Azure Recovery Service w ramach subskrypcji.

    Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    
  6. Możesz sprawdzić, czy dostawcy zarejestrowali się pomyślnie, używając następujących poleceń:

    Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
    

    W danych wyjściowych polecenia wartość RegistrationState powinna zostać zmieniona na Zarejestrowano. Jeśli nie, uruchom ponownie polecenie cmdlet Register-AzResourceProvider .

Tworzenie magazynu usługi Recovery Services

Poniższe kroki prowadzą do utworzenia magazynu usługi Recovery Services. Magazyn usługi Recovery Services różni się od magazynu usługi Backup.

  1. Magazyn usługi Recovery Services jest zasobem Resource Manager, więc musisz umieścić go w grupie zasobów. Możesz użyć istniejącej grupy zasobów lub utworzyć grupę zasobów za pomocą polecenia cmdlet New-AzResourceGroup . Podczas tworzenia grupy zasobów określ nazwę i lokalizację grupy zasobów.

    New-AzResourceGroup -Name "test-rg" -Location "West US"
    
  2. Użyj polecenia cmdlet New-AzRecoveryServicesVault , aby utworzyć magazyn usługi Recovery Services. Pamiętaj, aby określić tę samą lokalizację magazynu, która była używana dla grupy zasobów.

    New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
    
  3. Określ typ nadmiarowości magazynu do użycia. Możesz użyć magazynu lokalnie nadmiarowego (LRS),magazynu geograficznie nadmiarowego (GRS) lub magazynu strefowo nadmiarowego (ZRS). Poniższy przykład przedstawia opcję -BackupStorageRedundancy dla testvault ustawioną na GeoRedundant.

    $vault1 = Get-AzRecoveryServicesVault -Name "testvault"
    Set-AzRecoveryServicesBackupProperty  -Vault $vault1 -BackupStorageRedundancy GeoRedundant
    

    Porada

    Wiele poleceń cmdlet usługi Azure Backup wymaga obiektu magazynu usługi Recovery Services jako danych wejściowych. Z tego powodu wygodnie jest przechowywać obiekt magazynu usługi Backup Recovery Services w zmiennej.

Wyświetlanie magazynów w subskrypcji

Aby wyświetlić wszystkie magazyny w subskrypcji, użyj polecenia Get-AzRecoveryServicesVault:

Get-AzRecoveryServicesVault

Dane wyjściowe są podobne do poniższego przykładu. Zwróć uwagę na to, że podano skojarzone wartości ResourceGroupName i Location.

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

Tworzenie kopii zapasowych maszyn wirtualnych platformy Azure

Użyj magazynu usługi Recovery Services, aby chronić maszyny wirtualne. Przed zastosowaniem ochrony ustaw kontekst magazynu (typ danych chronionych w magazynie) i sprawdź zasady ochrony. Zasady ochrony to harmonogram uruchamiania zadań tworzenia kopii zapasowej i czas przechowywania każdej migawki kopii zapasowej.

Ustawianie kontekstu magazynu

Przed włączeniem ochrony na maszynie wirtualnej użyj polecenia Set-AzRecoveryServicesVaultContext , aby ustawić kontekst magazynu. Po ustawieniu kontekst magazynu ma zastosowanie do wszystkich kolejnych poleceń cmdlet. Poniższy przykład ustawia kontekst magazynu dla magazynu, testvault.

Get-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "Contoso-docs-rg" | Set-AzRecoveryServicesVaultContext

Pobieranie identyfikatora magazynu

Planujemy wycofanie ustawienia kontekstu magazynu zgodnie z wytycznymi Azure PowerShell. Zamiast tego możesz przechowywać lub pobierać identyfikator magazynu i przekazywać go do odpowiednich poleceń. Jeśli więc nie ustawiono kontekstu magazynu lub chcesz określić polecenie do uruchomienia dla określonego magazynu, przekaż identyfikator magazynu jako "-vaultID" do wszystkich odpowiednich poleceń w następujący sposób:

$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$targetVault.ID

Lub

$targetVaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID

Modyfikowanie ustawień replikacji magazynu

Użyj polecenia Set-AzRecoveryServicesBackupProperty , aby ustawić konfigurację replikacji magazynu na LRS/GRS

Set-AzRecoveryServicesBackupProperty -Vault $targetVault -BackupStorageRedundancy GeoRedundant/LocallyRedundant

Uwaga

Nadmiarowość magazynu można modyfikować tylko wtedy, gdy nie ma żadnych elementów kopii zapasowych chronionych w magazynie.

Tworzenie zasad ochrony

Podczas tworzenia magazynu usługi Recovery Services jest on dostarczany z domyślnymi zasadami ochrony i przechowywania. Domyślne zasady ochrony wyzwalają zadanie tworzenia kopii zapasowej każdego dnia o określonej godzinie. Domyślne zasady przechowywania zachowują codzienny punkt odzyskiwania przez 30 dni. Możesz użyć domyślnych zasad, aby szybko chronić maszynę wirtualną i edytować zasady później przy użyciu różnych szczegółów.

Użyj polecenia Get-AzRecoveryServicesBackupProtectionPolicy , aby wyświetlić zasady ochrony dostępne w magazynie. To polecenie cmdlet umożliwia pobranie określonych zasad lub wyświetlenie zasad skojarzonych z typem obciążenia. Poniższy przykład pobiera zasady dla typu obciążenia AzureVM.

Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID

Dane wyjściowe są podobne do poniższego przykładu:

Name                 WorkloadType       BackupManagementType BackupTime                DaysOfWeek
----                 ------------       -------------------- ----------                ----------
DefaultPolicy        AzureVM            AzureVM              4/14/2016 5:00:00 PM

Uwaga

Strefa czasowa pola BackupTime w programie PowerShell to UTC. Jednak po wyświetleniu czasu tworzenia kopii zapasowej w Azure Portal czas jest dostosowywany do lokalnej strefy czasowej.

Zasady ochrony kopii zapasowych są skojarzone z co najmniej jedną zasadą przechowywania. Zasady przechowywania określają czas przechowywania punktu odzyskiwania przed jego usunięciem.

Domyślnie czas rozpoczęcia jest definiowany w obiekcie zasad harmonogramu. Użyj poniższego przykładu, aby zmienić godzinę rozpoczęcia na żądany czas rozpoczęcia. Żądany czas rozpoczęcia powinien być również w formacie UTC. W poniższym przykładzie przyjęto założenie, że żądany czas rozpoczęcia to 01:00 UTC dla codziennych kopii zapasowych.

$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z"
$UtcTime = $UtcTime.ToUniversalTime()
$schpol.ScheduleRunTimes[0] = $UtcTime

Ważne

Musisz podać czas rozpoczęcia tylko w 30 minutach wielokrotnych. W powyższym przykładzie może to być tylko "01:00:00" lub "02:30:00". Czas rozpoczęcia nie może być "01:15:00"

W poniższym przykładzie są przechowywane zasady harmonogramu i zasady przechowywania w zmiennych. W przykładzie użyto tych zmiennych do zdefiniowania parametrów podczas tworzenia zasad ochrony NewPolicy.

$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -WorkloadType "AzureVM" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $targetVault.ID

Dane wyjściowe są podobne do poniższego przykładu:

Name                 WorkloadType       BackupManagementType BackupTime                DaysOfWeek
----                 ------------       -------------------- ----------                ----------
NewPolicy           AzureVM            AzureVM              4/24/2016 1:30:00 AM

Włączanie ochrony

Po zdefiniowaniu zasad ochrony nadal musisz włączyć zasady dla elementu. Włącz ochronę za pomocą polecenia Enable-AzRecoveryServicesBackupProtection . Włączenie ochrony wymaga dwóch obiektów — elementu i zasad. Po skojarzeniu zasad z magazynem przepływ pracy tworzenia kopii zapasowej jest wyzwalany w czasie zdefiniowanym w harmonogramie zasad.

Ważne

Podczas korzystania z programu PowerShell w celu włączenia tworzenia kopii zapasowych dla wielu maszyn wirtualnych jednocześnie upewnij się, że z jedną zasadą nie jest skojarzonych więcej niż 100 maszyn wirtualnych. Jest to zalecane najlepsze rozwiązanie. Obecnie klient programu PowerShell nie blokuje jawnie, jeśli istnieje więcej niż 100 maszyn wirtualnych, ale sprawdzanie ma zostać dodane w przyszłości.

W poniższych przykładach włączono ochronę elementu V2VM przy użyciu zasad NewPolicy. Przykłady różnią się w zależności od tego, czy maszyna wirtualna jest zaszyfrowana, i jakiego typu szyfrowaniem.

Aby włączyć ochronę na nieszyfrowanych maszynach wirtualnych Resource Manager:

$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID

Aby włączyć ochronę zaszyfrowanych maszyn wirtualnych (zaszyfrowanych przy użyciu klucza szyfrowania kluczy i klucza szyfrowania kluczy), należy nadać usłudze Azure Backup uprawnienia do odczytu kluczy i wpisów tajnych z magazynu kluczy.

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

Aby włączyć ochronę zaszyfrowanych maszyn wirtualnych (zaszyfrowanych tylko przy użyciu klucza szyfrowania kluczy) należy nadać usłudze Azure Backup uprawnienia do odczytywania wpisów tajnych z magazynu kluczy.

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

Uwaga

Jeśli używasz chmury Azure Government, użyj wartości ff281ffe-705c-4f53-9f37-a40e6f2c68f3 parametru ServicePrincipalName w poleceniu cmdlet Set-AzKeyVaultAccessPolicy.

Jeśli chcesz selektywnie utworzyć kopię zapasową kilku dysków i wykluczyć inne, jak wspomniano w tych scenariuszach, możesz skonfigurować ochronę i utworzyć kopię zapasową tylko odpowiednich dysków, jak opisano tutaj.

Monitorowanie zadania tworzenia kopii zapasowej

Można monitorować długotrwałe operacje, takie jak zadania tworzenia kopii zapasowych, bez użycia Azure Portal. Aby uzyskać stan zadania w toku, użyj polecenia cmdlet Get-AzRecoveryservicesBackupJob . To polecenie cmdlet pobiera zadania tworzenia kopii zapasowej dla określonego magazynu i ten magazyn jest określony w kontekście magazynu. Poniższy przykład pobiera stan zadania w toku jako tablicę i przechowuje stan w zmiennej $joblist.

$joblist = Get-AzRecoveryservicesBackupJob –Status "InProgress" -VaultId $targetVault.ID
$joblist[0]

Dane wyjściowe są podobne do poniższego przykładu:

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   ----------
V2VM             Backup               InProgress            4/23/2016                5:00:30 PM                cf4b3ef5-2fac-4c8e-a215-d2eba4124f27

Zamiast sondowania tych zadań pod kątem ukończenia — co jest niepotrzebnym dodatkowym kodem — użyj polecenia cmdlet Wait-AzRecoveryServicesBackupJob . To polecenie cmdlet wstrzymuje wykonywanie do momentu zakończenia zadania lub osiągnięcia określonej wartości limitu czasu.

Wait-AzRecoveryServicesBackupJob -Job $joblist[0] -Timeout 43200 -VaultId $targetVault.ID

Zarządzanie kopiami zapasowymi maszyn wirtualnych platformy Azure

Modyfikowanie zasad ochrony

Aby zmodyfikować zasady ochrony, użyj polecenia Set-AzRecoveryServicesBackupProtectionPolicy , aby zmodyfikować obiekty SchedulePolicy lub RetentionPolicy.

Modyfikowanie zaplanowanego czasu

Podczas tworzenia zasad ochrony jest domyślnie przypisywany czas rozpoczęcia. W poniższych przykładach pokazano, jak zmodyfikować godzinę rozpoczęcia zasad ochrony.

$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

Modyfikowanie przechowywania

Poniższy przykład zmienia okres przechowywania punktu odzyskiwania na 365 dni.

$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

Konfigurowanie przechowywania migawek natychmiastowego przywracania

Uwaga

Od Azure PowerShell wersji 1.6.0 można zaktualizować okres przechowywania migawki natychmiastowego przywracania w zasadach przy użyciu programu PowerShell

$bkpPol = Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
$bkpPol.SnapshotRetentionInDays=7
Set-AzRecoveryServicesBackupProtectionPolicy -policy $bkpPol -VaultId $targetVault.ID

Wartość domyślna to 2. Można ustawić wartość z co najmniej 1 i maksymalnie 5. W przypadku cotygodniowych zasad tworzenia kopii zapasowych okres jest ustawiony na 5 i nie można go zmienić.

Tworzenie Azure Backup grupy zasobów podczas przechowywania migawek

Uwaga

Od Azure PowerShell wersji 3.7.0 można utworzyć i edytować grupę zasobów utworzoną do przechowywania migawek błyskawicznych.

Aby dowiedzieć się więcej na temat reguł tworzenia grup zasobów i innych istotnych szczegółów, zapoznaj się z dokumentacją Azure Backup grupy zasobów Virtual Machines.

$bkpPol = Get-AzureRmRecoveryServicesBackupProtectionPolicy -name "DefaultPolicyForVMs"
$bkpPol.AzureBackupRGName="Contosto_"
$bkpPol.AzureBackupRGNameSuffix="ForVMs"
Set-AzureRmRecoveryServicesBackupProtectionPolicy -policy $bkpPol

Wykluczanie dysków chronionej maszyny wirtualnej

Kopia zapasowa maszyny wirtualnej platformy Azure umożliwia selektywne wykluczanie lub dołączanie dysków, które są przydatne w tych scenariuszach. Jeśli maszyna wirtualna jest już chroniona przez kopię zapasową maszyny wirtualnej platformy Azure i jeśli utworzono kopię zapasową wszystkich dysków, możesz zmodyfikować ochronę w celu selektywnego dołączania lub wykluczania dysków, jak wspomniano tutaj.

Wyzwalanie kopii zapasowej

Użyj polecenia Backup-AzRecoveryServicesBackupItem , aby wyzwolić zadanie tworzenia kopii zapasowej. Jeśli jest to początkowa kopia zapasowa, jest to pełna kopia zapasowa. Kolejne kopie zapasowe przyjmują kopię przyrostową. W poniższym przykładzie kopia zapasowa maszyny wirtualnej jest przechowywana przez 60 dni.

$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

Dane wyjściowe są podobne do poniższego przykładu:

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   ----------
V2VM              Backup              InProgress          4/23/2016                  5:00:30 PM                cf4b3ef5-2fac-4c8e-a215-d2eba4124f27

Uwaga

Strefa czasowa pól StartTime i EndTime w programie PowerShell to UTC. Jednak gdy czas jest wyświetlany w Azure Portal, czas jest dostosowywany do lokalnej strefy czasowej.

Zmienianie zasad dla elementów kopii zapasowej

Możesz zmodyfikować istniejące zasady lub zmienić zasady elementu kopii zapasowej z Policy1 na Policy2. Aby przełączyć zasady dla elementu kopii zapasowej, pobierz odpowiednie zasady i utwórz kopię zapasową elementu i użyj polecenia Enable-AzRecoveryServices z elementem kopii zapasowej jako parametrem.

$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

Polecenie czeka na zakończenie konfigurowania kopii zapasowej i zwraca następujące dane wyjściowe.

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

Zatrzymywanie ochrony

Zachowywanie danych

Jeśli chcesz zatrzymać ochronę, możesz użyć polecenia cmdlet Disable-AzRecoveryServicesBackupProtection programu PowerShell. Spowoduje to zatrzymanie zaplanowanych kopii zapasowych, ale kopia zapasowa danych do tej pory zostanie zachowana na zawsze.

$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -Name "<backup item name>" -VaultId $targetVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID

Wznów tworzenie kopii zapasowej

Jeśli ochrona zostanie zatrzymana i dane kopii zapasowej zostaną zachowane, możesz wznowić ochronę jeszcze raz. Musisz przypisać zasady do odnowionej ochrony. Polecenie cmdlet jest takie samo jak w przypadku zasad zmiany elementów kopii zapasowej.

$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

Usuwanie danych kopii zapasowej

Aby całkowicie usunąć przechowywane dane kopii zapasowej w magazynie, dodaj flagę "-RemoveRecoveryPoints" /przełącz się do polecenia ochrony "disable".

Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID -RemoveRecoveryPoints

Przywracanie maszyny wirtualnej platformy Azure

Istnieje ważna różnica między przywracaniem maszyny wirtualnej przy użyciu Azure Portal a przywracaniem maszyny wirtualnej przy użyciu programu PowerShell. W programie PowerShell operacja przywracania jest wykonywana po utworzeniu dysków i informacji o konfiguracji z punktu odzyskiwania. Operacja przywracania nie tworzy maszyny wirtualnej. Aby utworzyć maszynę wirtualną na podstawie dysku, zobacz sekcję Tworzenie maszyny wirtualnej na podstawie przywróconych dysków. Jeśli nie chcesz przywracać całej maszyny wirtualnej, ale chcesz przywrócić lub odzyskać kilka plików z kopii zapasowej maszyny wirtualnej platformy Azure, zapoznaj się z sekcją odzyskiwania plików.

Porada

Operacja przywracania nie tworzy maszyny wirtualnej.

Poniższa ilustracja przedstawia hierarchię obiektów z programu RecoveryServicesVault w dół do elementu BackupRecoveryPoint.

Hierarchia obiektów usług Recovery Services z widoczną pozycją BackupContainer

Aby przywrócić dane kopii zapasowej, zidentyfikuj element kopii zapasowej i punkt odzyskiwania, który przechowuje dane punktu w czasie. Użyj polecenia Restore-AzRecoveryServicesBackupItem , aby przywrócić dane z magazynu do konta.

Podstawowe kroki przywracania maszyny wirtualnej platformy Azure to:

  • Wybierz maszynę wirtualną.
  • Wybierz punkt odzyskiwania.
  • Przywróć dyski.
  • Utwórz maszynę wirtualną na podstawie przechowywanych dysków.

Teraz możesz również użyć programu PowerShell, aby bezpośrednio przywrócić zawartość kopii zapasowej do maszyny wirtualnej (oryginalna/nowa), nie wykonując powyższych kroków oddzielnie. Aby uzyskać więcej informacji, zobacz Przywracanie danych do maszyny wirtualnej przy użyciu programu PowerShell.

Wybierz maszynę wirtualną (podczas przywracania plików)

Aby uzyskać obiekt programu PowerShell, który identyfikuje odpowiedni element kopii zapasowej, rozpocznij od kontenera w magazynie i przejmij drogę w dół hierarchii obiektów. Aby wybrać kontener reprezentujący maszynę wirtualną, użyj polecenia cmdlet Get-AzRecoveryServicesBackupContainer i potoku do polecenia 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

Wybierz punkt odzyskiwania (podczas przywracania plików)

Użyj polecenia cmdlet Get-AzRecoveryServicesBackupRecoveryPoint , aby wyświetlić listę wszystkich punktów odzyskiwania dla elementu kopii zapasowej. Następnie wybierz punkt odzyskiwania do przywrócenia. Jeśli nie masz pewności, którego punktu odzyskiwania użyć, dobrym rozwiązaniem jest wybranie najnowszego punktu RecoveryPointType = AppConsistent point na liście.

W poniższym skryscie zmienna $rp jest tablicą punktów odzyskiwania dla wybranego elementu kopii zapasowej z ostatnich siedmiu dni. Tablica jest sortowana w odwrotnej kolejności czasu z najnowszym punktem odzyskiwania w indeksie 0. Użyj standardowego indeksowania tablicy programu PowerShell, aby wybrać punkt odzyskiwania. W tym przykładzie $rp[0] wybiera najnowszy punkt odzyskiwania.

$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]

Dane wyjściowe są podobne do poniższego przykładu:

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

Przywracanie dysków

Użyj polecenia cmdlet Restore-AzRecoveryServicesBackupItem , aby przywrócić dane i konfigurację elementu kopii zapasowej do punktu odzyskiwania. Po zidentyfikowaniu punktu odzyskiwania użyj go jako wartości parametru -RecoveryPoint . W powyższym przykładzie $rp[0] był punktem odzyskiwania do użycia. W poniższym przykładowym kodzie $rp[0] to punkt odzyskiwania używany do przywracania dysku.

Aby przywrócić dyski i informacje o konfiguracji:

$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID
$restorejob

Przywracanie dysków zarządzanych

Uwaga

Jeśli utworzona maszyna wirtualna ma dyski zarządzane i chcesz przywrócić je jako dyski zarządzane, wprowadziliśmy możliwość modułu Azure PowerShell RM w wersji 6.7.0. dalej.

Podaj dodatkowy parametr TargetResourceGroupName , aby określić grupę zasobów, do której zostaną przywrócone dyski zarządzane.

Ważne

Zdecydowanie zaleca się użycie parametru TargetResourceGroupName do przywracania dysków zarządzanych, ponieważ powoduje znaczne zwiększenie wydajności. Jeśli ten parametr nie zostanie podany, nie możesz skorzystać z funkcji natychmiastowego przywracania, a operacja przywracania będzie wolniejsza w porównaniu. Jeśli celem jest przywrócenie dysków zarządzanych jako dysków niezarządzanych, nie należy podawać tego parametru i czyścić intencję -RestoreAsUnmanagedDisks , podając parametr . Parametr -RestoreAsUnmanagedDisks jest dostępny od Azure PowerShell 3.7.0. W przyszłych wersjach będzie obowiązkowe podanie jednego z tych parametrów dla odpowiedniego środowiska przywracania.

$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID

Plik VMConfig.JSON zostanie przywrócony do konta magazynu, a dyski zarządzane zostaną przywrócone do określonego docelowego RG.

Dane wyjściowe są podobne do poniższego przykładu:

WorkloadName     Operation          Status               StartTime                 EndTime            JobID
------------     ---------          ------               ---------                 -------          ----------
V2VM              Restore           InProgress           4/23/2016 5:00:30 PM                        cf4b3ef5-2fac-4c8e-a215-d2eba4124f27

Użyj polecenia cmdlet Wait-AzRecoveryServicesBackupJob , aby poczekać na zakończenie zadania przywracania.

Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200

Po zakończeniu zadania przywracania użyj polecenia cmdlet Get-AzRecoveryServicesBackupJobDetail , aby uzyskać szczegółowe informacje o operacji przywracania. Właściwość JobDetails zawiera informacje potrzebne do ponownego skompilowania maszyny wirtualnej.

$restorejob = Get-AzRecoveryServicesBackupJob -Job $restorejob -VaultId $targetVault.ID
$details = Get-AzRecoveryServicesBackupJobDetail -Job $restorejob -VaultId $targetVault.ID

Przywracanie dysków przy użyciu tożsamości zarządzanej

Azure Backup umożliwia również używanie tożsamości zarządzanej (MSI) podczas operacji przywracania w celu uzyskania dostępu do kont magazynu, na których należy przywrócić dyski. Ta opcja jest obecnie obsługiwana tylko w przypadku przywracania dysku zarządzanego.

Jeśli chcesz użyć przypisanej przez magazyn tożsamości zarządzanej do przywrócenia dysków, przekaż dodatkową flagę -UseSystemAssignedIdentity do polecenia Restore-AzRecoveryServicesBackupItem. Jeśli chcesz użyć tożsamości zarządzanej przypisanej przez użytkownika, przekaż parametr -UserAssignedIdentityId z identyfikatorem usługi Azure Resource Manager tożsamości zarządzanej magazynu jako wartości parametru. Zapoznaj się z tym artykułem , aby dowiedzieć się, jak włączyć tożsamość zarządzaną dla magazynów.

Przywracanie dysków selektywnych

Użytkownik może selektywnie przywrócić kilka dysków zamiast całej konfiguracji kopii zapasowej. Podaj wymagane jednostki LUN dysku jako parametr, aby przywrócić je tylko zamiast całego zestawu, jak opisano tutaj.

Ważne

Należy selektywnie utworzyć kopię zapasową dysków, aby selektywnie przywrócić dyski. Więcej szczegółów można znaleźć tutaj.

Po przywróceniu dysków przejdź do następnej sekcji, aby utworzyć maszynę wirtualną.

Przywracanie dysków do regionu pomocniczego

Jeśli przywracanie między regionami jest włączone w magazynie, za pomocą którego chroniono maszyny wirtualne, dane kopii zapasowej są replikowane do regionu pomocniczego. Możesz użyć danych kopii zapasowej do wykonania przywracania. Wykonaj następujące kroki, aby wyzwolić przywracanie w regionie pomocniczym:

  1. Pobierz identyfikator magazynu , za pomocą którego są chronione maszyny wirtualne.

  2. Wybierz prawidłowy element kopii zapasowej do przywrócenia.

  3. Wybierz odpowiedni punkt odzyskiwania w regionie pomocniczym, którego chcesz użyć do wykonania przywracania.

    Aby wykonać ten krok, uruchom następujące polecenie:

    $rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID
    $rp=$rp[0]
    
  4. Wykonaj polecenie cmdlet Restore-AzRecoveryServicesBackupItem z parametrem -RestoreToSecondaryRegion , aby wyzwolić przywracanie w regionie pomocniczym.

    Aby wykonać ten krok, uruchom następujące polecenie:

    $restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -VaultLocation $targetVault.Location -RestoreToSecondaryRegion -RestoreOnlyOSDisk
    

    Dane wyjściowe będą mieć postać podobną do następującej:

    WorkloadName     Operation             Status              StartTime                 EndTime          JobID
    ------------     ---------             ------              ---------                 -------          ----------
    V2VM             CrossRegionRestore   InProgress           4/23/2016 5:00:30 PM                       cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
    
  5. Wykonaj polecenie cmdlet Get-AzRecoveryServicesBackupJob z parametrem , -UseSecondaryRegion aby monitorować zadanie przywracania.

    Aby wykonać ten krok, uruchom następujące polecenie:

    Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -To (Get-Date).ToUniversalTime() -UseSecondaryRegion -VaultId $targetVault.ID
    

    Dane wyjściowe będą mieć postać podobną do następującej:

    WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
    ------------     ---------            ------               ---------                 -------                   -----
    V2VM             CrossRegionRestore   InProgress           2/8/2021 4:24:57 PM                                 2d071b07-8f7c-4368-bc39-98c7fb2983f7
    

Przywracanie między strefami

Możesz przywrócić przypięte maszyny wirtualne strefy platformy Azure w dowolnychstrefach dostępności w tym samym regionie.

Aby przywrócić maszynę wirtualną do innej strefy, określ TargetZoneNumber parametr w poleceniu cmdlet Restore-AzRecoveryServicesBackupItem .

$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID -TargetZoneNumber 3

Dane wyjściowe będą mieć postać podobną do następującej:

WorkloadName     Operation            Status               StartTime                 EndTime                   JobID
------------     ---------            ------               ---------                 -------                   -----
zonevmeus2       Restore              InProgress           1/3/2022 10:27:20 AM                                b2298...

Przywracanie między strefami jest obsługiwane tylko w scenariuszach, w których:

  • Źródłowa maszyna wirtualna jest przypięta strefą i nie jest szyfrowana.
  • Punkt odzyskiwania jest obecny tylko w warstwie magazynu. Migawki lub tylko migawki i warstwa magazynu nie są obsługiwane.
  • Opcja odzyskiwania polega na utworzeniu nowej maszyny wirtualnej lub przywróceniu dysków. Zastąp opcję dysków zastępuje dane źródłowe; dlatego opcja strefy dostępności nie ma zastosowania.
  • Tworzenie maszyn wirtualnych/dysków w tym samym regionie, gdy nadmiarowość magazynu to magazyn ZRS. Należy pamiętać, że nie działa, jeśli nadmiarowość magazynu to GRS, mimo że źródłowa maszyna wirtualna jest przypięta strefą.
  • Tworzenie maszyn wirtualnych/dysków w sparowanym regionie, gdy nadmiarowość magazynu jest włączona na potrzeby przywracania między regionami i jeśli sparowany region obsługuje strefy.

Zastępowanie dysków na maszynie wirtualnej platformy Azure

Aby zastąpić dyski i informacje o konfiguracji, wykonaj następujące kroki:

Tworzenie maszyny wirtualnej na podstawie przywróconych dysków

Po przywróceniu dysków wykonaj następujące kroki, aby utworzyć i skonfigurować maszynę wirtualną z dysku.

Uwaga

  1. Moduł AzureAz w wersji 3.0.0 lub nowszej jest wymagany.
  2. Aby utworzyć zaszyfrowane maszyny wirtualne z przywróconych dysków, rola platformy Azure musi mieć uprawnienia do wykonania akcji Microsoft.KeyVault/vaults/deploy/action. Jeśli Twoja rola nie ma tego uprawnienia, utwórz rolę niestandardową za pomocą tej akcji. Aby uzyskać więcej informacji, zobacz Role niestandardowe platformy Azure.
  3. Po przywróceniu dysków możesz teraz uzyskać szablon wdrożenia, którego można bezpośrednio użyć do utworzenia nowej maszyny wirtualnej. YOu nie potrzebują różnych poleceń cmdlet programu PowerShell do tworzenia zarządzanych/niezarządzanych maszyn wirtualnych, które są szyfrowane/niezaszyfrowane.

Tworzenie maszyny wirtualnej przy użyciu szablonu wdrożenia

Wynikowe szczegóły zadania dają identyfikator URI szablonu, który można wykonywać zapytania i wdrażać.

   $properties = $details.properties
   $storageAccountName = $properties["Target Storage Account Name"]
   $containerName = $properties["Config Blob Container Name"]
   $templateBlobURI = $properties["Template Blob Uri"]

Szablon nie jest dostępny bezpośrednio, ponieważ znajduje się on na koncie magazynu klienta i danym kontenerze. Aby uzyskać dostęp do tego szablonu, potrzebujemy kompletnego adresu URL (wraz z tymczasowym tokenem SAS).

  1. Najpierw wyodrębnij nazwę szablonu z identyfikatora templateBlobURI. Format został wymieniony poniżej. Możesz użyć operacji dzielenia w programie PowerShell, aby wyodrębnić ostateczną nazwę szablonu z tego adresu URL.

    https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
    
  2. Następnie można wygenerować pełny adres URL, jak wyjaśniono tutaj.

    Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name>
    $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
    
  3. Wdróż szablon, aby utworzyć nową maszynę wirtualną zgodnie z opisem w tym miejscu.

    New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup -TemplateUri $templateBlobFullURI
    

Tworzenie maszyny wirtualnej przy użyciu pliku konfiguracji

W poniższej sekcji wymieniono kroki niezbędne do utworzenia maszyny wirtualnej przy użyciu pliku VMConfig .

Uwaga

Zdecydowanie zaleca się użycie szablonu wdrożenia opisanego powyżej w celu utworzenia maszyny wirtualnej. Ta sekcja (punkty 1–6) zostanie wkrótce wycofana.

  1. Wykonaj zapytanie o przywrócone właściwości dysku, aby uzyskać szczegółowe informacje o zadaniu.

    $properties = $details.properties
    $storageAccountName = $properties["Target Storage Account Name"]
    $containerName = $properties["Config Blob Container Name"]
    $configBlobName = $properties["Config Blob Name"]
    
  2. Ustaw kontekst usługi Azure Storage i przywróć plik konfiguracji 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
    
  3. Użyj pliku konfiguracji JSON, aby utworzyć konfigurację maszyny wirtualnej.

    $vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
    
  4. Dołącz dysk systemu operacyjnego i dyski danych. Ten krok zawiera przykłady różnych konfiguracji zarządzanych i zaszyfrowanych maszyn wirtualnych. Użyj przykładu odpowiadającego konfiguracji maszyny wirtualnej.

    • Nienarządzane i nieszyfrowane maszyny wirtualne — użyj następującego przykładu dla maszyn wirtualnych niezarządzanych, nieszyfrowanych.
        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"
        }
    
    • Maszyny wirtualne niezarządzane i zaszyfrowane z Azure AD (tylko klucz BEK) — w przypadku niezarządzanych, zaszyfrowanych maszyn wirtualnych z Azure AD (zaszyfrowanych tylko przy użyciu klucza BEK) należy przywrócić klucz tajny do magazynu kluczy, zanim będzie można dołączyć dyski. Aby uzyskać więcej informacji, zobacz Przywracanie zaszyfrowanej maszyny wirtualnej z punktu odzyskiwania Azure Backup. Poniższy przykład przedstawia sposób dołączania dysków systemu operacyjnego i danych dla zaszyfrowanych maszyn wirtualnych. Podczas ustawiania dysku systemu operacyjnego pamiętaj o odpowiednim typie systemu operacyjnego.
        $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"
        }
    
    • Niezarządzane i zaszyfrowane maszyny wirtualne z Azure AD (BEK i KEK) — w przypadku niezarządzanych, zaszyfrowanych maszyn wirtualnych z Azure AD (zaszyfrowanych przy użyciu klucza szyfrowania kluczy i klucza szyfrowania kluczy) przywróć klucz i klucz tajny do magazynu kluczy przed dołączeniem dysków. Aby uzyskać więcej informacji, zobacz Przywracanie zaszyfrowanej maszyny wirtualnej z punktu odzyskiwania Azure Backup. Poniższy przykład przedstawia sposób dołączania dysków systemu operacyjnego i danych dla zaszyfrowanych maszyn wirtualnych.
        $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"
        }
    
    • Niezarządzane i zaszyfrowane maszyny wirtualne bez Azure AD (tylko klucz szyfrowania kluczy) — w przypadku niezarządzanych, zaszyfrowanych maszyn wirtualnych bez Azure AD (zaszyfrowanych tylko za pomocą klucza szyfrowania przy użyciu klucza szyfrowania kluczy), jeśli nie są dostępne przywracanie wpisów tajnych do magazynu kluczy przy użyciu procedury w temacie Przywracanie niezaszyfrowanej maszyny wirtualnej z punktu odzyskiwania Azure Backup. Następnie wykonaj następujące skrypty, aby ustawić szczegóły szyfrowania dla przywróconego obiektu blob systemu operacyjnego (ten krok nie jest wymagany dla obiektu blob danych). $dekurl można pobrać z przywróconego magazynu kluczy.

    Poniższy skrypt należy wykonać tylko wtedy, gdy źródłowa usługa keyVault/wpis tajny jest niedostępna.

        $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()
    

    Po udostępnieniu wpisów tajnych i ustawieniu szczegółów szyfrowania w obiekcie blob systemu operacyjnego dołącz dyski przy użyciu skryptu podanego poniżej.

    Jeśli źródłowa usługa keyVault/wpisy tajne są już dostępne, powyższe skrypty nie muszą być wykonywane.

        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"
        }
    
    • Niezarządzane i zaszyfrowane maszyny wirtualne bez Azure AD (BEK i KEK) — w przypadku niezarządzanych, zaszyfrowanych maszyn wirtualnych bez Azure AD (zaszyfrowanych przy użyciu klucza KEK klucza bek&), jeśli źródłowa funkcja keyVault/key/secret nie jest dostępna, przywraca klucz i wpisy tajne do magazynu kluczy przy użyciu procedury opisanej w temacie Przywracanie niezaszyfrowanej maszyny wirtualnej z punktu odzyskiwania Azure Backup. Następnie wykonaj następujące skrypty, aby ustawić szczegóły szyfrowania dla przywróconego obiektu blob systemu operacyjnego (ten krok nie jest wymagany dla obiektu blob danych). $dekurl i $kekurl można pobrać z przywróconego magazynu kluczy.

    Poniższy skrypt należy wykonać tylko wtedy, gdy źródłowy magazyn kluczy/klucz/wpis tajny jest niedostępny.

        $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()
    

    Po udostępnieniu klucza/wpisów tajnych i ustawieniu szczegółów szyfrowania w obiekcie blob systemu operacyjnego dołącz dyski przy użyciu skryptu podanego poniżej.

    Jeśli źródłowa funkcja keyVault/key/secrets jest dostępna, powyższe skrypty nie muszą być wykonywane.

        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"
        }
    

    Poniższy skrypt musi być wykonywany tylko wtedy, gdy źródłowa usługa keyVault/wpis tajny nie jest dostępna.

    $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
    

    Po udostępnieniu wpisów tajnych i ustawieniu szczegółów szyfrowania na dysku systemu operacyjnego w celu dołączenia przywróconych dysków zarządzanych zobacz Dołączanie dysku danych do maszyny wirtualnej z systemem Windows przy użyciu programu PowerShell.

    • Zarządzane i zaszyfrowane maszyny wirtualne bez Azure AD (BEK i KEK) — w przypadku zarządzanych, zaszyfrowanych maszyn wirtualnych bez Azure AD (zaszyfrowanych przy użyciu klucza KEK) & źródła keyVault/key/secret nie są dostępne przywracanie klucza i wpisów tajnych do magazynu kluczy przy użyciu procedury w temacie Przywracanie nieszyfrowanej maszyny wirtualnej z punktu odzyskiwania Azure Backup. Następnie wykonaj następujące skrypty, aby ustawić szczegóły szyfrowania na przywróconym dysku systemu operacyjnego (ten krok nie jest wymagany w przypadku dysków danych). $dekurl i $kekurl można pobrać z przywróconego magazynu kluczy.

    Poniższy skrypt należy wykonać tylko wtedy, gdy źródłowy magazyn kluczy/klucz/wpis tajny jest niedostępny.

    $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
    

    Po udostępnieniu klucza/wpisów tajnych i ustawieniu szczegółów szyfrowania na dysku systemu operacyjnego w celu dołączenia przywróconych dysków zarządzanych zobacz Dołączanie dysku danych do maszyny wirtualnej z systemem Windows przy użyciu programu PowerShell.

  5. Ustaw ustawienia sieci.

    $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
    
  6. Utwórz maszynę wirtualną.

    New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
    
  7. Wypychanie rozszerzenia usługi ADE. Jeśli rozszerzenia usługi ADE nie są wypychane, dyski danych zostaną oznaczone jako niezaszyfrowane, dlatego wymagane jest wykonanie poniższych kroków:

    • W przypadku maszyny wirtualnej z Azure AD — użyj następującego polecenia, aby ręcznie włączyć szyfrowanie dysków danych

      Tylko klucz szyfrowania

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -VolumeType Data
      

      Klucz szyfrowania bek i klucz szyfrowania kluczy

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId  -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
      
    • W przypadku maszyny wirtualnej bez Azure AD — użyj następującego polecenia, aby ręcznie włączyć szyfrowanie dysków danych.

      Jeśli podczas wykonywania polecenia zostanie wyświetlony monit o identyfikator AADClientID, musisz zaktualizować Azure PowerShell.

      Tylko klucz szyfrowania

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
      

      Klucz szyfrowania bek i klucz szyfrowania kluczy

      Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
      

Uwaga

Upewnij się, że ręcznie usuń pliki JASON utworzone w ramach zaszyfrowanego procesu przywracania dysku maszyny wirtualnej.

Przywracanie plików z kopii zapasowej maszyny wirtualnej platformy Azure

Oprócz przywracania dysków można również przywrócić poszczególne pliki z kopii zapasowej maszyny wirtualnej platformy Azure. Funkcja przywracania plików zapewnia dostęp do wszystkich plików w punkcie odzyskiwania. Zarządzaj plikami za pośrednictwem Eksplorator plików tak jak w przypadku zwykłych plików.

Podstawowe kroki przywracania pliku z kopii zapasowej maszyny wirtualnej platformy Azure to:

  • Wybierz maszynę wirtualną
  • Wybieranie punktu odzyskiwania
  • Instalowanie dysków punktu odzyskiwania
  • Kopiowanie wymaganych plików
  • Odinstalowywanie dysku

Wybierz maszynę wirtualną (podczas przywracania maszyny wirtualnej)

Aby uzyskać obiekt programu PowerShell, który identyfikuje odpowiedni element kopii zapasowej, rozpocznij od kontenera w magazynie i przejmij drogę w dół hierarchii obiektów. Aby wybrać kontener reprezentujący maszynę wirtualną, użyj polecenia cmdlet Get-AzRecoveryServicesBackupContainer i potoku do polecenia 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

Wybierz punkt odzyskiwania (podczas przywracania maszyny wirtualnej)

Użyj polecenia cmdlet Get-AzRecoveryServicesBackupRecoveryPoint , aby wyświetlić listę wszystkich punktów odzyskiwania dla elementu kopii zapasowej. Następnie wybierz punkt odzyskiwania do przywrócenia. Jeśli nie masz pewności, którego punktu odzyskiwania użyć, dobrym rozwiązaniem jest wybranie najnowszego punktu RecoveryPointType = AppConsistent point na liście.

W poniższym skryscie zmienna $rp jest tablicą punktów odzyskiwania dla wybranego elementu kopii zapasowej z ostatnich siedmiu dni. Tablica jest sortowana w odwrotnej kolejności czasu z najnowszym punktem odzyskiwania w indeksie 0. Użyj standardowego indeksowania tablicy programu PowerShell, aby wybrać punkt odzyskiwania. W tym przykładzie $rp[0] wybiera najnowszy punkt odzyskiwania.

$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]

Dane wyjściowe są podobne do poniższego przykładu:

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

Instalowanie dysków punktu odzyskiwania

Użyj polecenia cmdlet Get-AzRecoveryServicesBackupRPMountScript , aby pobrać skrypt w celu zainstalowania wszystkich dysków punktu odzyskiwania.

Uwaga

Dyski są instalowane jako dyski dołączone iSCSI do maszyny, na której jest uruchamiany skrypt. Instalowanie odbywa się natychmiast i nie są naliczane żadne opłaty.

Get-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID

Dane wyjściowe są podobne do poniższego przykładu:

OsType  Password        Filename
------  --------        --------
Windows e3632984e51f496 V2VM_wus2_8287309959960546283_451516692429_cbd6061f7fc543c489f1974d33659fed07a6e0c2e08740.exe

Uruchom skrypt na maszynie, na której chcesz odzyskać pliki. Aby wykonać skrypt, należy wprowadzić podane hasło. Po dołączeniu dysków użyj Eksplorator plików systemu Windows, aby przeglądać nowe woluminy i pliki. Aby uzyskać więcej informacji, zobacz artykuł Kopia zapasowa Odzyskiwanie plików z kopii zapasowej maszyny wirtualnej platformy Azure.

Odinstalowywanie dysków

Po skopiowaniu wymaganych plików użyj polecenia Disable-AzRecoveryServicesBackupRPMountScript , aby odinstalować dyski. Pamiętaj, aby odinstalować dyski, aby dostęp do plików punktu odzyskiwania został usunięty.

Disable-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID

Przywracanie danych do maszyny wirtualnej przy użyciu programu PowerShell

Teraz możesz bezpośrednio przywrócić dane do oryginalnej/alternatywnej maszyny wirtualnej bez wykonywania wielu kroków.

Przywracanie danych do oryginalnej maszyny wirtualnej

$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

Ostatnie polecenie wyzwala operację przywracania oryginalnej lokalizacji w celu przywrócenia danych w miejscu na istniejącej maszynie wirtualnej.

Przywracanie danych do nowo utworzonej maszyny wirtualnej

$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

Ostatnie polecenie wyzwala operację przywracania alternatywnej lokalizacji w celu utworzenia nowej maszyny wirtualnej w Target_RG grupie zasobów zgodnie z danymi wejściowymi określonymi przez parametry TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Dzięki temu dane zostaną przywrócone w wymaganej maszynie wirtualnej, sieci wirtualnej i podsieci.

Następne kroki

Jeśli wolisz używać programu PowerShell do kontaktowania się z zasobami platformy Azure, zobacz artykuł PowerShell Deploy and Manage Backup for Windows Server (Wdrażanie kopii zapasowych i zarządzanie nimi dla systemu Windows Server). Jeśli zarządzasz kopiami zapasowymi programu DPM, zobacz artykuł Wdrażanie kopii zapasowych programu DPM i zarządzanie nimi.