Creare un nuovo volume Hyperdisk


Per utilizzare un volume Hyperdisk Extreme o Hyperdisk Throughput con la tua VM, completa le seguenti attività:

  • Crea un volume Hyperdisk vuoto, non di avvio e zonale e collegalo alla tua VM nell'ambito della creazione della VM o come attività separate.
  • Formatta e monta il volume per fornire l'accesso a un sistema di dati o file.

La procedura è la stessa per i volumi Hyperdisk Balanced, tranne per il fatto che puoi anche creare dischi di avvio di tipo Hyperdisk Balanced.

Per informazioni generali su Hyperdisk, consulta Informazioni su Hyperdisk.

Prima di iniziare

  • Esamina le limitazioni di Hyperdisk prima di aggiungere un volume Hyperdisk alla VM.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai 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. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

      Per ulteriori informazioni, consulta Set up authentication for a local development environment.

      Java

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

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

      Per ulteriori informazioni, consulta Set up authentication for a local development environment.

      Node.js

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

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

      Per ulteriori informazioni, consulta Set up authentication for a local development environment.

      REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per aggiungere un volume Hyperdisk alla VM, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

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

Questi ruoli predefiniti contengono le autorizzazioni necessarie per aggiungere un volume Hyperdisk alla VM. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per aggiungere un volume Hyperdisk alla VM sono necessarie le seguenti autorizzazioni:

  • Per creare e collegare un volume Hyperdisk:
    • compute.disks.create sul progetto
    • compute.instances.attachDisk sulla VM
    • compute.disks.use sul volume che vuoi collegare alla VM
  • Per formattare e montare il volume collegato: compute.instances.setMetadata sulla VM

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

Valori supportati per i volumi Hyperdisk

I valori utilizzati per creare o modificare un volume Hyperdisk devono rientrare nell'intervallo di valori massimi e minimi descritto in Limiti di Hyperdisk per disco.

Se modifichi le dimensioni di un volume Hyperdisk collegato a una VM, i nuovi valori non possono superare i limiti di Hyperdisk per VM.

Le IOPS e il throughput sottoposti a provisioning per un volume Hyperdisk devono seguire le regole descritte in Informazioni sul provisioning di IOPS e throughput per Hyperdisk.

Aggiungere un volume Hyperdisk alla VM

Puoi creare e collegare un volume Hyperdisk utilizzando la console Google Cloud, Google Cloud CLI o REST.

Le dimensioni, il throughput e le IOPS specificati durante la creazione di un volume Hyperdisk devono rientrare nell'intervallo dei valori supportati.

Quando crei un volume Hyperdisk bilanciato o Hyperdisk bilanciato con disponibilità elevata (anteprima), puoi facoltativamente consentire a più VM di accedere al disco creandolo in modalità multi-autore.

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome della VM a cui vuoi aggiungere un disco.

  3. Nella pagina Dettagli istanza VM, fai clic su Modifica.

  4. Sotto l'intestazione Dischi aggiuntivi, fai clic su Aggiungi nuovo disco.

  5. Specifica un nome per il disco e, se vuoi, aggiungi una descrizione. Seleziona Disco vuoto come Tipo di disco di origine.

  6. In Impostazioni disco, scegli un tipo di disco dall'elenco seguente. I valori specificati devono rientrare nell'intervallo dei valori supportati.

    1. Hyperdisk bilanciato. Puoi anche modificare le impostazioni predefinite Dimensione, IOPS pianificate e Velocità effettiva pianificata del disco.
    2. Hyperdisk Extreme. Puoi anche modificare le impostazioni predefinite Dimensioni e IOPS provisionati del disco.
    3. Hyperdisk ML. Puoi anche modificare le impostazioni predefinite Dimensioni e Throughput pianificato del disco.
    4. Throughput Hyperdisk.Puoi anche modificare le impostazioni predefinite Dimensione e Throughput riservato del disco.
  7. (Facoltativo) Per i volumi Hyperdisk bilanciato o Hyperdisk bilanciato con disponibilità elevata (anteprima), puoi attivare il collegamento del disco a più VM creandolo in modalità multi-autore. In Modalità di accesso, seleziona Lettura e scrittura su più VM.

  8. Fai clic su Salva.

  9. Per applicare le modifiche alla VM, fai clic su Salva.

gcloud

  1. Utilizza il comando gcloud compute disks create per creare il volume Hyperdisk.

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

    Sostituisci quanto segue:

    • DISK_NAME: il nome del nuovo disco.
    • ZONE: il nome della zona in cui viene creato il nuovo disco.
    • DISK_SIZE: facoltativo, le dimensioni del nuovo disco. Il valore deve essere un numero intero seguito da un'unità di misura della dimensione in GB per gibibyte o TB per tebibyte. Se non viene specificata un'unità di misura, viene utilizzato il valore predefinito 100 GB. I valori accettati per la dimensione del disco sono:
      • Hyperdisk bilanciato: da 4 GiB a 64 TiB, inclusi, con incrementi di 1 GiB.
      • Hyperdisk Extreme: da 64 GiB a 64 TiB, inclusi, con incrementi di 1 GiB.
      • Hyperdisk ML: da 4 GiB a 64 TiB, inclusi, con incrementi di 1 GiB.
      • Velocità effettiva Hyperdisk: da 2 TiB a 32 TiB, inclusi, con incrementi di 1 GiB.
    • DISK_TYPE: il tipo di disco. Utilizza uno dei seguenti valori: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml o hyperdisk-throughput
    • IOPS_LIMIT: facoltativo: per i dischi Hyperdisk Balanced o Hyperdisk Extreme, si tratta del numero di operazioni I/O al secondo (IOPS) che il disco può gestire.
    • THROUGHPUT_LIMIT: facoltativo. Per i volumi Hyperdisk bilanciato, Hyperdisk ML o Hyperdisk Throughput, si tratta di un numero intero che rappresenta la velocità effettiva, misurata in MiB al secondo, che il disco può gestire.
    • DISK_ACCESS_MODE: facoltativo. Indica in che modo le VM possono accedere ai dati sul disco. I valori supportati sono:

      • READ_WRITE_SINGLE, per l'accesso in lettura e scrittura da una VM. Questa è l'impostazione predefinita.
      • READ_WRITE_MANY, per l'accesso in lettura e scrittura da più VM.
      • READ_ONLY_MANY, per l'accesso di sola lettura da più VM.

      Puoi impostare la modalità di accesso per i seguenti tipi di dischi:

      • Hyperdisk bilanciato
      • Hyperdisk ML
      • Hyperdisk bilanciato con disponibilità elevata (anteprima)
  2. (Facoltativo) Utilizza il comando gcloud compute disks describe DISK_NAME per visualizzare una descrizione del disco.

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

REST

  1. Crea una richiesta POST per creare un Hyperdisk zonale utilizzando il metodo disks.insert. Includi le proprietà name, sizeGb, type, 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",
       "sizeGb": "DISK_SIZE",
       "type": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
       "provisionedIops": "IOPS_LIMIT",
       "provisionedThroughput": "THROUGHPUT_LIMIT",
       "accessMode": "DISK_ACCESS_MODE"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • ZONE: la zona in cui si trovano la VM e il nuovo disco
    • DISK_NAME: il nome del nuovo disco
    • DISK_SIZE: facoltativo, le dimensioni del nuovo disco. Il valore deve essere un numero intero seguito da un'unità di misura della dimensione in GB per gigabyte o TB per tebibyte.
    • DISK_TYPE: il tipo di disco. Per creare un volume Hyperdisk, utilizza uno dei seguenti valori: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml o hyperdisk-throughput.
    • IOPS_LIMIT: facoltativo: per Hyperdisk Balanced e Hyperdisk Extreme, si tratta del numero di operazioni I/O al secondo che il disco può gestire.
    • THROUGHPUT_LIMIT: facoltativo. Per i volumi Hyperdisk bilanciato, Hyperdisk ML o Hyperdisk Throughput, si tratta di un numero intero che rappresenta la velocità effettiva, misurata in MiB al secondo, che il disco può gestire.
    • DISK_ACCESS_MODE: indica in che modo le VM possono accedere ai dati sul disco. I valori supportati sono:

      • READ_WRITE_SINGLE, per l'accesso in lettura e scrittura da una VM. Questa è l'impostazione predefinita.
      • READ_WRITE_MANY, per l'accesso in lettura e scrittura da più VM.
      • READ_ONLY_MANY, per l'accesso di sola lettura da più VM.

      Puoi impostare la modalità di accesso per i seguenti tipi di dischi:

      • Hyperdisk bilanciato
      • Hyperdisk ML
      • Hyperdisk bilanciato con disponibilità elevata (anteprima)
  2. (Facoltativo) Utilizza il metodo compute.disks.get per visualizzare una descrizione del tuo disco.

  3. Dopo aver creato il disco, puoi collegarlo a qualsiasi VM in esecuzione o arrestata.

Vai

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

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

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

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

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

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

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

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

Java


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

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

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

  // Creates a hyperdisk in a project
  public static Disk createHyperdisk(String projectId, String zone, String diskName,
                                     String diskType, long diskSizeGb, long provisionedIops,
                                     long provisionedThroughput)
          throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (DisksClient client = DisksClient.create()) {
      // Create a disk.
      Disk disk = Disk.newBuilder()
              .setZone(zone)
              .setName(diskName)
              .setType(diskType)
              .setSizeGb(diskSizeGb)
              .setProvisionedIops(provisionedIops)
              .setProvisionedThroughput(provisionedThroughput)
              .build();

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

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

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

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

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

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

      return hyperdisk;
    }
  }
}

Node.js

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

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

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

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

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

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

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

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

  let operation = response.latestResponse;

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

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

await callCreateComputeHyperdisk();

Dopo aver creato il disco, puoi collegarlo a qualsiasi VM in esecuzione o arrestata.

Formatta e monta il disco

Dopo aver creato e collegato il nuovo disco a una VM, devi formattare e montare il disco in modo che il sistema operativo possa utilizzare lo spazio di archiviazione disponibile.

Passaggi successivi