Neues Hyperdisk-Volume erstellen


Sie können ein Hyperdisk Balanced-, Hyperdisk Extreme- oder Hyperdisk Throughput-Volume für Ihre Compute Engine-Instanz verwenden, indem Sie die folgenden Aufgaben ausführen:

  • Erstellen Sie ein leeres Nicht-Bootlaufwerk und zonales Hyperdisk-Volume und hängen Sie es entweder während oder nach der Instanzerstellung an die Instanz an.
  • Formatieren Sie das Volume und stellen Sie es bereit, um Zugriff auf ein Daten- oder Dateisystem zu gewähren.

Bei Hyperdisk Balanced-Volumes können Sie auch Boot- und Datenlaufwerke erstellen.

Allgemeine Informationen zu Hyperdisk finden Sie unter Informationen zu Hyperdisk.

So fügen Sie Ihrer Instanz ein Hyperdisk Balanced High Availability-Laufwerk hinzu:

Hinweise

  • Lesen Sie die Hyperdisk-Einschränkungen, bevor Sie Ihrer Compute-Instanz 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 bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:

    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 Instanz 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 Instanz erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Ihrer Instanz 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 für die Instanz
    • compute.disks.use für das Volume, das Sie an die Instanz anhängen möchten
  • So formatieren Sie das angehängte Volume und stellen es bereit: compute.instances.setMetadata auf der Instanz

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.

Instanz ein Hyperdisk-Volume hinzufügen

Sie können ein Hyperdisk-Volume über dieGoogle 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-Volume erstellen, können Sie optional mehreren Instanzen gleichzeitigen 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 "VM-Instanzen"

  2. Klicken Sie auf den Namen der Instanz, an die Sie ein Laufwerk anhängen 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-Volumes können Sie das Anhängen des Laufwerks an mehrere Instanzen 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 auf die Instanz anzuwenden.

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 maximalen Durchsatz (in MiB pro Sekunde) darstellt, den das Laufwerk bereitstellen kann.
    • DISK_ACCESS_MODE: Optional: Wie Compute-Instanzen auf die Daten auf dem Laufwerk zugreifen können. Unterstützte Werte:

      • READ_WRITE_SINGLE für Lese-/Schreibzugriff von einer Instanz. Das ist die Standardeinstellung.
      • READ_WRITE_MANY (nur Hyperdisk Balanced und Hyperdisk Balanced High Availability) für den gleichzeitigen Lese-/Schreibzugriff von mehreren Instanzen.
      • READ_ONLY_MANY (nur Hyperdisk ML) für den gleichzeitigen Lesezugriff von mehreren Instanzen.

      Informationen zum Festlegen des Zugriffsmodus für Hyperdisk Balanced-Hochverfügbarkeitslaufwerke finden Sie unter Regionalen Datenträger erstellen.

  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 Instanz 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: durch Ihre Projekt-ID.
    • ZONE: durch die Zone, in der sich Ihre Instanz und das neue Laufwerk befinden.
    • DISK_NAME: Name des neuen Laufwerks
    • 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.
    • 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 maximalen Durchsatz (in MiB pro Sekunde) darstellt, den das Laufwerk bereitstellen kann.
    • DISK_ACCESS_MODE: Optional: Wie Compute-Instanzen auf die Daten auf dem Laufwerk zugreifen können. Unterstützte Werte:

      • READ_WRITE_SINGLE für Lese-/Schreibzugriff von einer Instanz. Das ist die Standardeinstellung.
      • READ_WRITE_MANY (nur Hyperdisk Balanced und Hyperdisk Balanced High Availability) für gleichzeitigen Lese-/Schreibzugriff von mehreren Instanzen.
      • READ_ONLY_MANY (nur Hyperdisk ML) für den gleichzeitigen Lesezugriff von mehreren Instanzen.

      Informationen zum Festlegen des Zugriffsmodus für Hyperdisk Balanced-Hochverfügbarkeitslaufwerke finden Sie unter Regionalen Datenträger erstellen.

  2. Optional: 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 Instanz anhängen.

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

Nachdem Sie das Laufwerk erstellt haben, können Sie es an eine laufende oder gestoppte Instanz anhängen.

Laufwerk formatieren und bereitstellen

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

Nächste Schritte