Crea un nuovo volume Hyperdisk


Puoi utilizzare un volume Hyperdisk Extreme o Hyperdisk Throughput con la tua VM completando quanto segue attività:

  • Crea un volume Hyperdisk vuoto, non di avvio e a livello di zona e collegalo sulla VM nell'ambito della sua creazione o come attività separate.
  • Formatta e monta il volume per fornire l'accesso a un file system o dati.

Il processo è lo stesso per i volumi bilanciati Hyperdisk, ma puoi anche creare una di tipo Hyperdisk Bilanciato.

Per informazioni generali su Hyperdisk, vedi Informazioni su Hyperdisk.

Prima di iniziare

  • Esamina il Limitazioni di Hyperdisk prima di aggiungere un volume Hyperdisk alla tua VM.
  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

    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 a riga di comando gcloud, 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 a riga di comando gcloud, 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 una località dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura 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, vedi 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, vedi Esegui 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 tua VM, chiedi all'amministratore di concederti seguenti ruoli IAM sul progetto:

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

Questi ruoli predefiniti le autorizzazioni necessarie per aggiungere un volume Hyperdisk alla tua VM. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

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

  • Per creare e collegare un volume Hyperdisk:
    • compute.disks.create del 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 riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.

Valori supportati per i volumi Hyperdisk

I valori che utilizzi quando crei o modifichi un volume Hyperdisk devono rientrano nell'intervallo dei valori massimo e minimo 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 Limiti di hyperdisk per VM.

Le IOPS e la velocità effettiva di cui è stato eseguito il provisioning per un volume Hyperdisk devono seguire le regole descritte in Informazioni sulle IOPS e sul provisioning della velocità effettiva per Hyperdisk.

Aggiungi un volume Hyperdisk alla tua VM

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

Dimensioni, velocità effettiva e IOPS specificate durante la creazione di un Hyperdisk il volume deve essere compreso nell'intervallo dei valori supportati.

Se stai creando un volume Hyperdisk bilanciato, puoi facoltativamente consentire a più VM accedere al disco creandolo in modalità multi-writer.

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sul nome della VM in 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, facoltativamente, aggiungi una descrizione. Seleziona Disco vuoto come Tipo di origine disco.

  6. In Impostazioni disco, scegli un tipo di disco dall'elenco seguente. La i valori specificati devono essere compresi nell'intervallo valori supportati.

    1. Hyperdisk bilanciato. Puoi anche modificare le Dimensioni predefinite del disco, Impostazioni per IOPS sottoposte a provisioning e Velocità effettiva sottoposta a provisioning.
    2. Hyperdisk Extreme. Puoi anche modificare le Dimensioni predefinite del disco Impostazioni per le IOPS sottoposte a provisioning.
    3. Hyperdisk ML. Puoi anche modificare le impostazioni predefinite del disco Dimensioni e Velocità effettiva sottoposta a provisioning.
    4. Velocità effettiva Hyperdisk.Puoi anche modificare le impostazioni predefinite del disco Dimensioni e Velocità effettiva sottoposta a provisioning.
  7. Facoltativo. Per Hyperdisk bilanciato, puoi abilitare il collegamento del disco a VM creando il disco in modalità multi-writer. In Modalità di accesso, Seleziona Più VM in lettura/scrittura.

  8. Fai clic su Salva.

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

gcloud

  1. Usa 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 verrà creato il nuovo disco è in fase di creazione.
    • DISK_SIZE: Facoltativo: le dimensioni del nuovo disco. Il valore deve essere un numero intero seguito da un'unità di dimensione di GB per gibibyte o TB per tebibyte. Se non viene specificata alcuna unità di dimensione, 100 GB viene utilizzato come valore predefinito. I valori accettati per gli attributi Le dimensioni del disco sono:
      • Hyperdisk bilanciato: da 4 GiB a 64 TiB, inclusi, in 1 GiB di incremento.
      • Hyperdisk Extreme: da 64 GiB a 64 TiB, inclusi, in 1 GiB di incremento.
      • Hyperdisk ML: da 4 GiB a 64 TiB, inclusi, in 1 GiB di incremento.
      • Velocità effettiva Hyperdisk: da 2 TiB a 32 TiB, inclusi, in 1 GiB di incremento.
    • DISK_TYPE: tipo di disco. Utilizza uno dei seguenti seguenti valori: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml o hyperdisk-throughput
    • IOPS_LIMIT: Facoltativo: per Hyperdisk Balanced o Hyperdisk Extreme i dischi permanenti, questo è il numero di operazioni di I/O al secondo (IOPS) che il disco possa gestire.
    • THROUGHPUT_LIMIT (Facoltativo) Per Hyperdisk Balanced, Hyperdisk ML, o Hyperdisk Throughput, si tratta di un numero intero che rappresenta la velocità effettiva, misurate in MiB al secondo, che il disco è in grado di gestire.
    • DISK_ACCESS_MODE (Facoltativo) Modalità di accesso delle VM i dati sul disco. Supportata solo per Hyperdisk Balanced e Hyperdisk ML. I valori supportati sono:
      • READ_WRITE_SINGLE, per l'accesso in lettura/scrittura da una VM. Questo è il predefinito.
      • 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.
  2. (Facoltativo) Utilizza Comando gcloud compute disks describe DISK_NAME per vedere una descrizione del disco.

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

REST

  1. Crea una richiesta POST per creare un Hyperdisk a livello di zona utilizzando il metodo disks.insert. Includi name, sizeGb, type, provisionedIops e provisionedThroughput proprietà. Per creare questo disco come vuoto disco non di avvio non formattato, non specificare un'immagine o un'origine senza dover creare uno snapshot.

    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 la VM e i nuovi il disco si trova
    • DISK_NAME: il nome del nuovo disco
    • DISK_SIZE: (facoltativo) la dimensione del nuovo disco. Il valore deve essere un numero intero seguito da un'unità di dimensione in GB gibibyte o TB per i tebibyte.
    • DISK_TYPE: tipo di disco. Per creare un Per il volume Hyperdisk, utilizza uno dei seguenti valori: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml, oppure hyperdisk-throughput.
    • IOPS_LIMIT: Facoltativo: per Hyperdisk Balanced e Hyperdisk Extreme, questo è il numero di I/O operazioni al secondo che il disco è in grado di gestire.
    • THROUGHPUT_LIMIT (Facoltativo) Per Hyperdisk Balanced, Hyperdisk ML, o Hyperdisk Throughput, si tratta di un numero intero che rappresenta la velocità effettiva, misurate in MiB al secondo, che il disco è in grado di gestire.
    • DISK_ACCESS_MODE: modalità di accesso ai dati da parte delle VM sul disco. Supportata solo per Hyperdisk Balanced e Hyperdisk ML. I valori supportati sono:
      • READ_WRITE_SINGLE, per l'accesso in lettura/scrittura da una VM. Questo è il predefinito.
      • 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.
  2. (Facoltativo) Utilizza la compute.disks.get metodo per visualizzare una descrizione disco.

  3. Dopo aver creato il disco, puoi collega il disco 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 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.
const zone = 'europe-central2-b';
// The name of the new disk
const 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(),
    });
  }

  const hyperdisk = (
    await disksClient.get({
      project: projectId,
      zone,
      disk: diskName,
    })
  )[0];

  console.log(JSON.stringify(hyperdisk));
}

await callCreateComputeHyperdisk();

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

Formatta e monta il disco

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

Passaggi successivi