Backup coerente con le applicazioni per macchine virtuali Linux in AzureApplication-consistent backup of Azure Linux VMs

Quando viene eseguito il backup di snapshot delle macchine virtuali, la coerenza a livello di applicazioni fa riferimento al fatto che le applicazioni vengono avviate all'avvio delle macchine virtuali dopo il ripristino.When taking backup snapshots of your VMs, application consistency means your applications start when the VMs boot after being restored. È pertanto evidente che la coerenza con le applicazioni è un fattore estremamente importante.As you can imagine, application consistency is extremely important. Per garantire che le macchine virtuali Linux siano coerenti a livello di applicazioni, è possibile usare il framework di script di pre-backup e script di post-backup Linux per eseguire backup coerenti con le applicazioni.To ensure your Linux VMs are application consistent, you can use the Linux pre-script and post-script framework to take application-consistent backups. Il framework degli script di pre e post-backup è supportato per le macchine virtuali Linux distribuite di Azure Resource Manager.The pre-script and post-script framework supports Azure Resource Manager-deployed Linux virtual machines. Gli script per la coerenza con le applicazioni non sono supportati per le macchine virtuali distribuite di Service Manager o le macchine virtuali di Windows.Scripts for application consistency do not support 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 run just before you take the VM snapshot, and post-scripts run immediately after you take the VM snapshot. Gli script di pre e post-backup offrono la flessibilità necessaria per controllare l'applicazione e l'ambiente quando si creano snapshot delle macchine virtuali.Pre-scripts and post-scripts provide the flexibility to control your application and environment, while you're taking VM snapshots.

Gli script di pre-backup richiamano API native delle applicazioni per disattivare gli I/O e scaricano sul disco il contenuto in memoria.Pre-scripts invoke native application APIs, which quiesce the IOs, and flush in-memory content to the disk. Queste azioni garantiscono la coerenza dello snapshot con le applicazioni.These actions ensure the snapshot is application consistent. Gli script di post-backup usano API native delle applicazioni native per sbloccare gli I/O e ciò consente all'applicazione di riprendere le normali operazioni dopo la creazione dello snapshot della macchina virtuale.Post-scripts use native application APIs to thaw the IOs, which enables the application to resume normal operations after the 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. Da GitHub scaricare VMSnapshotScriptPluginConfig.json e copiarlo nella cartella /etc/azure per tutte le macchine virtuali di cui si desidera eseguire il backup.From GitHub, download VMSnapshotScriptPluginConfig.json and copy it to the /etc/azure folder for all VMs you want to back up. Se la cartella /etc/azure non esiste, crearla.If the /etc/azure folder doesn't exist, create it.

  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 VMs 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. Controllare il framework e assicurarsi che solo l'utente "root" abbia accesso ai file di script e JSON critici.Secure the framework, and ensure only “root” user has access to critical JSON and script files. Se i requisiti non vengono soddisfatti, lo script non viene eseguito e pertanto si verificherà un arresto anomalo del file system e verrà creato un backup non coerente.If the requirements aren't met, the script won't run, which results in a file system crash and inconsistent backup.

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

    • pluginName: lasciare invariato il campo. In caso contrario, 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.All parameters should be in quotes. Se si usano più parametri, separare i parametri con una virgola.If you use multiple parameters, separate the parameters with a comma.

    • 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.All parameters should be in quotes. Se si usano più parametri, separare i parametri con una virgola.If you use multiple parameters, separate the parameters with a comma.

    • 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.

Tipi di 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