Menambahkan disk dari kumpulan penyimpanan ke VM


Anda dapat membuat disk di Kumpulan Penyimpanan Hyperdisk, lalu memasang disk ke instance mesin virtual (VM), atau Anda dapat membuat disk di kumpulan penyimpanan saat membuat VM.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi 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. Menginstal Google Cloud CLI. Setelah penginstalan, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    2. Set a default region and zone.

    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.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    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.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    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.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      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.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    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, Anda menggunakan kredensial yang Anda berikan ke gcloud CLI.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

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

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat disk Hyperdisk Seimbang atau Hyperdisk Throughput di kumpulan penyimpanan, minta administrator untuk memberi Anda peran IAM berikut pada project:

  • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)
  • Untuk terhubung ke instance VM yang dapat dijalankan sebagai akun layanan: Service Account User (v1) (peran roles/iam.serviceAccountUser)

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

Peran bawaan ini berisi izin yang diperlukan untuk membuat disk Hyperdisk Seimbang atau Hyperdisk Throughput di pool penyimpanan. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat disk Hyperdisk Balanced atau Hyperdisk Throughput di kumpulan penyimpanan:

  • Untuk membuat disk di kumpulan penyimpanan dan memasang disk ke instance VM:
    • compute.disks.create dalam project
    • compute.instances.attachDisk di VM
    • compute.disks.use di volume yang ingin Anda sertakan ke VM
    • compute.storagePools.use pada kumpulan penyimpanan tempat Anda membuat disk
  • Untuk memformat dan memasang volume yang terpasang: compute.instances.setMetadata di VM

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

Untuk mengetahui izin yang diperlukan untuk membuat instance, lihat Izin yang diperlukan.

Batasan

Tinjau batasan berikut untuk membuat disk di Gabungan Penyimpanan Hyperdisk:

  • Anda hanya dapat membuat disk Hyperdisk Balanced di Hyperdisk Balanced Storage Pool dan Anda hanya dapat membuat disk Hyperdisk Throughput di Hyperdisk Throughput Storage Pool.
  • Hanya disk baru di project dan zona yang sama yang dapat dibuat di kumpulan penyimpanan.
  • Untuk membuat disk booting di penyimpanan gabungan, Anda harus menggunakan Penyimpanan Gabungan Hyperdisk Balanced.
  • Memindahkan disk ke dalam atau ke luar pool penyimpanan tidak diizinkan. Untuk memindahkan disk ke dalam atau ke luar kumpulan penyimpanan, Anda harus membuat ulang disk dari snapshot. Untuk mengetahui informasi selengkapnya, lihat Mengubah jenis disk.
  • Anda dapat membuat hingga 1.000 disk di kumpulan penyimpanan.
  • Kumpulan penyimpanan tidak mendukung disk regional.

Opsi penyediaan

Bergantung pada jenis penyediaan untuk Penyimpanan Gabungan Hyperdisk, Anda dapat memilih cara menyediakan kapasitas dan performa setiap disk yang Anda buat di gabungan penyimpanan.

Menyediakan kapasitas disk

Jika membuat kumpulan penyimpanan kapasitas Lanjutan, Anda dapat menggunakan penyediaan tipis. Anda dapat membuat disk di penyimpanan bersama dengan ukuran kumulatif yang melebihi kapasitas yang disediakan untuk penyimpanan bersama. Kapasitas yang digunakan dari kumpulan penyimpanan ditentukan oleh total data yang digunakan, bukan oleh jumlah ruang disk yang telah Anda sediakan. Anda dapat menyediakan disk dengan kapasitas gabungan hingga 500% dari kapasitas yang disediakan untuk pool penyimpanan Kapasitas lanjutan.

Jika Anda membuat disk di kumpulan penyimpanan berkapasitas Standar, Anda membuat disk di kumpulan penyimpanan hingga total ukuran semua disk di kumpulan penyimpanan mencapai kapasitas yang disediakan kumpulan penyimpanan. Disk di pool penyimpanan dengan kapasitas Standar berperilaku serupa dengan disk non-pool, dengan kapasitas yang digunakan saat Anda membuat disk.

Performa penyediaan

Jika Anda membuat pool penyimpanan Performa tinggi, Anda dapat menggunakan penyediaan tipis. Anda dapat membuat disk di kumpulan penyimpanan dengan jumlah kumulatif IOPS dan throughput yang melebihi performa yang disediakan untuk kumpulan tersebut. Performa yang digunakan pool penyimpanan ditentukan oleh total performa yang digunakan oleh disk, bukan oleh jumlah performa yang disediakan untuk setiap disk. Anda dapat menyediakan disk dengan performa gabungan hingga 500% dari performa yang disediakan untuk pool penyimpanan Performa tinggi.

Jika Anda membuat disk di kumpulan penyimpanan performa Standar, IOPS atau throughput yang Anda sediakan untuk disk harus kurang dari IOPS atau throughput yang tersedia di Hyperdisk Storage Pool. IOPS atau throughput yang tersedia adalah jumlah yang disediakan untuk kumpulan penyimpanan dikurangi jumlah yang digunakan untuk semua disk yang dibuat di kumpulan penyimpanan.

Jika salah satu kondisi dalam paragraf sebelumnya tidak terpenuhi, permintaan untuk membuat disk di kumpulan penyimpanan akan gagal dan disk tidak dibuat.

Contoh

Asumsikan Anda memiliki Hyperdisk Balanced Storage Pool dengan 100.000 IOPS yang disediakan.

Dengan penyediaan performa Standar:

  • Anda dapat menyediakan hingga 100.000 IOPS gabungan saat membuat disk Hyperdisk Balanced di storage pool.
  • Anda akan ditagih untuk performa yang disediakan oleh Hyperdisk Balanced Storage Pool sebesar 100.000 IOPS.
  • Seperti disk yang dibuat di luar storage pool, disk Hyperdisk Balanced di storage pool performa Standar disediakan secara otomatis dengan IOPS dasar pengukuran hingga 3.000 dan throughput dasar pengukuran 140 MiB/s. Performa dasar ini tidak dihitung terhadap performa yang disediakan untuk kumpulan penyimpanan. Hanya jika Anda menambahkan disk ke kumpulan penyimpanan dengan performa yang disediakan di atas nilai dasar, performa tersebut akan dihitung terhadap performa yang disediakan untuk kumpulan penyimpanan, misalnya:

    • Disk yang disediakan dengan 3.000 IOPS menggunakan 0 IOPS pool dan pool masih memiliki 100.000 IOPS yang disediakan dan tersedia untuk disk lain.
    • Disk yang disediakan dengan 13.000 IOPS menggunakan 10.000 IOPS pool dan pool memiliki 90.000 IOPS yang disediakan yang tersisa yang dapat Anda alokasikan ke disk lain dalam storage pool.

Dengan Penyediaan performa lanjutan:

  • Anda dapat menyediakan performa Hyperdisk agregat hingga 500.000 IOPS saat membuat disk di gabungan penyimpanan.
  • Anda akan ditagih untuk 100.000 IOPS yang disediakan oleh kumpulan penyimpanan.
  • Jika Anda membuat satu disk (Disk1) di storage pool yang memiliki 5.000 IOPS, Anda tidak menggunakan IOPS dari IOPS yang disediakan storage pool. Namun, jumlah IOPS yang dapat Anda sediakan untuk disk baru yang dibuat di kumpulan penyimpanan kini adalah 495.000.
  • Jika Disk1 mulai membaca dan menulis data, dan jika Disk1 menggunakan IOPS maksimumnya sebesar 5.000 dalam satu menit tertentu, maka 5.000 IOPS akan digunakan dari IOPS yang disediakan untuk kumpulan penyimpanan. Disk lain yang Anda buat di kumpulan penyimpanan yang sama dapat menggunakan maksimum agregat 95.000 IOPS dalam menit yang sama tanpa mengalami pertentangan.

Membuat disk di kumpulan penyimpanan

Anda dapat menggunakan konsol Google Cloud , Google Cloud CLI, atau REST untuk membuat disk di pool penyimpanan.

Konsol

Dengan menggunakan konsol Google Cloud , Anda dapat membuat disk baru di kumpulan penyimpanan melalui halaman Kumpulan penyimpanan atau halaman Disk.

Di halaman Storage pools:

  1. Di konsol Google Cloud , buka halaman Storage pools.

    Buka halaman Storage pools

  2. Klik nama pool penyimpanan yang ingin Anda buat disknnya.

  3. Di halaman Manage storage pool, klik +Create New Disk.

  4. Di panel Add new disk, masukkan Name untuk disk.

  5. Tentukan atau ubah nilai apa pun yang tidak ingin Anda gunakan sebagai nilai default.

  6. Setelah selesai menentukan properti disk, klik Simpan.

  7. Di halaman Kelola pool penyimpanan, Anda akan melihat disk baru yang tercantum di bagian Disk pool penyimpanan.

Di halaman Create Disk:

  1. Di konsol Google Cloud , buka halaman Disks > Create a disk.

    Buka halaman Buat disk

  2. Masukkan Nama untuk disk.

  3. Pilih zona yang berisi pool penyimpanan tempat Anda ingin membuat disk.

  4. Untuk Jenis disk, pilih jenis disk yang cocok dengan Hyperdisk Storage Pool, baik Hyperdisk Throughput maupun Hyperdisk Balanced.

  5. Ubah nilai di kolom Ukuran, IOPS yang Disediakan, dan Throughput yang Disediakan sesuai kebutuhan.

  6. Di bagian Storage pool, pilih Enable storage pool, lalu pilih nama storage pool untuk membuat disk. Hanya pool penyimpanan yang ada di zona yang dipilih yang muncul dalam daftar.

  7. Setelah selesai menentukan informasi disk, klik Buat.

gcloud

Untuk membuat satu atau beberapa disk di kumpulan penyimpanan, gunakan perintah gcloud compute disks create.

gcloud compute disks create DISK_NAME \
    --zone=ZONE \
    --storage-pool=STORAGE_POOL_NAME \
    --size=SIZE \
    --type=DISK_TYPE \
    --provisioned-iops=PROVISIONED_IOPS \
    --provisioned-throughput=PROVISIONED_THROUGHPUT

Ganti kode berikut:

  • DISK_NAME: nama unik untuk disk. Anda dapat memberikan daftar nama disk yang ditentukan oleh spasi untuk membuat beberapa disk dengan atribut yang sama.
  • ZONE: zona tempat pool penyimpanan dibuat. Tentukan nilai ini dalam format region-zona, misalnya us-central1-a.
  • STORAGE_POOL_NAME: nama pool penyimpanan untuk membuat disk
  • SIZE: Opsional: kapasitas yang disediakan untuk disk baru. Nilai harus berupa bilangan bulat yang diikuti dengan satuan ukuran GB untuk gibibyte, atau TB untuk tebibyte. Jika tidak ada ukuran yang ditentukan, 100 GB akan digunakan sebagai nilai default.
  • DISK_TYPE: jenis disk yang akan dibuat. Nilai ini harus cocok dengan jenis Hyperdisk Storage Pool, baik hyperdisk-balanced maupun hyperdisk-throughput.
  • PROVISIONED_IOPS: Opsional: IOPS yang akan disediakan untuk disk. Anda hanya dapat menggunakan flag ini dengan disk Hyperdisk Seimbang.
  • PROVISIONED_THROUGHPUT: Opsional: throughput dalam mebibyte (MB) per detik yang akan disediakan untuk disk.

REST

Untuk membuat satu atau beberapa disk di kumpulan penyimpanan, buat POST menggunakan metode disks.insert. Sertakan properti name, sizeGb, type, storagePool, provisionedIops, dan provisionedThroughput. Untuk membuat disk ini sebagai disk non-boot 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",
    "description": "DESCRIPTION",
    "type": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
    "sizeGb": "DISK_SIZE",
    "storagePool": "STORAGE_POOL_NAME",
    "provisionedIops": "IOPS_LIMIT",
    "provisionedThroughput": "THROUGHPUT_LIMIT",
}

Ganti kode berikut:

  • PROJECT_ID: the project ID
  • ZONE: zona tempat pool penyimpanan berada, misalnya, us-central1-a. Ini adalah zona tempat disk akan dibuat.
  • DISK_NAME: nama unik untuk disk.
  • DESCRIPTION: Opsional: string teks yang mendeskripsikan disk.
  • DISK_TYPE: jenis disk, yang harus cocok dengan jenis kumpulan penyimpanan. Gunakan hyperdisk-throughput atau hyperdisk-balanced.
  • 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 ukuran yang ditentukan, 100 GB akan digunakan sebagai nilai default.
  • STORAGE_POOL_NAME: nama pool penyimpanan tempat disk akan dibuat.
  • IOPS_LIMIT: Opsional: IOPS yang akan disediakan untuk disk. Anda hanya dapat menggunakan flag ini dengan disk Hyperdisk Seimbang.
  • THROUGHPUT_LIMIT: Opsional: Throughput dalam mebibyte (MB) per detik yang akan disediakan untuk disk.

Go


// createDiskInStoragePool creates a new Hyperdisk in the specified storage pool.
func createDiskInStoragePool(w io.Writer, projectId, zone, diskName, storagePoolName, diskType string) error {
	// Example usage:
	//   projectID := "your_project_id"
	//   zone := "europe-central2-b"
	//   diskName := "your_disk_name"
	//   storagePoolName := "https://www.googleapis.com/compute/v1/projects/your_project_id/zones/europe-central2-b/storagePools/your_storage_pool"
	//   diskType := "zones/europe-central2-b/diskTypes/hyperdisk-balanced"

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

	// Create the disk resource
	disk := &computepb.Disk{
		Name:                  proto.String(diskName),
		Type:                  proto.String(diskType),
		SizeGb:                proto.Int64(50),
		Zone:                  proto.String(zone),
		StoragePool:           proto.String(storagePoolName),
		ProvisionedIops:       proto.Int64(10000),
		ProvisionedThroughput: proto.Int64(1024),
	}

	// Create the insert disk request
	req := &computepb.InsertDiskRequest{
		Project:      projectId,
		Zone:         zone,
		DiskResource: disk,
	}

	// Send the insert disk request
	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, "Disk created in storage pool: %v\n", disk.Name)
	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 CreateDiskInStoragePool {
  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";
    // Link to the storagePool you want to use. Use format :
    // https://www.googleapis.com/compute/v1/projects/%s/zones/%s/storagePools/%s"
    String storagePoolName = "YOUR_STORAGE_POOL_LINK";
    // The type of disk you want to create. This value uses the following format:
    // "zones/{zone}/diskTypes/(hyperdisk-balanced|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: the IOPS to provision for the disk.
    // You can use this flag only with Hyperdisk Balanced disks.
    long provisionedIops = 3000;
    // Optional: the throughput in mebibyte (MB) per second to provision for the disk.
    long provisionedThroughput = 140;

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

  // Creates a hyperdisk in the storage pool
  public static Disk createDiskInStoragePool(String projectId, String zone, String diskName,
                                             String storagePoolName, String diskType,
                                             long diskSizeGb, long iops, long throughput)
          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)
              .setStoragePool(storagePoolName)
              .setProvisionedIops(iops)
              .setProvisionedThroughput(throughput)
              .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 = 'us-central1-a';

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

// The name of the storage pool
// storagePoolName = 'storage-pool-name';

// Link to the storagePool you want to use. Use format:
// https://www.googleapis.com/compute/v1/projects/{projectId}/zones/{zone}/storagePools/{storagePoolName}
const storagePool = `https://www.googleapis.com/compute/v1/projects/${projectId}/zones/${zone}/storagePools/${storagePoolName}`;
// 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 callCreateComputeHyperdiskFromPool() {
  // Create a disk
  const disk = new compute.Disk({
    sizeGb: diskSizeGb,
    name: diskName,
    type: diskType,
    zone,
    storagePool,
    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 callCreateComputeHyperdiskFromPool();

Setelah membuat disk, Anda dapat melampirkan disk ke VM.

Membuat VM yang menggunakan disk di storage pool

Saat membuat VM, Anda mengonfigurasi boot disk, dan Anda dapat membuat disk data (non-boot) tambahan secara opsional, yang otomatis terpasang ke VM. Bagian berikut menjelaskan cara membuat setiap jenis disk di kumpulan penyimpanan sebagai bagian dari proses pembuatan VM.

Membuat boot disk untuk VM di storage pool

Untuk membuat VM yang menggunakan boot disk di storage pool, Anda harus membuat Hyperdisk Balanced Storage Pool terlebih dahulu. Kemudian, Anda dapat membuat VM menggunakan jenis mesin yang mendukung disk Hyperdisk Balanced. Jenis mesin, jenis disk, dan kumpulan penyimpanan harus tersedia di zona yang Anda pilih.

Konsol

  1. Di Google Cloud konsol, buka halaman VM Instances.

    Buka instance VM

  2. Klik Create Instance.

  3. Masukkan nama untuk instance.

  4. Tetapkan zona ke zona yang sama dengan tempat kumpulan penyimpanan berada.

  5. Pilih jenis mesin yang mendukung Hyperdisk Seimbang, misalnya H3.

  6. Di bagian Boot disk, klik Ubah.

  7. Di panel Boot disk, tetapkan Boot disk type ke Hyperdisk Balanced.

  8. Konfigurasi properti untuk disk.

  9. Luaskan Show advanced configuration.

  10. Di bagian heading Storage pool, pilih Enable storage pool.

  11. Pilih pool penyimpanan untuk membuat disk dari daftar.

  12. Setelah selesai mengonfigurasi disk, klik Select.

  13. Selesaikan konfigurasi properti VM.

  14. Klik Buat.

    Konsol membuat VM di zona yang ditentukan, dan membuat disk boot di kumpulan penyimpanan yang dipilih.

gcloud

Anda dapat membuat boot disk untuk VM baru di kumpulan penyimpanan menggunakan perintah gcloud compute instances create dan menyertakan properti storage-pool untuk boot disk.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --create-disk=boot=yes,type=hyperdisk-balanced,size=DISK_SIZE,provisioned-throughput=THROUGHPUT, \
    provisioned-iops=IOPS,image=projects/IMAGE_PROJECT/global/images/IMAGE, \
    storage-pool=STORAGE_POOL_NAME

Ganti kode berikut:

  • VM_NAME: nama VM.
  • ZONE: region dan zona tempat VM dibuat, menggunakan format us-central1-a.
  • MACHINE_TYPE: jenis mesin VM, misalnya, m3-ultramem-32.
  • DISK_SIZE: ukuran boot disk, dalam GiB
  • THROUGHPUT: throughput yang akan disediakan untuk disk
  • IOPS: IOPS yang akan disediakan untuk disk
  • IMAGE_PROJECT: project yang berisi gambar
  • IMAGE: menentukan salah satu dari hal berikut:
    • Versi tertentu dari image OS—misalnya, debian-12-bookworm-v20240213.
    • Kelompok image, yang harus diformat sebagai family/IMAGE_FAMILY. Tindakan ini akan membuat instance dari image OS terbaru yang masih digunakan. Misalnya, jika Anda menentukan family/debian-12, Compute Engine akan membuat VM menggunakan versi terbaru OS image dalam kelompok image debian-12. Untuk mengetahui informasi selengkapnya tentang penggunaan kelompok image, lihat Praktik terbaik kelompok image.
  • STORAGE_POOL_NAME: nama pool penyimpanan untuk membuat disk baru.

REST

Anda dapat membuat boot disk untuk VM baru di pool penyimpanan dengan membuat permintaan POST untuk metode instances.insert dan menyertakan properti storagePool untuk boot disk.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
   "name": "VM_NAME",
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "disks": [
      {
         "deviceName": "BOOT_DISK_DEVICE_NAME",
         "initializeParams": {
            "diskSizeGb": "DISK_SIZE",
            "diskType": "DISK_TYPE",
            "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
            "boot": true,
            "provisionedIops": "IOPS_LIMIT",
            "provisionedThroughput": "THROUGHPUT_LIMIT",
            "storagePool": "POOL_URL"
         }
      }
   ]
}

Ganti kode berikut:

  • PROJECT_ID: the project ID
  • ZONE: zona tempat pool penyimpanan berada, misalnya, us-central1-a. Ini adalah zona tempat VM dan boot disk dibuat.
  • VM_NAME: nama VM.
  • MACHINE_TYPE: jenis mesin VM, misalnya, m3-ultramem-32.
  • BOOT_DISK_DEVICE_NAME: nama perangkat untuk disk boot
  • DISK_SIZE: ukuran boot disk, dalam GiB
  • DISK_TYPE: jenis disk, ditentukan sebagai URI
  • IMAGE_PROJECT: project yang berisi gambar
  • IMAGE: menentukan salah satu dari hal berikut:
    • Versi tertentu dari image OS—misalnya, debian-12-bookworm-v20240213.
    • Kelompok image, yang harus diformat sebagai family/IMAGE_FAMILY. Tindakan ini akan membuat instance dari image OS terbaru yang masih digunakan. Misalnya, jika Anda menentukan family/debian-12, Compute Engine akan membuat VM menggunakan versi terbaru OS image dalam kelompok image debian-12. Untuk mengetahui informasi selengkapnya tentang penggunaan kelompok image, lihat Praktik terbaik kelompok image.
  • IOPS_LIMIT: IOPS yang akan disediakan untuk disk
  • THROUGHPUT_LIMIT: throughput yang akan disediakan untuk disk
  • POOL_URL: pool penyimpanan tempat disk baru dibuat. Anda dapat memberikan ini sebagai URL sebagian atau lengkap ke resource. Misalnya, nilai berikut adalah nilai yang valid:
    • https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME
    • projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME
    • zones/ZONE/storagePools/STORAGE_POOL_NAME

Membuat disk tambahan di kumpulan penyimpanan selama pembuatan VM

Saat membuat disk di kumpulan penyimpanan selama pembuatan VM, jenis mesin, jenis disk, dan kumpulan penyimpanan harus tersedia di zona yang Anda pilih.

Konsol

Gunakan langkah-langkah berikut untuk menggunakan konsol guna membuat VM baru dengan disk non-boot tambahan:

  1. Di Google Cloud konsol, buka halaman VM Instances.

    Buka instance VM

  2. Klik Create Instance.

  3. Masukkan nama untuk VM.

  4. Tetapkan zona ke zona yang sama dengan tempat kumpulan penyimpanan berada.

  5. Pilih jenis mesin yang mendukung jenis disk yang digunakan oleh kumpulan penyimpanan.

  6. Luaskan bagian Advanced options.

  7. Luaskan Disks.

  8. Klik Tambahkan disk baru.

  9. Di panel Add new disk, masukkan informasi untuk disk. Tetapkan Jenis disk agar sesuai dengan jenis pool penyimpanan.

  10. Di bagian Storage Pool, pilih Enable storage pool.

  11. Di kolom Pilih pool penyimpanan, pilih pool penyimpanan untuk membuat disk.

  12. Setelah selesai mengonfigurasi disk, klik Simpan.

  13. Selesaikan konfigurasi properti VM.

  14. Klik Buat.

    Konsol akan membuat VM di zona yang ditentukan, dan membuat disk non-boot di kumpulan penyimpanan yang dipilih.

gcloud

Anda dapat membuat disk baru di kumpulan penyimpanan selama pembuatan VM dengan menggunakan perintah gcloud compute instances create dan menyertakan properti storage-pool untuk disk.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --create-disk=auto-delete=yes,boot=yes,device-name=BOOT_DISK_DEVICE_NAME,image=IMAGE_NAME, \
    size=BOOT_DISK_SIZE,type=BOOT_DISK_TYPE
    --create-disk=auto-delete=yes,boot=no,device-name=DATA_DISK_DEVICE_NAME,size=DATA_DISK_SIZE, \
    type=DATA_DISK_TYPE,provisioned-iops=IOPS,provisioned-throughput=THROUGHPUT, \
    storage_pool=STORAGE_POOL_NAME

Ganti kode berikut:

  • VM_NAME: nama VM.
  • ZONE: region dan zona tempat VM dibuat, menggunakan format us-central1-a
  • MACHINE_TYPE: jenis mesin VM
  • BOOT_DISK_DEVICE_NAME: nama perangkat untuk disk boot
  • IMAGE_NAME: nama image sistem operasi yang akan diinstal di boot disk, misalnya, debian-12-bookworm-v20240213
  • BOOT_DISK_SIZE: ukuran boot disk, dalam GiB
  • BOOT_DISK_TYPE: jenis disk
  • DATA_DISK_DEVICE_NAME: nama perangkat disk untuk disk data
  • DATA_DISK_SIZE: ukuran disk data, dalam GiB
  • DATA_DISK_TYPE: jenis disk data, hyperdisk-balanced atau hyperdisk-throughput
  • IOPS: IOPS yang akan disediakan untuk disk
  • THROUGHPUT: throughput yang akan disediakan untuk disk
  • STORAGE_POOL_NAME: nama unik untuk pool penyimpanan tempat Anda ingin membuat disk.

REST

Anda dapat membuat disk baru di kumpulan penyimpanan selama pembuatan VM dengan membuat permintaan POST untuk metode instances.insert dan menyertakan properti storagePool untuk disk tambahan.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
   "name": "VM_NAME",
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "disks": [
      {
        "initializeParams":{
            "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
        },
        "boot":true
      },
      {
        "deviceName": "DEVICE_NAME",
        "boot":false,
        "initializeParams": {
           "diskSizeGb": "DISK_SIZE",
           "diskType": "DISK_TYPE",
           "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
           "provisionedIops": "IOPS_LIMIT",
           "provisionedThroughput": "THROUGHPUT_LIMIT",
           "storagePool": "POOL_URL"
        }
      }
   ]
}

Ganti kode berikut:

  • PROJECT_ID: the project ID
  • ZONE: zona tempat pool penyimpanan berada, misalnya, us-central1-a. Ini adalah zona tempat VM dan boot disk dibuat.
  • VM_NAME: nama VM.
  • MACHINE_TYPE: jenis mesin VM, misalnya, m3-ultramem-32.
  • IMAGE_PROJECT: project yang berisi gambar
  • IMAGE: menentukan salah satu dari hal berikut:
    • Versi tertentu dari image OS—misalnya, debian-12-bookworm-v20240213.
    • Kelompok image, yang harus diformat sebagai family/IMAGE_FAMILY. Tindakan ini akan membuat instance dari image OS terbaru yang masih digunakan. Misalnya, jika Anda menentukan family/debian-12, Compute Engine akan membuat VM menggunakan versi terbaru OS image dalam kelompok image debian-12. Untuk mengetahui informasi selengkapnya tentang penggunaan kelompok image, lihat Praktik terbaik kelompok image.
  • DEVICE_NAME: nama perangkat untuk disk data
  • DISK_SIZE: ukuran disk data, dalam GiB
  • DISK_TYPE: jenis disk, ditentukan sebagai URI
  • IOPS_LIMIT: IOPS yang akan disediakan untuk disk
  • THROUGHPUT_LIMIT: throughput yang akan disediakan untuk disk
  • POOL_URL: pool penyimpanan tempat disk baru dibuat. Anda dapat memberikan ini sebagai URL sebagian atau lengkap ke resource. Misalnya, nilai berikut adalah nilai yang valid:
    • https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME
    • projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME
    • zones/ZONE/storagePools/STORAGE_POOL_NAME

Menggunakan kumpulan penyimpanan dalam template instance

Template instance yang digunakan untuk membuat grup instance terkelola (MIG) dapat berisi informasi pool penyimpanan. Disk yang dibuat menggunakan template instance ditempatkan di pool penyimpanan yang ditentukan.

Konsol

  1. Di konsol Google Cloud , buka halaman Instance templates.

    Buka Instance templates

  2. Klik Create Instance Template.

  3. Masukkan nama untuk template instance.

  4. Pilih Regional untuk lokasi, dan di kolom Region, pilih region tempat pool penyimpanan berada.

  5. Pilih jenis mesin yang mendukung Hyperdisk Balanced, misalnya C3.

  6. Di bagian Boot disk, klik Ubah.

  7. Di panel Boot disk, tetapkan Boot disk type ke Hyperdisk Balanced.

  8. Konfigurasi properti untuk disk.

  9. Luaskan Show advanced configuration.

  10. Di bagian heading Storage pool, pilih Enable storage pool.

  11. Pilih pool penyimpanan untuk membuat disk dari daftar.

  12. Setelah selesai mengonfigurasi disk, klik Select.

  13. Selesaikan konfigurasi properti VM.

  14. Klik Buat.

    Template membuat VM di zona yang ditentukan, dan membuat boot disk di kumpulan penyimpanan yang dipilih.

gcloud

Anda dapat menentukan dalam template instance bahwa disk boot dibuat di kumpulan penyimpanan menggunakan perintah gcloud compute instance-templates create dan menyertakan properti storage-pool untuk disk boot.

gcloud compute instance-templates create TEMPLATE_NAME \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --create-disk=boot=yes,type=hyperdisk-balanced,size=DISK_SIZE,provisioned-throughput=THROUGHPUT, \
    provisioned-iops=IOPS,image=projects/IMAGE_PROJECT/global/images/IMAGE, \
    storage-pool=STORAGE_POOL_NAME

Ganti kode berikut:

  • TEMPLATE_NAME: nama template instance.
  • REGION: region tempat Anda ingin membuat template instance regional. Region harus berisi zona tempat pool penyimpanan berada.
  • MACHINE_TYPE: jenis mesin yang akan digunakan saat membuat VM, misalnya, h3-standard-88.
  • DISK_SIZE: ukuran disk, dalam GiB
  • THROUGHPUT: throughput yang akan disediakan untuk disk
  • IOPS: IOPS yang akan disediakan untuk disk
  • IMAGE_PROJECT: project yang berisi image
  • IMAGE: menentukan salah satu dari hal berikut:
    • Versi tertentu dari image OS—misalnya, debian-12-bookworm-v20240213.
    • Kelompok image, yang harus diformat sebagai family/IMAGE_FAMILY. Tindakan ini akan membuat instance dari image OS terbaru yang masih digunakan. Misalnya, jika Anda menentukan family/debian-12, Compute Engine akan membuat VM menggunakan versi terbaru OS image dalam kelompok image debian-12. Untuk mengetahui informasi selengkapnya tentang penggunaan kelompok image, lihat Praktik terbaik kelompok image.
  • STORAGE_POOL_NAME: nama pool penyimpanan untuk membuat disk baru.

REST

Anda dapat membuat boot disk untuk VM baru di pool penyimpanan dengan membuat permintaan POST untuk metode instances.insert dan menyertakan properti storagePool untuk boot disk.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
{
   "name": "VM_NAME",
   "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
   "disks": [
      {
         "deviceName": "BOOT_DISK_DEVICE_NAME",
         "initializeParams": {
            "diskSizeGb": "DISK_SIZE",
            "diskType": "DISK_TYPE",
            "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
            "boot": true,
            "provisionedIops": "IOPS_LIMIT",
            "provisionedThroughput": "THROUGHPUT_LIMIT",
            "storagePool": "POOL_URL"
         }
      }
   ]
}

Ganti kode berikut:

  • PROJECT_ID: the project ID
  • VM_NAME: nama VM.
  • ZONE: zona tempat pool penyimpanan berada, misalnya, us-central1-a. Ini adalah zona tempat VM dan boot disk dibuat.
  • MACHINE_TYPE: jenis mesin VM, misalnya, m3-ultramem-32.
  • BOOT_DISK_DEVICE_NAME: nama perangkat untuk disk boot
  • DISK_SIZE: ukuran boot disk, dalam GiB
  • DISK_TYPE: jenis disk, ditentukan sebagai URI
  • IMAGE_PROJECT: project yang berisi image
  • IMAGE: menentukan salah satu dari hal berikut:
    • Versi tertentu dari image OS—misalnya, debian-12-bookworm-v20240213.
    • Kelompok image, yang harus diformat sebagai family/IMAGE_FAMILY. Tindakan ini akan membuat instance dari image OS terbaru yang masih digunakan. Misalnya, jika Anda menentukan family/debian-12, Compute Engine akan membuat instance menggunakan OS image versi terbaru dalam kelompok image debian-12. Untuk mengetahui informasi selengkapnya tentang penggunaan kelompok image, lihat Praktik terbaik kelompok image.
  • IOPS_LIMIT: IOPS yang akan disediakan untuk disk
  • THROUGHPUT_LIMIT: throughput yang akan disediakan untuk disk
  • POOL_URL: pool penyimpanan tempat disk baru dibuat. Anda dapat memberikan ini sebagai URL sebagian atau lengkap ke resource. Misalnya, nilai berikut adalah nilai yang valid:
    • https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME
    • projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME
    • zones/ZONE/storagePools/STORAGE_POOL_NAME