Crie um novo volume de hiperdisco


Você pode usar um volume Hyperdisk Balanced, Hyperdisk Extreme ou Hyperdisk Throughput com sua instância do Compute Engine concluindo as seguintes tarefas:

  • Crie um volume de hiperdisco em branco, sem inicialização e zonal e anexe-o à sua instância durante ou após a criação da instância.
  • Formate e monte o volume para fornecer acesso a um sistema de dados ou de arquivos.

Para volumes balanceados de hiperdisco, você também pode criar discos de inicialização e discos de dados.

Para obter informações gerais sobre o hiperdisco, consulte Sobre o hiperdisco .

Para adicionar um disco Hyperdisk Balanced High Availability à sua instância, use os seguintes procedimentos:

Antes de começar

Funções e permissões necessárias

Para obter as permissões necessárias para adicionar um volume de hiperdisco à sua instância, peça ao administrador para conceder a você as seguintes funções 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 adicionar um volume de hiperdisco à sua instância. 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 adicionar um volume de hiperdisco à sua instância:

  • Para criar e anexar um volume de hiperdisco:
    • compute.disks.create no projeto
    • compute.instances.attachDisk na instância
    • compute.disks.use no volume que você deseja anexar à instância
  • Para formatar e montar o volume anexado: compute.instances.setMetadata na instância

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

Valores suportados para volumes de hiperdisco

Os valores usados ​​ao criar ou modificar um volume de hiperdisco devem estar dentro do intervalo de valores máximos e mínimos descritos em Limites de hiperdisco por disco .

Se você estiver modificando o tamanho de um volume de hiperdisco anexado a uma VM, os novos valores não poderão exceder os limites de hiperdisco por VM .

O IOPS provisionado e a taxa de transferência para um volume de hiperdisco devem seguir as regras descritas em Sobre IOPS e provisionamento de taxa de transferência para hiperdisco .

Adicione um volume de hiperdisco à sua instância

Você pode criar e anexar um volume de hiperdisco usando o console do Google Cloud, Google Cloud CLI ou REST.

O tamanho, a taxa de transferência e o IOPS especificados ao criar um volume de hiperdisco devem estar no intervalo de valores suportados .

Ao criar um volume balanceado de hiperdisco, você pode opcionalmente permitir que várias instâncias acessem o disco simultaneamente, criando o disco no modo multigravador.

Console

  1. Acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Clique no nome da instância à qual deseja adicionar um disco.

  3. Na página de detalhes da instância de VM , clique em Editar .

  4. Sob o título Discos adicionais , clique em Adicionar novo disco .

  5. Especifique um nome para o disco e, opcionalmente, adicione uma descrição. Selecione Disco vazio como o tipo de origem do disco .

  6. Em Configurações de disco , escolha um tipo de disco na lista a seguir. Os valores especificados devem estar no intervalo de valores suportados .

    1. Hiperdisco balanceado . Você também pode alterar as configurações padrão de tamanho do disco, IOPS provisionadas e taxa de transferência provisionada .
    2. Hiperdisco Extremo . Você também pode alterar as configurações padrão de tamanho do disco e IOPS provisionadas .
    3. ML de hiperdisco . Você também pode alterar as configurações padrão de tamanho do disco e taxa de transferência provisionada .
    4. Taxa de transferência do hiperdisco . Você também pode alterar as configurações padrão de tamanho do disco e taxa de transferência provisionada .
  7. Opcional: Para volumes balanceados de hiperdisco, é possível ativar a anexação do disco a diversas instâncias criando o disco no modo multigravador. Em Modo de acesso , selecione Múltiplas VMs, leitura e gravação .

  8. Clique em Salvar .

  9. Para aplicar suas alterações à instância, clique em Salvar .

gcloud

  1. Use o comando gcloud compute disks create para criar o volume de hiperdisco.

    gcloud compute disks create DISK_NAME \
       --zone=ZONE \
       --size=DISK_SIZE \
       --type=DISK_TYPE \
       --provisioned-iops=IOPS_LIMIT
       --provisioned-throughput=THROUGHPUT_LIMIT
       --access-mode=DISK_ACCESS_MODE
    

    Substitua o seguinte:

    • DISK_NAME : o nome do novo disco.
    • ZONE : o nome da zona onde o novo disco está sendo criado.
    • DISK_SIZE : Opcional: o tamanho do novo disco. O valor deve ser um número inteiro seguido por uma unidade de tamanho GB para gibibyte ou TB para tebibyte. Se nenhuma unidade de tamanho for especificada, 100 GB será usado como valor padrão. Os valores aceitos para o tamanho do disco são:
      • Hiperdisco balanceado: de 4 GiB a 64 TiB, inclusive, em incrementos de 1 GiB.
      • Hyperdisk Extreme: De 64 GiB a 64 TiB, inclusive, em incrementos de 1 GiB.
      • Hyperdisk ML: De 4 GiB a 64 TiB, inclusive, em incrementos de 1 GiB.
      • Taxa de transferência do hiperdisco: de 2 TiB a 32 TiB, inclusive, em incrementos de 1 GiB.
    • DISK_TYPE : o tipo de disco. Use um dos seguintes valores: hyperdisk-balanced , hyperdisk-extreme , hyperdisk-ml ou hyperdisk-throughput
    • IOPS_LIMIT : Opcional: para discos Hyperdisk Balanced ou Hyperdisk Extreme, esse é o número de operações de E/S por segundo (IOPS) que o disco pode manipular.
    • THROUGHPUT_LIMIT : Opcional: para volumes Hyperdisk Balanced, Hyperdisk ML ou Hyperdisk Throughput, este é um número inteiro que representa o rendimento máximo, medido em MiB por segundo, que o disco pode fornecer.
    • DISK_ACCESS_MODE : opcional: como as instâncias de computação podem acessar os dados no disco. Os valores suportados são:

      • READ_WRITE_SINGLE , para acesso de leitura e gravação de uma instância. Este é o padrão.
      • READ_WRITE_MANY , (somente Hyperdisk Balanced e Hyperdisk Balanced High Availability) para acesso simultâneo de leitura e gravação de diversas instâncias.
      • READ_ONLY_MANY , (somente Hyperdisk ML) para acesso somente leitura simultâneo de várias instâncias.

      Para definir o modo de acesso para discos de alta disponibilidade balanceada de hiperdisco, consulte Criar um disco regional .

  2. Opcional: use o comando gcloud compute disks describe DISK_NAME para ver uma descrição do seu disco.

  3. Depois de criar o disco, você poderá anexá-lo a uma instância .

DESCANSAR

  1. Construa uma solicitação POST para criar um hiperdisco zonal usando o método disks.insert . Inclua as propriedades name , sizeGb , type , provisionedIops e provisionedThroughput . Para criar este disco como um disco sem inicialização vazio e não formatado, não especifique uma imagem de origem ou um instantâneo de origem.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    {
       "name": "DISK_NAME",
       "sizeGb": "DISK_SIZE",
       "type": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
       "provisionedIops": "IOPS_LIMIT",
       "provisionedThroughput": "THROUGHPUT_LIMIT",
       "accessMode": "DISK_ACCESS_MODE"
    }
    

    Substitua o seguinte:

    • PROJECT_ID : o ID do seu projeto
    • ZONE : a zona onde sua instância e seu novo disco estão localizados
    • DISK_NAME : o nome do novo disco
    • DISK_SIZE : Opcional: o tamanho do novo disco. O valor deve ser um número inteiro seguido por uma unidade de tamanho GB para gibibytes ou TB para tebibytes.
    • DISK_TYPE : o tipo de disco. Para criar um volume de hiperdisco, use um dos seguintes valores: hyperdisk-balanced , hyperdisk-extreme , hyperdisk-ml ou hyperdisk-throughput .
    • IOPS_LIMIT : Opcional: para Hyperdisk Balanced e Hyperdisk Extreme, este é o número de operações de E/S por segundo que o disco pode manipular.
    • THROUGHPUT_LIMIT : Opcional: para volumes Hyperdisk Balanced, Hyperdisk ML ou Hyperdisk Throughput, este é um número inteiro que representa o rendimento máximo, medido em MiB por segundo, que o disco pode fornecer.
    • DISK_ACCESS_MODE : opcional: como as instâncias de computação podem acessar os dados no disco. Os valores suportados são:

      • READ_WRITE_SINGLE , para acesso de leitura e gravação de uma instância. Este é o padrão.
      • READ_WRITE_MANY , (somente Hyperdisk Balanced e Hyperdisk Balanced High Availability) para acesso simultâneo de leitura e gravação de diversas instâncias.
      • READ_ONLY_MANY , (somente Hyperdisk ML) para acesso somente leitura simultâneo de várias instâncias.

      Para definir o modo de acesso para discos de alta disponibilidade balanceada de hiperdisco, consulte Criar um disco regional .

  2. Opcional: Use o método compute.disks.get para ver uma descrição do seu disco.

  3. Depois de criar o disco, você poderá anexá-lo a qualquer instância em execução ou interrompida.

Ir

// createHyperdisk creates a new Hyperdisk in the specified project and zone.
func createHyperdisk(w io.Writer, projectId, zone, diskName string) error {
	//   projectID := "your_project_id"
	//   zone := "europe-central2-b"
	//   diskName := "your_disk_name"

	ctx := context.Background()
	client, err := compute.NewDisksRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewDisksRESTClient: %v", err)
	}
	defer client.Close()

	// use format "zones/{zone}/diskTypes/(hyperdisk-balanced|hyperdisk-throughput)".
	diskType := fmt.Sprintf("zones/%s/diskTypes/hyperdisk-balanced", zone)

	// Create the disk
	disk := &computepb.Disk{
		Name:   proto.String(diskName),
		Type:   proto.String(diskType),
		SizeGb: proto.Int64(10),
		Zone:   proto.String(zone),
	}

	req := &computepb.InsertDiskRequest{
		Project:      projectId,
		Zone:         zone,
		DiskResource: disk,
	}

	op, err := client.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("Insert disk request failed: %v", err)
	}

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

	fmt.Fprintf(w, "Hyperdisk created: %v\n", diskName)
	return nil
}

Java


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

public class CreateHyperdisk {
  public static void main(String[] args)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // Project ID or project number of the Google Cloud project you want to use.
    String projectId = "YOUR_PROJECT_ID";
    // Name of the zone in which you want to create the disk.
    String zone = "europe-central2-b";
    // Name of the disk you want to create.
    String diskName = "YOUR_DISK_NAME";
    // The type of disk you want to create. This value uses the following format:
    // "zones/{zone}/diskTypes/(hyperdisk-balanced|hyperdisk-extreme|hyperdisk-throughput)".
    // For example: "zones/us-west3-b/diskTypes/hyperdisk-balanced"
    String diskType = String.format("zones/%s/diskTypes/hyperdisk-balanced", zone);
    // Size of the new disk in gigabytes.
    long diskSizeGb = 10;
    // Optional: For Hyperdisk Balanced or Hyperdisk Extreme disks,
    // this is the number of I/O operations per second (IOPS) that the disk can handle
    long provisionedIops = 3000;
    // Optional: For Hyperdisk Balanced or Hyperdisk Throughput volumes,
    // this is an integer that represents the throughput,
    // measured in MiB per second, that the disk can handle.
    long provisionedThroughput = 140;

    createHyperdisk(projectId, zone, diskName, diskType, diskSizeGb,
            provisionedIops, provisionedThroughput);
  }

  // Creates a hyperdisk in a project
  public static Disk createHyperdisk(String projectId, String zone, String diskName,
                                     String diskType, long diskSizeGb, long provisionedIops,
                                     long provisionedThroughput)
          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.
    try (DisksClient client = DisksClient.create()) {
      // Create a disk.
      Disk disk = Disk.newBuilder()
              .setZone(zone)
              .setName(diskName)
              .setType(diskType)
              .setSizeGb(diskSizeGb)
              .setProvisionedIops(provisionedIops)
              .setProvisionedThroughput(provisionedThroughput)
              .build();

      InsertDiskRequest request = InsertDiskRequest.newBuilder()
              .setProject(projectId)
              .setZone(zone)
              .setDiskResource(disk)
              .build();

      // Wait for the insert disk operation to complete.
      Operation operation = client.insertAsync(request).get(1, TimeUnit.MINUTES);

      if (operation.hasError()) {
        System.out.println("Disk creation failed!");
        throw new Error(operation.getError().toString());
      }

      // Wait for server update
      TimeUnit.SECONDS.sleep(10);

      Disk hyperdisk = client.get(projectId, zone, diskName);

      System.out.printf("Hyperdisk '%s' has been created successfully", hyperdisk.getName());

      return hyperdisk;
    }
  }
}

Node.js

// Import the Compute library
const computeLib = require('@google-cloud/compute');
const compute = computeLib.protos.google.cloud.compute.v1;

// Instantiate a diskClient
const disksClient = new computeLib.DisksClient();
// Instantiate a zoneOperationsClient
const zoneOperationsClient = new computeLib.ZoneOperationsClient();

/**
 * TODO(developer): Update/uncomment these variables before running the sample.
 */
// Project ID or project number of the Google Cloud project you want to use.
const projectId = await disksClient.getProjectId();

// The zone where your VM and new disk are located.
// zone = 'europe-central2-b';

// The name of the new disk
// diskName = 'disk-name';

// The type of disk. This value uses the following format:
// "zones/{zone}/diskTypes/(hyperdisk-balanced|hyperdisk-extreme|hyperdisk-ml|hyperdisk-throughput)".
// For example: "zones/us-west3-b/diskTypes/hyperdisk-balanced"
const diskType = `zones/${zone}/diskTypes/hyperdisk-balanced`;
// Size of the new disk in gigabytes.
const diskSizeGb = 10;
// Optional: For Hyperdisk Balanced or Hyperdisk Extreme disks,
// this is the number of I/O operations per second (IOPS) that the disk can handle.
const provisionedIops = 3000;
// Optional: For Hyperdisk Balanced or Hyperdisk Throughput volumes,
// this is an integer that represents the throughput,
// measured in MiB per second, that the disk can handle.
const provisionedThroughput = 140;

async function callCreateComputeHyperdisk() {
  // Create a disk
  const disk = new compute.Disk({
    sizeGb: diskSizeGb,
    name: diskName,
    zone,
    type: diskType,
    provisionedIops,
    provisionedThroughput,
  });

  const [response] = await disksClient.insert({
    project: projectId,
    zone,
    diskResource: disk,
  });

  let operation = response.latestResponse;

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

  console.log(`Disk: ${diskName} created.`);
}

await callCreateComputeHyperdisk();

Depois de criar o disco, você poderá anexá-lo a qualquer instância em execução ou interrompida.

Formate e monte o disco

Depois de criar e anexar o novo disco a uma instância , você deverá formatar e montar o disco para que o sistema operacional possa usar o espaço de armazenamento disponível.

O que vem a seguir