Adicionar discos de um pool de armazenamento às VMs


Você pode criar discos em um pool de armazenamento de hiperdisco e, em seguida, anexar o disco a uma instância de máquina virtual (VM), ou pode criar discos no pool de armazenamento ao criar uma VM.

Antes de começar

Funções e permissões necessárias

Para obter as permissões necessárias para criar um disco Hyperdisk Balanced ou Hyperdisk Throughput em um pool de armazenamento, peça ao administrador para conceder a você as seguintes funções do IAM no projeto:

  • Administrador de instância do Compute (v1) ( roles/compute.instanceAdmin.v1 )
  • Para se conectar a uma instância de VM que pode ser executada como uma conta de serviço: Usuário da conta de serviço (v1) (função roles/iam.serviceAccountUser )

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 disco Hyperdisk Balanced ou Hyperdisk Throughput em um pool de armazenamento. 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 disco Hyperdisk Balanced ou Hyperdisk Throughput em um pool de armazenamento:

  • Para criar discos em um pool de armazenamento e anexar os discos a uma instância de VM:
    • compute.disks.create no projeto
    • compute.instances.attachDisk na VM
    • compute.disks.use no volume que você deseja anexar à VM
    • compute.storagePools.use no pool de armazenamento em que você está criando discos
  • Para formatar e montar o volume anexado: compute.instances.setMetadata na VM

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

Para obter as permissões necessárias para criar uma instância, consulte Permissões necessárias .

Limitações

Revise as seguintes limitações para criar discos em um pool de armazenamento de hiperdisco:

  • Você pode criar apenas discos balanceados de hiperdisco em um conjunto de armazenamento balanceado de hiperdisco e pode criar apenas discos de rendimento de hiperdisco em um conjunto de armazenamento de rendimento de hiperdisco.
  • Somente novos discos no mesmo projeto e zona podem ser criados em um pool de armazenamento.
  • Para criar discos de inicialização em um pool de armazenamento, você deve usar um pool de armazenamento balanceado de hiperdisco.
  • Não é permitido mover discos para dentro ou para fora de um pool de armazenamento. Para mover um disco para dentro ou para fora de um pool de armazenamento, é necessário recriar o disco a partir de um instantâneo. Para obter mais informações, consulte Alterar o tipo de disco .
  • Você pode criar até 1.000 discos em um pool de armazenamento.
  • Os pools de armazenamento não oferecem suporte a discos regionais .

Opções de provisionamento

Dependendo do tipo de provisionamento do pool de armazenamento de hiperdisco, você pode escolher como provisionar a capacidade e o desempenho de cada disco criado no pool de armazenamento.

Provisionando capacidade de disco

Se você criar um pool de armazenamento de capacidade avançada, poderá usar o provisionamento dinâmico. Você pode criar discos no pool de armazenamento com um tamanho cumulativo que exceda a capacidade provisionada do pool. A capacidade usada do pool de armazenamento é definida pelo total de dados em uso e não pela quantidade de espaço em disco que você provisionou. Você pode provisionar discos com capacidade agregada de até 500% da capacidade provisionada de um pool de armazenamento de capacidade avançada.

Se você estiver criando discos em um pool de armazenamento de capacidade padrão, crie discos no pool de armazenamento até que o tamanho total de todos os discos no pool de armazenamento atinja a capacidade provisionada do pool de armazenamento. Os discos em um pool de armazenamento com capacidade Padrão se comportam de maneira semelhante aos discos que não são do pool, onde a capacidade é consumida quando você cria os discos.

Desempenho de provisionamento

Se você criar um pool de armazenamento de desempenho avançado, poderá usar o provisionamento dinâmico. Você pode criar discos no pool de armazenamento com uma quantidade cumulativa de IOPS e taxa de transferência que exceda o desempenho provisionado do pool. O desempenho utilizado do pool de armazenamento é definido pelo desempenho total utilizado pelos discos e não pela quantidade de desempenho provisionado para cada disco. Você pode provisionar discos com desempenho agregado de até 500% do desempenho provisionado de um pool de armazenamento de desempenho avançado.

Se você estiver criando discos em um conjunto de armazenamento de desempenho padrão, o IOPS ou a taxa de transferência que você provisiona para um disco deverá ser menor que o IOPS ou a taxa de transferência disponível no conjunto de armazenamento de hiperdisco. O IOPS ou rendimento disponível é o valor provisionado para o pool de armazenamento menos o valor usado para todos os discos criados no pool de armazenamento.

Se alguma das condições do parágrafo anterior não for verdadeira, a solicitação para criar um disco no conjunto de armazenamento falhará e o disco não será criado.

Exemplo

Suponha que você tenha um pool de armazenamento balanceado de hiperdisco com 100.000 IOPS provisionados.

Com provisionamento de desempenho padrão:

  • Você pode provisionar até 100.000 IOPS agregados ao criar discos balanceados de hiperdisco no pool de armazenamento.
  • Você será cobrado pelos 100.000 IOPS de desempenho provisionado do pool de armazenamento balanceado de hiperdisco.
  • Assim como os discos criados fora de um pool de armazenamento, os discos hiperdiscos balanceados em pools de armazenamento de desempenho padrão são provisionados automaticamente com até 3.000 IOPS de linha de base e 140 MiB/s de taxa de transferência de linha de base. Este desempenho de linha de base não é contabilizado no desempenho provisionado do pool de armazenamento. Somente quando você adiciona discos ao pool de armazenamento com desempenho provisionado acima da linha de base é que isso é contabilizado no desempenho provisionado do pool de armazenamento, por exemplo:

    • Um disco provisionado com 3.000 IOPS usa 0 IOPS de pool e o pool ainda tem 100.000 IOPS provisionados disponíveis para outros discos.
    • Um disco provisionado com 13.000 IOPS usa 10.000 IOPS de pool e o pool tem 90.000 IOPS provisionados restantes que você pode alocar para outros discos no pool de armazenamento.

Com provisionamento de desempenho avançado:

  • Você pode provisionar até 500.000 IOPS de desempenho agregado do hiperdisco ao criar discos no pool de armazenamento.
  • Você será cobrado por 100.000 IOPS provisionados pelo pool de armazenamento.
  • Se você criar um único disco ( Disk1 ) no pool de armazenamento que tenha 5.000 IOPS, você não consumirá nenhum IOPS do pool de armazenamento provisionado. No entanto, a quantidade de IOPS que você pode provisionar para novos discos criados no pool de armazenamento agora é de 495.000.
  • Se Disk1 começar a ler e gravar dados e usar o máximo de 5.000 IOPS em um determinado minuto, 5.000 IOPS serão consumidos do IOPS provisionado do pool de armazenamento. Quaisquer outros discos criados no mesmo pool de armazenamento podem usar um máximo agregado de 95.000 IOPS no mesmo minuto sem entrar em contenção.

Crie discos no pool de armazenamento

Você pode usar o console do Google Cloud, a CLI do Google Cloud ou REST para criar um disco em um pool de armazenamento.

Console

Usando o console do Google Cloud, você pode criar um novo disco em um pool de armazenamento por meio da página Pools de armazenamento ou da página Discos .

Na página Pools de armazenamento :

  1. No console do Google Cloud, acesse a página Pools de armazenamento .

    Acesse a página Pools de armazenamento

  2. Clique no nome do pool de armazenamento no qual você gostaria de criar um disco.

  3. Na página Gerenciar pool de armazenamento , clique em +Criar novo disco .

  4. No painel Adicionar novo disco , insira um Nome para o disco.

  5. Especifique ou altere quaisquer valores para os quais você não deseja usar o valor padrão.

  6. Ao terminar de especificar as propriedades do disco, clique em Salvar .

  7. Na página Gerenciar pool de armazenamento , você deverá ver o novo disco listado na seção Discos do pool de armazenamento .

Na página Criar disco :

  1. No console do Google Cloud, acesse Discos > Criar uma página de disco .

    Vá para a página Criar um disco

  2. Insira um nome para o disco.

  3. Selecione a zona que contém o pool de armazenamento no qual você deseja criar o disco.

  4. Para Disk type , escolha o tipo de disco que corresponde ao pool de armazenamento de hiperdisco, seja Hyperdisk Throughput ou Hyperdisk Balanced.

  5. Modifique os valores nos campos Tamanho , IOPS provisionados e Taxa de transferência provisionada , conforme necessário.

  6. Na seção Pool de armazenamento , selecione Habilitar pool de armazenamento e escolha o nome do pool de armazenamento no qual criar o disco. Somente o pool de armazenamento que existe na zona selecionada aparece na lista.

  7. Ao terminar de especificar as informações do disco, clique em Criar .

gcloud

Para criar um ou mais discos em um pool de armazenamento, use o comando gcloud compute disks create .

gcloud compute disks create DISK_NAME \
    --zone=ZONE \
    --storage-pool=STORAGE_POOL_NAME \
    --size=SIZE \
    --type=DISK_TYPE \
    --provisioned-iops=PROVISIONED_IOPS \
    --provisioned-throughput=PROVISIONED_THROUGHPUT

Substitua o seguinte:

  • DISK_NAME : um nome exclusivo para o disco. Você pode fornecer uma lista de nomes de discos especificados por espaços para criar vários discos com os mesmos atributos.
  • ZONE : a zona onde o pool de armazenamento foi criado. Especifique esse valor no formato região-zona, por exemplo us-central1-a .
  • STORAGE_POOL_NAME : o nome do pool de armazenamento no qual criar o disco
  • SIZE : Opcional: a capacidade provisionada 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 nenhum tamanho for especificado, 100 GB será usado como valor padrão.
  • DISK_TYPE : o tipo de disco a ser criado. Isso deve corresponder ao tipo do conjunto de armazenamento de hiperdisco, hyperdisk-balanced ou hyperdisk-throughput .
  • PROVISIONED_IOPS : opcional: o IOPS a ser provisionado para o disco. Você pode usar esse sinalizador somente com discos hiperdiscos balanceados.
  • PROVISIONED_THROUGHPUT : Opcional: a taxa de transferência em mebibyte (MB) por segundo para provisionar o disco.

DESCANSAR

Para criar um ou mais discos em um pool de armazenamento, construa um POST usando o método disks.insert . Inclua as propriedades name , sizeGb , type , storagePool , 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",
    "description": "DESCRIPTION",
    "type": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
    "sizeGb": "DISK_SIZE",
    "storagePool": "STORAGE_POOL_NAME",
    "provisionedIops": "IOPS_LIMIT",
    "provisionedThroughput": "THROUGHPUT_LIMIT",
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto
  • ZONE : a zona na qual o pool de armazenamento está localizado, por exemplo, us-central1-a . Esta é a zona onde o disco será criado.
  • DISK_NAME : um nome exclusivo para o disco.
  • DESCRIPTION : Opcional: uma sequência de texto que descreve o disco.
  • DISK_TYPE : o tipo de disco que deve corresponder ao tipo de pool de armazenamento. Use hyperdisk-throughput ou hyperdisk-balanced .
  • 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. Se nenhum tamanho for especificado, 100 GB será usado como valor padrão.
  • STORAGE_POOL_NAME : o nome do pool de armazenamento no qual criar o disco.
  • IOPS_LIMIT : Opcional: o IOPS a ser provisionado para o disco. Você pode usar esse sinalizador somente com discos hiperdiscos balanceados.
  • THROUGHPUT_LIMIT : Opcional: o rendimento em mebibytes (MB) por segundo para provisionar o disco.

Ir


// createDiskInStoragePool creates a new Hyperdisk in the specified storage pool.
func createDiskInStoragePool(w io.Writer, projectId, zone, diskName, storagePoolName, diskType string) error {
	// Example usage:
	//   projectID := "your_project_id"
	//   zone := "europe-central2-b"
	//   diskName := "your_disk_name"
	//   storagePoolName := "https://www.googleapis.com/compute/v1/projects/your_project_id/zones/europe-central2-b/storagePools/your_storage_pool"
	//   diskType := "zones/europe-central2-b/diskTypes/hyperdisk-balanced"

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

	// Create the disk resource
	disk := &computepb.Disk{
		Name:                  proto.String(diskName),
		Type:                  proto.String(diskType),
		SizeGb:                proto.Int64(50),
		Zone:                  proto.String(zone),
		StoragePool:           proto.String(storagePoolName),
		ProvisionedIops:       proto.Int64(10000),
		ProvisionedThroughput: proto.Int64(1024),
	}

	// Create the insert disk request
	req := &computepb.InsertDiskRequest{
		Project:      projectId,
		Zone:         zone,
		DiskResource: disk,
	}

	// Send the insert disk request
	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, "Disk created in storage pool: %v\n", disk.Name)
	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 CreateDiskInStoragePool {
  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";
    // Link to the storagePool you want to use. Use format :
    // https://www.googleapis.com/compute/v1/projects/%s/zones/%s/storagePools/%s"
    String storagePoolName = "YOUR_STORAGE_POOL_LINK";
    // The type of disk you want to create. This value uses the following format:
    // "zones/{zone}/diskTypes/(hyperdisk-balanced|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: the IOPS to provision for the disk.
    // You can use this flag only with Hyperdisk Balanced disks.
    long provisionedIops = 3000;
    // Optional: the throughput in mebibyte (MB) per second to provision for the disk.
    long provisionedThroughput = 140;

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

  // Creates a hyperdisk in the storage pool
  public static Disk createDiskInStoragePool(String projectId, String zone, String diskName,
                                             String storagePoolName, String diskType,
                                             long diskSizeGb, long iops, long throughput)
          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)
              .setStoragePool(storagePoolName)
              .setProvisionedIops(iops)
              .setProvisionedThroughput(throughput)
              .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 = 'us-central1-a';

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

// The name of the storage pool
// storagePoolName = 'storage-pool-name';

// Link to the storagePool you want to use. Use format:
// https://www.googleapis.com/compute/v1/projects/{projectId}/zones/{zone}/storagePools/{storagePoolName}
const storagePool = `https://www.googleapis.com/compute/v1/projects/${projectId}/zones/${zone}/storagePools/${storagePoolName}`;
// 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 callCreateComputeHyperdiskFromPool() {
  // Create a disk
  const disk = new compute.Disk({
    sizeGb: diskSizeGb,
    name: diskName,
    type: diskType,
    zone,
    storagePool,
    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 callCreateComputeHyperdiskFromPool();

Depois de criar o disco, você poderá anexá-lo a uma VM .

Crie uma VM que use discos no pool de armazenamento

Ao criar uma VM, você configura um disco de inicialização e, opcionalmente, pode criar discos de dados adicionais (não de inicialização), que são anexados automaticamente à VM. As seções a seguir explicam como criar cada tipo de disco em um pool de armazenamento como parte do processo de criação de VM.

Crie o disco de inicialização para uma VM em um pool de armazenamento

Para criar uma VM que usa um disco de inicialização em um pool de armazenamento, você deve primeiro criar um pool de armazenamento balanceado de hiperdisco. Você pode então criar uma VM usando um tipo de máquina que ofereça suporte a discos balanceados de hiperdisco. O tipo de máquina, o tipo de disco e o pool de armazenamento devem estar disponíveis na zona escolhida.

Console

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

    Acesse as instâncias de VM

  2. Clique em Criar instância .

  3. Insira um nome para a instância.

  4. Configure a zona para a mesma zona onde o conjunto de armazenamento está localizado.

  5. Escolha um tipo de máquina que suporte Hyperdisk Balanced, por exemplo H3.

  6. Na seção Disco de inicialização , clique em Alterar .

  7. No painel Disco de inicialização , defina o tipo de disco de inicialização como Hyperdisk Balanced.

  8. Configure as propriedades do disco.

  9. Expanda Mostrar configuração avançada .

  10. Sob o título Pool de armazenamento , selecione Habilitar pool de armazenamento .

  11. Escolha o pool de armazenamento para criar o disco na lista.

  12. Ao terminar a configuração do disco, clique em Selecionar .

  13. Conclua a configuração das propriedades da VM.

  14. Clique em Criar .

    O console cria a VM na zona especificada e cria o disco de inicialização no pool de armazenamento selecionado.

gcloud

Você pode criar o disco de inicialização para uma nova VM no pool de armazenamento usando o comando gcloud compute instances create e incluindo a propriedade storage-pool para o disco de inicialização.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --create-disk=boot=yes,type=hyperdisk-balanced,size=DISK_SIZE,provisioned-throughput=THROUGHPUT, \
    provisioned-iops=IOPS,image=projects/IMAGE_PROJECT/global/images/IMAGE, \
    storage-pool=STORAGE_POOL_NAME

Substitua o seguinte:

  • VM_NAME : o nome da VM.
  • ZONE : a região e zona para criar a VM, usando o formato us-central1-a .
  • MACHINE_TYPE : o tipo de máquina da VM, por exemplo, m3-ultramem-32 .
  • DISK_SIZE : o tamanho, em GiB, do disco de inicialização
  • THROUGHPUT : a taxa de transferência a ser provisionada para o disco
  • IOPS : o IOPS a ser provisionado para o disco
  • IMAGE_PROJECT : o projeto que contém a imagem
  • IMAGE : especifique um dos seguintes:
    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240213 .
    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso cria a instância a partir da imagem de sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , o Compute Engine criará uma VM usando a versão mais recente da imagem do sistema operacional na família de imagens debian-12 . Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .
  • STORAGE_POOL_NAME : o nome do pool de armazenamento no qual criar o novo disco.

DESCANSAR

Você pode criar o disco de inicialização para uma nova VM no pool de armazenamento construindo uma solicitação POST para o método instances.insert e incluindo a propriedade storagePool para o disco de inicialização.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
   "name": "VM_NAME",
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "disks": [
      {
         "deviceName": "BOOT_DISK_DEVICE_NAME",
         "initializeParams": {
            "diskSizeGb": "DISK_SIZE",
            "diskType": "DISK_TYPE",
            "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
            "boot": true,
            "provisionedIops": "IOPS_LIMIT",
            "provisionedThroughput": "THROUGHPUT_LIMIT",
            "storagePool": "POOL_URL"
         }
      }
   ]
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto
  • ZONE : a zona na qual o pool de armazenamento está localizado, por exemplo, us-central1-a . Esta é a zona em que a VM e o disco de inicialização são criados.
  • VM_NAME : o nome da VM.
  • MACHINE_TYPE : o tipo de máquina da VM, por exemplo, m3-ultramem-32 .
  • BOOT_DISK_DEVICE_NAME : o nome do dispositivo para o disco de inicialização
  • DISK_SIZE : o tamanho, em GiB, do disco de inicialização
  • DISK_TYPE : o tipo de disco, especificado como um URI
  • IMAGE_PROJECT : o projeto que contém a imagem
  • IMAGE : especifique um dos seguintes:
    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240213 .
    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso cria a instância a partir da imagem de sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , o Compute Engine criará uma VM usando a versão mais recente da imagem do sistema operacional na família de imagens debian-12 . Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .
  • IOPS_LIMIT : o IOPS a ser provisionado para o disco
  • THROUGHPUT_LIMIT : a taxa de transferência a ser provisionada para o disco
  • POOL_URL : o pool de armazenamento no qual o novo disco é criado. Você pode fornecer isso como uma URL parcial ou completa para o recurso. Por exemplo, os seguintes valores são válidos:
    • https://www.googleapis.com/compute/v1/projects/ PROJECT_ID /zones/ ZONE /storagePools/ STORAGE_POOL_NAME
    • projects/ PROJECT_ID /zones/ ZONE /storagePools/ STORAGE_POOL_NAME
    • zones/ ZONE /storagePools/ STORAGE_POOL_NAME

Crie discos adicionais em um pool de armazenamento durante a criação da VM

Ao criar discos em um pool de armazenamento durante a criação da VM, o tipo de máquina, o tipo de disco e o pool de armazenamento devem estar disponíveis na zona escolhida.

Console

Use as etapas a seguir para usar o console para criar uma nova VM com discos adicionais que não sejam de inicialização:

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

    Acesse as instâncias de VM

  2. Clique em Criar instância .

  3. Insira um nome para a VM.

  4. Configure a zona para a mesma zona onde o conjunto de armazenamento está localizado.

  5. Escolha um tipo de máquina que suporte o tipo de disco usado pelo pool de armazenamento.

  6. Expanda a seção Opções avançadas .

  7. Expanda Discos .

  8. Clique em Adicionar novo disco .

  9. No painel Adicionar novo disco , insira as informações do disco. Defina o tipo de disco para corresponder ao tipo de pool de armazenamento.

  10. Na seção Pool de armazenamento , selecione Habilitar pool de armazenamento .

  11. No campo Selecionar um pool de armazenamento , selecione o pool de armazenamento no qual criar o disco.

  12. Ao terminar a configuração do disco, clique em Salvar .

  13. Conclua a configuração das propriedades da VM.

  14. Clique em Criar .

    O console cria a VM na zona especificada e cria o disco que não é de inicialização no pool de armazenamento selecionado.

gcloud

Você pode criar novos discos em um pool de armazenamento durante a criação da VM usando o comando gcloud compute instances create e incluindo a propriedade storage-pool do disco.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --create-disk=auto-delete=yes,boot=yes,device-name=BOOT_DISK_DEVICE_NAME,image=IMAGE_NAME, \
    size=BOOT_DISK_SIZE,type=BOOT_DISK_TYPE
    --create-disk=auto-delete=yes,boot=no,device-name=DATA_DISK_DEVICE_NAME,size=DATA_DISK_SIZE, \
    type=DATA_DISK_TYPE,provisioned-iops=IOPS,provisioned-throughput=THROUGHPUT, \
    storage_pool=STORAGE_POOL_NAME

Substitua o seguinte:

  • VM_NAME : o nome da VM.
  • ZONE : a região e zona para criar a VM, usando o formato us-central1-a
  • MACHINE_TYPE : o tipo de máquina da VM
  • BOOT_DISK_DEVICE_NAME : o nome do dispositivo para o disco de inicialização
  • IMAGE_NAME : o nome da imagem do sistema operacional a ser instalada no disco de inicialização, por exemplo, debian-12-bookworm-v20240213
  • BOOT_DISK_SIZE : o tamanho, em GiB, do disco de inicialização
  • BOOT_DISK_TYPE : o tipo de disco
  • DATA_DISK_DEVICE_NAME : o nome do dispositivo de disco para o disco de dados
  • DATA_DISK_SIZE : o tamanho do disco de dados, em GiB
  • DATA_DISK_TYPE : o tipo de disco de dados, hyperdisk-balanced ou hyperdisk-throughput
  • IOPS : o IOPS a ser provisionado para o disco
  • THROUGHPUT : a taxa de transferência a ser provisionada para o disco
  • STORAGE_POOL_NAME : o nome exclusivo do pool de armazenamento no qual você deseja criar o disco.

DESCANSAR

Você pode criar novos discos em um pool de armazenamento durante a criação da VM construindo uma solicitação POST para o método instances.insert e incluindo a propriedade storagePool para os discos adicionais.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
   "name": "VM_NAME",
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "disks": [
      {
        "initializeParams":{
            "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
        },
        "boot":true
      },
      {
        "deviceName": "DEVICE_NAME",
        "boot":false,
        "initializeParams": {
           "diskSizeGb": "DISK_SIZE",
           "diskType": "DISK_TYPE",
           "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
           "provisionedIops": "IOPS_LIMIT",
           "provisionedThroughput": "THROUGHPUT_LIMIT",
           "storagePool": "POOL_URL"
        }
      }
   ]
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto
  • ZONE : a zona na qual o pool de armazenamento está localizado, por exemplo, us-central1-a . Esta é a zona em que a VM e o disco de inicialização são criados.
  • VM_NAME : o nome da VM.
  • MACHINE_TYPE : o tipo de máquina da VM, por exemplo, m3-ultramem-32 .
  • IMAGE_PROJECT : o projeto que contém a imagem
  • IMAGE : especifique um dos seguintes:
    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240213 .
    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso cria a instância a partir da imagem de sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , o Compute Engine criará uma VM usando a versão mais recente da imagem do sistema operacional na família de imagens debian-12 . Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .
  • DEVICE_NAME : o nome do dispositivo para o disco de dados
  • DISK_SIZE : o tamanho, em GiB, do disco de dados
  • DISK_TYPE : o tipo de disco, especificado como um URI
  • IOPS_LIMIT : o IOPS a ser provisionado para o disco
  • THROUGHPUT_LIMIT : a taxa de transferência a ser provisionada para o disco
  • POOL_URL : o pool de armazenamento no qual o novo disco é criado. Você pode fornecer isso como uma URL parcial ou completa para o recurso. Por exemplo, os seguintes valores são válidos:
    • https://www.googleapis.com/compute/v1/projects/ PROJECT_ID /zones/ ZONE /storagePools/ STORAGE_POOL_NAME
    • projects/ PROJECT_ID /zones/ ZONE /storagePools/ STORAGE_POOL_NAME
    • zones/ ZONE /storagePools/ STORAGE_POOL_NAME

Usar pool de armazenamento em um modelo de instância

Os modelos de instância usados ​​para criar grupos de instâncias gerenciadas (MIGs) podem conter as informações do pool de armazenamento. Os discos criados usando o modelo de instância são colocados no pool de armazenamento especificado.

Console

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

    Vá para modelos de instância

  2. Clique em Criar modelo de instância .

  3. Insira um nome para o modelo de instância.

  4. Escolha Regional para o local e, no campo Região , escolha a região onde o pool de armazenamento está localizado.

  5. Escolha um tipo de máquina que suporte Hyperdisk Balanced, por exemplo C3.

  6. Na seção Disco de inicialização , clique em Alterar .

  7. No painel Disco de inicialização , defina o tipo de disco de inicialização como Hyperdisk Balanced.

  8. Configure as propriedades do disco.

  9. Expanda Mostrar configuração avançada .

  10. Sob o título Pool de armazenamento , selecione Habilitar pool de armazenamento .

  11. Escolha o pool de armazenamento para criar o disco na lista.

  12. Ao terminar a configuração do disco, clique em Selecionar .

  13. Conclua a configuração das propriedades da VM.

  14. Clique em Criar .

    O modelo cria a VM na zona especificada e cria o disco de inicialização no pool de armazenamento selecionado.

gcloud

Você pode especificar em um modelo de instância que o disco de livro seja criado em um pool de armazenamento usando o comando gcloud compute instance-templates create e incluindo a propriedade storage-pool para o disco de inicialização.

gcloud compute instance-templates create TEMPLATE_NAME \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --create-disk=boot=yes,type=hyperdisk-balanced,size=DISK_SIZE,provisioned-throughput=THROUGHPUT, \
    provisioned-iops=IOPS,image=projects/IMAGE_PROJECT/global/images/IMAGE, \
    storage-pool=STORAGE_POOL_NAME

Substitua o seguinte:

  • TEMPLATE_NAME : o nome do modelo de instância.
  • REGION : a região onde você deseja criar o modelo de instância regional. A região deve conter a zona onde o conjunto de armazenamento está localizado.
  • MACHINE_TYPE : o tipo de máquina a ser usada ao criar a VM, por exemplo, h3-standard-88 .
  • DISK_SIZE : o tamanho, em GiB, do disco
  • THROUGHPUT : a taxa de transferência a ser provisionada para o disco
  • IOPS : o IOPS a ser provisionado para o disco
  • IMAGE_PROJECT : o projeto que contém a imagem
  • IMAGE : especifique um dos seguintes:
    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240213 .
    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso cria a instância a partir da imagem de sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , o Compute Engine criará uma VM usando a versão mais recente da imagem do sistema operacional na família de imagens debian-12 . Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .
  • STORAGE_POOL_NAME : o nome do pool de armazenamento no qual criar o novo disco.

DESCANSAR

Você pode criar o disco de inicialização para uma nova VM no pool de armazenamento construindo uma solicitação POST para o método instances.insert e incluindo a propriedade storagePool para o disco de inicialização.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
{
   "name": "VM_NAME",
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "disks": [
      {
         "deviceName": "BOOT_DISK_DEVICE_NAME",
         "initializeParams": {
            "diskSizeGb": "DISK_SIZE",
            "diskType": "DISK_TYPE",
            "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
            "boot": true,
            "provisionedIops": "IOPS_LIMIT",
            "provisionedThroughput": "THROUGHPUT_LIMIT",
            "storagePool": "POOL_URL"
         }
      }
   ]
}

Substitua o seguinte:

  • PROJECT_ID : o ID do projeto
  • VM_NAME : o nome da VM.
  • ZONE : a zona na qual o pool de armazenamento está localizado, por exemplo, us-central1-a . Esta é a zona em que a VM e o disco de inicialização são criados.
  • MACHINE_TYPE : o tipo de máquina da VM, por exemplo, m3-ultramem-32 .
  • BOOT_DISK_DEVICE_NAME : o nome do dispositivo para o disco de inicialização
  • DISK_SIZE : o tamanho, em GiB, do disco de inicialização
  • DISK_TYPE : o tipo de disco, especificado como um URI
  • IMAGE_PROJECT : o projeto que contém a imagem
  • IMAGE : especifique um dos seguintes:
    • Uma versão específica da imagem do sistema operacional — por exemplo, debian-12-bookworm-v20240213 .
    • Uma família de imagens , que deve ser formatada como family/ IMAGE_FAMILY . Isso cria a instância a partir da imagem de sistema operacional mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12 , o Compute Engine criará uma instância usando a versão mais recente da imagem do sistema operacional na família de imagens debian-12 . Para obter mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens .
  • IOPS_LIMIT : o IOPS a ser provisionado para o disco
  • THROUGHPUT_LIMIT : a taxa de transferência a ser provisionada para o disco
  • POOL_URL : o pool de armazenamento no qual o novo disco é criado. Você pode fornecer isso como uma URL parcial ou completa para o recurso. Por exemplo, os seguintes valores são válidos:
    • https://www.googleapis.com/compute/v1/projects/ PROJECT_ID /zones/ ZONE /storagePools/ STORAGE_POOL_NAME
    • projects/ PROJECT_ID /zones/ ZONE /storagePools/ STORAGE_POOL_NAME
    • zones/ ZONE /storagePools/ STORAGE_POOL_NAME