Aggiungi dischi da un pool di archiviazione alle VM


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

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di 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. After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      2. Set a default region and zone.
      3. Vai

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

        1. Install the Google Cloud CLI.

        2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        3. To initialize the gcloud CLI, run the following command:

          gcloud init
        4. 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 ulteriori informazioni, vedi Set up authentication for a local development environment.

        Java

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

        1. Install the Google Cloud CLI.

        2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        3. To initialize the gcloud CLI, run the following command:

          gcloud init
        4. 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 ulteriori informazioni, vedi Set up authentication for a local development environment.

        Node.js

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

        1. Install the Google Cloud CLI.

        2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        3. To initialize the gcloud CLI, run the following command:

          gcloud init
        4. 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 ulteriori informazioni, vedi 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.

          After installing the Google Cloud CLI, initialize it by running the following command:

          gcloud init

          If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

        Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di 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 di archiviazione, 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 ulteriori informazioni 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 di archiviazione. 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 di archiviazione, sono necessarie le seguenti autorizzazioni:

  • Per creare dischi in un pool di archiviazione 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 di archiviazione 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

Esamina le seguenti limitazioni per la creazione di dischi in un pool di archiviazione Hyperdisk:

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

Opzioni di provisioning

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

Provisioning della capacità del disco

Se crei un pool di archiviazione con Capacità avanzata, puoi utilizzare il thin provisioning. Puoi creare dischi nel pool di archiviazione con dimensioni cumulative superiori alla capacità sottoposta a provisioning del pool. La capacità utilizzata del pool di archiviazione è 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 al 500% della capacità sottoposta a provisioning di un pool di archiviazione con Capacità avanzata.

Se crei dischi in un pool di archiviazione con Capacità standard, devi creare dischi nel pool di archiviazione finché le dimensioni totali di tutti i dischi nel pool di archiviazione non raggiungono la capacità sottoposta a provisioning del pool di archiviazione. I dischi di un pool di archiviazione 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 crei un pool di archiviazione con Prestazioni avanzate, puoi utilizzare il thin provisioning. Puoi creare dischi nel pool di archiviazione con un valore cumulativo di IOPS e throughput che superi le prestazioni di provisioning del pool. Le prestazioni utilizzate del pool di archiviazione sono definite dalle prestazioni totali utilizzate dai dischi e non dalla quantità di prestazioni sottoposte a provisioning per ciascun disco. Puoi eseguire il provisioning di dischi con prestazioni aggregate fino al 500% delle prestazioni sottoposte a provisioning di un pool di archiviazione con Prestazioni avanzate.

Se crei dischi in un pool di archiviazione con 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 di archiviazione meno la quantità utilizzata per tutti i dischi creati nel pool di archiviazione.

Se una delle condizioni del paragrafo precedente non è vera, la richiesta di creazione di un disco nel pool di archiviazione 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 di archiviazione

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

Console

Utilizzando la console Google Cloud , puoi creare un nuovo disco in un pool di archiviazione 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. Fai clic sul nome del pool di archiviazione in cui vuoi creare un disco.

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

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

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

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

  7. 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 di archiviazione in cui vuoi creare il disco.

  4. Per Tipo di disco, scegli il tipo di disco corrispondente al pool di archiviazione Hyperdisk, 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 di archiviazione in cui creare il disco. Nell'elenco vengono visualizzati solo i pool di archiviazione 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 di archiviazione, usa 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 di archiviazione. Specifica questo valore in formato regione-zona, ad esempio us-central1-a.
  • STORAGE_POOL_NAME: il nome del pool di archiviazione 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 mebibyte (MB) al secondo di cui eseguire il provisioning per il disco.

REST

Per creare uno o più dischi in un pool di archiviazione, 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 di archiviazione, 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 di archiviazione. 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 di archiviazione 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 mebibyte (MB) al secondo 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 di archiviazione

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 di archiviazione durante il processo di creazione della VM.

Crea il disco di avvio per una VM in un pool di archiviazione

Per creare una VM che utilizza un disco di avvio in un pool di archiviazione, devi prima creare un pool di archiviazione Hyperdisk bilanciato. Puoi quindi creare una VM utilizzando un tipo di macchina che supporta i dischi Hyperdisk bilanciato. Il tipo di macchina, il tipo di disco e il pool di archiviazione 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 di archiviazione.

  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 di archiviazione 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 di archiviazione selezionato.

gcloud

Puoi creare il disco di avvio per una nuova VM nel pool di archiviazione 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 di archiviazione 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 di archiviazione, 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 di archiviazione durante la creazione della VM

Quando crei i dischi in un pool di archiviazione durante la creazione della VM, il tipo di macchina, il tipo di disco e il pool di archiviazione 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 di archiviazione.

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

  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 di archiviazione.

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

  11. Nel campo Seleziona un pool di archiviazione, seleziona il pool di archiviazione 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 di archiviazione selezionato.

gcloud

Puoi creare nuovi dischi in un pool di archiviazione 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 di archiviazione in cui vuoi creare il disco

REST

Puoi creare nuovi dischi in un pool di archiviazione 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 di archiviazione, 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 di archiviazione in un modello di istanza

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

Console

  1. Nella console Google Cloud , vai alla pagina Modelli 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 di archiviazione.

  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 di archiviazione 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 di archiviazione selezionato.

gcloud

In un modello di istanza puoi specificare che il disco di avvio venga creato in un pool di archiviazione 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 di archiviazione.
  • 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 di archiviazione 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 di archiviazione, 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