Backup coerente con le applicazioni di VM Linux di Azure (anteprima)Application-consistent backup of Azure Linux VMs (preview)

Questo articolo illustra il framework degli script di pre e post-backup di Linux e il relativo uso per eseguire backup coerenti con le applicazioni di VM Linux di Azure.This article talks about the Linux pre-script and post-script framework, and how it can be used to take application-consistent backups of Azure Linux VMs.

Nota

Il framework degli script di pre e post-backup è supportato solo per le macchine virtuali Linux distribuite di Azure Resource Manager.The pre-script and post-script framework is supported only for Azure Resource Manager-deployed Linux virtual machines. Gli script per la coerenza con l'applicazione non sono supportati per le macchine virtuali distribuite di Service Manager o le macchine virtuali di Windows.Scripts for application consistency are not supported for Service Manager-deployed virtual machines or Windows virtual machines.

Come funziona il frameworkHow the framework works

Il framework offre un'opzione per eseguire script di pre e post-backup durante la creazione di snapshot delle macchine virtuali.The framework provides an option to run custom pre-scripts and post-scripts while you're taking VM snapshots. Gli script pre-backup vengono eseguiti immediatamente prima della creazione dello snapshot della macchina virtuale e gli script post-backup vengono eseguiti immediatamente dopo la creazione dello snapshot della macchina virtuale.Pre-scripts are run just before you take the VM snapshot, and post-scripts are run immediately after you take the VM snapshot. Questo offre la flessibilità di controllare l'applicazione e l'ambiente quando si creano snapshot delle macchine virtuali.This gives you the flexibility to control your application and environment while you're taking VM snapshots.

In questo scenario, è importante assicurare backup coerenti con le applicazioni delle macchine virtuali.In this scenario, it's important to ensure application-consistent VM backup. Lo script di pre-backup può richiamare API native delle applicazioni per disattivare gli I/O e scaricare sul disco il contenuto in memoria.The pre-script can invoke application-native APIs to quiesce the IOs and flush in-memory content to the disk. Ciò garantisce che lo snapshot sia coerente con le applicazioni (ossia, che l'applicazione venga avviata quando viene avviata la macchina virtuale dopo il ripristino).This ensures that the snapshot is application-consistent (that is, that the application comes up when the VM is booted post-restore). Lo script di post-backup può essere utilizzato per sbloccare gli I/O.Post-script can be used to thaw the IOs. Consente questo mediante le API native delle applicazioni, in modo che l'applicazione possa riprendere le normali operazioni successivamente allo snapshot della macchina virtuale.It does this by using application-native APIs so that the application can resume normal operations post-VM snapshot.

Passaggi per configurare gli script di pre e post-backupSteps to configure pre-script and post-script

  1. Accedere come utente root alla macchina virtuale Linux VM di cui si vuole eseguire il backup.Sign in as the root user to the Linux VM that you want to back up.

  2. Scaricare VMSnapshotScriptPluginConfig.json da GitHub e quindi copiarlo nella cartella /etc/azure in tutte le macchine virtuali di cui si intende eseguire il backup.Download VMSnapshotScriptPluginConfig.json from GitHub, and then copy it to the /etc/azure folder on all the VMs that you're going to back up. Creare la directory /etc/azure se non esiste già.Create the /etc/azure directory if it doesn't exist already.

  3. Copiare lo script di pre-backup e lo script di post-backup per l'applicazione su tutte le macchine virtuali di cui eseguire il backup.Copy the pre-script and post-script for your application on all the VMs that you plan to back up. È possibile copiare gli script in qualsiasi posizione nella macchina virtuale.You can copy the scripts to any location on the VM. Assicurarsi di aggiornare il percorso completo del file di script nel file VMSnapshotScriptPluginConfig.json.Be sure to update the full path of the script files in the VMSnapshotScriptPluginConfig.json file.

  4. Assicurarsi che siano disponibili le autorizzazioni seguenti per i file:Ensure the following permissions for these files:

    • VMSnapshotScriptPluginConfig.json: autorizzazione "600".VMSnapshotScriptPluginConfig.json: Permission “600.” Ad esempio solo l'utente "root" deve avere le autorizzazioni di "lettura" e "scrittura" per questo file, nessun utente deve avere autorizzazioni di "esecuzione".For example, only “root” user should have “read” and “write” permissions to this file, and no user should have “execute” permissions.

    • File script di pre-backup: autorizzazione "700".Pre-script file: Permission “700.” Ad esempio, solo l'utente "root" deve avere le autorizzazioni di "lettura", "scrittura" ed "esecuzione" per questo file.For example, only “root” user should have “read”, “write”, and “execute” permissions to this file.

    • Script di post-backup: autorizzazione "700".Post-script Permission “700.” Ad esempio, solo l'utente "root" deve avere le autorizzazioni di "lettura", "scrittura" ed "esecuzione" per questo file.For example, only “root” user should have “read”, “write”, and “execute” permissions to this file.

    Importante

    Il framework offre notevoli potenzialità agli utenti.The framework gives users a lot of power. È importante assicurare che solo l'utente "root" abbia accesso ai file di script e JSON critici.It’s important that it's secure and that only “root” user has access to critical JSON and script files. Se i requisiti precedenti non sono soddisfatti, lo script non viene eseguito.If the previous requirements aren't met, the script doesn't run. In questo modo si genera un backup coerente con file system e arresto anomalo.This results in file system/crash consistent backup.

  5. Configurare VMSnapshotScriptPluginConfig.json come illustrato di seguito:Configure VMSnapshotScriptPluginConfig.json as described here:

    • pluginName: lasciare invariato il campo, altrimenti gli script potrebbero non funzionare come previsto.pluginName: Leave this field as is or your scripts might not work as expected.

    • preScriptLocation: specificare il percorso completo dello script di pre-backup nella VM di cui si eseguirà il backup.preScriptLocation: Provide the full path of the pre-script on the VM that's going to be backed up.

    • postScriptLocation: specificare il percorso completo dello script di post-backup nella VM di cui si eseguirà il backup.postScriptLocation: Provide the full path of the post-script on the VM that's going to be backed up.

    • preScriptParams: specificare i parametri facoltativi da passare allo script di pre-backup.preScriptParams: Provide the optional parameters that need to be passed to the pre-script. Tutti i parametri devono essere racchiusi tra virgolette e, se sono presenti più parametri, devono essere separati da virgole.All parameters should be in quotes, and should be comma-separated if there are multiple parameters.

    • postScriptParams: specificare i parametri facoltativi da passare allo script di post-backup.postScriptParams: Provide the optional parameters that need to be passed to the post-script. Tutti i parametri devono essere racchiusi tra virgolette e, se sono presenti più parametri, devono essere separati da virgole.All parameters should be in quotes, and should be comma-separated if there are multiple parameters.

    • preScriptNoOfRetries: impostare il numero di volte in cui lo script di pre-backup deve essere ritentato se è presente un errore prima di terminare.preScriptNoOfRetries: Set the number of times the pre-script should be retried if there is any error before terminating. Zero indica un solo tentativo, senza alcun nuovo tentativo in caso di errore.Zero means only one try and no retry if there is a failure.

    • postScriptNoOfRetries: impostare il numero di volte in cui lo script di post-backup deve essere ritentato se è presente un errore prima di terminare.postScriptNoOfRetries: Set the number of times the post-script should be retried if there is any error before terminating. Zero indica un solo tentativo, senza alcun nuovo tentativo in caso di errore.Zero means only one try and no retry if there is a failure.

    • timeoutInSeconds: specificare i timeout individuali per lo script di pre-backup e lo script di post-backup.timeoutInSeconds: Specify individual timeouts for the pre-script and the post-script.

    • continueBackupOnFailure: impostare questo valore su true se si desidera che Backup di Azure esegua il fallback a un backup coerente con file system/arresto anomalo in caso di errore dello script di pre-backup o post-backup.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. Impostando questo valore su false il backup viene interrotto in caso di errore dello script (tranne nel caso in cui sia presenta una macchina virtuale con un solo disco che esegue il fallback su un backup coerente con l'arresto anomalo indipendentemente da questa impostazione).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: specificare se il comando fsfreeze di Linux deve essere chiamato durante la creazione dello snapshot della macchina virtuale per garantire la coerenza del file system.fsFreezeEnabled: Specify whether Linux fsfreeze should be called while you're taking the VM snapshot to ensure file system consistency. Si consiglia di mantenere questa impostazione su true, a meno che l'applicazione abbia legami di dipendenza con la disattivazione di fsfreeze.We recommend keeping this setting set to true unless your application has a dependency on disabling fsfreeze.

  6. Il framework di script è ora configurato.The script framework is now configured. Se il backup della macchina virtuale è già configurato, il backup successivo richiamerà gli script e attiverà backup coerenti con le applicazioni.If the VM backup is already configured, the next backup invokes the scripts and triggers application-consistent backup. Se il backup della macchina virtuale non è configurato, configurarlo facendo riferimento a Backup di macchine virtuali di Azure in insiemi di credenziali di Servizi di ripristinoIf the VM backup is not configured, configure it by using Back up Azure virtual machines to Recovery Services vaults.

Risoluzione dei problemiTroubleshooting

Accertarsi di aggiungere le funzioni di log appropriate negli script di pre e post-backup e controllare i log di script per risolvere eventuali problemi degli script.Make sure you add appropriate logging while writing your pre-script and post-script, and review your script logs to fix any script issues. Se continuano a verificarsi problemi durante l'esecuzione degli script, vedere la tabella seguente per altre informazioni.If you still have problems running scripts, refer to the following table for more information.

ErroreError Messaggio di erroreError message Azione consigliataRecommended action
Pre-ScriptExecutionFailedPre-ScriptExecutionFailed Lo script di pre-backup ha restituito un errore perciò il backup potrebbe non essere coerente con le applicazioni.The pre-script returned an error, so backup might not be application-consistent. Controllare i log di errore dello script per risolvere il problema.Look at the failure logs for your script to fix the issue.
Post-ScriptExecutionFailedPost-ScriptExecutionFailed Lo script di post-backup ha restituito un errore che potrebbe compromettere lo stato dell'applicazione.The post-script returned an error that might impact application state. Controllare i log di errore dello script per risolvere il problema e verificare lo stato dell'applicazione.Look at the failure logs for your script to fix the issue and check the application state.
Pre-ScriptNotFoundPre-ScriptNotFound Lo script di pre-backup non è stato trovato nel percorso specificato nel file di configurazione VMSnapshotScriptPluginConfig.json.The pre-script was not found at the location that's specified in the VMSnapshotScriptPluginConfig.json config file. Assicurarsi che lo script di pre-backup sia presente nel percorso specificato nel file di configurazione per garantire un backup coerente con le applicazioni.Make sure that pre-script is present at the path that's specified in the config file to ensure application-consistent backup.
Post-ScriptNotFoundPost-ScriptNotFound Lo script di post-backup non è stato trovato nel percorso specificato nel file di configurazione VMSnapshotScriptPluginConfig.json.The post-script wasn't found at the location that's specified in the VMSnapshotScriptPluginConfig.json config file. Assicurarsi che lo script di post-backup sia presente nel percorso specificato nel file di configurazione per garantire un backup coerente con le applicazioni.Make sure that post-script is present at the path that's specified in the config file to ensure application-consistent backup.
IncorrectPluginhostFileIncorrectPluginhostFile Il file Pluginhost incluso con l'estensione VmSnapshotLinux è danneggiato perciò non è possibile eseguire gli script di pre e post-backup e il backup non sarà coerente con le applicazioni.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. Disinstallare l'estensione VmSnapshotLinux che sarà automaticamente reinstallata con il backup successivo per risolvere il problema.Uninstall the VmSnapshotLinux extension, and it will automatically be reinstalled with the next backup to fix the problem.
IncorrectJSONConfigFileIncorrectJSONConfigFile Il file VMSnapshotScriptPluginConfig.json non è corretto, perciò non è possibile eseguire gli script di pre e post-backup e il backup non sarà coerente con le applicazioni.The VMSnapshotScriptPluginConfig.json file is incorrect, so pre-script and post-script cannot run and the backup won't be application-consistent. Scaricare la copia da GitHub ed eseguirne di nuovo la configurazione.Download the copy from GitHub and configure it again.
InsufficientPermissionforPre-ScriptInsufficientPermissionforPre-Script Per eseguire gli script, l'utente "root" deve essere il proprietario del file e il file deve avere le autorizzazioni "700" (ovvero solo il "proprietario" deve possedere le autorizzazioni di "lettura", "scrittura" ed "esecuzione").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). Assicurarsi che l'utente "root" sia il "proprietario" del file di script e che solo il "proprietario" abbia le autorizzazioni di "lettura", "scrittura" ed "esecuzione".Make sure “root” user is the “owner” of the script file and that only "owner" has “read”, “write” and “execute” permissions.
InsufficientPermissionforPost-ScriptInsufficientPermissionforPost-Script Per eseguire gli script, l'utente root deve essere il proprietario del file e il file deve avere le autorizzazioni "700" (ovvero solo il "proprietario" deve possedere le autorizzazioni di "lettura", "scrittura" ed "esecuzione").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). Assicurarsi che l'utente "root" sia il "proprietario" del file di script e che solo il "proprietario" abbia le autorizzazioni di "lettura", "scrittura" ed "esecuzione".Make sure “root” user is the “owner” of the script file and that only "owner" has “read”, “write” and “execute” permissions.
Pre-ScriptTimeoutPre-ScriptTimeout Si è verificato il time-out dell'esecuzione dello script di pre-backup per un backup coerente della applicazioni.The execution of the application-consistent backup pre-script timed-out. Controllare lo script e aumentare il timeout nel file VMSnapshotScriptPluginConfig.json disponibile all'indirizzo /etc/azure.Check the script and increase the timeout in the VMSnapshotScriptPluginConfig.json file that's located at /etc/azure.
Post-ScriptTimeoutPost-ScriptTimeout Si è verificato il time-out dell'esecuzione dello script di post-backup per un backup coerente della applicazioni.The execution of the application-consistent backup post-script timed out. Controllare lo script e aumentare il timeout nel file VMSnapshotScriptPluginConfig.json disponibile all'indirizzo /etc/azure.Check the script and increase the timeout in the VMSnapshotScriptPluginConfig.json file that's located at /etc/azure.

Passaggi successiviNext steps

Configurare il backup di una VM in un insieme di credenziali di Servizi di ripristinoConfigure VM backup to a Recovery Services vault