Puede crear instantáneas coherentes con las aplicaciones de los discos conectados a instancias de máquinas virtuales (VM) de Linux. En general, la calidad de la instantánea de su disco depende de qué tan bien sus aplicaciones pueden recuperarse de las instantáneas que crea durante cargas de trabajo de escritura intensas. Las instantáneas consistentes con la aplicación capturan 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 descargadas en el disco.
Para crear instantáneas que sean coherentes con las aplicaciones, suspenda las aplicaciones o los procesos del sistema operativo que escriben datos en el disco, vacíe los buffers del disco y sincronice el sistema de archivos antes de crear la instantánea. Dependiendo de su aplicación, es posible que se requieran estos y otros pasos para garantizar que todas las transacciones de la aplicación estén completas y capturadas en la copia de seguridad.
Para crear una instantánea coherente con la aplicación de sus discos, utilice el siguiente proceso:
- Para preparar el entorno invitado para la coherencia de la aplicación, cree scripts de shell personalizados para ejecutar antes y después de capturar la instantánea.
- Configure los ajustes de instantánea en su instancia de máquina virtual (VM).
- Cree una instantánea con la opción
guest-flush
habilitada. La opciónguest-flush
inicia los scripts de instantáneas anteriores y posteriores.
Antes de comenzar
- Cree una máquina virtual Linux .
- Actualizar el entorno de invitados .
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
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.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
-
Roles y permisos necesarios
Para obtener los permisos que necesita para administrar instantáneas estándar, solicite a su administrador que le otorgue los siguientes roles de IAM en el proyecto:
- Administrador de instancias informáticas (v1) (
roles/compute.instanceAdmin.v1
) - Para conectarse a una máquina virtual que pueda ejecutarse como una cuenta de servicio: Usuario de cuenta de servicio (v1) (
roles/iam.serviceAccountUser
)
Para obtener más información sobre cómo otorgar roles, consulte Administrar 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 se requieren, expanda la sección Permisos requeridos :
Permisos requeridos
Se requieren los siguientes permisos para administrar instantáneas estándar:
- Para crear una instantánea de un disco zonal:
-
en el proyectocompute.snapshots.create
-
en el discocompute.disks.createSnapshot
-
- Para crear una instantánea de un disco regional utilizando los datos del disco:
-
en el proyectocompute.snapshots.create
-
en la máquina virtual de origencompute.instances.useReadOnly
-
en el discocompute.disks.createSnapshot
-
- Para crear una instantánea de un disco regional desde un punto de control de recuperación de réplica:
-
en el proyectocompute.snapshots.create
-
en el discocompute.disks.createSnapshot
-
- Para crear una programación de instantáneas:
en el proyecto u organización.compute.resourcePolicies.create
- Para adjuntar una programación de instantáneas a un disco:
-
en el discocompute.disks.addResourcePolicies
-
en la política de recursos.compute.resourcePolicies.use
-
- Para eliminar una instantánea:
-
en la instantáneacompute.snapshots.delete
-
en el proyectocompute.snapshots.list
-
Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .
Limitaciones
La creación de instantáneas coherentes con las aplicaciones en Linux tiene las siguientes limitaciones:
- La coherencia de la aplicación está garantizada únicamente por el comportamiento de los scripts personalizados previos y posteriores a la instantánea, no por la operación de la instantánea en sí.
- Cuando utiliza la opción
guest-flush
en su solicitud de creación de instantánea, la instantánea no se crea si el script devuelve un error o alcanza el límite de tiempo de espera.
Cree scripts previos y posteriores a la instantánea
Antes de continuar, actualice el entorno invitado para ejecutar el software más reciente en su máquina virtual Linux.
Para facilitar la coherencia de la aplicación, cree scripts de shell previos y posteriores a la instantánea para ejecutarlos antes y después de capturar la instantánea. Utilice los scripts previos y posteriores para operaciones como:
- Pausar aplicaciones o procesos del sistema operativo que se ejecutan en la máquina virtual que escribe datos en el disco.
- Vacíe los buffers del disco. Por ejemplo, MySQL tiene una declaración
FLUSH
. Utilice cualquier herramienta que esté disponible para su aplicación. - Sincroniza tu sistema de archivos.
El siguiente ejemplo de código muestra un script previo a la instantánea. Tenga en cuenta el #!
personajes.
#!/bin/bash sudo fsfreeze -f [example-disk-location]
El siguiente ejemplo de código muestra un script posterior a la instantánea. Tenga en cuenta el #!
personajes.
#!/bin/bash sudo fsfreeze -u [example-disk-location]
Debe guardar sus scripts en su VM en el directorio /etc/google/snapshots/
. La ruta completa de su secuencia de comandos previa debe ser /etc/google/snapshots/pre.sh
y la ruta completa de su secuencia de comandos posterior debe ser /etc/google/snapshots/post.sh
.
Hacer referencia a discos específicos en sus scripts
El primer argumento que se pasa a los scripts previos y posteriores a la instantánea es una lista de discos para los que está creando instantáneas. Puede utilizar este argumento en sus scripts para varias comprobaciones. Por ejemplo, si su máquina virtual tiene varios discos conectados pero solo especificó un disco en su solicitud de instantánea, puede verificar para qué disco se está creando la instantánea.
El argumento tiene el formato siguiente:
- Discos conectados SCSI : una lista separada por comas de pares
<target/lun>
. - Discos conectados a NVME : una lista separada por comas de pares
<nvme:namespace>
.
Por ejemplo, su disco de arranque conectado SCSI podría aparecer como 1/0
, mientras que un disco adicional conectado a la VM podría aparecer como 2/0
.
Edite el archivo de configuración de su entorno de invitados
Configure los ajustes de instantáneas coherentes de su aplicación actualizando un archivo de configuración específico en su VM.
Abra o cree su archivo de configuración del entorno invitado.
edit /etc/default/instance_configs.cfg
Agregue la siguiente sección al archivo de configuración, luego guarde los cambios y salga del editor.
[Snapshots] enabled = ENABLED timeout_in_seconds = TIMEOUT_SECONDS
Reemplace lo siguiente:
-
ENABLED
: Establezca entrue
para habilitar la función de instantánea consistente con la aplicación. El valor predeterminado esfalse
. TIMEOUT_SECONDS
: el número de segundos que el script previo o posterior a la instantánea puede tardar en finalizar su ejecución antes de que se agote el tiempo de espera. El valor entero debe estar entre 0 y 300. El valor predeterminado es60
.
-
Reinicie el agente invitado para utilizar los nuevos ajustes de configuración.
$ sudo systemctl restart google-guest-agent.service
Cree una instantánea con guest-flush
habilitada
Usando la consola de Google Cloud, la CLI de Google Cloud o REST, cree una instantánea con la opción guest-flush
habilitada. Esto comienza a ejecutar los scripts previos y posteriores a la instantánea antes y después de capturar la instantánea.
Consola
Vaya a la página Crear una instantánea en la consola de Google Cloud.
Vaya a la página Crear una instantánea- Ingrese un nombre de instantánea.
Seleccione un tipo de instantánea . El valor predeterminado es una instantánea
STANDARD
, que es la mejor opción para realizar copias de seguridad a largo plazo y recuperación ante desastres.Elija Archivar instantánea para una retención de datos más rentable.
- Opcional: ingrese una descripción de la instantánea.
- En Disco de origen , seleccione el disco existente del que desea crear una instantánea.
En la sección Ubicación , elija la ubicación de almacenamiento de su instantánea .
La ubicación predeterminada predefinida o personalizada definida en la configuración de su instantánea se selecciona automáticamente. Opcionalmente, puede anular la configuración de la instantánea y almacenarla en una ubicación de almacenamiento personalizada haciendo lo siguiente:
Elija el tipo de ubicación de almacenamiento que desea para su instantánea.
- Elija Multirregional para obtener mayor disponibilidad a un costo mayor.
- Elija Instantáneas regionales para tener más control sobre la ubicación física de sus datos a un costo menor.
- En el campo Seleccionar ubicación , seleccione la región específica o multirregión que desea utilizar. Para usar la región o multirregión más cercana a su disco de origen, seleccione Basado en la ubicación del disco .
- Marque la opción Habilitar instantánea consistente con la aplicación .
- Haga clic en Crear para crear la instantánea.
nube de gcloud
Puede crear su instantánea en la política de ubicación de almacenamiento definida por la configuración de su instantánea o utilizando una ubicación de almacenamiento alternativa de su elección. Para obtener más información, consulte Elija su ubicación de almacenamiento de instantáneas .
Para crear una instantánea en la ubicación predeterminada predefinida o personalizada configurada en la configuración de la 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
Alternativamente, para anular la configuración de la instantánea y crear una instantánea en una ubicación de almacenamiento personalizada, incluya la marca
--storage-location
para indicar dónde almacenar su 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 instantánea con ámbito regional en una región permitida, incluya el indicador
--region
para indicar dónde crear su instantánea.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
Reemplace lo siguiente:
- SNAPSHOT_NAME : un nombre para la instantánea.
- SOURCE_ZONE : La zona del disco de origen.
- SOURCE_DISK_NAME : el nombre del volumen de disco desde el que desea crear una instantánea.
- SNAPSHOT_TYPE : el tipo de instantánea, ya sea ESTÁNDAR o ARCHIVO . Si no se especifica un tipo de instantánea, se crea una instantánea
STANDARD
. STORAGE_LOCATION : Opcional: para instantáneas de alcance global, la región múltiple de Cloud Storage o la región de Cloud Storage donde desea almacenar su instantánea. Puede especificar solo una ubicación de almacenamiento.
Utilice el parámetro
--storage-location
solo cuando desee anular la ubicación de almacenamiento predeterminada predefinida o personalizada configurada en la configuración de su instantánea.SNAPSHOT_SCOPE_REGION : Opcional: para instantáneas con ámbito regional, la región a la que tiene alcance la instantánea. Si incluye este parámetro, no podrá utilizar el parámetro
--storage-location
. STORAGE_LOCATION se establece automáticamente en SNAPSHOT_SCOPE_REGION .
DESCANSAR
Puede crear su instantánea en la política de ubicación de almacenamiento definida por la configuración de su instantánea o utilizando una ubicación de almacenamiento alternativa de su elección. Para obtener más información, consulte Elija su ubicación de almacenamiento de instantáneas .
Para crear una instantánea en la ubicación predeterminada predefinida o personalizada configurada en la configuración de su instantánea, realice 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, }
Como alternativa, para anular la configuración de la instantánea y crear una instantánea en una ubicación de almacenamiento personalizada, realice una solicitud
POST
al métodosnapshots.insert
e incluya la propiedadstorageLocations
en su 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 instantánea con ámbito regional en una región permitida, realice una solicitud
POST
al métodosnapshots.insert
y defina 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" }
Reemplace lo siguiente:
- DESTINATION_PROJECT_ID : el ID del proyecto en el que desea crear la instantánea.
- SNAPSHOT_NAME : un nombre para la instantánea.
- SOURCE_PROJECT_ID : el ID del proyecto del disco de origen.
- SOURCE_ZONE : La zona del disco de origen.
- SOURCE_DISK_NAME : el nombre del disco desde el que desea crear una instantánea.
- SNAPSHOT_TYPE : el tipo de instantánea, ya sea ESTÁNDAR o ARCHIVO . Si no se especifica un tipo de instantánea, se crea una instantánea
STANDARD
. STORAGE_LOCATION : Opcional: para instantáneas de alcance global, la región múltiple de Cloud Storage o la región de Cloud Storage donde desea almacenar su instantánea. Puede especificar solo una ubicación de almacenamiento.
Utilice el parámetro
storageLocations
solo cuando desee anular la ubicación de almacenamiento predeterminada predefinida o personalizada configurada en la configuración de su instantánea.SNAPSHOT_SCOPE_REGION : Opcional: para instantáneas con ámbito regional, la región a la que tiene alcance la instantánea. Si incluye este parámetro, no podrá utilizar el parámetro
storageLocations
. STORAGE_LOCATION se establece automáticamente en SNAPSHOT_SCOPE_REGION .
Cree un cronograma de instantáneas con guest-flush
habilitada
Utilice instantáneas programadas para realizar copias de seguridad periódicas y automáticas de su disco persistente zonal y regional y de Google Cloud Hyperdisk. Si desea programar instantáneas consistentes con la aplicación para su copia de seguridad, use la opción --guest-flush
cuando cree la programación de instantáneas para que los scripts previos y posteriores a la instantánea 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 scripts personalizados , el siguiente comando crea instantáneas coherentes con 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, consulte Acerca de las programaciones de instantáneas para discos .
Solución de problemas
Solucione problemas con la programación de instantáneas y el proceso de creación revisando los registros y verificando las configuraciones.
Revisar los registros
Vaya a la página del Explorador de registros en la consola de Google Cloud:
Pegue la siguiente consulta en el panel Consulta de registro :
resource.type="gce_disk" jsonPayload.event_subtype="compute.disks.createSnapshot" OR protoPayload.methodName="ScheduledSnapshots"
Ejecute la consulta e investigue los registros:
Comprobar configuraciones
Si no se encuentran scripts previos o posteriores a la instantánea en la instancia para congelar la actividad/IOPS en el sistema de archivos, no se creará ninguna instantánea. Asegúrese de haber seguido los pasos en Crear scripts de instantáneas anteriores y posteriores .
Si hay un error de secuencia de comandos o se agota el tiempo de espera, no se crea ninguna instantánea. Revise Preparación para instantáneas consistentes . Tenga en cuenta que el período de tiempo de espera máximo que puede configurar en su configuración es de 300 segundos. Intente repetir todo el proceso utilizando los scripts de muestra .
Se debe conectar un disco a una máquina virtual para capturar una instantánea del disco con
guest-flush
habilitada. Para aprender a crear una máquina virtual Linux y conectar un disco, consulte Creación de una máquina virtual .