Aggiungi dischi da un pool Hyperdisk alle VM

Questo documento descrive come creare dischi in un pool.

Puoi creare un disco in un pool e poi collegarlo a un'istanza di una macchina virtuale (VM) oppure puoi creare dischi nel pool quando crei un'istanza VM.

Non puoi spostare un disco esistente all'interno o all'esterno di un pool. Devi creare un nuovo disco da quello esistente. Per farlo, consulta Modificare il tipo, il posizionamento o la posizione di un disco.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    2. Set a default region and zone.

    Go

    Per utilizzare gli esempi di Go in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Set up authentication for a local development environment.

    Java

    Per utilizzare gli esempi di Java in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Set up authentication for a local development environment.

    Node.js

    Per utilizzare gli esempi di Node.js in questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura Credenziali predefinite dell'applicazione con le tue credenziali utente.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta Set up authentication for a local development environment.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI.

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per creare un disco Hyperdisk bilanciato o throughput Hyperdisk in un pool, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)
  • Per connetterti a un'istanza VM che può essere eseguita come service account: Service Account User (v1) (ruolo roles/iam.serviceAccountUser)

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per creare un disco Hyperdisk bilanciato o throughput Hyperdisk in un pool. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare un disco Hyperdisk bilanciato o throughput Hyperdisk in un pool, sono necessarie le seguenti autorizzazioni:

  • Per creare dischi in un pool e collegarli a un'istanza VM:
    • compute.disks.create sul progetto
    • compute.instances.attachDisk sulla VM
    • compute.disks.use sul volume che vuoi collegare alla VM
    • compute.storagePools.use sul pool in cui stai creando i dischi
  • Per formattare e montare il volume collegato: compute.instances.setMetadata sulla VM

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per le autorizzazioni necessarie per creare un'istanza, consulta Autorizzazioni obbligatorie.

Limitazioni

Limitazioni per l'aggiunta di dischi a un pool:

  • Puoi creare solo dischi Hyperdisk bilanciato in un pool Hyperdisk bilanciato e solo dischi throughput Hyperdisk in un pool throughput Hyperdisk.
  • In un pool è possibile creare nuovi dischi solo nello stesso progetto e nella stessa zona.
  • I pool non supportano dischi a livello di regione.
  • Non puoi spostare i dischi all'interno o all'esterno di un pool. Per spostare un disco all'interno o all'esterno di un pool, devi ricrearlo da uno snapshot. Per ulteriori informazioni, consulta Cambia il tipo di disco.
  • Per creare dischi di avvio in un pool, devi utilizzare un pool di archiviazione Hyperdisk bilanciato o un pool di espansione Hyperdisk bilanciato.

Limitazioni specifiche per i pool di archiviazione:

  • Puoi creare fino a 10.000 dischi in un pool di archiviazione.

Limitazioni specifiche per Exapools:

  • Puoi creare fino a 500.000 dischi in un Exapool.

Opzioni di provisioning

A seconda del tipo di provisioning per il pool, puoi scegliere come eseguire il provisioning sia della capacità che delle prestazioni di ogni disco creato nel pool.

Provisioning della capacità del disco

Se utilizzi un pool di archiviazione Exapool o con capacità avanzata, puoi creare dischi nel pool con dimensioni cumulative superiori alla capacità sottoposta a provisioning del pool. La capacità utilizzata del pool è definita dai dati in uso totali e non dalla quantità di spazio su disco sottoposta a provisioning. Puoi eseguire il provisioning di dischi con una capacità aggregata fino a 5 o 50 volte la capacità sottoposta a provisioning di un pool con Capacità avanzata o di un pool Hyperdisk Exapool, rispettivamente.

Se crei dischi in un pool con capacità standard, devi creare dischi nel pool finché le dimensioni totali di tutti i dischi nel pool non raggiungono la capacità sottoposta a provisioning del pool. I dischi di un pool con Capacità standard si comportano in modo simile ai dischi non appartenenti a un pool, in cui la capacità viene utilizzata al momento della creazione dei dischi.

Provisioning delle prestazioni

Se utilizzi un pool di archiviazione Exapool o con capacità avanzata, puoi creare dischi nel pool con un valore cumulativo di IOPS e throughput che superi le prestazioni di provisioning del pool. Le prestazioni utilizzate del pool sono definite dalle prestazioni totali utilizzate dai dischi e non dalla quantità di prestazioni sottoposte a provisioning per ciascun disco.

  • Per i pool di archiviazione, puoi eseguire il provisioning di dischi con prestazioni aggregate fino al 500% delle prestazioni sottoposte a provisioning di un pool con prestazioni avanzate.

  • Per Exapools, puoi eseguire il provisioning di dischi con prestazioni aggregate fino a 50 volte le prestazioni di scrittura sottoposte a provisioning del pool.

Se crei dischi in un pool di prestazioni Standard, le IOPS o il throughput sottoposti a provisioning per un disco devono essere inferiori a quelli disponibili nel pool di archiviazione Hyperdisk. Le IOPS o il throughput disponibili corrispondono alla quantità sottoposta a provisioning per il pool meno la quantità utilizzata per tutti i dischi creati nel pool.

Se una delle condizioni del paragrafo precedente non è vera, la richiesta di creazione di un disco nel pool ha esito negativo e il disco non viene creato.

Esempio

Supponi di avere un pool di archiviazione Hyperdisk bilanciato per cui hai eseguito il provisioning di 100.000 IOPS.

Con il provisioning di Prestazioni standard:

  • Puoi eseguire il provisioning di un massimo di 100.000 IOPS aggregate durante la creazione di dischi Hyperdisk bilanciato nel pool di archiviazione.
  • Ti viene addebitato il costo delle prestazioni sottoposte a provisioning del pool di archiviazione Hyperdisk bilanciato, pari a 100.000 IOPS.
  • Come per i dischi creati al di fuori di un pool di archiviazione, per i dischi Hyperdisk bilanciato nei pool di archiviazione con Prestazioni standard viene eseguito automaticamente il provisioning di un massimo di 3000 IOPS di base e 140 MiB/s di throughput come base di riferimento. Queste prestazioni di base non vengono conteggiate nelle prestazioni sottoposte a provisioning per il pool di archiviazione. Solo quando aggiungi al pool di archiviazione dischi con prestazioni sottoposte a provisioning superiori alla base di riferimento, queste vengono conteggiate ai fini del calcolo delle prestazioni di cui hai eseguito il provisioning per il pool di archiviazione, ad esempio:

    • Un disco con provisioning di 3000 IOPS utilizza 0 IOPS del pool e il pool ha ancora 100.000 IOPS sottoposte a provisioning disponibili per altri dischi.
    • Un disco con provisioning di 13.000 IOPS utilizza 10.000 IOPS del pool e il pool ha 90.000 IOPS sottoposte a provisioning rimanenti che puoi allocare ad altri dischi nel pool di archiviazione.

Con il provisioning di Prestazioni avanzate:

  • Puoi eseguire il provisioning di un massimo di 500.000 IOPS di prestazioni Hyperdisk aggregate quando crei i dischi nel pool di archiviazione.
  • Ti vengono addebitate 100.000 IOPS sottoposte a provisioning dal pool di archiviazione.
  • Se crei un singolo disco (Disk1) nel pool di archiviazione con 5000 IOPS, non consumi alcuna delle IOPS sottoposte a provisioning del pool di archiviazione. Tuttavia, la quantità di IOPS di cui puoi eseguire il provisioning per i nuovi dischi creati nel pool di archiviazione ora è pari a 495.000.
  • Se Disk1 inizia a leggere e scrivere dati e utilizza il massimo di 5000 IOPS in un determinato minuto, vengono consumate 5000 delle IOPS sottoposte a provisioning del pool di archiviazione. Tutti gli altri dischi creati nello stesso pool di archiviazione possono utilizzare un massimo aggregato di 95.000 IOPS nello stesso minuto senza generare conflitti.

Crea dischi nel pool

Puoi utilizzare la console Google Cloud , Google Cloud CLI o REST per creare un disco in un pool.

Console

Utilizzando la console Google Cloud , puoi creare un nuovo disco in un pool tramite la pagina Pool di archiviazione o la pagina Dischi.

Nella pagina Pool di archiviazione:

  1. Nella console Google Cloud , vai alla pagina Pool di archiviazione.

    Vai alla pagina Pool di archiviazione

  2. Seleziona la scheda Exapools o Pool di archiviazione.

  3. Fai clic sul nome del pool in cui vuoi creare un disco.

  4. Nella pagina Gestisci pool di archiviazione, fai clic su +Crea nuovo disco.

  5. Nel riquadro Aggiungi nuovo disco, inserisci un nome per il disco.

  6. Specifica o modifica i valori per i quali non vuoi utilizzare il valore predefinito.

  7. Al termine della specifica delle proprietà del disco, fai clic su Salva.

  8. Nella pagina Gestisci pool di archiviazione, dovresti vedere il nuovo disco elencato nella sezione Dischi del pool di archiviazione.

Nella pagina Crea disco:

  1. Nella console Google Cloud , vai alla pagina Dischi > Crea un disco.

    Vai alla pagina Crea un disco

  2. Inserisci un nome per il disco.

  3. Seleziona la zona contenente il pool in cui vuoi creare il disco.

  4. Per Tipo di disco, scegli il tipo di disco corrispondente al pool, throughput Hyperdisk o Hyperdisk bilanciato.

  5. Modifica i valori nei campi Dimensioni, IOPS sottoposte a provisioning e Throughput riservato, se necessario.

  6. Nella sezione Pool di archiviazione, seleziona Abilita pool di archiviazione, quindi scegli il nome del pool in cui creare il disco. Nell'elenco vengono visualizzati solo i pool esistenti nella zona selezionata.

  7. Al termine della specifica delle informazioni sul disco, fai clic su Crea.

gcloud

Per creare uno o più dischi in un pool, utilizza il 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

Sostituisci quanto segue:

  • DISK_NAME: un nome univoco per il disco. Puoi fornire un elenco di nomi di dischi specificati da spazi per creare più dischi con gli stessi attributi.
  • ZONE: la zona in cui è stato creato il pool. Specifica questo valore in formato regione-zona, ad esempio us-central1-a.
  • STORAGE_POOL_NAME: il nome del pool in cui creare il disco.
  • SIZE: (Facoltativo) la capacità sottoposta a provisioning del nuovo disco. Il valore deve essere un numero intero seguito da un'unità di misura delle dimensioni in GB per i gibibyte o TB per i tebibyte. Se non vengono specificate le dimensioni, viene utilizzato il valore predefinito di 100 GB.
  • DISK_TYPE: il tipo di disco da creare. Deve corrispondere al tipo del pool di archiviazione Hyperdisk, hyperdisk-balanced o hyperdisk-throughput.
  • PROVISIONED_IOPS: (Facoltativo) le IOPS di cui eseguire il provisioning per il disco. Puoi utilizzare questo flag solo con i dischi Hyperdisk bilanciato.
  • PROVISIONED_THROUGHPUT: (Facoltativo) il throughput in MiB/s di cui eseguire il provisioning per il disco.

REST

Per creare uno o più dischi in un pool, crea un POST utilizzando il metodo disks.insert. Includi le proprietà name, sizeGb, type, storagePool, provisionedIops e provisionedThroughput. Per creare questo disco come disco non di avvio vuoto e non formattato, non specificare un'immagine di origine o uno snapshot di origine.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto
  • ZONE: la zona in cui si trova il pool, ad esempio us-central1-a. Questa è la zona in cui verrà creato il disco.
  • DISK_NAME: un nome univoco per il disco.
  • DESCRIPTION: (Facoltativo) una stringa di testo che descrive il disco.
  • DISK_TYPE: il tipo di disco, che deve corrispondere al tipo di pool. Utilizza hyperdisk-throughput o hyperdisk-balanced.
  • DISK_SIZE: (Facoltativo) le dimensioni del nuovo disco. Il valore deve essere un numero intero seguito da un'unità di misura delle dimensioni in GB per i gibibyte o TB per i tebibyte. Se non vengono specificate le dimensioni, viene utilizzato il valore predefinito di 100 GB.
  • STORAGE_POOL_NAME: il nome del pool in cui creare il disco.
  • IOPS_LIMIT: (Facoltativo) le IOPS di cui eseguire il provisioning per il disco. Puoi utilizzare questo flag solo con i dischi Hyperdisk bilanciato.
  • THROUGHPUT_LIMIT: (Facoltativo) il throughput in MiB/s di cui eseguire il provisioning per il disco.

Go


// 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();

Dopo aver creato il disco, puoi collegarlo a una VM.

Crea una VM che utilizza i dischi nel pool

Quando crei una VM, configuri un disco di avvio e, facoltativamente, puoi creare dischi di dati aggiuntivi (non di avvio) che vengono collegati automaticamente alla VM. Le sezioni seguenti spiegano come creare ogni tipo di disco in un pool durante il processo di creazione della VM.

Crea il disco di avvio per una VM in un pool

Per creare una VM che utilizza un disco di avvio in un pool, devi prima creare un pool di archiviazione Hyperdisk bilanciato o un Exapool Hyperdisk bilanciato. Puoi quindi creare un'istanza utilizzando un tipo di macchina che supporta i dischi Hyperdisk bilanciato. Il tipo di macchina, il tipo di disco e il pool devono essere tutti disponibili nella zona scelta.

Console

  1. Nella console Google Cloud , vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic su Crea istanza.

  3. Inserisci un nome per l'istanza.

  4. Imposta la zona sulla stessa zona in cui si trova il pool.

  5. Scegli un tipo di macchina che supporti Hyperdisk bilanciato, ad esempio H3.

  6. Nella sezione Disco di avvio, fai clic su Cambia.

  7. Nel riquadro Disco di avvio, imposta Tipo di disco di avvio su Hyperdisk bilanciato.

  8. Configura le proprietà per il disco.

  9. Espandi Mostra configurazione avanzata.

  10. Nella sezione Pool di archiviazione, seleziona Abilita pool di archiviazione.

  11. Scegli il pool in cui creare il disco dall'elenco.

  12. Al termine della configurazione del disco, fai clic su Seleziona.

  13. Completa la configurazione delle proprietà della VM.

  14. Fai clic su Crea.

    La console crea la VM nella zona specificata e il disco di avvio nel pool selezionato.

gcloud

Puoi creare il disco di avvio per una nuova VM nel pool utilizzando il comando gcloud compute instances create e includendo la proprietà storage-pool per il disco di avvio.

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

Sostituisci quanto segue:

  • VM_NAME: il nome della VM.
  • ZONE: la regione e la zona in cui creare la VM, utilizzando il formato us-central1-a.
  • MACHINE_TYPE: il tipo di macchina della VM, ad esempio m3-ultramem-32.
  • DISK_SIZE: le dimensioni, in GiB, del disco di avvio.
  • THROUGHPUT: il throughput di cui eseguire il provisioning per il disco.
  • IOPS: le IOPS di cui eseguire il provisioning per il disco.
  • IMAGE_PROJECT: il progetto che contiene l'immagine.
  • IMAGE: specifica una delle seguenti opzioni:
    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240213.
    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. In questo modo, l'istanza viene creata dall'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, Compute Engine crea una VM utilizzando l'ultima versione dell'immagine sistema operativo nella famiglia di immagini debian-12. Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta le rispettive best practice.
  • STORAGE_POOL_NAME: il nome del pool di archiviazione in cui creare il nuovo disco.

REST

Puoi creare il disco di avvio per una nuova VM nel pool creando una richiesta POST per il metodo instances.insert e includendo la proprietà storagePool per il disco di avvio.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto
  • ZONE: la zona in cui si trova il pool, ad esempio us-central1-a. Questa è la zona in cui vengono creati la VM e il disco di avvio.
  • VM_NAME: il nome della VM.
  • MACHINE_TYPE: il tipo di macchina della VM, ad esempio m3-ultramem-32.
  • BOOT_DISK_DEVICE_NAME: il nome del dispositivo per il disco di avvio.
  • DISK_SIZE: le dimensioni, in GiB, del disco di avvio.
  • DISK_TYPE: il tipo di disco, specificato come URI.
  • IMAGE_PROJECT: il progetto che contiene l'immagine.
  • IMAGE: specifica una delle seguenti opzioni:
    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240213.
    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. In questo modo, l'istanza viene creata dall'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, Compute Engine crea una VM utilizzando l'ultima versione dell'immagine sistema operativo nella famiglia di immagini debian-12. Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta le rispettive best practice.
  • IOPS_LIMIT: le IOPS di cui eseguire il provisioning per il disco.
  • THROUGHPUT_LIMIT: il throughput di cui eseguire il provisioning per il disco.
  • POOL_URL: il pool di archiviazione in cui viene creato il nuovo disco. Puoi fornire l'URL completo o parziale della risorsa. Ad esempio, i seguenti sono valori validi:
    • 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

Crea dischi aggiuntivi in un pool durante la creazione della VM

Quando crei i dischi in un pool durante la creazione della VM, il tipo di macchina, il tipo di disco e il pool devono essere disponibili nella zona scelta.

Console

Per utilizzare la console per creare una nuova VM con dischi aggiuntivi non di avvio, procedi nel seguente modo:

  1. Nella console Google Cloud , vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic su Crea istanza.

  3. Inserisci un nome per la VM.

  4. Imposta la zona sulla stessa zona in cui si trova il pool.

  5. Scegli un tipo di macchina che supporti il tipo di disco utilizzato dal pool.

  6. Espandi la sezione Opzioni avanzate.

  7. Espandi Dischi.

  8. Fai clic su Aggiungi nuovo disco.

  9. Nel riquadro Aggiungi nuovo disco, inserisci le informazioni del disco. Imposta il Tipo di disco in modo che corrisponda al tipo di pool.

  10. Nella sezione Pool di archiviazione, seleziona Abilita pool di archiviazione.

  11. Nel campo Seleziona un pool di archiviazione, seleziona il pool in cui creare il disco.

  12. Al termine della configurazione del disco, fai clic su Salva.

  13. Completa la configurazione delle proprietà della VM.

  14. Fai clic su Crea.

    La console crea la VM nella zona specificata e il disco non di avvio nel pool selezionato.

gcloud

Puoi creare nuovi dischi in un pool durante la creazione della VM utilizzando il comando gcloud compute instances create e includendo la proprietà storage-pool per il 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

Sostituisci quanto segue:

  • VM_NAME: il nome della VM
  • ZONE: la regione e la zona in cui creare la VM, utilizzando il formato us-central1-a
  • MACHINE_TYPE: il tipo di macchina della VM
  • BOOT_DISK_DEVICE_NAME: il nome del dispositivo per il disco di avvio
  • IMAGE_NAME: il nome dell'immagine sistema operativo da installare sul disco di avvio, ad esempio debian-12-bookworm-v20240213
  • BOOT_DISK_SIZE: le dimensioni, in GiB, del disco di avvio
  • BOOT_DISK_TYPE: il tipo di disco
  • DATA_DISK_DEVICE_NAME: il nome del dispositivo per il disco dati
  • DATA_DISK_SIZE: le dimensioni del disco dati in GiB
  • DATA_DISK_TYPE: il tipo di disco dati, hyperdisk-balanced o hyperdisk-throughput
  • IOPS: le IOPS di cui eseguire il provisioning per il disco
  • THROUGHPUT: il throughput di cui eseguire il provisioning per il disco.
  • STORAGE_POOL_NAME: il nome univoco del pool in cui vuoi creare il disco.

REST

Puoi creare nuovi dischi in un pool durante la creazione della VM creando una richiesta POST per il metodo instances.insert e includendo la proprietà storagePool per i dischi aggiuntivi.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto
  • ZONE: la zona in cui si trova il pool, ad esempio us-central1-a. Questa è la zona in cui vengono creati la VM e il disco di avvio.
  • VM_NAME: il nome della VM.
  • MACHINE_TYPE: il tipo di macchina della VM, ad esempio m3-ultramem-32.
  • IMAGE_PROJECT: il progetto che contiene l'immagine.
  • IMAGE: specifica una delle seguenti opzioni:
    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240213.
    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. In questo modo, l'istanza viene creata dall'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, Compute Engine crea una VM utilizzando l'ultima versione dell'immagine sistema operativo nella famiglia di immagini debian-12. Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta le rispettive best practice.
  • DEVICE_NAME: il nome del dispositivo per il disco dati.
  • DISK_SIZE: le dimensioni, in GiB, del disco dati.
  • DISK_TYPE: il tipo di disco, specificato come URI.
  • IOPS_LIMIT: le IOPS di cui eseguire il provisioning per il disco.
  • THROUGHPUT_LIMIT: il throughput di cui eseguire il provisioning per il disco.
  • POOL_URL: il pool di archiviazione in cui viene creato il nuovo disco. Puoi fornire l'URL completo o parziale della risorsa. Ad esempio, i seguenti sono valori validi:
    • 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

Utilizza il pool in un modello di istanza

I modelli di istanza utilizzati per creare gruppi di istanze gestite (MIG) possono contenere le informazioni sul pool. I dischi creati utilizzando il modello di istanza vengono posizionati nel pool specificato.

Console

  1. Nella console Google Cloud , vai alla pagina Template di istanza.

    Vai a Modelli di istanza

  2. Fai clic su Crea modello di istanza.

  3. Inserisci un nome per il modello di istanza.

  4. Scegli Regionale per la località e nel campo Regione, scegli la regione in cui si trova il pool.

  5. Scegli un tipo di macchina che supporti Hyperdisk bilanciato, ad esempio C3.

  6. Nella sezione Disco di avvio, fai clic su Cambia.

  7. Nel riquadro Disco di avvio, imposta Tipo di disco di avvio su Hyperdisk bilanciato.

  8. Configura le proprietà per il disco.

  9. Espandi Mostra configurazione avanzata.

  10. Nella sezione Pool di archiviazione, seleziona Abilita pool di archiviazione.

  11. Scegli il pool in cui creare il disco dall'elenco.

  12. Al termine della configurazione del disco, fai clic su Seleziona.

  13. Completa la configurazione delle proprietà della VM.

  14. Fai clic su Crea.

    Il modello crea la VM nella zona specificata e il disco di avvio nel pool selezionato.

gcloud

In un modello di istanza puoi specificare che il disco di avvio venga creato in un pool utilizzando il comando gcloud compute instance-templates create e includendo la proprietà storage-pool per il disco di avvio.

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

Sostituisci quanto segue:

  • TEMPLATE_NAME: il nome del modello di istanza.
  • REGION: la regione in cui vuoi creare il modello di istanza regionale. La regione deve contenere la zona in cui si trova il pool.
  • MACHINE_TYPE: il tipo di macchina da utilizzare per la creazione della VM, ad esempio h3-standard-88.
  • DISK_SIZE: le dimensioni, in GiB, del disco.
  • THROUGHPUT: il throughput di cui eseguire il provisioning per il disco.
  • IOPS: le IOPS di cui eseguire il provisioning per il disco.
  • IMAGE_PROJECT: il progetto che contiene l'immagine.
  • IMAGE: specifica una delle seguenti opzioni:
    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240213.
    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. In questo modo, l'istanza viene creata dall'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, Compute Engine crea una VM utilizzando l'ultima versione dell'immagine sistema operativo nella famiglia di immagini debian-12. Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta le rispettive best practice.
  • STORAGE_POOL_NAME: il nome del pool di archiviazione in cui creare il nuovo disco.

REST

Puoi creare il disco di avvio per una nuova VM nel pool creando una richiesta POST per il metodo instances.insert e includendo la proprietà storagePool per il disco di avvio.

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto.
  • VM_NAME: il nome della VM.
  • ZONE: la zona in cui si trova il pool, ad esempio us-central1-a. Questa è la zona in cui vengono creati la VM e il disco di avvio.
  • MACHINE_TYPE: il tipo di macchina della VM, ad esempio m3-ultramem-32.
  • BOOT_DISK_DEVICE_NAME: il nome del dispositivo per il disco di avvio.
  • DISK_SIZE: le dimensioni, in GiB, del disco di avvio.
  • DISK_TYPE: il tipo di disco, specificato come URI.
  • IMAGE_PROJECT: il progetto che contiene l'immagine.
  • IMAGE: specifica una delle seguenti opzioni:
    • Una versione specifica dell'immagine sistema operativo, ad esempio debian-12-bookworm-v20240213.
    • Una famiglia di immagini, che deve essere formattata come family/IMAGE_FAMILY. In questo modo, l'istanza viene creata dall'immagine sistema operativo più recente e non deprecata. Ad esempio, se specifichi family/debian-12, Compute Engine crea un'istanza utilizzando l'ultima versione dell'immagine sistema operativo nella famiglia di immagini debian-12. Per ulteriori informazioni sull'utilizzo delle famiglie di immagini, consulta le rispettive best practice.
  • IOPS_LIMIT: le IOPS di cui eseguire il provisioning per il disco.
  • THROUGHPUT_LIMIT: il throughput di cui eseguire il provisioning per il disco.
  • POOL_URL: il pool di archiviazione in cui viene creato il nuovo disco. Puoi fornire l'URL completo o parziale della risorsa. Ad esempio, i seguenti sono valori validi:
    • 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