Puedes crear instantáneas coherentes de la aplicación de los discos conectados a instancias de máquina virtual (VM) de Linux. En general, la calidad de la instantánea de disco depende de la eficacia con la que las aplicaciones se puedan recuperar de las instantáneas que crees durante las cargas de trabajo de escritura con mucho contenido. Las instantáneas coherentes de aplicación capturan el estado de los datos de aplicación en el momento en que se realizó la copia de seguridad con todas las transacciones de la aplicación completadas y todas las escrituras pendientes vaciadas al disco.
Para crear instantáneas coherentes con la aplicación, detén las aplicaciones o los procesos del sistema operativo que escriben datos en el disco, vacía los búferes del disco y sincroniza el sistema de archivos antes de crear la instantánea. Según la aplicación, estos y otros pasos pueden ser necesarios para garantizar que todas las transacciones de la aplicación se completen y se capturen en la copia de seguridad.
Para crear una instantánea coherente de la aplicación de tus discos, usa el siguiente proceso:
- A fin de preparar el entorno invitado para lograr la coherencia de la aplicación, crea secuencias de comandos de shell personalizadas que se ejecuten antes y después de que se capture la instantánea.
- Establece la configuración de instantáneas en tu instancia de máquina virtual (VM).
- Crea una instantánea con la opción
guest-flush
habilitada. La opciónguest-flush
inicia las secuencias de comandos previas y posteriores de instantáneas.
Antes de comenzar
- Crea una VM de Linux
- Actualiza el entorno invitado.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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.
-
Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1
) - Para conectarte a una VM que puede ejecutarse como una cuenta de servicio:
Usuario de cuenta de servicio (v1) (
roles/iam.serviceAccountUser
) -
Para crear una instantánea de un disco zonal, haz lo siguiente:
compute.snapshots.create
-
compute.disks.createSnapshot
-
Para crear una instantánea de un disco regional mediante los datos del disco, sigue estos pasos:
compute.snapshots.create
-
compute.instances.useReadOnly
-
compute.disks.createSnapshot
-
Para crear una instantánea de un disco regional a partir de un punto de control de recuperación de réplicas, sigue estos pasos:
compute.snapshots.create
-
compute.disks.createSnapshot
-
Para crear una programación de instantáneas:
compute.resourcePolicies.create
-
Adjunta una programación de instantáneas a un disco:
-
compute.disks.addResourcePolicies
compute.resourcePolicies.use
-
-
Para borrar una instantánea, haz lo siguiente:
-
compute.snapshots.delete
compute.snapshots.list
-
- La coherencia de la aplicación solo está garantizada por el comportamiento de las secuencias de comandos personalizadas previas y posteriores a la instantánea, no por la operación de la instantánea en sí.
- Cuando usas la opción
guest-flush
en la solicitud de creación de la instantánea, la instantánea no se crea si la secuencia de comandos muestra un error o alcanza el límite de tiempo de espera. - Pausa las apps o los procesos del sistema operativo que se ejecutan en la VM que escribe datos en el disco persistente.
- Vacía los búferes del disco. Por ejemplo, MySQL tiene una declaración
FLUSH
. Usa cualquier herramienta que esté disponible para tu aplicación. - Sincroniza tu sistema de archivos.
- Discos conectados a SCSI: una lista separada por comas de pares
<target/lun>
. - Discos conectados a NVME: una lista separada por comas de pares
<nvme:namespace>
. Abre o crea el archivo de configuración del entorno invitado.
edit /etc/default/instance_configs.cfg
Agrega la siguiente sección al archivo de configuración y, luego, guarda los cambios y sal del editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Reemplaza lo siguiente:
ENABLED
: se establece entrue
para habilitar la función de instantánea coherente con la aplicación. El valor predeterminado esfalse
.TIMEOUT_SECONDS
: Es la cantidad de segundos que puede tardar la secuencia de comandos previa o posterior de la instantánea para terminar de ejecutarse antes de que se agote el tiempo de espera. El valor de número entero debe estar entre 0 y 300. El valor predeterminado es60
.
Reinicia el agente invitado para usar la nueva configuración.
$ sudo systemctl restart google-guest-agent.service
Dirígete a la página Crear una instantánea en la consola de Google Cloud.
Ir a la página Crear una instantánea- Ingresa un Nombre para la instantánea.
-
Selecciona un Tipo de instantánea. El valor predeterminado es una instantánea
STANDARD
, que es la mejor opción para la copia de seguridad a largo plazo y la recuperación ante desastres.Elige Instantánea de archivo para lograr una retención de datos más rentable.
- Opcional: ingresa una descripción de la instantánea.
- En Disco de origen, elige el disco existente del que deseas crear una instantánea.
En la sección Ubicación, elige la ubicación de almacenamiento de instantáneas.
La ubicación predeterminada predefinida o personalizada que se define en la configuración de la instantánea se elige de forma automática. De manera opcional, puedes anular la configuración de la instantánea y almacenar tus instantáneas en una ubicación de almacenamiento personalizada si haces lo siguiente:
Elige el tipo de ubicación de almacenamiento que deseas para tu instantánea.
- Elige Multirregional para obtener una mayor disponibilidad a un costo más alto.
- Elige Instantáneas regionales para tener más control sobre la ubicación física de los datos a un costo más bajo.
- En el campo Seleccionar ubicación, elige la región o multirregión específica que deseas usar. Para usar la región o multirregión más cercana al disco de origen, elige En función de la ubicación del disco.
- Marca la opción Habilitar instantánea coherente de la aplicación.
- Haz clic en Crear para crear la instantánea.
Para crear una instantánea en la ubicación predefinida o en la ubicación personalizada predeterminada que se estableció en la configuración de instantánea, usa el comando
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
-
De lo contrario, si quieres anular la configuración de la instantánea y crear una instantánea en una ubicación de almacenamiento personalizada, incluye la marca
--storage-location
para indicar dónde almacenar la instantánea.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
Reemplaza lo siguiente:
- SNAPSHOT_NAME: Es un nombre para la instantánea.
- SOURCE_ZONE: Es la zona del disco de origen.
- SOURCE_DISK_NAME: Es el nombre del volumen de disco desde el que deseas crear una instantánea.
- SNAPSHOT_TYPE: Es el tipo de instantánea, ya sea STANDARD o ARCHIVE.
Si no se especifica un tipo de instantánea, se crea una instantánea
STANDARD
. -
STORAGE_LOCATION: Opcional: la multirregión de Cloud Storage o la región de Cloud Storage en la que quieres almacenar la instantánea. Solo puedes especificar una ubicación de almacenamiento.
Usa el parámetro
--storage-location
solo cuando quieras anular la ubicación de almacenamiento predeterminada o personalizada establecida en tu configuración de instantáneas.
-
Para crear la instantánea en la ubicación predeterminada o personalizada establecida en tu configuración de instantáneas, haz una solicitud
POST
al métodosnapshots.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, }
-
De forma alternativa, para anular la configuración de instantáneas y crear una instantánea en una ubicación de almacenamiento personalizada, haz una solicitud
POST
al métodosnapshots.insert
y, además, incluye la propiedadstorageLocations
en tu solicitud: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: Es el ID del proyecto en el que deseas crear la instantánea.
- SNAPSHOT_NAME: Es un nombre para la instantánea.
- SOURCE_PROJECT_ID: Es el ID del proyecto del disco de origen.
- SOURCE_ZONE: Es la zona del disco de origen.
- SOURCE_DISK_NAME: Es el nombre del disco desde el que deseas crear una instantánea.
- SNAPSHOT_TYPE: Es el tipo de instantánea, ya sea STANDARD o ARCHIVE.
Si no se especifica un tipo de instantánea, se crea una instantánea
STANDARD
. -
STORAGE_LOCATION: Opcional: la multirregión de Cloud Storage o la región de Cloud Storage en la que quieres almacenar la instantánea. Solo puedes especificar una ubicación de almacenamiento.
Usa el parámetro
storageLocations
solo cuando quieras anular la ubicación de almacenamiento predeterminada o personalizada establecida en tu configuración de instantáneas. Ve al Explorador de registros en la consola de Google Cloud:
Pega la siguiente consulta en el panel Consulta de registro:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Ejecuta la consulta y, luego, investiga los registros:
Si no se encuentran secuencias de comandos previas o posteriores de instantáneas en la instancia para inmovilizar la actividad o las IOPS en el sistema de archivos, no se creará ninguna instantánea. Asegúrate de haber seguido los pasos en Crea secuencias de comandos previas y posteriores de instantáneas.
Si hay un error en la secuencia de comandos o se agotó el tiempo de espera de la secuencia de comandos, no se crea ninguna instantánea. Revisa Prepárate para usar instantáneas coherentes. Ten en cuenta que el tiempo de espera máximo que puedes configurar en el ajuste es de 300 segundos. Intenta repetir todo el proceso con las secuencias de comandos de muestra.
Se debe conectar un disco a una VM para capturar una instantánea del disco con
guest-flush
habilitado. Para aprender a crear una VM de Linux y conectar un disco, consulta Crea una VM.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles y permisos requeridos
Si deseas obtener los permisos que necesitas para administrar las instantáneas estándar, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para administrar instantáneas estándar. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para administrar instantáneas estándar:
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Limitaciones
Crear instantáneas coherentes con la aplicación en Linux tiene las siguientes limitaciones:
Crea secuencias de comandos previas y posteriores de instantáneas
Antes de continuar, actualiza el entorno invitado para que puedas ejecutar el software más reciente en tu VM de Linux.
Para facilitar la coherencia de la aplicación, crea secuencias de comandos de shell previas y posteriores a la instantánea a fin de que se ejecuten antes y después de que se capture la instantánea. Usa las secuencias de comandos previas y posteriores para operaciones como las siguientes:
En el siguiente ejemplo de código, se muestra una secuencia de comandos previa a la instantánea. Anota los caracteres
#!
iniciales.#!/bin/bash sudo fsfreeze -f [example-disk-location]
En el siguiente ejemplo de código, se muestra una secuencia de comandos posterior de instantáneas. Anota los caracteres
#!
iniciales.#!/bin/bash sudo fsfreeze -u [example-disk-location]
Debes guardar las secuencias de comandos en tu VM en el directorio
/etc/google/snapshots/
. La ruta completa de tu secuencia de comandos previa debe ser/etc/google/snapshots/pre.sh
y la ruta completa de tu secuencia de comandos de posterior debe ser/etc/google/snapshots/post.sh
.Haz referencia a discos específicos en tus secuencias de comandos
El primer argumento que se pasa a las secuencias de comandos previas y posteriores de instantáneas es una lista de discos para los que creas instantáneas. Puedes usar este argumento en tus secuencias de comandos para varias verificaciones. Por ejemplo, si tu VM tiene varios discos conectados, pero solo especificaste un disco en la solicitud de instantánea, puedes verificar para qué disco se crea la instantánea.
El argumento tiene el siguiente formato:
Por ejemplo, tu disco de arranque conectado a SCSI puede aparecer como
1/0
, mientras que un disco adicional conectado a la VM puede aparecer como2/0
.Edita el archivo de configuración del entorno invitado
Para configurar el ajuste de la instantánea coherente de la aplicación, actualiza un archivo de configuración específico en la VM.
Crea una instantánea con
guest-flush
habilitadoCrea una instantánea con la opción
guest-flush
habilitada a través de la consola de Google Cloud, Google Cloud CLI o REST. Esto comienza a ejecutar las secuencias de comandos previas y posteriores de instantáneas antes y después de que se captura la instantánea.Console
gcloud
Puedes crear tu instantánea en la política de ubicación de almacenamiento que define tu configuración de instantáneas o usar una ubicación de almacenamiento alternativa de tu elección. Para obtener más información, consulta Elige la ubicación de almacenamiento de tu instantánea.
REST
Puedes crear tu instantánea en la política de ubicación de almacenamiento que define tu configuración de instantáneas o usar una ubicación de almacenamiento alternativa de tu elección. Para obtener más información, consulta Elige la ubicación de almacenamiento de tu instantánea.
Reemplaza lo siguiente:
Crea una programación de instantáneas con
guest-flush
habilitadoUsa instantáneas programadas para crear copias de seguridad de tu Persistent Disk zonal y regional y de Google Cloud Hyperdisk de forma automática y con regularidad. Si quieres programar instantáneas coherentes de la aplicación para tu copia de seguridad, usa la opción
--guest-flush
cuando crees la programación de instantáneas, de modo que las secuencias de comandos previas y posteriores de instantáneas se ejecuten antes y después de cada instantánea programada.Por ejemplo, después de configurar el archivo de configuración del entorno invitado y crear secuencias de comandos personalizadas, el siguiente comando crea instantáneas coherentes con la aplicación por hora:
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
Si quieres obtener más información, consulta Acerca de las programaciones de instantáneas para discos.
Soluciona problemas
Soluciona problemas del proceso de programación y creación de instantáneas mediante la revisión de los registros y la verificación de las configuraciones.
Revisa los registros
Verifica las configuraciones
¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-12-22 (UTC)
-