Membuat volume Hyperdisk baru


Anda dapat menggunakan volume Hyperdisk Extreme atau Hyperdisk Throughput dengan VM Anda dengan menyelesaikan tugas berikut:

  • Buat volume Hyperdisk kosong, non-booting, dan zona, lalu sertakan ke VM Anda sebagai bagian dari pembuatan VM atau sebagai tugas terpisah.
  • Memformat dan memasang volume untuk memberikan akses ke data atau sistem file.

Prosesnya sama untuk volume Hyperdisk Balanced, kecuali Anda juga dapat membuat disk boot jenis Hyperdisk Balanced.

Untuk mengetahui informasi umum tentang Hyperdisk, lihat Tentang Hyperdisk.

Sebelum memulai

  • Tinjau Batasan Hyperdisk sebelum menambahkan volume Hyperdisk ke VM Anda.
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    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

      Untuk menggunakan contoh Go di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

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

        gcloud init
      3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

        gcloud auth application-default login

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      Java

      Untuk menggunakan contoh Java di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

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

        gcloud init
      3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

        gcloud auth application-default login

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      Node.js

      Untuk menggunakan contoh Node.js di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

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

        gcloud init
      3. Buat kredensial autentikasi lokal untuk Akun Google Anda:

        gcloud auth application-default login

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      REST

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

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

        gcloud init

      Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan agar dapat menambahkan volume Hyperdisk ke VM, minta administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk menambahkan volume Hyperdisk ke VM Anda. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menambahkan volume Hyperdisk ke VM Anda:

  • Untuk membuat dan menyertakan volume Hyperdisk:
    • compute.disks.create dalam project
    • compute.instances.attachDisk di VM
    • compute.disks.use di volume yang ingin Anda sertakan ke VM
  • Untuk memformat dan menyertakan volume yang terpasang: compute.instances.setMetadata di VM

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Nilai yang didukung untuk volume Hyperdisk

Nilai yang Anda gunakan saat membuat atau mengubah volume Hyperdisk harus berada dalam rentang nilai maksimum dan minimum yang dijelaskan dalam Batas Hyperdisk per disk.

Jika Anda mengubah ukuran volume Hyperdisk yang terpasang ke VM, nilai baru tidak boleh melebihi batas Hyperdisk per VM.

IOPS dan throughput yang disediakan untuk volume Hyperdisk harus mengikuti aturan yang diuraikan dalam Tentang IOPS dan penyediaan throughput untuk Hyperdisk.

Menambahkan volume Hyperdisk ke VM Anda

Anda dapat membuat dan menyertakan volume Hyperdisk menggunakan konsol Google Cloud, Google Cloud CLI, atau REST.

Ukuran, throughput, dan IOPS yang Anda tentukan saat membuat volume Hyperdisk harus berada dalam rentang nilai yang didukung.

Saat membuat volume Hyperdisk Balanced atau Hyperdisk Balanced High Availability (Pratinjau), Anda dapat mengizinkan beberapa VM mengakses disk secara opsional dengan membuat disk dalam mode multi-penulis.

Konsol

  1. Buka halaman VM instances.

    Buka instance VM

  2. Klik nama VM tempat Anda ingin menambahkan disk.

  3. Di halaman Detail instance VM, klik Edit.

  4. Di bagian judul Disk tambahan, klik Tambahkan disk baru.

  5. Tentukan nama untuk disk, dan jika perlu, tambahkan deskripsi. Pilih Disk kosong sebagai Jenis sumber disk.

  6. Di bagian Setelan disk, pilih jenis disk dari daftar berikut. Nilai yang Anda tentukan harus berada dalam rentang nilai yang didukung.

    1. Hyperdisk Balanced. Anda juga dapat mengubah setelan Ukuran, IOPS yang Disediakan, dan Throughput yang Disediakan disk default.
    2. Hyperdisk Ekstrem. Anda juga dapat mengubah setelan Ukuran dan IOPS yang Disediakan disk default.
    3. Hyperdisk ML. Anda juga dapat mengubah setelan Ukuran dan Throughput yang Disediakan disk default.
    4. Throughput Hyperdisk. Anda juga dapat mengubah setelan Ukuran disk default dan Throughput yang Disediakan.
  7. Opsional: Untuk volume Hyperdisk Balanced atau Hyperdisk Balanced High Availability (Pratinjau), Anda dapat mengaktifkan pemasangan disk ke beberapa VM dengan membuat disk dalam mode multi-penulis. Di bagian Access mode, pilih Multiple VMs read write.

  8. Klik Simpan.

  9. Untuk menerapkan perubahan ke VM, klik Save.

gcloud

  1. Gunakan perintah gcloud compute disks create untuk membuat 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
    

    Ganti kode berikut:

    • DISK_NAME: nama disk baru.
    • ZONE: nama zona tempat disk baru dibuat.
    • DISK_SIZE: Opsional: Ukuran disk baru. Nilai harus berupa bilangan bulat yang diikuti dengan unit ukuran GB untuk gibibyte, atau TB untuk tebibyte. Jika tidak ada unit ukuran yang ditentukan, 100 GB akan digunakan sebagai nilai default. Nilai yang diterima untuk ukuran disk adalah:
      • Hyperdisk Seimbang: Dari 4 GiB hingga 64 TiB, inklusif, dalam kelipatan 1 GiB.
      • Hyperdisk Ekstrem: Mulai dari 64 GiB hingga 64 TiB, inklusif, dalam kelipatan 1 GiB.
      • Hyperdisk ML: Dari 4 GiB hingga 64 TiB, inklusif, dalam kelipatan 1 GiB.
      • Throughput Hyperdisk: Dari 2 TiB hingga 32 TiB, inklusif, dalam kelipatan 1 GiB.
    • DISK_TYPE: jenis disk. Gunakan salah satu nilai berikut: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml, atau hyperdisk-throughput
    • IOPS_LIMIT: Opsional: Untuk disk Hyperdisk Balanced atau Hyperdisk Extreme, ini adalah jumlah operasi I/O per detik (IOPS) yang dapat ditangani oleh disk.
    • THROUGHPUT_LIMIT: Opsional: Untuk volume Hyperdisk Balanced, Hyperdisk ML, atau Hyperdisk Throughput, ini adalah bilangan bulat yang mewakili throughput, yang diukur dalam MiB per detik, yang dapat ditangani oleh disk.
    • DISK_ACCESS_MODE: Opsional: Cara VM dapat mengakses data di disk. Nilai yang didukung adalah:

      • READ_WRITE_SINGLE, untuk akses baca-tulis dari satu VM. Ini adalah defaultnya.
      • READ_WRITE_MANY, untuk akses baca-tulis dari beberapa VM.
      • READ_ONLY_MANY, untuk akses hanya baca dari beberapa VM.

      Anda dapat menetapkan mode akses untuk jenis disk berikut:

      • Hyperdisk Balanced
      • Hyperdisk ML
      • Hyperdisk Balanced High Availability (Pratinjau)
  2. Opsional: Gunakan perintah gcloud compute disks describe DISK_NAME untuk melihat deskripsi disk Anda.

  3. Setelah membuat disk, Anda dapat melampirkan disk ke VM.

REST

  1. Buat permintaan POST untuk membuat Hyperdisk zona menggunakan metode disks.insert. Sertakan properti name, sizeGb, type, provisionedIops, dan provisionedThroughput. Untuk membuat disk ini sebagai non-boot disk kosong dan tidak terformat, jangan tentukan image sumber atau snapshot sumber.

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

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda
    • ZONE: zona tempat VM dan disk baru Anda berada
    • DISK_NAME: nama disk baru
    • DISK_SIZE: Opsional: Ukuran disk baru. Nilai harus berupa bilangan bulat yang diikuti dengan unit ukuran GB untuk gibibyte atau TB untuk tebibyte.
    • DISK_TYPE: jenis disk. Untuk membuat volume Hyperdisk, gunakan salah satu nilai berikut: hyperdisk-balanced, hyperdisk-extreme, hyperdisk-ml, atau hyperdisk-throughput.
    • IOPS_LIMIT: Opsional: Untuk Hyperdisk Balanced dan Hyperdisk Extreme, ini adalah jumlah operasi I/O per detik yang dapat ditangani disk.
    • THROUGHPUT_LIMIT: Opsional: Untuk volume Hyperdisk Balanced, Hyperdisk ML, atau Hyperdisk Throughput, ini adalah bilangan bulat yang mewakili throughput, yang diukur dalam MiB per detik, yang dapat ditangani oleh disk.
    • DISK_ACCESS_MODE: cara VM dapat mengakses data di disk. Nilai yang didukung adalah:

      • READ_WRITE_SINGLE, untuk akses baca-tulis dari satu VM. Ini adalah defaultnya.
      • READ_WRITE_MANY, untuk akses baca-tulis dari beberapa VM.
      • READ_ONLY_MANY, untuk akses hanya baca dari beberapa VM.

      Anda dapat menetapkan mode akses untuk jenis disk berikut:

      • Hyperdisk Balanced
      • Hyperdisk ML
      • Hyperdisk Balanced High Availability (Pratinjau)
  2. Opsional: Gunakan metode compute.disks.get untuk melihat deskripsi disk Anda.

  3. Setelah membuat disk, Anda dapat melampirkan disk ke VM yang sedang berjalan atau dihentikan.

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

Setelah membuat disk, Anda dapat melampirkan disk ke VM yang sedang berjalan atau dihentikan.

Memformat dan memasang disk

Setelah membuat dan melampirkan disk baru ke VM, Anda harus memformat dan memasang disk, sehingga sistem operasi dapat menggunakan ruang penyimpanan yang tersedia.

Langkah berikutnya