Crie instantâneos de arquivo e de disco padrão


Crie instantâneos padrão para fazer backup periódico de dados destes tipos de discos:

  • Volumes zonais de disco permanente
  • Volumes regionais de disco permanente
  • Volumes de hiperdiscos do Google Cloud

Você pode criar snapshots a partir de discos mesmo quando eles estiverem anexados a instâncias em execução. Os instantâneos são, por padrão, recursos globais , portanto você pode usá-los para restaurar dados em um novo disco ou VM dentro do mesmo projeto. Para proteção adicional de dados e gerenciamento de custos, você pode controlar onde usar seus snapshots para criar novos discos. Para restringir as regiões onde seus instantâneos podem restaurar dados, você pode criar um instantâneo com escopo regional e definir locais de acesso permitidos ( Visualização ). Você também pode compartilhar instantâneos entre projetos.

Antes de começar

Funções e permissões necessárias

Para obter as permissões necessárias para criar um snapshot padrão, peça ao administrador que conceda a você os seguintes papéis do IAM no projeto:

Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Essas funções predefinidas contêm as permissões necessárias para criar um instantâneo padrão. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias :

Permissões necessárias

As seguintes permissões são necessárias para criar um instantâneo padrão:

  • Para criar um instantâneo de um disco zonal:
    • compute.snapshots.create no projeto
    • compute.disks.createSnapshot no disco
  • Para criar um instantâneo de um disco regional usando os dados do disco:
    • compute.snapshots.create no projeto
    • compute.instances.useReadOnly na VM de origem
    • compute.disks.createSnapshot no disco
  • Para criar um instantâneo de um disco regional a partir de um ponto de verificação de recuperação de réplica:
    • compute.snapshots.create no projeto
    • compute.disks.createSnapshot no disco
  • ( Visualização ) Para criar um instantâneo com escopo regional:
    • compute.snapshots.create no projeto
    • compute.regionSnapshots.create no projeto
    • compute.disks.useReadOnly no disco

Você também poderá obter essas permissões com funções personalizadas ou outras funções predefinidas .

Prepare-se para criar instantâneos

Para se preparar para criar snapshots de volumes de disco permanente ou hiperdisco, faça o seguinte:

Crie um instantâneo do volume do disco permanente

As instruções para criar snapshots de volumes de disco permanente são diferentes, dependendo se você está criando um snapshot de disco permanente zonal ou de disco permanente regional.

Criar um snapshot de um volume de disco permanente zonal

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM
    As etapas restantes aparecerão automaticamente no console do Google Cloud.

  2. Selecione o projeto que contém suas instâncias de VM.
  3. Na coluna Nome , clique no nome da VM que possui o disco para backup.
  4. Em Armazenar :
    • Para fazer backup do disco de inicialização, na seção Disco de inicialização , clique no Nome do disco de inicialização.
    • Para fazer backup de um disco de dados anexado, em Discos adicionais , clique no nome do disco.
  5. Clique Criar instantâneo .
  6. Em Name , insira um nome exclusivo para ajudar a identificar a finalidade do snapshot, por exemplo:
    • boot-disk-snapshot
    • attached-data-disk-snapshot
  7. Em Type , o padrão é um instantâneo padrão. Os snapshots padrão são melhores para backup de longo prazo e recuperação de desastres.

    Escolha Arquivar instantâneo para criar um backup mais econômico do que os instantâneos padrão, mas com um tempo de recuperação de dados mais longo.

    Para obter mais informações, consulte Comparação de tipos de instantâneos .

  8. Na seção Local , escolha o local de armazenamento do snapshot . O local padrão predefinido ou personalizado definido nas configurações do snapshot é selecionado automaticamente. Opcionalmente, você pode substituir as configurações de snapshot e armazená-los em um local de armazenamento personalizado fazendo o seguinte:

    1. Escolha o tipo de local de armazenamento que deseja para seu instantâneo.

      • Escolha Multirregional para maior disponibilidade a um custo mais elevado.
      • Escolha snapshots regionais para ter mais controle sobre a localização física dos seus dados a um custo menor.
    2. No campo Selecionar local , selecione a região ou multirregião específica que você deseja usar. Para usar a região ou multirregião mais próxima do disco de origem, escolha um local na seção intitulada Com base na localização do disco .

  9. Para criar um instantâneo, clique em Criar .

gcloud

Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do snapshot, use o 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
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua o sinalizador --storage-location para indicar onde armazenar seu snapshot.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION
    
  • ( Visualização ) Para criar um instantâneo com escopo regional em uma região permitida, inclua o sinalizador --region para indicar onde criar seu instantâneo.

    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
    

Substitua o seguinte:

  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_ZONE : a zona do disco de origem.
  • SOURCE_DISK_NAME : o nome do volume do disco permanente do qual você deseja criar um snapshot.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro --storage-location somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações do snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro --storage-location . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

Terraforma

Para criar um snapshot do volume zonal do disco permanente, use o recurso google_compute_snapshot .

resource "google_compute_snapshot" "snapdisk" {
  name        = "snapshot-name"
  source_disk = google_compute_disk.default.name
  zone        = "us-central1-a"
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform .

Ir

Go

Antes de testar este exemplo, siga as instruções de configuração Go no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Compute Engine Go .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/protobuf/proto"
)

// createSnapshot creates a snapshot of a disk.
func createSnapshot(
	w io.Writer,
	projectID, diskName, snapshotName, zone, region, location, diskProjectID string,
) error {
	// projectID := "your_project_id"
	// diskName := "your_disk_name"
	// snapshotName := "your_snapshot_name"
	// zone := "europe-central2-b"
	// region := "eupore-central2"
	// location = "eupore-central2"
	// diskProjectID = "YOUR_DISK_PROJECT_ID"

	ctx := context.Background()

	snapshotsClient, err := compute.NewSnapshotsRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewSnapshotsRESTClient: %w", err)
	}
	defer snapshotsClient.Close()

	if zone == "" && region == "" {
		return fmt.Errorf("you need to specify `zone` or `region` for this function to work")
	}

	if zone != "" && region != "" {
		return fmt.Errorf("you can't set both `zone` and `region` parameters")
	}

	if diskProjectID == "" {
		diskProjectID = projectID
	}

	disk := &computepb.Disk{}
	locations := []string{}
	if location != "" {
		locations = append(locations, location)
	}

	if zone != "" {
		disksClient, err := compute.NewDisksRESTClient(ctx)
		if err != nil {
			return fmt.Errorf("NewDisksRESTClient: %w", err)
		}
		defer disksClient.Close()

		getDiskReq := &computepb.GetDiskRequest{
			Project: projectID,
			Zone:    zone,
			Disk:    diskName,
		}

		disk, err = disksClient.Get(ctx, getDiskReq)
		if err != nil {
			return fmt.Errorf("unable to get disk: %w", err)
		}
	} else {
		regionDisksClient, err := compute.NewRegionDisksRESTClient(ctx)
		if err != nil {
			return fmt.Errorf("NewRegionDisksRESTClient: %w", err)
		}
		defer regionDisksClient.Close()

		getDiskReq := &computepb.GetRegionDiskRequest{
			Project: projectID,
			Region:  region,
			Disk:    diskName,
		}

		disk, err = regionDisksClient.Get(ctx, getDiskReq)
		if err != nil {
			return fmt.Errorf("unable to get disk: %w", err)
		}
	}

	req := &computepb.InsertSnapshotRequest{
		Project: projectID,
		SnapshotResource: &computepb.Snapshot{
			Name:             proto.String(snapshotName),
			SourceDisk:       proto.String(disk.GetSelfLink()),
			StorageLocations: locations,
		},
	}

	op, err := snapshotsClient.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to create snapshot: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Snapshot created\n")

	return nil
}

Java

Java

Antes de testar este exemplo, siga as instruções de configuração Java no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Java do Compute Engine .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .


import com.google.cloud.compute.v1.Disk;
import com.google.cloud.compute.v1.DisksClient;
import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.RegionDisksClient;
import com.google.cloud.compute.v1.Snapshot;
import com.google.cloud.compute.v1.SnapshotsClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateSnapshot {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // You need to pass `zone` or `region` parameter relevant to the disk you want to
    // snapshot, but not both. Pass `zone` parameter for zonal disks and `region` for
    // regional disks.

    // Project ID or project number of the Cloud project you want to use.
    String projectId = "YOUR_PROJECT_ID";

    // Name of the disk you want to create.
    String diskName = "YOUR_DISK_NAME";

    // Name of the snapshot that you want to create.
    String snapshotName = "YOUR_SNAPSHOT_NAME";

    // The zone of the source disk from which you create the snapshot (for zonal disks).
    String zone = "europe-central2-b";

    // The region of the source disk from which you create the snapshot (for regional disks).
    String region = "your-disk-region";

    // The Cloud Storage multi-region or the Cloud Storage region where you
    // want to store your snapshot.
    // You can specify only one storage location. Available locations:
    // https://cloud.google.com/storage/docs/locations#available-locations
    String location = "europe-central2";

    // Project ID or project number of the Cloud project that
    // hosts the disk you want to snapshot. If not provided, the value will be defaulted
    // to 'projectId' value.
    String diskProjectId = "YOUR_DISK_PROJECT_ID";

    createSnapshot(projectId, diskName, snapshotName, zone, region, location, diskProjectId);
  }

  // Creates a snapshot of a disk.
  public static void createSnapshot(String projectId, String diskName, String snapshotName,
      String zone, String region, String location, String diskProjectId)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `snapshotsClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (SnapshotsClient snapshotsClient = SnapshotsClient.create()) {

      if (zone.isEmpty() && region.isEmpty()) {
        throw new Error("You need to specify 'zone' or 'region' for this function to work");
      }

      if (!zone.isEmpty() && !region.isEmpty()) {
        throw new Error("You can't set both 'zone' and 'region' parameters");
      }

      // If Disk's project id is not specified, then the projectId parameter will be used.
      if (diskProjectId.isEmpty()) {
        diskProjectId = projectId;
      }

      // If zone is not empty, use the DisksClient to create a disk.
      // Else, use the RegionDisksClient.
      Disk disk;
      if (!zone.isEmpty()) {
        DisksClient disksClient = DisksClient.create();
        disk = disksClient.get(projectId, zone, diskName);
      } else {
        RegionDisksClient regionDisksClient = RegionDisksClient.create();
        disk = regionDisksClient.get(diskProjectId, region, diskName);
      }

      // Set the snapshot properties.
      Snapshot snapshotResource;
      if (!location.isEmpty()) {
        snapshotResource = Snapshot.newBuilder()
            .setName(snapshotName)
            .setSourceDisk(disk.getSelfLink())
            .addStorageLocations(location)
            .build();
      } else {
        snapshotResource = Snapshot.newBuilder()
            .setName(snapshotName)
            .setSourceDisk(disk.getSelfLink())
            .build();
      }

      // Wait for the operation to complete.
      Operation operation = snapshotsClient.insertAsync(projectId, snapshotResource)
          .get(3, TimeUnit.MINUTES);

      if (operation.hasError()) {
        System.out.println("Snapshot creation failed!" + operation);
        return;
      }

      // Retrieve the created snapshot.
      Snapshot snapshot = snapshotsClient.get(projectId, snapshotName);
      System.out.printf("Snapshot created: %s", snapshot.getName());

    }
  }
}

Node.js

Node.js

Antes de testar este exemplo, siga as instruções de configuração Node.js no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Node.js do Compute Engine .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const diskName = 'YOUR_DISK_NAME';
// const snapshotName = 'YOUR_SNAPSHOT_NAME';
// const zone = 'europe-central2-b';
// const region = '';
// const location = 'europe-central2';
// let diskProjectId = 'YOUR_DISK_PROJECT_ID';

const compute = require('@google-cloud/compute');

async function createSnapshot() {
  const snapshotsClient = new compute.SnapshotsClient();

  let disk;

  if (!zone && !region) {
    throw new Error(
      'You need to specify `zone` or `region` for this function to work.'
    );
  }

  if (zone && region) {
    throw new Error("You can't set both `zone` and `region` parameters");
  }

  if (!diskProjectId) {
    diskProjectId = projectId;
  }

  if (zone) {
    const disksClient = new compute.DisksClient();
    [disk] = await disksClient.get({
      project: diskProjectId,
      zone,
      disk: diskName,
    });
  } else {
    const regionDisksClient = new compute.RegionDisksClient();
    [disk] = await regionDisksClient.get({
      project: diskProjectId,
      region,
      disk: diskName,
    });
  }

  const snapshotResource = {
    name: snapshotName,
    sourceDisk: disk.selfLink,
  };

  if (location) {
    snapshotResource.storageLocations = [location];
  }

  const [response] = await snapshotsClient.insert({
    project: projectId,
    snapshotResource,
  });
  let operation = response.latestResponse;
  const operationsClient = new compute.GlobalOperationsClient();

  // Wait for the create snapshot operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await operationsClient.wait({
      operation: operation.name,
      project: projectId,
    });
  }

  console.log('Snapshot created.');
}

createSnapshot();

Pitão

Python

Antes de testar este exemplo, siga as instruções de configuração Python no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Python do Compute Engine .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1


def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result


def create_snapshot(
    project_id: str,
    disk_name: str,
    snapshot_name: str,
    *,
    zone: str | None = None,
    region: str | None = None,
    location: str | None = None,
    disk_project_id: str | None = None,
) -> compute_v1.Snapshot:
    """
    Create a snapshot of a disk.

    You need to pass `zone` or `region` parameter relevant to the disk you want to
    snapshot, but not both. Pass `zone` parameter for zonal disks and `region` for
    regional disks.

    Args:
        project_id: project ID or project number of the Cloud project you want
            to use to store the snapshot.
        disk_name: name of the disk you want to snapshot.
        snapshot_name: name of the snapshot to be created.
        zone: name of the zone in which is the disk you want to snapshot (for zonal disks).
        region: name of the region in which is the disk you want to snapshot (for regional disks).
        location: The Cloud Storage multi-region or the Cloud Storage region where you
            want to store your snapshot.
            You can specify only one storage location. Available locations:
            https://cloud.google.com/storage/docs/locations#available-locations
        disk_project_id: project ID or project number of the Cloud project that
            hosts the disk you want to snapshot. If not provided, will look for
            the disk in the `project_id` project.

    Returns:
        The new snapshot instance.
    """
    if zone is None and region is None:
        raise RuntimeError(
            "You need to specify `zone` or `region` for this function to work."
        )
    if zone is not None and region is not None:
        raise RuntimeError("You can't set both `zone` and `region` parameters.")

    if disk_project_id is None:
        disk_project_id = project_id

    if zone is not None:
        disk_client = compute_v1.DisksClient()
        disk = disk_client.get(project=disk_project_id, zone=zone, disk=disk_name)
    else:
        regio_disk_client = compute_v1.RegionDisksClient()
        disk = regio_disk_client.get(
            project=disk_project_id, region=region, disk=disk_name
        )

    snapshot = compute_v1.Snapshot()
    snapshot.source_disk = disk.self_link
    snapshot.name = snapshot_name
    if location:
        snapshot.storage_locations = [location]

    snapshot_client = compute_v1.SnapshotsClient()
    operation = snapshot_client.insert(project=project_id, snapshot_resource=snapshot)

    wait_for_extended_operation(operation, "snapshot creation")

    return snapshot_client.get(project=project_id, snapshot=snapshot_name)

DESCANSAR

Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do snapshot, faça uma solicitação POST para o método snapshots.insert :

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação POST para o método snapshots.insert e inclua a propriedade storageLocations em sua solicitação:

    POST https://compute.googleapis.com/compute/v1/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"
        ],
    }
    
  • ( Visualização ) Para criar um snapshot com escopo regional em uma região permitida, faça uma solicitação POST para o método snapshots.insert e defina a região de criação:

    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"
    }
    

Substitua o seguinte:

  • DESTINATION_PROJECT_ID : o ID do projeto no qual você deseja criar o instantâneo.
  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_PROJECT_ID : o ID do projeto do disco de origem.
  • SOURCE_ZONE : a zona do disco de origem.
  • SOURCE_DISK_NAME : o nome do volume do disco permanente do qual você deseja criar um snapshot.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro storageLocations somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações de snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro storageLocations . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

Criar um snapshot de um volume regional de disco permanente

Você pode criar snapshots do volume regional do disco permanente de uma das seguintes maneiras:

  • Usando os dados no disco de origem. Para usar esse método de criação de instantâneo, você deve ter uma réplica zonal sincronizada disponível.
  • Usando o ponto de verificação de recuperação de réplica de um disco degradado. Só é possível criar snapshots de um ponto de verificação usando a Google Cloud CLI ou REST.

Depois de preparar o disco , você poderá criar um instantâneo. Ao criar um snapshot de um disco permanente regional, você deve indicar a região onde o disco de origem está localizado.

Console

  1. Acesse a página Criar um instantâneo no console do Google Cloud.

    Vá para a página Criar um instantâneo
  2. Insira um Nome para instantâneo.
  3. Selecione um tipo de instantâneo . O padrão é um STANDARD PADRÃO, que é a melhor opção para backup de longo prazo e recuperação de desastres.

    Escolha Arquivar snapshot para uma retenção de dados mais econômica.

  4. Opcional: insira uma descrição da captura instantânea.
  5. Em Disco de origem , selecione o disco existente do qual você deseja criar um instantâneo.
  6. Na seção Local , escolha o local de armazenamento do snapshot .

    O local padrão predefinido ou personalizado definido nas configurações do snapshot é selecionado automaticamente. Opcionalmente, você pode substituir as configurações de snapshot e armazená-los em um local de armazenamento personalizado fazendo o seguinte:

    1. Escolha o tipo de local de armazenamento que deseja para seu instantâneo.

      • Escolha Multirregional para maior disponibilidade a um custo mais elevado.
      • Escolha snapshots regionais para ter mais controle sobre a localização física dos seus dados a um custo menor.
    2. No campo Selecionar local , selecione a região ou multirregião específica que você deseja usar. Para usar a região ou multirregião mais próxima do disco de origem, selecione Com base na localização do disco .
  7. Clique em Criar para criar o instantâneo.

gcloud

Você pode criar um instantâneo usando os dados do disco de origem ou seu ponto de verificação de recuperação de réplica.

Dos dados do disco

Você pode criar um instantâneo a partir dos dados do seu disco usando a política de local de armazenamento definida pelas configurações do instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do snapshot, use o comando gcloud compute snapshots create .

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-region=SOURCE_REGION \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua o sinalizador --storage-location para indicar onde armazenar seu snapshot.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-region=SOURCE_REGION \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION
    
  • ( Visualização ) Para criar um instantâneo com escopo regional em uma região permitida, inclua o sinalizador --region para indicar onde criar seu instantâneo.

    gcloud beta compute snapshots create SNAPSHOT_NAME \
        --region=SNAPSHOT_SCOPE_REGION \
        --source-disk=SOURCE_DISK_NAME \
        --source-disk-region=SOURCE_REGION \
        --snapshot-type=SNAPSHOT_TYPE
    

Substitua o seguinte:

  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_REGION : a região do disco de origem.
  • SOURCE_DISK_NAME : o nome do Disco permanente regional ou Volume de alta disponibilidade balanceada de hiperdisco a partir do qual você deseja criar uma captura instantânea.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro --storage-location somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações do snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro --storage-location . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

Do ponto de verificação

Você pode criar seu instantâneo usando o ponto de verificação de recuperação de réplica ( Visualização ) de um disco degradado. Seu instantâneo será criado enquanto sua réplica incompleta estiver disponível.

Para criar um snapshot usando o ponto de verificação de recuperação de réplica, use o comando gcloud compute snapshots create . Inclua a sinalização --source-disk-for-recovery-checkpoint para especificar que deseja criar o instantâneo usando um ponto de verificação de recuperação de réplica. Exclua os parâmetros --source-disk e --source-disk-region .

gcloud compute snapshots create SNAPSHOT_NAME \
    --source-disk-for-recovery-checkpoint=SOURCE_DISK \
    --source-disk-for-recovery-checkpoint-region=SOURCE_REGION \
    --storage-location=STORAGE_LOCATION \
    --snapshot-type=SNAPSHOT_TYPE

Substitua o seguinte:

  • DESTINATION_PROJECT_ID : o ID do projeto no qual você deseja criar o instantâneo.
  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_PROJECT_ID : o ID do projeto do disco de origem cujo ponto de verificação você deseja usar para criar o instantâneo.
  • SOURCE_REGION : a região do disco de origem cujo ponto de verificação você deseja usar para criar o instantâneo.
  • SOURCE_DISK_NAME : o nome do disco de origem cujo ponto de verificação você deseja usar para criar o instantâneo.
  • STORAGE_LOCATION : opcional: a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar seu snapshot. Você pode especificar apenas um local de armazenamento.
    Use somente se desejar substituir o local de armazenamento padrão predefinido ou personalizado configurado nas configurações do snapshot.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.

Você pode usar o ponto de verificação de recuperação de réplica para criar um instantâneo somente em discos degradados . Se você tentar criar um instantâneo a partir de um ponto de verificação de recuperação de réplica quando o dispositivo estiver totalmente replicado, você verá a seguinte mensagem de erro:

The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please
create regular snapshots instead.

A CLI do Google Cloud aguarda até que a operação retorne um status READY , FAILED ou atinja o tempo limite máximo e retorne os últimos detalhes conhecidos do snapshot.

Terraforma

O provedor Terraform para Google Cloud não oferece suporte à criação de um snapshot de um volume regional de disco permanente. Para rastrear essa limitação, consulte o problema no GitHub .

Ir

Go

Antes de testar este exemplo, siga as instruções de configuração Go no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Compute Engine Go .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/protobuf/proto"
)

// createSnapshot creates a snapshot of a disk.
func createSnapshot(
	w io.Writer,
	projectID, diskName, snapshotName, zone, region, location, diskProjectID string,
) error {
	// projectID := "your_project_id"
	// diskName := "your_disk_name"
	// snapshotName := "your_snapshot_name"
	// zone := "europe-central2-b"
	// region := "eupore-central2"
	// location = "eupore-central2"
	// diskProjectID = "YOUR_DISK_PROJECT_ID"

	ctx := context.Background()

	snapshotsClient, err := compute.NewSnapshotsRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewSnapshotsRESTClient: %w", err)
	}
	defer snapshotsClient.Close()

	if zone == "" && region == "" {
		return fmt.Errorf("you need to specify `zone` or `region` for this function to work")
	}

	if zone != "" && region != "" {
		return fmt.Errorf("you can't set both `zone` and `region` parameters")
	}

	if diskProjectID == "" {
		diskProjectID = projectID
	}

	disk := &computepb.Disk{}
	locations := []string{}
	if location != "" {
		locations = append(locations, location)
	}

	if zone != "" {
		disksClient, err := compute.NewDisksRESTClient(ctx)
		if err != nil {
			return fmt.Errorf("NewDisksRESTClient: %w", err)
		}
		defer disksClient.Close()

		getDiskReq := &computepb.GetDiskRequest{
			Project: projectID,
			Zone:    zone,
			Disk:    diskName,
		}

		disk, err = disksClient.Get(ctx, getDiskReq)
		if err != nil {
			return fmt.Errorf("unable to get disk: %w", err)
		}
	} else {
		regionDisksClient, err := compute.NewRegionDisksRESTClient(ctx)
		if err != nil {
			return fmt.Errorf("NewRegionDisksRESTClient: %w", err)
		}
		defer regionDisksClient.Close()

		getDiskReq := &computepb.GetRegionDiskRequest{
			Project: projectID,
			Region:  region,
			Disk:    diskName,
		}

		disk, err = regionDisksClient.Get(ctx, getDiskReq)
		if err != nil {
			return fmt.Errorf("unable to get disk: %w", err)
		}
	}

	req := &computepb.InsertSnapshotRequest{
		Project: projectID,
		SnapshotResource: &computepb.Snapshot{
			Name:             proto.String(snapshotName),
			SourceDisk:       proto.String(disk.GetSelfLink()),
			StorageLocations: locations,
		},
	}

	op, err := snapshotsClient.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to create snapshot: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Snapshot created\n")

	return nil
}

Java

Java

Antes de testar este exemplo, siga as instruções de configuração Java no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Java do Compute Engine .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .


import com.google.cloud.compute.v1.Disk;
import com.google.cloud.compute.v1.DisksClient;
import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.RegionDisksClient;
import com.google.cloud.compute.v1.Snapshot;
import com.google.cloud.compute.v1.SnapshotsClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateSnapshot {

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // You need to pass `zone` or `region` parameter relevant to the disk you want to
    // snapshot, but not both. Pass `zone` parameter for zonal disks and `region` for
    // regional disks.

    // Project ID or project number of the Cloud project you want to use.
    String projectId = "YOUR_PROJECT_ID";

    // Name of the disk you want to create.
    String diskName = "YOUR_DISK_NAME";

    // Name of the snapshot that you want to create.
    String snapshotName = "YOUR_SNAPSHOT_NAME";

    // The zone of the source disk from which you create the snapshot (for zonal disks).
    String zone = "europe-central2-b";

    // The region of the source disk from which you create the snapshot (for regional disks).
    String region = "your-disk-region";

    // The Cloud Storage multi-region or the Cloud Storage region where you
    // want to store your snapshot.
    // You can specify only one storage location. Available locations:
    // https://cloud.google.com/storage/docs/locations#available-locations
    String location = "europe-central2";

    // Project ID or project number of the Cloud project that
    // hosts the disk you want to snapshot. If not provided, the value will be defaulted
    // to 'projectId' value.
    String diskProjectId = "YOUR_DISK_PROJECT_ID";

    createSnapshot(projectId, diskName, snapshotName, zone, region, location, diskProjectId);
  }

  // Creates a snapshot of a disk.
  public static void createSnapshot(String projectId, String diskName, String snapshotName,
      String zone, String region, String location, String diskProjectId)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `snapshotsClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (SnapshotsClient snapshotsClient = SnapshotsClient.create()) {

      if (zone.isEmpty() && region.isEmpty()) {
        throw new Error("You need to specify 'zone' or 'region' for this function to work");
      }

      if (!zone.isEmpty() && !region.isEmpty()) {
        throw new Error("You can't set both 'zone' and 'region' parameters");
      }

      // If Disk's project id is not specified, then the projectId parameter will be used.
      if (diskProjectId.isEmpty()) {
        diskProjectId = projectId;
      }

      // If zone is not empty, use the DisksClient to create a disk.
      // Else, use the RegionDisksClient.
      Disk disk;
      if (!zone.isEmpty()) {
        DisksClient disksClient = DisksClient.create();
        disk = disksClient.get(projectId, zone, diskName);
      } else {
        RegionDisksClient regionDisksClient = RegionDisksClient.create();
        disk = regionDisksClient.get(diskProjectId, region, diskName);
      }

      // Set the snapshot properties.
      Snapshot snapshotResource;
      if (!location.isEmpty()) {
        snapshotResource = Snapshot.newBuilder()
            .setName(snapshotName)
            .setSourceDisk(disk.getSelfLink())
            .addStorageLocations(location)
            .build();
      } else {
        snapshotResource = Snapshot.newBuilder()
            .setName(snapshotName)
            .setSourceDisk(disk.getSelfLink())
            .build();
      }

      // Wait for the operation to complete.
      Operation operation = snapshotsClient.insertAsync(projectId, snapshotResource)
          .get(3, TimeUnit.MINUTES);

      if (operation.hasError()) {
        System.out.println("Snapshot creation failed!" + operation);
        return;
      }

      // Retrieve the created snapshot.
      Snapshot snapshot = snapshotsClient.get(projectId, snapshotName);
      System.out.printf("Snapshot created: %s", snapshot.getName());

    }
  }
}

Node.js

Node.js

Antes de testar este exemplo, siga as instruções de configuração Node.js no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Node.js do Compute Engine .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .

/**
 * TODO(developer): Uncomment and replace these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const diskName = 'YOUR_DISK_NAME';
// const snapshotName = 'YOUR_SNAPSHOT_NAME';
// const zone = 'europe-central2-b';
// const region = '';
// const location = 'europe-central2';
// let diskProjectId = 'YOUR_DISK_PROJECT_ID';

const compute = require('@google-cloud/compute');

async function createSnapshot() {
  const snapshotsClient = new compute.SnapshotsClient();

  let disk;

  if (!zone && !region) {
    throw new Error(
      'You need to specify `zone` or `region` for this function to work.'
    );
  }

  if (zone && region) {
    throw new Error("You can't set both `zone` and `region` parameters");
  }

  if (!diskProjectId) {
    diskProjectId = projectId;
  }

  if (zone) {
    const disksClient = new compute.DisksClient();
    [disk] = await disksClient.get({
      project: diskProjectId,
      zone,
      disk: diskName,
    });
  } else {
    const regionDisksClient = new compute.RegionDisksClient();
    [disk] = await regionDisksClient.get({
      project: diskProjectId,
      region,
      disk: diskName,
    });
  }

  const snapshotResource = {
    name: snapshotName,
    sourceDisk: disk.selfLink,
  };

  if (location) {
    snapshotResource.storageLocations = [location];
  }

  const [response] = await snapshotsClient.insert({
    project: projectId,
    snapshotResource,
  });
  let operation = response.latestResponse;
  const operationsClient = new compute.GlobalOperationsClient();

  // Wait for the create snapshot operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await operationsClient.wait({
      operation: operation.name,
      project: projectId,
    });
  }

  console.log('Snapshot created.');
}

createSnapshot();

Pitão

Python

Antes de testar este exemplo, siga as instruções de configuração Python no guia de início rápido do Compute Engine usando bibliotecas de cliente . Para mais informações, consulte a documentação de referência da API Python do Compute Engine .

Para autenticar no Compute Engine, configure as credenciais padrão do aplicativo. Para obter mais informações, consulte Configurar autenticação para um ambiente de desenvolvimento local .

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1


def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result


def create_snapshot(
    project_id: str,
    disk_name: str,
    snapshot_name: str,
    *,
    zone: str | None = None,
    region: str | None = None,
    location: str | None = None,
    disk_project_id: str | None = None,
) -> compute_v1.Snapshot:
    """
    Create a snapshot of a disk.

    You need to pass `zone` or `region` parameter relevant to the disk you want to
    snapshot, but not both. Pass `zone` parameter for zonal disks and `region` for
    regional disks.

    Args:
        project_id: project ID or project number of the Cloud project you want
            to use to store the snapshot.
        disk_name: name of the disk you want to snapshot.
        snapshot_name: name of the snapshot to be created.
        zone: name of the zone in which is the disk you want to snapshot (for zonal disks).
        region: name of the region in which is the disk you want to snapshot (for regional disks).
        location: The Cloud Storage multi-region or the Cloud Storage region where you
            want to store your snapshot.
            You can specify only one storage location. Available locations:
            https://cloud.google.com/storage/docs/locations#available-locations
        disk_project_id: project ID or project number of the Cloud project that
            hosts the disk you want to snapshot. If not provided, will look for
            the disk in the `project_id` project.

    Returns:
        The new snapshot instance.
    """
    if zone is None and region is None:
        raise RuntimeError(
            "You need to specify `zone` or `region` for this function to work."
        )
    if zone is not None and region is not None:
        raise RuntimeError("You can't set both `zone` and `region` parameters.")

    if disk_project_id is None:
        disk_project_id = project_id

    if zone is not None:
        disk_client = compute_v1.DisksClient()
        disk = disk_client.get(project=disk_project_id, zone=zone, disk=disk_name)
    else:
        regio_disk_client = compute_v1.RegionDisksClient()
        disk = regio_disk_client.get(
            project=disk_project_id, region=region, disk=disk_name
        )

    snapshot = compute_v1.Snapshot()
    snapshot.source_disk = disk.self_link
    snapshot.name = snapshot_name
    if location:
        snapshot.storage_locations = [location]

    snapshot_client = compute_v1.SnapshotsClient()
    operation = snapshot_client.insert(project=project_id, snapshot_resource=snapshot)

    wait_for_extended_operation(operation, "snapshot creation")

    return snapshot_client.get(project=project_id, snapshot=snapshot_name)

DESCANSAR

Você pode criar um instantâneo usando os dados do disco de origem ou seu ponto de verificação de recuperação de réplica.

Dos dados do disco

Você pode criar um instantâneo a partir dos dados do seu disco usando a política de local de armazenamento definida pelas configurações do instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do snapshot, faça uma solicitação POST para o método snapshots.insert :

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação POST para o método snapshots.insert e inclua a propriedade storageLocations em sua solicitação:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "storageLocations": [
          "STORAGE_LOCATION"
      ],
    }
    
  • ( Visualização ) Para criar um snapshot com escopo regional em uma região permitida, faça uma solicitação POST para o método snapshots.insert e defina a região de criação:

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
    }
    

Substitua o seguinte:

  • DESTINATION_PROJECT_ID : o ID do projeto no qual você deseja criar o instantâneo.
  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_PROJECT_ID : o ID do projeto do disco de origem.
  • SOURCE_REGION : a região do disco de origem.
  • SOURCE_DISK_NAME : o nome do Disco permanente regional ou Volume de alta disponibilidade balanceada de hiperdisco a partir do qual você deseja criar uma captura instantânea.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro storageLocations somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações de snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro storageLocations . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

Do ponto de verificação

Alternativamente, você pode criar seu instantâneo usando o ponto de verificação de recuperação de réplica de um disco degradado. Seu instantâneo será criado enquanto sua réplica incompleta estiver disponível.

Para criar um snapshot usando o ponto de verificação de recuperação de réplica, faça uma solicitação POST para o método snapshots.insert . Exclua o parâmetro sourceDisk e, em vez disso, inclua o parâmetro sourceDiskForRecoveryCheckpoint para especificar que deseja criar a captura instantânea usando o ponto de verificação.

POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots

{
  "name": "SNAPSHOT_NAME",
  "sourceDiskForRecoveryCheckpoint": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
  "storageLocations": "STORAGE_LOCATION",
  "snapshotType": "SNAPSHOT_TYPE"
}

Substitua o seguinte:

  • DESTINATION_PROJECT_ID : o ID do projeto no qual você deseja criar o instantâneo.
  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_PROJECT_ID : o ID do projeto do disco de origem cujo ponto de verificação você deseja usar para criar o instantâneo.
  • SOURCE_REGION : a região do disco de origem cujo ponto de verificação você deseja usar para criar o instantâneo.
  • SOURCE_DISK_NAME : o nome do disco de origem cujo ponto de verificação você deseja usar para criar o instantâneo.
  • STORAGE_LOCATION : opcional: a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar seu snapshot. Você pode especificar apenas um local de armazenamento.
    Use o parâmetro storageLocations somente se desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações do snapshot.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.

Você pode usar o ponto de verificação de recuperação de réplica para criar um instantâneo somente em discos degradados . Se você tentar criar um instantâneo a partir de um ponto de verificação de recuperação de réplica quando o dispositivo estiver totalmente replicado, você verá a seguinte mensagem de erro:

The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please
create regular snapshots instead.

Crie um instantâneo de um hiperdisco

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Selecione o projeto que contém suas instâncias de VM.

  3. Na coluna Nome , clique no nome da VM que possui o hiperdisco para backup.

  4. Em Armazenamento , em Discos adicionais , clique no Nome do hiperdisco anexado.

  5. Clique em Criar instantâneo .

  6. Em Name , insira um nome exclusivo para ajudar a identificar a finalidade da captura instantânea, por exemplo hyperdisk-data-snapshot .

  7. Em Type , o padrão é um instantâneo regular, que é melhor para backup de longo prazo e recuperação de desastres.

  8. Na seção Local , escolha o local de armazenamento do snapshot .

    O local padrão predefinido ou personalizado definido nas configurações do snapshot é selecionado automaticamente. Opcionalmente, você pode substituir as configurações de snapshot e armazená-los em um local de armazenamento personalizado fazendo o seguinte:

    1. Escolha o tipo de local de armazenamento que deseja para seu instantâneo.

      • Escolha Multirregional para maior disponibilidade a um custo mais elevado.
      • Escolha snapshots regionais para ter mais controle sobre a localização física dos seus dados a um custo menor.
    2. No campo Selecionar local , selecione a região ou multirregião específica que você deseja usar. Para usar a região ou multirregião mais próxima do disco de origem, selecione Com base na localização do disco .

  9. Clique em Criar .

gcloud

Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

Você deve especificar um nome de captura instantânea. O nome deve ter de 1 a 63 caracteres e estar em conformidade com RFC 1035 .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do snapshot, use o 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
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua o sinalizador --storage-location para indicar onde armazenar seu snapshot.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION
    
  • ( Visualização ) Para criar um instantâneo com escopo regional em uma região permitida, inclua o sinalizador --region para indicar onde criar seu instantâneo.

    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
    

Substitua o seguinte:

  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_ZONE : a zona do disco de origem.
  • SOURCE_DISK_NAME : o nome do volume do hiperdisco a partir do qual você deseja criar um instantâneo.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro --storage-location somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações do snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro --storage-location . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

A CLI gcloud aguarda até que a operação retorne um status READY ou FAILED ou atinja o tempo limite máximo e retorne os últimos detalhes conhecidos do snapshot.

DESCANSAR

Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

Você deve especificar um nome de captura instantânea. O nome deve ter de 1 a 63 caracteres e estar em conformidade com RFC 1035 .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do snapshot, faça uma solicitação POST para o método snapshots.insert :

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação POST para o método snapshots.insert e inclua a propriedade storageLocations em sua solicitação:

    POST https://compute.googleapis.com/compute/v1/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"
        ],
    }
    
  • ( Visualização ) Para criar um snapshot com escopo regional em uma região permitida, faça uma solicitação POST para o método snapshots.insert e defina a região de criação:

    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"
    }
    

Substitua o seguinte:

  • DESTINATION_PROJECT_ID : o ID do projeto no qual você deseja criar o instantâneo.
  • SNAPSHOT_NAME : um nome para o instantâneo.
  • SOURCE_PROJECT_ID : o ID do projeto do disco de origem.
  • SOURCE_ZONE : a zona do disco de origem.
  • SOURCE_DISK_NAME : o nome do volume do hiperdisco a partir do qual você deseja criar um instantâneo.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro storageLocations somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações de snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro storageLocations . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

O que vem a seguir