Vous pouvez créer des instantanés d'application cohérents pour les disques associés à des instances de machines virtuelles (VM) Linux. En général, la qualité de votre instantané de disque 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, 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 cohérent de vos disques, 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).
- 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é.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1
) - Pour se connecter à une VM pouvant s'exécuter en tant que compte de service :
Utilisateur du compte de service (v1) (
roles/iam.serviceAccountUser
) -
Pour créer un instantané d'un disque zonal :
compute.snapshots.create
compute.disks.createSnapshot
-
Pour créer un instantané d'un disque régional à l'aide des données stockées sur le disque :
compute.snapshots.create
-
compute.instances.useReadOnly
compute.disks.createSnapshot
-
Pour créer un instantané d'un disque régional à partir d'un point de contrôle de récupération d'instance dupliquée :
compute.snapshots.create
compute.disks.createSnapshot
-
Pour créer une programmation d'instantanés :
compute.resourcePolicies.create
-
Pour associer une programmation d'instantanés à un disque :
compute.disks.addResourcePolicies
compute.resourcePolicies.use
-
Pour supprimer un instantané, procédez comme suit :
-
compute.snapshots.delete
compute.snapshots.list
-
- 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é, l'instantané n'est pas créé si le script renvoie une erreur ou atteint le délai avant expiration. - 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.
- 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.
- 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. Ouvrez ou créez le fichier de configuration de votre environnement invité.
edit /etc/default/instance_configs.cfg
Ajoutez la section suivante au fichier de configuration, puis enregistrez vos modifications et quittez l'éditeur.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Remplacez les éléments suivants :
ENABLED
: définissez cette valeur surtrue
pour activer la fonctionnalité d'instantané cohérent pour l'application. La valeur par défaut estfalse
.TIMEOUT_SECONDS
: nombre de secondes que le script avant ou après l'instantané peut prendre pour terminer de s'exécuter avant expiration. La valeur entière doit être comprise entre 0 et 300. La valeur par défaut est60
.
Redémarrez l'agent invité pour utiliser les nouveaux paramètres de configuration.
$ sudo systemctl restart google-guest-agent.service
Accédez à la page Créer un instantané dans la console Google Cloud.
Accéder à la page "Créer un instantané"- Saisissez un nom d'instantané.
-
Sélectionnez un Type d'instantané. La valeur par défaut est un instantané
STANDARD
, qui est la meilleure option pour la sauvegarde à long terme et la reprise après sinistre.Choisissez Instantané d'archive pour une conservation des données plus économique.
- (Facultatif) Saisissez une Description de l'instantané.
- Sous Disque source, sélectionnez le disque existant dont vous souhaitez créer un instantané.
Dans la section Emplacement, choisissez l'emplacement de stockage de votre instantané.
L'emplacement par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés est automatiquement sélectionné. Vous pouvez éventuellement remplacer les paramètres d'instantané et stocker vos instantanés dans un emplacement de stockage personnalisé en procédant comme suit :
Choisissez le type d'emplacement de stockage souhaité pour votre instantané.
- Choisissez Multirégional pour une disponibilité plus élevée à un coût plus élevé.
- Choisissez des instantanés régionaux pour mieux contrôler l'emplacement physique de vos données, à moindre coût.
- Dans le champ Sélectionner un emplacement, sélectionnez la région ou l'emplacement multirégional spécifique que vous souhaitez utiliser. Pour utiliser la région ou l'emplacement multi-régional le plus proche de votre disque source, sélectionnez Basé sur l'emplacement du disque.
- Cochez l'option Activer l'instantané d'application cohérent.
- Cliquez sur Créer pour créer l'instantané.
Pour créer un instantané à l'emplacement par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantané, utilisez la commande
gcloud compute snapshots create
.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush
-
Sinon, pour remplacer les paramètres d'instantané et créer un instantané dans un emplacement de stockage personnalisé, incluez l'option
--storage-location
pour spécifier où stocker l'instantané.gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION \ --guest-flush
Remplacez les éléments suivants :
- SNAPSHOT_NAME : nom de l'instantané.
- SOURCE_ZONE : zone du disque source.
- SOURCE_DISK_NAME : nom du volume de disque à partir duquel vous souhaitez créer un instantané.
- SNAPSHOT_TYPE : type d'instantané, STANDARD ou ARCHIVE.
Si aucun type d'instantané n'est spécifié, un instantané
STANDARD
est créé. -
STORAGE_LOCATION : Facultatif : emplacement multirégional Cloud Storage ou la région Cloud Storage dans laquelle vous souhaitez stocker l'instantané. Vous ne pouvez spécifier qu'un seul emplacement de stockage.
N'utilisez le paramètre
--storage-location
que si vous souhaitez ignorer l'emplacement de stockage par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés.
-
Pour créer un instantané dans l'emplacement par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés, envoyez une requête
POST
à la méthodesnapshots.insert
:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "guestFlush": true, }
-
Pour remplacer les paramètres d'instantané et créer un instantané dans un emplacement de stockage personnalisé, vous pouvez aussi envoyer une requête
POST
à la méthodesnapshots.insert
et incluez la propriétéstorageLocations
dans votre requête :POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], "guestFlush": true, }
- DESTINATION_PROJECT_ID : ID du projet dans lequel vous souhaitez créer l'instantané.
- SNAPSHOT_NAME : nom de l'instantané.
- SOURCE_PROJECT_ID : ID de projet du disque source.
- SOURCE_ZONE : zone du disque source.
- SOURCE_DISK_NAME : nom du disque à partir duquel vous souhaitez créer un instantané.
- SNAPSHOT_TYPE : type d'instantané, STANDARD ou ARCHIVE.
Si aucun type d'instantané n'est spécifié, un instantané
STANDARD
est créé. -
STORAGE_LOCATION : Facultatif : emplacement multirégional Cloud Storage ou la région Cloud Storage dans laquelle vous souhaitez stocker l'instantané. Vous ne pouvez spécifier qu'un seul emplacement de stockage.
N'utilisez le paramètre
storageLocations
que si vous souhaitez ignorer l'emplacement de stockage par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés. Accédez à l'explorateur de journaux dans la console Google Cloud :
Collez la requête suivante dans le volet de requête de journal :
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Exécutez la requête et examinez les journaux :
Si aucun script avant ou après l'instantané n'est trouvé sur l'instance pour geler l'activité/les IOPS sur le système de fichiers, aucun instantané ne sera 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 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, consultez la page Créer une VM.
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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Rôles et autorisations requis
Pour obtenir les autorisations nécessaires pour gérer les instantanés standards, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour gérer les instantanés standards. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour gérer les instantanés standards :
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Limites
La création d'instantanés d'application cohérents sous Linux présente les limites suivantes :
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 :
L'exemple de code suivant présente un script pré-instantané simple. Notez les caractères
#!
de début.#!/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 pour lesquels vous créez des instantanés. 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 pour quel disque l'instantané est créé.
Le format de l'argument est le suivant :
Par exemple, votre disque de démarrage associé à SCSI peut apparaître au format
1/0
tandis qu'un disque supplémentaire associé à la VM peut apparaître au format2/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.
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
gcloud
Vous pouvez créer votre instantané dans la stratégie d'emplacement de stockage définie par vos paramètres d'instantanés ou en utilisant un autre emplacement de stockage de votre choix. Pour en savoir plus, consultez la section Choisir l'emplacement de stockage de vos instantanés.
REST
Vous pouvez créer votre instantané dans la stratégie d'emplacement de stockage définie par vos paramètres d'instantanés ou en utilisant un autre emplacement de stockage de votre choix. Pour en savoir plus, consultez la section Choisir l'emplacement de stockage de vos instantanés.
Remplacez les éléments suivants :
Créer une programmation d'instantanés avec l'option
guest-flush
activéeProgrammez des instantanés programmés pour sauvegarder régulièrement et automatiquement vos disques Persistent Disk et Google Cloud Hyperdisk 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é le fichier de configuration de votre environnement invité et créé des scripts personnalisés, la commande suivante crée des instantanés horaires cohérents avec les applications :
gcloud compute resource-policies create snapshot-schedule SCHEDULE_NAME \ --description "MY HOURLY SNAPSHOT SCHEDULE" \ --start-time 22:00 \ --hourly-schedule 4 \ --guest-flush \ --max-retention-days SNAPSHOT_RETENTION_AGE
Pour en savoir plus, consultez la section À propos des programmations d'instantanés pour des disques.
Dépannage
Résolvez les problèmes liés à la planification et à la création d'instantanés en examinant les journaux et en vérifiant les configurations.
Examiner les journaux
Vérifier les configurations
Étapes suivantes
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/22 (UTC).
-