Kopia zapasowa spójna na poziomie aplikacji maszyn wirtualnych platformy Azure z systemem LinuxApplication-consistent backup of Azure Linux VMs

Podczas tworzenia migawek kopii zapasowych maszyn wirtualnych, spójność aplikacji oznacza, że aplikacje są uruchamiane po rozruchu maszyn wirtualnych po ich przywróceniu.When taking backup snapshots of your VMs, application consistency means your applications start when the VMs boot after being restored. Jak można wyobrazić, spójność aplikacji jest niezwykle ważna.As you can imagine, application consistency is extremely important. Aby zapewnić spójność maszyn wirtualnych z systemem Linux, można użyć skryptów przedskryptowych i skryptów po skrypcie dla systemu Linux do tworzenia kopii zapasowych spójnych z aplikacjami.To ensure your Linux VMs are application consistent, you can use the Linux pre-script and post-script framework to take application-consistent backups. Środowisko poprzedzające skrypt i skrypt po skrypcie obsługują maszyny wirtualne z systemem Linux wdrożone Azure Resource Manager.The pre-script and post-script framework supports Azure Resource Manager-deployed Linux virtual machines. Skrypty spójności aplikacji nie obsługują maszyn wirtualnych wdrożonych w Service Manager ani maszyn wirtualnych z systemem Windows.Scripts for application consistency do not support Service Manager-deployed virtual machines or Windows virtual machines.

Jak działa strukturaHow the framework works

Platforma udostępnia opcję uruchamiania niestandardowych skryptów przed i skryptów po utworzeniu migawek maszyn wirtualnych.The framework provides an option to run custom pre-scripts and post-scripts while you're taking VM snapshots. Przed wykonaniem migawki maszyny wirtualnej i po wykonaniu migawki maszyny wirtualnej skrypty wykonywane przed uruchomieniem skryptów są uruchamiane bezpośrednio.Pre-scripts run just before you take the VM snapshot, and post-scripts run immediately after you take the VM snapshot. Wstępne skrypty i skrypty po skrypcie zapewniają elastyczność umożliwiającą sterowanie aplikacją i środowiskiem, podczas gdy tworzysz migawki maszyn wirtualnych.Pre-scripts and post-scripts provide the flexibility to control your application and environment, while you're taking VM snapshots.

Przed skryptami wywoływane są natywne interfejsy API aplikacji, które w trybie spoczynku i opróżniają zawartość pamięci na dysk.Pre-scripts invoke native application APIs, which quiesce the IOs, and flush in-memory content to the disk. Te akcje zapewniają, że migawka jest spójna z aplikacją.These actions ensure the snapshot is application consistent. Skrypty po stronie używają natywnych interfejsów API aplikacji do odblokowania systemu IOs, co umożliwia aplikacji wznowienie normalnych operacji po migawce maszyny wirtualnej.Post-scripts use native application APIs to thaw the IOs, which enable the application to resume normal operations after the VM snapshot.

Kroki konfigurowania skryptu wstępnego i skryptuSteps to configure pre-script and post-script

  1. Zaloguj się jako użytkownik główny do maszyny wirtualnej z systemem Linux, dla której chcesz utworzyć kopię zapasową.Sign in as the root user to the Linux VM that you want to back up.

  2. Z usługi GitHubPobierz plik VMSnapshotScriptPluginConfig. JSON i skopiuj go do folderu /etc/Azure dla wszystkich maszyn wirtualnych, dla których chcesz utworzyć kopię zapasową.From GitHub, download VMSnapshotScriptPluginConfig.json and copy it to the /etc/azure folder for all VMs you want to back up. Jeśli folder /etc/Azure nie istnieje, utwórz go.If the /etc/azure folder doesn't exist, create it.

  3. Skopiuj skrypt poprzedzający i skrypt dla aplikacji na wszystkich maszynach wirtualnych, dla których planujesz utworzyć kopię zapasową.Copy the pre-script and post-script for your application on all VMs you plan to back up. Skrypty można skopiować do dowolnej lokalizacji na maszynie wirtualnej.You can copy the scripts to any location on the VM. Pamiętaj, aby zaktualizować pełną ścieżkę plików skryptów w pliku VMSnapshotScriptPluginConfig. JSON .Be sure to update the full path of the script files in the VMSnapshotScriptPluginConfig.json file.

  4. Upewnij się, że następujące uprawnienia dotyczą tych plików:Ensure the following permissions for these files:

    • VMSnapshotScriptPluginConfig. JSON: uprawnienie "600".VMSnapshotScriptPluginConfig.json: Permission “600.” Na przykład tylko użytkownik "root" powinien mieć uprawnienia "read" i "Write" do tego pliku, a użytkownik nie powinien mieć uprawnień "Execute".For example, only “root” user should have “read” and “write” permissions to this file, and no user should have “execute” permissions.

    • Plik skryptu wstępnego: uprawnienie "700".Pre-script file: Permission “700.” Na przykład tylko użytkownik "root" powinien mieć uprawnienia "read", "Write" i "Execute" dla tego pliku.For example, only “root” user should have “read”, “write”, and “execute” permissions to this file.

    • Po skrypcie Uprawnienie "700".Post-script Permission “700.” Na przykład tylko użytkownik "root" powinien mieć uprawnienia "read", "Write" i "Execute" dla tego pliku.For example, only “root” user should have “read”, “write”, and “execute” permissions to this file.

    Ważne

    Platforma zapewnia użytkownikom dużą moc.The framework gives users a lot of power. Zabezpiecz platformę i upewnij się, że tylko użytkownik "root" ma dostęp do krytycznych plików JSON i skryptów.Secure the framework, and ensure only “root” user has access to critical JSON and script files. Jeśli wymagania nie są spełnione, skrypt nie zostanie uruchomiony, co spowoduje awarię systemu plików i niespójną kopię zapasową.If the requirements aren't met, the script won't run, which results in a file system crash and inconsistent backup.

  5. Skonfiguruj plik VMSnapshotScriptPluginConfig. JSON zgodnie z opisem w tym miejscu:Configure VMSnapshotScriptPluginConfig.json as described here:

    • wtyczkaname: pozostaw to pole jako is lub skrypty mogą nie funkcjonować zgodnie z oczekiwaniami.pluginName: Leave this field as is, or your scripts might not work as expected.

    • preScriptLocation: Podaj pełną ścieżkę skryptu wstępnego na maszynie wirtualnej, dla której ma zostać utworzona kopia zapasowa.preScriptLocation: Provide the full path of the pre-script on the VM that's going to be backed up.

    • postScriptLocation: Podaj pełną ścieżkę do skryptu na maszynie wirtualnej, dla której ma zostać utworzona kopia zapasowa.postScriptLocation: Provide the full path of the post-script on the VM that's going to be backed up.

    • preScriptParams: podaj parametry opcjonalne, które muszą zostać przesłane do skryptu poprzedzającego.preScriptParams: Provide the optional parameters that need to be passed to the pre-script. Wszystkie parametry powinny znajdować się w cudzysłowach.All parameters should be in quotes. Jeśli używasz wielu parametrów, oddziel parametry przecinkami.If you use multiple parameters, separate the parameters with a comma.

    • postScriptParams: podaj parametry opcjonalne, które muszą zostać przesłane do skryptu po stronie.postScriptParams: Provide the optional parameters that need to be passed to the post-script. Wszystkie parametry powinny znajdować się w cudzysłowach.All parameters should be in quotes. Jeśli używasz wielu parametrów, oddziel parametry przecinkami.If you use multiple parameters, separate the parameters with a comma.

    • preScriptNoOfRetries: Ustaw liczbę ponownych prób wykonania skryptu wstępnego, jeśli wystąpił błąd przed zakończeniem.preScriptNoOfRetries: Set the number of times the pre-script should be retried if there is any error before terminating. Zero oznacza tylko jedną próbę, a nie ponawianie próby w przypadku wystąpienia błędu.Zero means only one try and no retry if there is a failure.

    • postScriptNoOfRetries: Ustaw liczbę ponownych prób wykonania skryptu po skrypcie, jeśli wystąpił błąd przed zakończeniem.postScriptNoOfRetries: Set the number of times the post-script should be retried if there is any error before terminating. Zero oznacza tylko jedną próbę, a nie ponawianie próby w przypadku wystąpienia błędu.Zero means only one try and no retry if there is a failure.

    • timeoutInSeconds: Określ indywidualne limity czasu dla skryptu wstępnego i po skrypcie (wartość maksymalna może być równa 1800).timeoutInSeconds: Specify individual timeouts for the pre-script and the post-script (maximum value can be 1800).

    • continueBackupOnFailure: Ustaw tę wartość na true (prawda ), jeśli chcesz, aby Azure Backup powracać do systemu plików w spójny sposób lub kopia zapasowa spójna na poziomie awarii w przypadku niepowodzenia skryptów poprzedzających skrypt lub po awarii.continueBackupOnFailure: Set this value to true if you want Azure Backup to fall back to a file system consistent/crash consistent backup if pre-script or post-script fails. Ustawienie wartości false powoduje niepowodzenie tworzenia kopii zapasowej w przypadku awarii skryptu (z wyjątkiem sytuacji, gdy maszyna wirtualna z jednym dyskiem powraca do kopii zapasowej spójnej na poziomie awarii, niezależnie od tego ustawienia).Setting this to false fails the backup in case of script failure (except when you have single-disk VM that falls back to crash-consistent backup regardless of this setting).

    • fsFreezeEnabled: Określ, czy system Linux fsfreeze powinien być wywoływany podczas tworzenia migawki maszyny wirtualnej w celu zapewnienia spójności systemu plików.fsFreezeEnabled: Specify whether Linux fsfreeze should be called while you're taking the VM snapshot to ensure file system consistency. Zalecamy pozostawienie tego ustawienia na wartość true , chyba że aplikacja ma zależność od wyłączenia fsfreeze.We recommend keeping this setting set to true unless your application has a dependency on disabling fsfreeze.

    • ScriptsExecutionPollTimeSeconds: Ustaw czas przejścia rozszerzenia do trybu uśpienia między każdą sondowaniem do wykonania skryptu.ScriptsExecutionPollTimeSeconds: Set the time the extension has to sleep between each poll to the script execution. Na przykład jeśli wartość jest równa 2, rozszerzenie sprawdza, czy wykonanie skryptu przedniego jest zakończone co 2 sekundy.For example, if the value is 2, the extension checks whether the pre/post script execution completed every 2 seconds. Minimalna i maksymalna wartość, którą może przyjmować odpowiednio 1 i 5.The minimum and maximum value it can take is 1 and 5 respectively. Wartość powinna być ściśle liczbą całkowitą.The value should be strictly an integer.

  6. Struktura skryptów jest teraz skonfigurowana.The script framework is now configured. Jeśli kopia zapasowa maszyny wirtualnej jest już skonfigurowana, kolejna kopia zapasowa wywołuje skrypty i wyzwala kopię zapasową spójną na poziomie aplikacji.If the VM backup is already configured, the next backup invokes the scripts and triggers application-consistent backup. Jeśli nie skonfigurowano kopii zapasowej maszyny wirtualnej, skonfiguruj ją przy użyciu kopii zapasowych maszyn wirtualnych platformy Azure do magazynów Recovery Services.If the VM backup is not configured, configure it by using Back up Azure virtual machines to Recovery Services vaults.

Rozwiązywanie problemówTroubleshooting

Pamiętaj o dodaniu odpowiedniego rejestrowania podczas pisania skryptu wstępnego i po skrypcie oraz Przejrzyj dzienniki skryptów, aby rozwiązać wszelkie problemy ze skryptami.Make sure you add appropriate logging while writing your pre-script and post-script, and review your script logs to fix any script issues. Jeśli nadal występują problemy z uruchamianiem skryptów, zapoznaj się z poniższą tabelą, aby uzyskać więcej informacji.If you still have problems running scripts, refer to the following table for more information.

BłądError Komunikat o błędzieError message Zalecana akcjaRecommended action
Pre-ScriptExecutionFailedPre-ScriptExecutionFailed Skrypt przed wystąpieniem zwrócił błąd, dlatego kopia zapasowa może nie być spójna z aplikacją.The pre-script returned an error, so backup might not be application-consistent. Zapoznaj się z dziennikami błędów dla skryptu, aby rozwiązać ten problem.Look at the failure logs for your script to fix the issue.
Po ScriptExecutionFailedPost-ScriptExecutionFailed Skrypt po stronie zwrócił błąd, który może mieć wpływ na stan aplikacji.The post-script returned an error that might impact application state. Zapoznaj się z dziennikami błędów dla skryptu, aby rozwiązać problem, i sprawdź stan aplikacji.Look at the failure logs for your script to fix the issue and check the application state.
Pre-ScriptNotFoundPre-ScriptNotFound Nie znaleziono skryptu wstępnego w lokalizacji określonej w pliku konfiguracji VMSnapshotScriptPluginConfig. JSON .The pre-script was not found at the location that's specified in the VMSnapshotScriptPluginConfig.json config file. Upewnij się, że skrypt jest obecny w ścieżce określonej w pliku konfiguracji, aby zapewnić kopię zapasową spójną na poziomie aplikacji.Make sure that pre-script is present at the path that's specified in the config file to ensure application-consistent backup.
Po ScriptNotFoundPost-ScriptNotFound Nie znaleziono skryptu wykonywanego w lokalizacji określonej w pliku konfiguracji VMSnapshotScriptPluginConfig. JSON .The post-script wasn't found at the location that's specified in the VMSnapshotScriptPluginConfig.json config file. Upewnij się, że skrypt jest obecny w ścieżce określonej w pliku konfiguracji, aby zapewnić kopię zapasową spójną na poziomie aplikacji.Make sure that post-script is present at the path that's specified in the config file to ensure application-consistent backup.
IncorrectPluginhostFileIncorrectPluginhostFile Plik hosta wtyczki , który jest dostarczany z rozszerzeniem VmSnapshotLinux, jest uszkodzony, więc nie można uruchomić skryptu wstępnego i skryptu, a kopia zapasowa nie będzie spójna z aplikacją.The Pluginhost file, which comes with the VmSnapshotLinux extension, is corrupted, so pre-script and post-script cannot run and the backup won't be application-consistent. Odinstaluj rozszerzenie VmSnapshotLinux i zostanie ono automatycznie zainstalowane ponownie przy użyciu następnej kopii zapasowej w celu rozwiązania problemu.Uninstall the VmSnapshotLinux extension, and it will automatically be reinstalled with the next backup to fix the problem.
IncorrectJSONConfigFileIncorrectJSONConfigFile Plik VMSnapshotScriptPluginConfig. JSON jest niepoprawny, dlatego nie można uruchomić skryptu wstępnego i skryptu, a kopia zapasowa nie będzie spójna z aplikacją.The VMSnapshotScriptPluginConfig.json file is incorrect, so pre-script and post-script cannot run and the backup won't be application-consistent. Pobierz kopię z usługi GitHub i skonfiguruj ją ponownie.Download the copy from GitHub and configure it again.
InsufficientPermissionforPre — skryptInsufficientPermissionforPre-Script W przypadku uruchamiania skryptów użytkownik "root" powinien być właścicielem pliku, a plik powinien mieć uprawnienia "700" (oznacza to, że tylko "właściciel" powinien mieć uprawnienia "Odczyt", "zapis" i "wykonywanie").For running scripts, "root" user should be the owner of the file and the file should have “700” permissions (that is, only "owner" should have “read”, “write”, and “execute” permissions). Upewnij się, że użytkownik "root" jest użytkownikiem "Owner" pliku skryptu i że tylko "Owner" ma uprawnienia "read", "Write" i "Execute".Make sure “root” user is the “owner” of the script file and that only "owner" has “read”, “write” and “execute” permissions.
InsufficientPermissionforPost — skryptInsufficientPermissionforPost-Script W przypadku uruchamiania skryptów użytkownik główny powinien być właścicielem pliku, a plik powinien mieć uprawnienia "700" (oznacza to, że tylko "właściciel" powinien mieć uprawnienia "Odczyt", "zapis" i "Execute").For running scripts, root user should be the owner of the file and the file should have “700” permissions (that is, only "owner" should have “read”, “write”, and “execute” permissions). Upewnij się, że użytkownik "root" jest użytkownikiem "Owner" pliku skryptu i że tylko "Owner" ma uprawnienia "read", "Write" i "Execute".Make sure “root” user is the “owner” of the script file and that only "owner" has “read”, “write” and “execute” permissions.
Przed-ScriptTimeoutPre-ScriptTimeout Upłynął limit czasu wykonywania skryptu wstępnego tworzenia kopii zapasowej spójnej na poziomie aplikacji.The execution of the application-consistent backup pre-script timed-out. Sprawdź skrypt i zwiększ limit czasu w pliku VMSnapshotScriptPluginConfig. JSON , który znajduje się w /etc/Azure.Check the script and increase the timeout in the VMSnapshotScriptPluginConfig.json file that's located at /etc/azure.
Post-ScriptTimeoutPost-ScriptTimeout Przekroczono limit czasu wykonywania skryptu po wykonaniu kopii zapasowej spójnej na poziomie aplikacji.The execution of the application-consistent backup post-script timed out. Sprawdź skrypt i zwiększ limit czasu w pliku VMSnapshotScriptPluginConfig. JSON , który znajduje się w /etc/Azure.Check the script and increase the timeout in the VMSnapshotScriptPluginConfig.json file that's located at /etc/azure.

Następne krokiNext steps

Konfigurowanie kopii zapasowej maszyny wirtualnej w magazynie Recovery ServicesConfigure VM backup to a Recovery Services vault