Neues Hyperdisk-Volume erstellen


Sie können ein Hypervolume-Extrem- oder Hyperdisk-Durchsatz-Volume für Ihre VM verwenden, indem Sie die folgenden Aufgaben ausführen:

  • Erstellen Sie ein leeres Nicht-Boot-Volume und ein zonales Hyperdisk-Volume und hängen Sie es entweder als Teil der VM-Erstellung oder als separate Aufgaben an Ihre VM an.
  • Formatieren Sie das Volume und stellen Sie es bereit, um Zugriff auf ein Daten- oder Dateisystem zu gewähren.

Der Vorgang ist bei Hyperdisk Balanced-Volumes identisch, mit der Ausnahme, dass Sie auch Bootlaufwerke vom Typ Hyperdisk Balanced erstellen können.

Allgemeine Informationen zu Hyperdisk finden Sie unter Informationen zu Hyperdisk.

Hinweise

  • Überprüfen Sie die Hyperdisk-Einschränkungen, bevor Sie Ihrer VM ein Hyperdisk-Volume hinzufügen.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.

    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. Go

      Wenn Sie die Go Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

      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.

      Weitere Informationen unter Set up authentication for a local development environment.

      Java

      Wenn Sie die Java Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

      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.

      Weitere Informationen unter Set up authentication for a local development environment.

      Node.js

      Wenn Sie die Node.js Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

      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.

      Weitere Informationen unter Set up authentication for a local development environment.

      REST

      Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

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

        gcloud init

      Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.

Erforderliche Rollen und Berechtigungen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Hinzufügen eines Hyperdisk-Volumes zu Ihrer VM benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Hinzufügen eines Hyperdisk-Volumes zu Ihrer VM erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um der VM ein Hyperdisk-Volume hinzuzufügen:

  • So erstellen Sie ein Hyperdisk-Volume und hängen es an:
    • compute.disks.create für das Projekt
    • compute.instances.attachDisk auf der VM
    • compute.disks.use für das Volume, das Sie an die VM anhängen möchten
  • So formatieren Sie das angehängte Volume und stellen es bereit: compute.instances.setMetadata auf der VM

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Unterstützte Werte für Hyperdisk-Volumes

Die Werte, die Sie beim Erstellen oder Ändern eines Hyperdisk-Volumes verwenden, müssen innerhalb des Bereichs der maximalen und minimalen Werte liegen, die unter Hyperdisk-Limits pro Laufwerk beschrieben sind.

Wenn Sie die Größe eines Hyperdisk-Volumes ändern, das an eine VM angehängt ist, dürfen die neuen Werte die Hyperdisk-Limits pro VM nicht überschreiten.

Die bereitgestellten IOPS und der bereitgestellte Durchsatz für ein Hyperdisk-Volume müssen den in Informationen zu IOPS- und Durchsatzbereitstellung für Hyperdisk beschriebenen Regeln entsprechen.

Hyperdisk-Volume zu Ihrer VM hinzufügen

Sie können ein Hyperdisk-Volume über die Google Cloud Console, die Google Cloud CLI oder REST erstellen und anhängen.

Die Größe, der Durchsatz und die IOPS, die Sie beim Erstellen eines Hyperdisk-Volumes angeben, müssen im Bereich der unterstützten Werte liegen.

Wenn Sie ein Hyperdisk Balanced- oder Hyperdisk Balanced High Availability-Volume (Vorabversion) erstellen, können Sie optional mehreren VMs den Zugriff auf das Laufwerk gewähren, indem Sie das Laufwerk im Modus für mehrere Autoren erstellen.

Console

  1. Rufen Sie die Seite VM-Instanzen auf.

    Zu Seite „VM-Instanzen“

  2. Klicken Sie auf den Namen der VM, der Sie ein Laufwerk hinzufügen möchten.

  3. Klicken Sie auf der Seite VM-Instanzdetails auf Bearbeiten.

  4. Klicken Sie unter Zusätzliche Laufwerke auf Laufwerk hinzufügen.

  5. Geben Sie einen Namen für das Laufwerk an und fügen Sie optional eine Beschreibung hinzu. Wählen Sie Leeres Laufwerk als Quelltyp des Laufwerks aus.

  6. Wählen Sie unter Laufwerkseinstellungen einen Laufwerkstyp aus der folgenden Liste aus. Die von Ihnen angegebenen Werte müssen im Bereich der unterstützten Werte liegen.

    1. Hyperdisk abgestimmt. Sie können auch die Standardeinstellungen für das Laufwerk Größe, Bereitgestellte IOPS und Bereitgestellter Durchsatz ändern.
    2. Hyperdisk Extrem. Sie können auch die Standardeinstellungen für Größe und Bereitgestellte IOPS des Laufwerks ändern.
    3. Hyperdisk ML. Sie können auch die Standardeinstellungen für Größe und Bereitgestellter Durchsatz des Laufwerks ändern.
    4. Hyperdisk Durchsatz. Sie können auch die Standardeinstellungen für Größe und Bereitgestellter Durchsatz des Laufwerks ändern.
  7. Optional: Bei Hyperdisk Balanced- oder Hyperdisk Balanced High Availability-Volumes (Vorabversion) können Sie das Anhängen des Laufwerks an mehrere VMs aktivieren, indem Sie das Laufwerk im Modus für mehrere Autoren erstellen. Wählen Sie unter Zugriffsmodus die Option Mehrere VMs – Lese‑/Schreibmodus aus.

  8. Klicken Sie auf Speichern.

  9. Klicken Sie auf Speichern, um die Änderungen für die VM zu übernehmen.

gcloud

  1. Verwenden Sie den Befehl gcloud compute disks create, um das Hyperdisk-Volume zu erstellen.

    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
    

    Ersetzen Sie Folgendes:

    • DISK_NAME: durch den Namen des neuen Laufwerks.
    • ZONE: der Name der Zone, in der das neue Laufwerk erstellt wird.
    • DISK_SIZE: Optional: Die Größe des neuen Laufwerks. Der Wert muss eine ganze Zahl sein, gefolgt von der Größeneinheit GiB für Gibibyte oder TiB für Tebibyte. Wenn keine Größe angegeben ist, wird 100 GB als Standardwert verwendet. Zulässige Werte für die Größe des Laufwerks:
      • Hyperdisk abgestimmt: von 4 GiB bis einschließlich 64 TiB in 1-GiB-Schritten.
      • Hyperdisk Extrem: Von 64 GiB bis einschließlich 64 TiB in 1-GiB-Schritten.
      • Hyperdisk ML: von 4 GiB bis einschließlich 64 TiB in 1-GiB-Schritten.
      • Hyperdisk Durchsatz: Von 2 TiB bis einschließlich 32 TiB in 1-GiB-Schritten.
    • DISK_TYPE ist der Typ des Laufwerks. Verwenden Sie einen der folgenden Werte: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml oder hyperdisk-throughput
    • IOPS_LIMIT: Optional: Bei Hyperdisk Balanced- oder Hyperdisk Extreme-Laufwerken ist dies die Anzahl der E/A-Vorgänge pro Sekunde (IOPS), die das Laufwerk verarbeiten kann.
    • THROUGHPUT_LIMIT: Optional: Bei Hyperdisk Balanced, Hyperdisk ML, oder Hyperdisk Throughput-Volumes ist dies eine Ganzzahl, die den Durchsatz (in MiB pro Sekunde) darstellt, den das Laufwerk verarbeiten kann.
    • DISK_ACCESS_MODE: Optional: Wie VMs auf die Daten auf dem Laufwerk zugreifen können. Unterstützte Werte:

      • READ_WRITE_SINGLE für Lese-/Schreibzugriff von einer VM. Das ist die Standardeinstellung.
      • READ_WRITE_MANY für Lese-/Schreibzugriff von mehreren VMs.
      • READ_ONLY_MANY für den Lesezugriff von mehreren VMs.

      Sie können den Zugriffsmodus für die folgenden Laufwerktypen festlegen:

      • Hyperdisk Balanced
      • Hyperdisk ML
      • Hyperdisk mit ausgeglichener Hochverfügbarkeit (Vorabversion)
  2. Optional: Verwenden Sie den Befehl gcloud compute disks describe DISK_NAME, um eine Beschreibung des Laufwerks aufzurufen.

  3. Nachdem Sie das Laufwerk erstellt haben, können Sie es an eine VM anhängen.

REST

  1. Erstellen Sie eine POST-Anfrage, um mit der Methode disks.insert ein zonales Hyperdisk zu erstellen. Fügen Sie die Attribute name, sizeGb, type, provisionedIops und provisionedThroughput hinzu. Wenn Sie das Laufwerk leer, unformatiert und ohne Bootfunktion erstellen möchten, geben Sie weder ein Quell-Image noch einen Quell-Snapshot an.

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • ZONE ist die Zone, in der sich Ihre VM und das neue Laufwerk befinden
    • DISK_NAME: Name des neuen Laufwerks
    • DISK_SIZE: Optional: ist die Größe des neuen Laufwerks. Der Wert muss eine ganze Zahl sein, gefolgt von der Größeneinheit GiB für Gibibyte oder TiB für Tebibyte.
    • DISK_TYPE ist der Typ des Laufwerks. Verwenden Sie zum Erstellen eines Hyperdisk-Volumes einen der folgenden Werte: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml oder hyperdisk-throughput.
    • IOPS_LIMIT: Optional: Bei „Hyperdisk Balanced“ und „Hyperdisk Extreme“ ist dies die Anzahl der E/A-Vorgänge pro Sekunde, die das Laufwerk verarbeiten kann.
    • THROUGHPUT_LIMIT: Optional: Bei Hyperdisk Balanced, Hyperdisk ML, oder Hyperdisk Throughput-Volumes ist dies eine Ganzzahl, die den Durchsatz (in MiB pro Sekunde) darstellt, den das Laufwerk verarbeiten kann.
    • DISK_ACCESS_MODE: wie VMs auf die Daten auf dem Laufwerk zugreifen können. Unterstützte Werte:

      • READ_WRITE_SINGLE für Lese-/Schreibzugriff von einer VM. Das ist die Standardeinstellung.
      • READ_WRITE_MANY für Lese-/Schreibzugriff von mehreren VMs.
      • READ_ONLY_MANY für den Lesezugriff von mehreren VMs.

      Sie können den Zugriffsmodus für die folgenden Laufwerktypen festlegen:

      • Hyperdisk Balanced
      • Hyperdisk ML
      • Hyperdisk mit ausgeglichener Hochverfügbarkeit (Vorabversion)
  2. Verwenden Sie die compute.disks.get-Methode, um eine Beschreibung des Laufwerks aufzurufen.

  3. Nachdem Sie das Laufwerk erstellt haben, können Sie es an eine laufende oder gestoppte VM anfügen.

Go

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

Nachdem Sie das Laufwerk erstellt haben, können Sie es an eine laufende oder gestoppte VM anfügen.

Laufwerk formatieren und bereitstellen

Nachdem Sie das neue Laufwerk erstellt und an eine VM angehängt haben, müssen Sie es formatieren und bereitstellen, damit das Betriebssystem den verfügbaren Speicherplatz nutzen kann.

Nächste Schritte