Membuat Penyimpanan Gabungan Hyperdisk


Penyimpanan Gabungan Hyperdisk adalah resource penyimpanan blok baru yang membantu Anda mengelola penyimpanan blok Hyperdisk secara gabungan. Penyimpanan Gabungan Hyperdisk tersedia dalam varian Penyimpanan Gabungan Throughput Hyperdisk dan Penyimpanan Gabungan Hyperdisk yang Seimbang.

Anda harus menentukan properti berikut saat membuat penyimpanan bersama:

  • Zona
  • Jenis penyimpanan gabungan
  • Jenis penyediaan kapasitas
  • Kapasitas yang disediakan gabungan
  • Jenis penyediaan performa
  • IOPS dan throughput yang disediakan kumpulan

Anda dapat menggunakan jenis penyediaan Kapasitas standar, Kapasitas lanjutan, Performa standar, atau Performa lanjutan dengan Penyimpanan Gabungan Hyperdisk:

  • Kapasitas standar: Kapasitas yang disediakan untuk setiap disk yang dibuat di storage pool akan dipotong dari total kapasitas yang disediakan dari storage pool.
  • Kapasitas lanjutan: Kumpulan penyimpanan mendapatkan manfaat dari penyediaan virtual dan pengurangan data. Hanya jumlah data yang sebenarnya ditulis yang akan dipotong dari total kapasitas yang disediakan dari penyimpanan gabungan.
  • Performa standar: Performa yang disediakan untuk setiap disk yang dibuat di storage pool akan dipotong dari total performa yang disediakan dari storage pool.
  • Performa lanjutan: Performa yang disediakan untuk setiap disk mendapatkan manfaat dari penyediaan tipis. Hanya jumlah performa yang digunakan oleh disk yang dikurangkan dari total performa yang disediakan dari kumpulan penyimpanan.

    Sebelum memulai

    • 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 Anda perlukan untuk membuat 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 kumpulan penyimpanan. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

    Izin yang diperlukan

    Izin berikut diperlukan untuk membuat kumpulan penyimpanan:

    • compute.storagePools.create pada project
    • compute.storagePools.setLabels pada project

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

    Batasan

    Perhatikan batasan berikut saat membuat Penyimpanan Gabungan Hyperdisk:

    Batas resource:

    • Anda dapat membuat Penyimpanan Gabungan Hyperdisk dengan kapasitas yang disediakan hingga 1 PiB.
    • Anda dapat membuat maksimum 5 penyimpanan per jam.
    • Anda dapat membuat maksimal 10 kumpulan penyimpanan per hari.
    • Anda dapat membuat maksimal 10 kumpulan penyimpanan per project.
    • Anda tidak dapat mengubah model penyediaan untuk kumpulan; Anda tidak dapat mengubah Penyimpanan gabungan kapasitas standar menjadi Penyimpanan gabungan kapasitas lanjutan atau Penyimpanan gabungan performa lanjutan menjadi Penyimpanan gabungan performa standar.
    • Kumpulan penyimpanan adalah resource zona.
    • Anda dapat membuat hingga 1.000 disk dalam kumpulan penyimpanan.
    • Anda dapat menggunakan Penyimpanan Gabungan Hyperdisk hanya dengan Compute Engine. Instance Cloud SQL tidak dapat menggunakan Penyimpanan Gabungan Hyperdisk.
    • Anda dapat mengubah kapasitas atau performa yang disediakan dari kumpulan penyimpanan maksimal dua kali dalam periode 24 jam.

    Batas untuk disk dalam storage pool:

    • Hanya disk baru di project dan zona yang sama yang dapat dibuat di penyimpanan bersama.
    • Memindahkan disk ke dalam atau keluar dari kumpulan 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.
    • Untuk membuat disk booting di penyimpanan bersama, Anda harus menggunakan Penyimpanan Bersama Hyperdisk Balanced.
    • Storage pool tidak mendukung disk regional.
    • Anda tidak dapat meng-clone, membuat snapshot instan, atau mengonfigurasi Replikasi Asinkron Persistent Disk untuk disk dalam kumpulan penyimpanan.
    • Disk Hyperdisk Balanced dalam kumpulan penyimpanan tidak dapat dilampirkan ke beberapa instance komputasi.

    Rentang kapasitas dan batas performa yang disediakan

    Saat membuat penyimpanan gabungan, kapasitas, IOPS, dan throughput yang disediakan tunduk pada batas yang dijelaskan dalam Batas untuk penyimpanan gabungan.

    Membuat Penyimpanan Gabungan Hyperdisk

    Untuk membuat Hyperdisk Storage Pool baru, gunakan Konsol Google Cloud, Google Cloud CLI, atau REST.

    Konsol

    1. Buka halaman Create a storage pool di konsol Google Cloud.
      Buka halaman Buat Storage Pool
    2. Di kolom Name, masukkan nama unik untuk penyimpanan.
    3. Opsional: Di kolom Description, masukkan deskripsi untuk kumpulan penyimpanan.
    4. Pilih Region dan Zone tempat Anda ingin membuat kumpulan penyimpanan.
    5. Pilih nilai untuk Jenis penyimpanan.
    6. Pilih jenis penyediaan di kolom Capacity type dan tentukan kapasitas yang akan disediakan untuk kumpulan penyimpanan di kolom Storage pool capacity. Anda dapat menentukan ukuran dari 10 TiB hingga 1 PiB.

      Untuk membuat kumpulan penyimpanan dengan kapasitas besar, Anda mungkin harus meminta kuota yang lebih tinggi.

    7. Pilih jenis penyediaan di kolom Jenis performa.

    8. Untuk Penyimpanan Gabungan Hyperdisk, di kolom IOPS yang disediakan, masukkan IOPS yang akan disediakan untuk penyimpanan gabungan.

    9. Untuk Hyperdisk Throughput Storage Pool atau Hyperdisk Balanced Storage Pool, di kolom Provisioned throughput, masukkan throughput yang akan disediakan untuk storage pool.

    10. Klik Kirim untuk membuat kumpulan penyimpanan.

    gcloud

    Untuk membuat Penyimpanan Gabungan Hyperdisk, gunakan perintah gcloud compute storage-pools create.

    gcloud compute storage-pools create NAME  \
        --zone=ZONE   \
        --storage-pool-type=STORAGE_POOL_TYPE   \
        --capacity-provisioning-type=CAPACITY_TYPE \
        --provisioned-capacity=POOL_CAPACITY   \
        --performance-provisioning-type=PERFORMANCE_TYPE \
        --provisioned-iops=IOPS   \
        --provisioned-throughput=THROUGHPUT   \
        --description=DESCRIPTION
    

    Ganti kode berikut:

    • NAME: nama kumpulan penyimpanan unik.
    • ZONE: zona tempat membuat kumpulan penyimpanan, misalnya, us-central1-a.
    • STORAGE_POOL_TYPE: jenis disk yang akan disimpan di kumpulan penyimpanan. Nilai yang diizinkan adalah hyperdisk-throughput dan hyperdisk-balanced.
    • CAPACITY_TYPE: Opsional: jenis penyediaan kapasitas kumpulan penyimpanan. Nilai yang diizinkan adalah advanced dan standard. Jika tidak ditentukan, nilai advanced akan digunakan.
    • POOL_CAPACITY: total kapasitas yang akan disediakan untuk kumpulan penyimpanan baru, yang ditentukan dalam GiB secara default.
    • PERFORMANCE_TYPE: Opsional: jenis penyediaan performa dari penyimpanan pool. Nilai yang diizinkan adalah advanced dan standard. Jika tidak ditentukan, nilai advanced akan digunakan.
    • IOPS: IOPS yang akan disediakan untuk storage pool. Anda hanya dapat menggunakan flag ini dengan Hyperdisk Balanced Storage Pool.
    • THROUGHPUT: throughput dalam MBps untuk menyediakan kumpulan penyimpanan.
    • DESCRIPTION: Opsional: string teks yang mendeskripsikan kumpulan penyimpanan.

    REST

    Buat permintaan POST untuk membuat Penyimpanan Gabungan Hyperdisk menggunakan metode storagePools.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/storagePools
    
    {
        "name": "NAME",
        "description": "DESCRIPTION",
        "poolProvisionedCapacityGb": "POOL_CAPACITY",
        "storagePoolType": "projects/PROJECT_ID/zones/ZONE/storagePoolTypes/STORAGE_POOL_TYPE",
        "poolProvisionedIops": "IOPS",
        "poolProvisionedThroughput": "THROUGHPUT",
        "capacityProvisioningType": "CAPACITY_TYPE",
        "performanceProvisioningType": "PERFORMANCE_TYPE"
    }
    

    Ganti kode berikut:

    • PROJECT_ID: the project ID
    • ZONE: zona tempat membuat kumpulan penyimpanan, misalnya, us-central1-a.
    • NAME: nama unik untuk penyimpanan pool .
    • DESCRIPTION: Opsional: string teks yang mendeskripsikan kumpulan penyimpanan.
    • POOL_CAPACITY: total kapasitas untuk menyediakan kumpulan penyimpanan baru, yang ditentukan dalam GiB secara default.
    • STORAGE_POOL_TYPE: jenis disk yang akan disimpan di kumpulan penyimpanan. Nilai yang diizinkan adalah hyperdisk-throughput dan hyperdisk-balanced.
    • IOPS: Opsional: IOPS yang akan disediakan untuk kumpulan penyimpanan. Anda hanya dapat menggunakan flag ini dengan Hyperdisk Balanced Storage Pool.
    • THROUGHPUT: Opsional: Throughput dalam MBps untuk menyediakan kumpulan penyimpanan.
    • CAPACITY_TYPE: Opsional: jenis penyediaan kapasitas kumpulan penyimpanan. Nilai yang diizinkan adalah advanced dan standard. Jika tidak ditentukan, nilai advanced akan digunakan.
    • PERFORMANCE_TYPE: Opsional: jenis penyediaan performa dari penyimpanan pool. Nilai yang diizinkan adalah advanced dan standard. Jika tidak ditentukan, nilai advanced akan digunakan.

    Go

    
    // createHyperdiskStoragePool creates a new Hyperdisk storage pool in the specified project and zone.
    func createHyperdiskStoragePool(w io.Writer, projectId, zone, storagePoolName, storagePoolType string) error {
    	// projectID := "your_project_id"
    	// zone := "europe-west4-b"
    	// storagePoolName := "your_storage_pool_name"
    	// storagePoolType := "projects/**your_project_id**/zones/europe-west4-b/diskTypes/hyperdisk-balanced"
    
    	ctx := context.Background()
    	client, err := compute.NewStoragePoolsRESTClient(ctx)
    	if err != nil {
    		return fmt.Errorf("NewStoragePoolsRESTClient: %v", err)
    	}
    	defer client.Close()
    
    	// Create the storage pool resource
    	resource := &computepb.StoragePool{
    		Name:                        proto.String(storagePoolName),
    		Zone:                        proto.String(zone),
    		StoragePoolType:             proto.String(storagePoolType),
    		CapacityProvisioningType:    proto.String("advanced"),
    		PerformanceProvisioningType: proto.String("advanced"),
    		PoolProvisionedCapacityGb:   proto.Int64(10240),
    		PoolProvisionedIops:         proto.Int64(10000),
    		PoolProvisionedThroughput:   proto.Int64(1024),
    	}
    
    	// Create the insert storage pool request
    	req := &computepb.InsertStoragePoolRequest{
    		Project:             projectId,
    		Zone:                zone,
    		StoragePoolResource: resource,
    	}
    
    	// Send the insert storage pool request
    	op, err := client.Insert(ctx, req)
    	if err != nil {
    		return fmt.Errorf("Insert storage pool request failed: %v", err)
    	}
    
    	// Wait for the insert storage pool operation to complete
    	if err = op.Wait(ctx); err != nil {
    		return fmt.Errorf("unable to wait for the operation: %w", err)
    	}
    
    	// Retrieve and return the created storage pool
    	storagePool, err := client.Get(ctx, &computepb.GetStoragePoolRequest{
    		Project:     projectId,
    		Zone:        zone,
    		StoragePool: storagePoolName,
    	})
    	if err != nil {
    		return fmt.Errorf("Get storage pool request failed: %v", err)
    	}
    
    	fmt.Fprintf(w, "Hyperdisk Storage Pool created: %v\n", storagePool.GetName())
    	return nil
    }
    

    Java

    import com.google.cloud.compute.v1.InsertStoragePoolRequest;
    import com.google.cloud.compute.v1.Operation;
    import com.google.cloud.compute.v1.StoragePool;
    import com.google.cloud.compute.v1.StoragePoolsClient;
    import java.io.IOException;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.TimeUnit;
    import java.util.concurrent.TimeoutException;
    
    public class CreateHyperdiskStoragePool {
      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 storagePool.
        String zone = "us-central1-a";
        // Name of the storagePool you want to create.
        String storagePoolName = "YOUR_STORAGE_POOL_NAME";
        // The type of disk you want to create.
        // Storage types can be "hyperdisk-throughput" or "hyperdisk-balanced"
        String storagePoolType = String.format(
            "projects/%s/zones/%s/storagePoolTypes/hyperdisk-balanced", projectId, zone);
        // Optional: the capacity provisioning type of the storage pool.
        // The allowed values are advanced and standard. If not specified, the value advanced is used.
        String capacityProvisioningType = "advanced";
        // The total capacity to provision for the new storage pool, specified in GiB by default.
        long provisionedCapacity = 128;
        // the IOPS to provision for the storage pool.
        // You can use this flag only with Hyperdisk Balanced Storage Pools.
        long provisionedIops = 3000;
        // the throughput in MBps to provision for the storage pool.
        long provisionedThroughput = 140;
        // The allowed values are low-casing strings "advanced" and "standard".
        // If not specified, "advanced" is used.
        String performanceProvisioningType = "advanced";
    
        createHyperdiskStoragePool(projectId, zone, storagePoolName, storagePoolType,
                capacityProvisioningType, provisionedCapacity, provisionedIops,
            provisionedThroughput, performanceProvisioningType);
      }
    
      // Creates a hyperdisk storagePool in a project
      public static StoragePool createHyperdiskStoragePool(String projectId, String zone,
            String storagePoolName, String storagePoolType, String capacityProvisioningType,
            long capacity, long iops, long throughput, String performanceProvisioningType)
              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 (StoragePoolsClient client = StoragePoolsClient.create()) {
          // Create a storagePool.
          StoragePool resource = StoragePool.newBuilder()
                  .setZone(zone)
                  .setName(storagePoolName)
                  .setStoragePoolType(storagePoolType)
                  .setCapacityProvisioningType(capacityProvisioningType)
                  .setPoolProvisionedCapacityGb(capacity)
                  .setPoolProvisionedIops(iops)
                  .setPoolProvisionedThroughput(throughput)
                  .setPerformanceProvisioningType(performanceProvisioningType)
                  .build();
    
          InsertStoragePoolRequest request = InsertStoragePoolRequest.newBuilder()
                  .setProject(projectId)
                  .setZone(zone)
                  .setStoragePoolResource(resource)
                  .build();
    
          // Wait for the insert disk operation to complete.
          Operation operation = client.insertAsync(request).get(1, TimeUnit.MINUTES);
    
          if (operation.hasError()) {
            System.out.println("StoragePool creation failed!");
            throw new Error(operation.getError().toString());
          }
    
          // Wait for server update
          TimeUnit.SECONDS.sleep(10);
    
          StoragePool storagePool = client.get(projectId, zone, storagePoolName);
    
          System.out.printf("Storage pool '%s' has been created successfully", storagePool.getName());
    
          return storagePool;
        }
      }
    }

    Node.js

    // Import the Compute library
    const computeLib = require('@google-cloud/compute');
    const compute = computeLib.protos.google.cloud.compute.v1;
    
    // Instantiate a storagePoolClient
    const storagePoolClient = new computeLib.StoragePoolsClient();
    // 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 storagePoolClient.getProjectId();
    // Name of the zone in which you want to create the storagePool.
    const zone = 'us-central1-a';
    // Name of the storagePool you want to create.
    // storagePoolName = 'storage-pool-name';
    // The type of disk you want to create. This value uses the following format:
    // "projects/{projectId}/zones/{zone}/storagePoolTypes/(hyperdisk-throughput|hyperdisk-balanced)"
    const storagePoolType = `projects/${projectId}/zones/${zone}/storagePoolTypes/hyperdisk-balanced`;
    // Optional: The capacity provisioning type of the storage pool.
    // The allowed values are advanced and standard. If not specified, the value advanced is used.
    const capacityProvisioningType = 'advanced';
    // The total capacity to provision for the new storage pool, specified in GiB by default.
    const provisionedCapacity = 10240;
    // The IOPS to provision for the storage pool.
    // You can use this flag only with Hyperdisk Balanced Storage Pools.
    const provisionedIops = 10000;
    // The throughput in MBps to provision for the storage pool.
    const provisionedThroughput = 1024;
    // Optional: The performance provisioning type of the storage pool.
    // The allowed values are advanced and standard. If not specified, the value advanced is used.
    const performanceProvisioningType = 'advanced';
    
    async function callCreateComputeHyperdiskPool() {
      // Create a storagePool.
      const storagePool = new compute.StoragePool({
        name: storagePoolName,
        poolProvisionedCapacityGb: provisionedCapacity,
        poolProvisionedIops: provisionedIops,
        poolProvisionedThroughput: provisionedThroughput,
        storagePoolType,
        performanceProvisioningType,
        capacityProvisioningType,
        zone,
      });
    
      const [response] = await storagePoolClient.insert({
        project: projectId,
        storagePoolResource: storagePool,
        zone,
      });
    
      let operation = response.latestResponse;
    
      // Wait for the create storage pool operation to complete.
      while (operation.status !== 'DONE') {
        [operation] = await zoneOperationsClient.wait({
          operation: operation.name,
          project: projectId,
          zone: operation.zone.split('/').pop(),
        });
      }
    
      console.log(`Storage pool: ${storagePoolName} created.`);
    }
    
    await callCreateComputeHyperdiskPool();

    Apa langkah selanjutnya?