Crear una captura de disco coherente de aplicación de Windows

En Compute Engine, puedes usar capturas para crear copias de seguridad de los datos de tus discos. Como las copias de seguridad son incrementales, puedes crearlas con un rendimiento mayor y unos costes de almacenamiento totales más bajos en comparación con la creación de imágenes de disco completas.

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. En las VMs Windows, se usa el servicio de instantáneas de volumen (VSS) para crear instantáneas coherentes de las aplicaciones sin tener que detener primero la instancia ni separar el disco de la VM.

Antes de empezar

  • Crea una instancia de Windows.
  • Consulta las prácticas recomendadas para crear capturas.
  • 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

    1. 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.

    2. 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 .

Limitaciones

Las capturas de disco en Windows tienen las siguientes limitaciones:

  • Las instantáneas de VSS solo funcionan en instancias de Windows con la versión de imagen v20160810 o posterior. En el caso de las instancias con imágenes antiguas, crea una instantánea sin usar VSS.
  • El disco conectado debe usar un sistema de archivos NTFS, exFAT o ReFS.
  • Las instantáneas de VSS solo ayudan a conservar los datos si ejecutas aplicaciones compatibles con VSS que puedan coordinarse para crear una copia de seguridad coherente de tus datos.
  • Si la operación de creación de la copia de seguridad de VSS no se completa en 300 segundos, la copia de seguridad falla y se produce un error de tiempo de espera.

Crear una captura de VSS de Windows

Puedes crear instantáneas del servicio de instantáneas de volumen (VSS) sin tener que detener la instancia ni desvincular el disco de tu VM. Las instantáneas de VSS están pensadas para crear copias de seguridad y recuperar datos en sistemas con aplicaciones compatibles con VSS.

Las capturas de VSS tienen el mismo precio que las capturas normales de discos persistentes o Hyperdisk, y solo se cobra el tamaño total de la captura.

Crear la captura

Consola

  1. Ve a la página Crear una instantánea de la consola de Google Cloud .

    Ir a la página Crear una captura
  2. Introduzca un nombre para la instantánea.
  3. 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.

  4. Opcional: Introduce una descripción de la copia de seguridad.
  5. En Disco de origen, selecciona el disco del que quieras crear una captura.
  6. 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:

    1. Elige el tipo de ubicación de almacenamiento que quieras para tu copia.

    2. 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.
  7. Marca la opción Habilitar captura coherente de aplicación.
  8. Haz clic en Crear para crear la instantánea.

gcloud

Para crear una instantánea de VSS, usa el comando gcloud compute snapshots create e incluye la marca --guest-flush.

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.

Para crear una captura de VSS de un disco persistente regional, en los ejemplos anteriores, sustituye --source-disk-zone= por --source-disk-region= y especifica la región en la que se encuentra tu disco persistente regional.

La CLI de Google Cloud espera hasta que la operación devuelva el estado READY o FAILED, o hasta que se alcance el tiempo de espera máximo, y devuelve los últimos detalles conocidos de la instantánea.

REST

Cuando crees una captura, incluye la propiedad guestFlush en el cuerpo de la solicitud de POST a compute.snapshots.insert para indicar que quieres crear una captura de VSS.

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étodo snapshots.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étodo snapshots.insert e incluye la propiedad storageLocations 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étodo snapshots.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.

Para crear una captura de VSS de un Persistent Disk regional, en las solicitudes POST que se muestran anteriormente, sustituye la siguiente línea:

"sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
Usa esta línea en su lugar cuando crees una captura de un disco persistente regional:
"sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",

Crear un disco grabable a partir de una captura de VSS

Cuando creas una captura de VSS, Windows Server marca el volumen de la captura como de solo lectura. Cuando creas un disco a partir de la instantánea de VSS, ese disco también se pone en modo de solo lectura.

Esto puede causar problemas. Por ejemplo, si creas una instancia de VM con un disco de arranque nuevo a partir de una instantánea de VSS de un disco de arranque ya creado, la marca de solo lectura del nuevo disco de arranque impide que la VM arranque correctamente.

Para solucionar este problema, quita la marca de solo lectura de cualquier disco nuevo que crees a partir de una instantánea de VSS siguiendo estos pasos:

  1. Comprueba que el disco esté conectado a una VM:

    • Si el disco que has creado a partir de la captura de VSS es un disco de datos que no es de arranque, puedes asociarlo a cualquier máquina virtual nueva o ya creada.
    • Si el disco que has creado a partir de la instantánea de VSS es un disco de arranque y quieres usarlo para arrancar una VM, debes asociar temporalmente el disco a una VM independiente que ya tengas. Una vez que hayas completado los pasos siguientes, podrás desvincular el disco de esa VM y usarlo para arrancar una nueva instancia de VM.
  2. Inicia sesión en la VM de Windows a la que está conectado el disco.

  3. Abre una petición de comando de PowerShell y ejecuta la herramienta diskpart.

    PS C:\> diskpart
    
  4. Identifica el disco que quieras montar.

    DISKPART> list disk
    
  5. Usa el comando select disk para seleccionar el disco.

    DISKPART> select disk DISK_NUMBER
    

    Sustituye DISK_NUMBER por el número del disco que quieras montar.

  6. Monta el disco.

    DISKPART> online disk
    
  7. Lista todos los volúmenes del disco.

    DISKPART> list volume
    
  8. Selecciona el nuevo volumen.

    DISKPART> select volume VOLUME_NUMBER
    

    Sustituye VOLUME_NUMBER por el número del volumen que quieras configurar como de lectura y escritura.

  9. Desactiva la marca de solo lectura.

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  10. Sal de la herramienta diskpart.

    DISKPART> exit
    
  11. Si el disco es un disco de arranque de otra máquina virtual, sincroniza los archivos del disco de arranque con la nueva firma del disco.

    PS C:\> bcdboot DRIVE_LETTERWindows /s DRIVE_LETTER
    

    Sustituye DRIVE_LETTER por la letra de la unidad del volumen que quieras sincronizar. Por ejemplo, F para F:\.

Crear una instantánea sin usar VSS

En algunas situaciones, puede que quieras crear instantáneas de discos que estén asociados a máquinas virtuales Windows sin usar VSS.

Para crear una captura de disco en una VM de Windows sin usar VSS, haz lo siguiente:

  1. Preparar el sistema para una captura de pantalla limpia
  2. Crea la captura.
  3. Volver a montar el disco

Preparar el sistema para una captura limpia

Antes de crear una captura de disco, asegúrate de que la captura sea coherente con el estado que quieres que tenga el disco. Si haces una instantánea de tu disco en un estado "no limpio", puede que se fuerce una comprobación del disco y que se pierdan datos. Considera la posibilidad de sincronizar y desmontar tu sistema de archivos.

Sincronizar el sistema de archivos

Si no puedes desmontar el disco, por ejemplo, en situaciones en las que una aplicación podría estar escribiendo datos en el disco, puedes sincronizar el sistema de archivos para vaciar los búferes del disco. Para sincronizar tu sistema de archivos, sigue estos pasos:

  1. Inicia sesión en tu VM de Windows.
  2. Descarga e instala la herramienta Sincronización de Microsoft.
  3. Impide que tus aplicaciones escriban en el disco.
  4. Abre una ventana de petición de comando con privilegios elevados.
  5. En la ventana de la línea de comandos, ejecuta lo siguiente:

    PS C:\> sync DRIVE_LETTER
    

    Sustituye DRIVE_LETTER por la letra de la unidad del volumen que quieras sincronizar. Por ejemplo, F para F:\.

Desmontar el disco

  1. Inicia sesión en tu VM de Windows.

  2. Abre una petición de comando de PowerShell y ejecuta la herramienta diskpart.

    PS C:\> diskpart
    
  3. Identifica el disco que quieras desmontar y del que quieras crear una instantánea.

    DISKPART> list disk
    
  4. A continuación, selecciona el disco con el número que acabas de encontrar.

    DISKPART> select disk DISK_NUMBER
    

    Sustituye DISK_NUMBER por el número del disco que quieras volver a montar.

  5. Desmonta el disco.

    DISKPART> offline disk
    

Crear una captura

Vuelve a montar el disco

  1. Inicia sesión en tu VM de Windows.

  2. Abre una petición de comando de PowerShell y ejecuta la herramienta diskpart.

    PS C:\> diskpart
    
  3. Identifica el disco que quieras montar.

    DISKPART> list disk
    
  4. Usa el comando select disk para seleccionar el disco.

    DISKPART> select disk DISK_NUMBER
    

    Sustituye DISK_NUMBER por el número del disco que quieras montar.

  5. Monta el disco.

    DISKPART> online disk
    

Siguientes pasos