Puedes crear capturas coherentes de aplicaciones de discos conectados a instancias de máquinas virtuales (VMs) de Linux. Por lo general, la calidad de la instantánea de disco depende de la capacidad de tus aplicaciones para recuperarse de las instantáneas que creas durante cargas de trabajo de escritura pesadas. Las capturas coherentes con la aplicación registran el estado de los datos de la aplicación en el momento de la copia de seguridad, con todas las transacciones de la aplicación completadas y todas las escrituras pendientes volcadas en el disco.
Para crear capturas coherentes con las aplicaciones, pausa las aplicaciones o los procesos del sistema operativo que escriban datos en el disco, vacía los búferes del disco y sincroniza el sistema de archivos antes de crear la captura. En función de tu aplicación, es posible que debas seguir estos y otros pasos para asegurarte de que todas las transacciones de la aplicación se completen y se incluyan en la copia de seguridad.
Para crear una captura coherente de aplicaciones de tus discos, sigue estos pasos:
- Para preparar el entorno invitado para la coherencia de las aplicaciones, crea secuencias de comandos shell personalizadas que se ejecuten antes y después de que se capture la instantánea.
- Configura los ajustes de las copias de seguridad en la instancia de máquina virtual (VM).
- Crea una captura con la opción
guest-flush
habilitada. La opciónguest-flush
inicia las secuencias de comandos previas y posteriores a la creación de la captura.
Antes de empezar
- Crea una máquina virtual de Linux.
- Actualiza el entorno de invitado.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles y permisos necesarios
Para obtener los permisos que necesitas para gestionar las copias de seguridad estándar, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:
-
Administrador de instancias de Compute (v. 1) (
roles/compute.instanceAdmin.v1
) -
Para conectarte a una VM que pueda ejecutarse como cuenta de servicio, sigue estos pasos:
Usuario de cuenta de servicio (v. 1) (
roles/iam.serviceAccountUser
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para gestionar las copias de seguridad estándar. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para gestionar las copias de seguridad estándar, se necesitan los siguientes permisos:
-
Para crear una captura de un disco zonal, sigue estos pasos:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Para crear una captura de un disco regional con 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éplica, sigue estos pasos:
-
compute.snapshots.create
-
compute.disks.createSnapshot
-
-
Para crear una programación de capturas, sigue estos pasos:
compute.resourcePolicies.create
-
Para adjuntar una programación de instantáneas a un disco, sigue estos pasos:
-
compute.disks.addResourcePolicies
-
compute.resourcePolicies.use
-
-
Para eliminar una instantánea, sigue estos pasos:
-
compute.snapshots.delete
-
compute.snapshots.list
-
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Limitaciones
Crear capturas coherentes de aplicaciones en Linux tiene las siguientes limitaciones:
- La coherencia de las aplicaciones solo se garantiza mediante el comportamiento de las secuencias de comandos personalizadas previas y posteriores a la creación de la captura, no mediante la propia operación de creación de la captura.
- Si usas la opción
guest-flush
en tu solicitud de creación de una captura, esta no se creará si la secuencia de comandos devuelve un error o alcanza el límite de tiempo de espera.
Crear secuencias de comandos previas y posteriores a la creación de capturas
Antes de continuar, actualiza el entorno invitado para que tu máquina virtual Linux ejecute el software más reciente.
Para facilitar la coherencia de las aplicaciones, crea scripts de shell previos y posteriores a la instantánea para que se ejecuten antes y después de que se capture la instantánea. Usa los scripts previos y posteriores para operaciones como las siguientes:
- Pausa las aplicaciones o los procesos del sistema operativo que se estén ejecutando en la VM y que escriban datos en el disco.
- Vacía los búferes de disco. Por ejemplo, MySQL tiene una instrucción
FLUSH
. Usa la herramienta que esté disponible para tu aplicación. - Sincroniza tu sistema de archivos.
En el siguiente ejemplo de código se muestra una secuencia de comandos previa a la creación de la instantánea. Ten en cuenta los primeros
#!
caracteres.#!/bin/bash sudo fsfreeze -f [example-disk-location]
En el siguiente ejemplo de código se muestra una secuencia de comandos posterior a la creación de la instantánea. Ten en cuenta los caracteres
#!
iniciales.#!/bin/bash sudo fsfreeze -u [example-disk-location]
Debes guardar las secuencias de comandos en la VM, en el directorio
/etc/google/snapshots/
. La ruta completa de tu pre-script debe ser/etc/google/snapshots/pre.sh
y la ruta completa de tu post-script debe ser/etc/google/snapshots/post.sh
.Hacer referencia a discos específicos en tus secuencias de comandos
El primer argumento que se transfiere a las secuencias de comandos previas y posteriores a la creación de la captura es una lista de discos para los que vas a crear capturas. Puedes usar este argumento en tus secuencias de comandos para realizar varias comprobaciones. Por ejemplo, si tu VM tiene varios discos conectados, pero solo has especificado uno en tu solicitud de creación de una captura, puedes comprobar para qué disco se está creando la captura.
El argumento tiene el siguiente formato:
- Discos conectados por SCSI: una lista separada por comas de pares
<target/lun>
. - Discos conectados por NVMe: lista separada por comas de pares
<nvme:namespace>
.
Por ejemplo, el disco de arranque conectado por SCSI puede aparecer como
1/0
, mientras que un disco adicional conectado a la VM puede aparecer como2/0
.Editar el archivo de configuración del entorno de invitado
Para configurar los ajustes de las capturas coherentes de aplicaciones, actualiza un archivo de configuración específico en tu máquina virtual.
Abre o crea el archivo de configuración de tu entorno invitado.
edit /etc/default/instance_configs.cfg
Añade la siguiente sección al archivo de configuración, guarda los cambios y cierra el editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Haz los cambios siguientes:
ENABLED
: asigna el valortrue
para habilitar la función de captura coherente de aplicación. El valor predeterminado esfalse
.TIMEOUT_SECONDS
: número de segundos que puede tardar en completarse la ejecución de la secuencia de comandos de la preinstantánea o la postinstantánea antes de que se agote el tiempo de espera. El valor entero debe estar comprendido entre 0 y 300. El valor predeterminado es60
.
Reinicia el agente invitado para usar los nuevos ajustes de configuración.
$ sudo systemctl restart google-guest-agent.service
Crear una captura con
guest-flush
habilitadoCon la Google Cloud consola, la interfaz de línea de comandos de Google Cloud o REST, crea una instantánea con la opción
guest-flush
habilitada. De esta forma, se ejecutan las secuencias de comandos previas y posteriores a la captura antes y después de que se capture la instantánea.Consola
Ve a la página Crear una instantánea de la consola de Google Cloud .
Ir a la página Crear una captura- Introduzca un nombre para la instantánea.
-
Selecciona un Tipo de instantánea. La opción predeterminada es una
STANDARD
, que es la mejor opción para las copias de seguridad a largo plazo y la recuperación tras desastres.Elige Archivar instantánea para conservar los datos de forma más rentable.
- Opcional: Introduce una descripción de la instantánea.
- En Disco de origen, selecciona el disco del que quieras crear una captura.
En la sección Ubicación, elige la ubicación de almacenamiento de tu foto de perfil.
Se selecciona automáticamente la ubicación predefinida o personalizada que hayas definido en los ajustes de la instantánea. También puedes anular los ajustes de las instantáneas y almacenarlas en una ubicación de almacenamiento personalizada haciendo lo siguiente:
Elige el tipo de ubicación de almacenamiento que quieras para tu copia.
- Elige Multirregional para disfrutar de una mayor disponibilidad a un coste más elevado.
- Elige Copias de seguridad regionales para tener más control sobre la ubicación física de tus datos a un coste más bajo.
- En el campo Seleccionar ubicación, elige la región o multirregión específica que quieras usar. Para usar la región o multirregión más cercana al disco de origen, selecciona Según la ubicación del disco.
- Marca la opción Habilitar captura coherente de aplicación.
- Haz clic en Crear para crear la instantánea.
gcloud
Puedes crear la captura en la política de ubicación de almacenamiento definida en los ajustes de la captura o usar una ubicación de almacenamiento alternativa que elijas. Para obtener más información, consulta el artículo Elegir la ubicación de almacenamiento de las copias de seguridad.
Para crear una captura en la ubicación predefinida o personalizada que hayas configurado en los ajustes de las capturas, 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
-
También puedes anular la configuración de la instantánea y crear una en una ubicación de almacenamiento personalizada. Para ello, incluye la marca
--storage-location
para indicar dónde quieres 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
-
Vista previa: Para crear una captura de ámbito regional en una región permitida, incluye la marca
--region
para indicar dónde quieres crear la captura.gcloud beta compute snapshots create SNAPSHOT_NAME \ --region=SNAPSHOT_SCOPE_REGION --source-disk=SOURCE_DISK_NAME \ --source-disk-zone=SOURCE_ZONE \ --snapshot-type=SNAPSHOT_TYPE
Haz los cambios siguientes:
- SNAPSHOT_NAME: nombre de la captura.
- SOURCE_ZONE: la zona del disco de origen.
- SOURCE_DISK_NAME: el nombre del volumen del disco del que quieres crear una captura.
- SNAPSHOT_TYPE: el tipo de instantánea, STANDARD o ARCHIVE.
Si no se especifica ningún tipo de captura, se crea una captura
STANDARD
. -
STORAGE_LOCATION: Opcional: En el caso de las capturas de ámbito global, la multirregión de Cloud Storage o la región de Cloud Storage en la que quieras almacenar la captura. Solo puedes especificar una ubicación de almacenamiento.
Usa el parámetro
--storage-location
solo cuando quieras anular la ubicación de almacenamiento predefinida o personalizada que hayas configurado en los ajustes de la instantánea. -
SNAPSHOT_SCOPE_REGION: opcional. En el caso de las instantáneas con ámbito regional, se trata de la región a la que se limita la instantánea. Si incluye este parámetro, no podrá usar el parámetro
--storage-location
. El STORAGE_LOCATION se define automáticamente como SNAPSHOT_SCOPE_REGION.
REST
Puedes crear la captura en la política de ubicación de almacenamiento definida en los ajustes de la captura o usar una ubicación de almacenamiento alternativa que elijas. Para obtener más información, consulta el artículo Elegir la ubicación de almacenamiento de las copias de seguridad.
-
Para crear una captura en la ubicación predefinida o personalizada que hayas configurado en los ajustes de capturas, 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, }
-
También puedes anular la configuración de la captura y crear una captura en una ubicación de almacenamiento personalizada. Para ello, haz una solicitud
POST
al métodosnapshots.insert
e 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, }
-
Vista previa) Para crear una captura con ámbito regional en una región permitida, haz una solicitud
POST
al métodosnapshots.insert
y define la región de creación:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE" }
Haz los cambios siguientes:
- DESTINATION_PROJECT_ID: el ID del proyecto en el que quieres crear la instantánea.
- SNAPSHOT_NAME: nombre de la captura.
- SOURCE_PROJECT_ID: el ID del proyecto del disco de origen.
- SOURCE_ZONE: la zona del disco de origen.
- SOURCE_DISK_NAME: Nombre del disco a partir del que quieres crear una captura.
- SNAPSHOT_TYPE: el tipo de instantánea, STANDARD o ARCHIVE.
Si no se especifica ningún tipo de captura, se crea una captura
STANDARD
. -
STORAGE_LOCATION: Opcional: En el caso de las capturas de ámbito global, la multirregión de Cloud Storage o la región de Cloud Storage en la que quieras almacenar la captura. Solo puedes especificar una ubicación de almacenamiento.
Usa el parámetro
storageLocations
solo cuando quieras anular la ubicación de almacenamiento predefinida o personalizada que hayas configurado en los ajustes de la instantánea. SNAPSHOT_SCOPE_REGION: opcional. En el caso de las instantáneas con ámbito regional, se trata de la región a la que se limita la instantánea. Si incluye este parámetro, no podrá usar el parámetro
storageLocations
. El STORAGE_LOCATION se define automáticamente como SNAPSHOT_SCOPE_REGION.
Crear una programación de capturas con
guest-flush
habilitadoUsa capturas programadas para crear copias de seguridad de tus discos persistentes y Google Cloud Hyperdisk de zona y regionales de forma periódica y automática. Si quieres programar capturas coherentes con la aplicación para tu copia de seguridad, usa la opción
--guest-flush
cuando crees la programación de capturas para que las secuencias de comandos previas y posteriores a la captura se ejecuten antes y después de cada captura programada.Por ejemplo, después de configurar el archivo de configuración del entorno de invitado y crear secuencias de comandos personalizadas, el siguiente comando crea snapshots coherentes de la aplicación cada 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
Para obtener más información, consulta el artículo Acerca de las programaciones de capturas de discos.
Solución de problemas
Para solucionar problemas con la programación y la creación de copias de seguridad, consulta los registros y comprueba las configuraciones.
Revisar los registros
Ve a la página Explorador de registros de la consola:Google Cloud
Pega la siguiente consulta en el panel de consulta de registros:
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Ejecuta la consulta e investiga los registros:
Comprobar configuraciones
Si no se encuentran scripts previos o posteriores a la creación de la instantánea en la instancia para congelar la actividad o las IOPS en el sistema de archivos, no se creará ninguna instantánea. Asegúrate de haber seguido los pasos que se indican en Crear scripts previos y posteriores a la creación de la instantánea.
Si se produce un error de secuencia de comandos o un tiempo de espera, no se crea ninguna captura. Consulta Preparar capturas coherentes. Ten en cuenta que el periodo de tiempo de espera máximo que puedes configurar en tus ajustes es de 300 segundos. Prueba a repetir todo el proceso con las secuencias de comandos de ejemplo.
Un disco debe estar conectado a una VM para poder crear una instantánea del disco con
guest-flush
habilitado. Para saber cómo crear una VM Linux y adjuntar un disco, consulta Crear una VM.
Siguientes pasos
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-