Vous pouvez créer des instantanés d'application cohérents pour les disques persistants associés à des instances de machines virtuelles (VM) Linux. En général, la qualité de votre instantané de disque persistant dépend de la capacité de vos applications à récupérer les instantanés que vous créez lors de lourdes charges de travail en écriture. Les instantanés d'application cohérents capturent l'état des données d'application au moment de la sauvegarde, avec toutes les transactions d'application terminées et toutes les écritures en attente vidées sur le disque.
Pour créer des instantanés cohérents pour les applications, mettez en pause les applications ou les processus du système d'exploitation qui écrivent des données sur le disque persistant, videz les tampons du disque et synchronisez le système de fichiers avant de créer l'instantané. Selon votre application, ces étapes et d'autres étapes peuvent être nécessaires pour vous assurer que toutes les transactions d'application sont terminées et enregistrées dans la sauvegarde.
Pour créer un instantané d'application de vos disques persistants, procédez comme suit :
- Pour préparer l'environnement invité pour la cohérence des applications, créez des scripts shell personnalisés à exécuter avant et après la capture de l'instantané.
- Configurez les paramètres d'instantané sur votre instance de machine virtuelle (VM, virtual machine).
- Créez ensuite un instantané avec l'option
guest-flush
activée. L'optionguest-flush
démarre vos scripts pré et post instantané.
Avant de commencer
- Créer une VM Linux.
- Mettre à jour l'environnement invité.
-
Configurez l'authentification.
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
Console
Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.
gcloud
-
Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :
gcloud init
- Définissez une région et une zone par défaut.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :
gcloud init
-
Restrictions
- La cohérence de l'application n'est garantie que par le comportement de vos scripts pré et post instantané personnalisés, et non par l'opération d'instantané elle-même.
- Lorsque vous utilisez l'option
guest-flush
dans votre requête de création d'instantané, aucun instantané n'est créé en cas d'erreur ou d'expiration du script.
Créer des scripts pré et post instantané
Avant de continuer, mettez à jour l'environnement invité afin d'exécuter le dernier logiciel sur votre VM Linux.
Pour faciliter la cohérence d'application, créez des scripts shell pré et post-instantané qui seront exécutés avant et après la capture de l'instantané. Utilisez les scripts pré et post-instantané pour les opérations telles que :
- Mettre en veille les applications ou les processus du système d'exploitation exécutés sur la VM qui écrit des données sur le disque persistant.
- Vider les tampons de disque. Par exemple, MySQL possède une instruction
FLUSH
. Utilisez n'importe quel outil disponible pour votre application. - Synchronisez votre système de fichiers.
L'exemple de code suivant présente un script pré-instantané simple. Notez les caractères #!
de début. L'exécution de fsfreeze -f
bloque tout processus en cours d'exécution qui tente d'accéder au système de fichiers. Utilisez-le donc avec prudence si votre application est sensible à la latence.
#!/bin/bash sudo fsfreeze -f [example-disk-location]
L'exemple de code suivant présente un script post-instantané simple. Notez les caractères #!
de début.
#!/bin/bash sudo fsfreeze -u [example-disk-location]
Vous devez enregistrer vos scripts sur votre VM dans le répertoire /etc/google/snapshots/
. Le chemin d'accès complet de votre script préliminaire doit être /etc/google/snapshots/pre.sh
, et le chemin complet de votre script consécutif doit être /etc/google/snapshots/post.sh
.
Référencer des disques spécifiques dans vos scripts
Le premier argument transmis à vos scripts pré et post-instantané est une liste des disques dont les instantanés sont en cours de création. Vous pouvez utiliser cet argument dans vos scripts pour diverses vérifications. Par exemple, si votre VM est associée à plusieurs disques, mais que vous n'avez spécifié qu'un seul disque dans votre requête d'instantané, vous pouvez vérifier quel est le disque dont l'instantané est en cours de création.
Le format de l'argument est le suivant :
- Disques associés à SCSI : liste de paires
<target/lun>
séparées par une virgule. - Disques associés à NVMe : liste de paires
<nvme:namespace>
séparées par une virgule.
Par exemple, votre disque de démarrage peut apparaître au format 1/0
tandis qu'un disque supplémentaire associé à la VM peut apparaître au format 2/0
.
Modifier le fichier de configuration de votre environnement invité
Configurez les paramètres d'instantané cohérents de votre application en mettant à jour un fichier de configuration spécifique sur votre VM.
Ouvrez ou créez le fichier de configuration de votre environnement invité :
/etc/default/instance_configs.cfg
Ajoutez la section suivante au fichier de configuration :
[Snapshots] enabled = enabled timeout_in_seconds = timeout
Remplacez les valeurs en fonction des descriptions suivantes :
Clé Valeur Par défaut Description enabled
true
oufalse
false
Indique si la fonctionnalité d'instantané cohérent pour votre application est activée. timeout_in_seconds
Entier [0, 300] 60 Nombre de secondes que le script avant ou après l'instantané peut prendre pour terminer de s'exécuter avant une erreur d'expiration du délai. Notez que le nombre de secondes que l'opération d'instantané entière peut prendre pour s'effectuer avant qu'une erreur de délai avant expiration se produise est de 300 secondes par disque, et ceci n'est pas configurable. Enregistrez vos paramètres de configuration :
sudo systemctl restart google-guest-agent.service
Créer un instantané avec l'option guest-flush
activée
À l'aide de la console Google Cloud, de la Google Cloud CLI ou de REST, créez un instantané avec l'option guest-flush
activée. Cette opération démarre l'exécution des scripts pré et post instantané.
Console
- Accédez à la page Créer un instantané.
- Saisissez un nom d'instantané.
- Saisissez éventuellement une description de l'instantané.
- Sous Disque source, sélectionnez un disque existant à partir duquel vous souhaitez créer un instantané.
- Sélectionnez un emplacement de stockage.
- Cochez l'option Activer l'instantané d'application cohérent.
- Cliquez sur Create (Créer).
gcloud
Exécuter la commande
gcloud compute disks snapshot DISK_NAME [DISK_NAME ...] --guest-flush
Remplacez les éléments suivants :
DISK_NAME
est le nom d'un ou de plusieurs disques persistants à partir desquels vous souhaitez créer des instantanés.
La Google Cloud CLI attend que l'opération renvoie un état READY
ou FAILED
, ou atteigne le délai maximal avant expiration. Il renvoie alors les informations les plus récentes sur l'instantané.
REST
Envoyez une requête POST
à la méthode disks.createSnapshot
avec l'option guestFlush
activée :
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/createSnapshot?guestFlush=true
Remplacez l'élément suivant :
PROJECT_ID
: ID de votre projet.ZONE
: la zone dans laquelle se trouvent l'instance et le disque.DISK_NAME
: le nom du disque persistant dont vous souhaitez créer un instantané.
Créer une programmation d'instantanés avec l'option guest-flush
activée
Programmez la création d'instantanés pour sauvegarder régulièrement et automatiquement vos disques persistants zonaux et régionaux. Si vous souhaitez planifier des instantanés d'application cohérents pour votre sauvegarde, utilisez l'option --guest-flush
lorsque vous créez la programmation d'instantanés afin que les scripts pré et post instantané s'exécutent avant et après chaque instantané programmé.
Par exemple, après avoir configuré mes paramètres et créé des scripts personnalisés, la commande suivante crée des instantanés horaires cohérents pour l'application :
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush
Pour en savoir plus, consultez la section Créer des programmations d'instantanés pour des disques persistants.
Dépannage
Consultez les journaux des événements de création d'instantané :
- Dans la console Google Cloud, accédez à la page Journalisation de la suite Google Cloud Operations > Journaux :
Accéder à l'explorateur de journaux - Accédez à l'explorateur de journaux sur le panneau de navigation de gauche.
- Dans la liste Filtrer par étiquette ou texte recherché, sélectionnez Convertir en filtre avancé.
Remplacez le champ de filtre par le texte suivant :
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot"
- Dans la console Google Cloud, accédez à la page Journalisation de la suite Google Cloud Operations > Journaux :
Si aucun script n'est trouvé, aucun instantané n'est créé. Assurez-vous d'avoir suivi la procédure décrite dans la section Créer des scripts pré et post instantané.
En cas d'erreur ou de délai avant expiration du script, aucun instantané n'est créé. Consultez la page Préparer des instantanés cohérents. Notez que le délai avant expiration maximal que vous pouvez configurer dans vos paramètres est de 300 secondes. Répétez l'intégralité du processus en utilisant les exemples de scripts.
Un disque persistant doit être associé à une VM pour capturer un instantané du disque avec l'option
guest-flush
activée. Pour savoir comment créer une VM Linux et associer un disque persistant, consultez la page Créer une VM.