Google Cloud Hyperdisk ボリュームの設定を変更する


ワークロードのニーズに合わせて、Google Cloud Hyperdisk ボリュームのプロパティを変更できます。たとえば、プロビジョニングされた IOPS またはスループットを増減させて、それぞれ費用の削減やパフォーマンスの向上を実現できます。ボリュームのアクセスモードを設定することで、VM が Hyperdisk ML ボリューム上のデータにアクセスする方法を指定できます。

このページでは、Hyperdisk ボリュームの容量、パフォーマンスなどの設定を変更する方法について説明します。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

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

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

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

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロールと権限

Hyperdisk の変更に必要な権限を取得するには、プロジェクトに関する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、アクセス権の管理に関する記事をご覧ください。

この事前定義ロールには、Hyperdisk の変更に必要な compute.disks.update 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

Hyperdisk の変更の概要

Hyperdisk ボリュームのアクセスモード、サイズ、パフォーマンス特性は動的に変更できます。

Hyperdisk ボリュームでサポートされているサイズとパフォーマンスの変更

次の表に、各 Hyperdisk タイプでサポートされている容量とパフォーマンスの変更をまとめます。

Hyperdisk タイプ カスタマイズ可能なスループット カスタマイズ可能な IOPS VM 間で共有可能
Hyperdisk Balanced はい はい いいえ
Hyperdisk Balanced High Availability はい はい いいえ
Hyperdisk Extreme いいえ いいえ
Hyperdisk ML はい いいえ はい
Hyperdisk Throughput はい いいえ いいえ

Hyperdisk ボリュームを作成または変更するときに使用する値は、ディスクあたりの Hyperdisk の上限で説明されている最大値と最小値の範囲内にする必要があります。

VM にアタッチされている Hyperdisk ボリュームのサイズを変更する場合、新しい値は VM あたりの Hyperdisk の上限を超えることはできません。

Hyperdisk ボリュームにプロビジョニングされる IOPS とスループットは、Hyperdisk の IOPS とスループットのプロビジョニングについてで説明されているルールに沿っている必要があります。

容量の変更

Hyperdisk ボリュームのサイズを変更できるのは、サイズを増やす場合のみです。Hyperdisk ボリュームの容量を減らすことはできません。Hyperdisk ボリュームのサイズを小さくする場合は、小さいボリュームを作成し、元のボリュームから小さいボリュームにデータを移行して、元のボリュームを削除する必要があります。

Hyperdisk ボリュームは、実行中の VM にアタッチされている場合でもサイズ変更できます。

Hyperdisk Throughput ボリュームのサイズを変更できるのは、6 時間に 1 回だけです。他のすべての Hyperdisk タイプでは、プロビジョニングされた容量を 4 時間に 1 回変更できます。

最適な結果を得るには、Hyperdisk ボリュームの容量を変更するときに、次の手順を行います。

  1. ボリュームのサイズを大きくします
  2. ディスクのバックアップ
  3. ディスク パーティションのサイズを変更する

パフォーマンスの変化

プロビジョニングされた IOPS またはスループットを変更した後、変更が有効になるまで最大 15 分かかることがあります。Hyperdisk ML ボリュームの変更が有効になるまでに最大 20 分かかることがあります。

Hyperdisk ML を除くすべての Hyperdisk タイプで、プロビジョニングされた IOPS またはスループットを 4 時間に 1 回動的に変更できます。Hyperdisk ML ボリュームのプロビジョニングされたスループットは 6 時間に 1 回変更できます。

Hyperdisk ボリュームにプロビジョニングされた IOPS またはスループットを変更しても、ディスクデータは削除または変更されません。

指定された上限内で Hyperdisk ボリュームを複数回変更しようとすると、Cannot update provisioned throughput due to being rate limited. のようなエラー メッセージが表示されます。

アクセスモード

Hyperdisk ML ボリュームを複数の VM 間で共有するには、ボリュームのアクセスモードを読み取り専用に設定する必要があります。アクセスモードを読み取り専用に設定すると、書き込みアクセスを再度有効にすることはできません。アクセスモードを読み取り専用に変更できるのは、Hyperdisk ML ボリュームの場合のみです。

ディスクのアクセスモードを設定するには、アクセスモードを設定するをご覧ください。

制限事項

  • Hyperdisk ML ボリュームの場合、アクセスモードを読み取り専用に設定することのみが可能です。読み取り専用に設定した後、アクセスモードを読み取り / 書き込みに設定し直すことはできません。
  • Hyperdisk Throughput、Hyperdisk Balanced、Hyperdisk Extreme のボリュームのアクセスモードは設定できません。
  • ディスクのアクセスモードを設定するには、すべての VM からディスクを切断する必要があります。

Hyperdisk ML ボリュームのアクセスモードを読み取り専用に設定する

Hyperdisk ML ボリュームのアクセスモードを読み取り / 書き込みモードから読み取り専用モードに設定できます。アクセスモードを読み取り専用に設定すると、読み取り / 書き込みアクセスを再度有効にすることはできません。

アクセスモードは、Google Cloud コンソール、Google Cloud CLI、または REST で設定できます。

コンソール

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] に移動

  2. プロジェクトのディスクのリストで、容量またはプロビジョニングされたパフォーマンスを変更する Hyperdisk ボリュームの名前をクリックします。

  3. ディスク詳細ページで、[編集] をクリックします。

  4. [アクセスモード] フィールドで、目的のアクセスモードを選択します。読み取り専用モードを有効にするには、[複数の VM の読み取り専用] を選択します。

  5. 変更を適用するには、[保存] をクリックします。

gcloud

disks update コマンドを実行し、--access-mode フラグを使用してアクセスモードを指定します。

gcloud compute disks update DISK_NAME  \
   --access-mode=DISK_ACCESS_MODE

次のように置き換えます。

  • DISK_NAME: 変更する Hyperdisk ボリュームの名前。
  • DISK_ACCESS_MODE: VM がディスク上のデータにアクセスする方法。サポートされている値は次のとおりです。
    • READ_ONLY_MANY: 複数の VM からの読み取り専用アクセス。
    • READ_WRITE_SINGLE: 1 台の VM からの読み取り / 書き込みアクセス。

REST

compute.disks.update メソッドに対して POST リクエストを作成します。リクエスト本文で、"accessMode" パラメータを使用してアクセスモードを設定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/update
{
   "accessMode": "DISK_ACCESS_MODE"
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • ZONE: Hyperdisk ボリュームが配置されているゾーン。
  • DISK_NAME: 変更する Hyperdisk ボリュームの名前。
  • DISK_ACCESS_MODE: VM がディスク上のデータにアクセスする方法。サポートされている値は次のとおりです。
    • READ_ONLY_MANY: 複数の VM からの読み取り専用アクセス。
    • READ_WRITE_SINGLE: 1 台の VM からの読み取り / 書き込みアクセス。

Hyperdisk ボリュームのサイズまたはプロビジョニングされたパフォーマンスを変更する

ボリューム サイズを増加し、Hyperdisk ボリュームにプロビジョニングされた IOPS またはスループットを変更できます。ただし、次の制限時間があります。

  • ディスクサイズを増やします。

    • Hyperdisk スループットの場合: 6 時間に 1 回
    • 他のすべての Hyperdisk タイプの場合: 4 時間に 1 回
  • プロビジョニングされた IOPS またはスループットを変更します。

    • Hyperdisk ML の場合: 6 時間に 1 回
    • 他のすべての Hyperdisk タイプの場合: 4 時間に 1 回

4 時間が経過する前にディスクを変更しようとすると、Cannot update provisioned throughput due to being rate limited. のようなエラー メッセージが表示されます。

Hyperdisk ボリュームのプロビジョニング サイズとパフォーマンスは、Google Cloud コンソール、gcloud CLI、または REST で変更できます。

コンソール

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] に移動

  2. プロジェクトのディスクのリストで、容量またはプロビジョニングされたパフォーマンスを変更する Hyperdisk ボリュームの名前をクリックします。

  3. ディスク詳細ページで、[編集] をクリックします。

    1. [サイズ] フィールドに、ディスクの新しいサイズを入力します。ディスクサイズはサポートされている値の範囲内にする必要があります。
    2. Hyperdisk Extreme、Hyperdisk Balanced、Hyperdisk Balanced High Availability の場合: [プロビジョニングされた IOPS] フィールドに、ボリュームの新しい IOPS 値を入力します。
    3. Hyperdisk Throughput、Hyperdisk ML、Hyperdisk Balanced、Hyperdisk Balanced の高可用性の場合: [プロビジョニングされたスループット] フィールドに、ボリュームの新しいスループット値を入力します。
  4. [保存] をクリックして、変更をディスクに適用します。

gcloud

disks update コマンドを使用して、--size フラグ、--provisioned-iops フラグ、または --provisioned-throughput フラグを指定します。

Hyperdisk Balanced High Availability ボリュームのサイズを変更するには、--region フラグを指定します。

gcloud compute disks update DISK_NAME  \
    --size=DISK_SIZE  \
    [--region=REGION]  \
    --provisioned-iops=IOPS_LIMIT  \
    --provisioned-throughput=THROUGHPUT_LIMIT

次のように置き換えます。

  • DISK_NAME: 変更する Hyperdisk ボリュームの名前。
  • DISK_SIZE: 省略可: ディスクの新しいサイズ。この値は整数で、その後に GB(ギビバイト)または TB(テビバイト)のサイズ単位が続きます。ディスクサイズはサポートされている値の範囲内にする必要があります。
  • REGION: 省略可。Hyperdisk Balanced High Availability ディスクが配置されているリージョン
  • IOPS_LIMIT: 省略可: Hyperdisk Extreme、Hyperdisk Balanced、Hyperdisk Balanced High Availability ボリュームの IOPS 構成。値はサポートされている値の範囲内にする必要があります。
  • THROUGHPUT_LIMIT: 省略可: Hyperdisk Throughput、Hyperdisk ML、Hyperdisk Balanced、Hyperdisk Balanced High Availability ボリュームのスループット構成。1 秒あたりの MiB で測定されたスループットを表す整数として指定します。値はサポートされている値の範囲内にする必要があります。

REST

compute.disks.update メソッドに対して PATCH リクエストを作成します。リクエストの本文で、パラメータ sizeGbprovisionedIops、または provisionedThroughput を指定します。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
{
   "sizeGb": "DISK_SIZE,
   "provisionedIops": "IOPS_LIMIT",
   "provisionedThroughput": "THROUGHPUT_LIMIT"
}

Hyperdisk Balanced High Availability ボリュームを変更するには、compute.regionDisks.update メソッドPATCH リクエストを作成します。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME
{
   "sizeGb": "DISK_SIZE,
   "provisionedIops": "IOPS_LIMIT",
   "provisionedThroughput": "THROUGHPUT_LIMIT"
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • ZONE: Hyperdisk ボリュームが配置されているゾーン。
  • REGION: Hyperdisk Balanced High Availability ディスクの場合、これはディスクが配置されているリージョンです。
  • DISK_NAME: 変更する Hyperdisk ボリュームの名前。
  • DISK_SIZE: 省略可: ディスクの新しいサイズ。この値は整数で、その後に GB(ギビバイト)または TB(テビバイト)のサイズ単位が続きます。ディスクサイズはサポートされている値の範囲内にする必要があります。
  • IOPS_LIMIT: 省略可: Hyperdisk Extreme、Hyperdisk Balanced、Hyperdisk Balanced High Availability ボリュームの IOPS 構成。値はサポートされている値の範囲内にする必要があります。
  • THROUGHPUT_LIMIT: 省略可: Hyperdisk Balanced ボリューム、Hyperdisk ML ボリューム、Hyperdisk Balanced ボリューム、Hyperdisk Balanced High Availability ボリュームのスループット構成。1 秒あたりの MiB で測定されたスループットを表す整数として指定します。値はサポートされている値の範囲内にする必要があります。

Hyperdisk ボリュームをバックアップする

ディスクのサイズを変更しても、ディスクのデータが削除や変更されることはありませんが、常にスナップショットを作成してディスクをバックアップした後、ファイル システムやパーティションに変更を加えることをおすすめします。

ファイル システムとパーティションのサイズの変更

Hyperdisk ボリュームのサイズを増やした後、ファイル システムとパーティションのサイズ変更が必要になることがあります。

  • ブートディスク: カスタム Linux イメージまたはカスタム Windows イメージを使用している場合は、ルート パーティションとファイル システムを手動でサイズ変更する必要があります。公開イメージを持つ VM の場合、ブートディスクのサイズを増やして VM を再起動すると、Compute Engine によってルート パーティションとファイル システムのサイズが自動的に変更されます。

  • 非ブートディスク: ディスクのサイズを増やした後、追加した容量を使用するためにディスク上のファイル システムを拡張する必要があります。

次の例では、ブートディスクのルート パーティションとファイル システムのサイズを手動で変更する方法と、パーティション分割テーブルがない非ブート データディスクのファイル システムのサイズを手動で変更する方法を示します。この例では、アタッチされたディスクがすでにフォーマットされ、マウントされていることを前提としています。

Linux VM

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 新しいディスクがアタッチされたインスタンスの横にある [SSH] ボタンをクリックします。インスタンスに対するターミナル接続がブラウザに開きます。

  3. df コマンドと lsblk コマンドを使用して、ファイル システムのサイズを一覧表示し、ディスクのデバイス名を確認します。

    $ sudo df -Th
    
    Filesystem      Type      Size  Used Avail Use% Mounted on
    udev            devtmpfs  3.9G     0  3.9G   0% /dev
    /dev/nvme0n1p1  ext4      9.7G  2.0G  7.2G  22% /
    /dev/nvme0n1p15 vfat      124M   12M  113M  10% /boot/efi
    /dev/nvme0n2    ext4       98G   24K   98G   1% /mnt/disks/data
    
    
    $ sudo lsblk
    
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    nvme0n1      259:0    0   20G  0 disk
    ├─nvme0n1p1  259:5    0  9.9G  0 part /
    ├─nvme0n1p14 259:6    0    3M  0 part
    └─nvme0n1p15 259:7    0  124M  0 part /boot/efi
    nvme0n2      259:4    0  100G  0 disk /mnt/disks/data
    
    

    この例には、次のディスクが含まれています。

    • ブートディスク: /dev/nvme0n1p1 パーティションが、20 GB にサイズ変更されたブートディスク上にあります。パーティション分割テーブルとファイル システムは、オペレーティング システムに 9.9 GB だけ提供しています。
    • 非ブート データディスク: /dev/nvme0n2 の非ブートデータディスクにパーティション分割テーブルはありませんが、このディスクのファイル システムはオペレーティング システムに 100 GB の容量を提供しています。このディスクのマウント ディレクトリは /mnt/disks/data です。

    df コマンド出力の Type 列の値をメモします。これは、ディスクが ext4 ファイル システムまたは xfs ファイル システムを使用しているかどうかを示します。

  4. パーティション タイプを確認します。

    sudo parted -l
    

    ディスクのサイズを変更した後にこのコマンドを初めて実行すると、次のようなメッセージが表示されることがあります。

    Warning: Not all of the space available to /dev/nvme0n1 appears to be
    used, you can fix the GPT to use all of the space (an extra 20971520
    blocks) or continue with the current setting?
    Fix/Ignore?
    

    Fix を入力すると、OS はディスクのパーティションを自動的に再構成し、追加の容量を OS で使用できるようにします。変更する追加ディスクがない場合、最後の手順に進みます。

  5. 自動修正オプションを使用しない場合、またはこのオプションを使用できない場合は、再パーティショニングするディスクの情報を確認します。

    sudo parted -l /dev/DEVICE_NAME
    

    Partition Table というフィールドを探します。値が msdos の場合、ディスクには MBR パーティション タイプがあります。つまり、このようなディスクの最大サイズは 2 TB になります。

  6. ブートディスクの場合は、ディスクのルート パーティションとファイル システムのサイズを変更します。この例では、VM イメージがルート パーティショニングとファイル システムの自動サイズ変更をサポートしていないことを前提としています。

    1. parted を使用してルート パーティションのサイズを変更します。たとえば、次のコマンドは、デバイスのパーティション 1 を可能な最大サイズに拡張します。

      1. デバイスで parted を開きます。

        sudo parted /dev/DEVICE_NAME
        
      2. プロンプトで、次のコマンドを入力します。

        (parted) resizepart
        
      3. Partition number? プロンプトで、次のように入力します。

        1
        
      4. Warning: Partition /dev/DEVICE_NAMEp1 is being used. Are you sure you want to continue? プロンプトで、次のように入力します。

        Yes
        
      5. End? プロンプトで、次のコマンドを入力します。

        100%
        
      6. (parted) プロンプトで、次のように入力します。

        (parted) quit
        
    2. parted -l を使用して新しいパーティション テーブルを表示します。

      sudo parted -l /dev/DEVICE_NAME
      
      Model: nvme_card-pd (nvme)
      Disk /dev/DEVICE_NAME: 21.5GB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start   End     Size    File system  Name  Flags
      14      1049kB  4194kB  3146kB                     bios_grub
      15      4194kB  134MB   130MB   fat16              boot, esp
      1       134MB   21.5GB  21.3GB  ext4
      
    3. ファイル システムを拡張します。

      • ext4 を使用している場合、resize2fs コマンドを実行します。

        sudo resize2fs /dev/DEVICE_NAME
        
      • xfs を使用している場合、xfs_growfs コマンドを実行します。

        sudo xfs_growfs -d /
        
      • btrfs を使用している場合は、btrfs コマンドを使用します。

        sudo btrfs filesystem resize max /
        
  7. ブートディスク以外のデータディスクの場合は、ディスク上のファイル システムのサイズを変更します。

    • ext4 を使用している場合は、resize2fs コマンドを使用してファイル システムを拡張します。

      sudo resize2fs /dev/DATA_DEVICE_NAME
      

      DATA_DEVICE_NAME は、データディスクのデバイス名に置き換えます。この例では、/dev/nvme0n2 がデバイス名です。

    • xfs を使用している場合は、xfs_growfs コマンドを使用してファイル システムを拡張します。

      sudo xfs_growfs MOUNT_DIR
      
    • btrfs を使用している場合は、btrfs コマンドを使用してファイル システムを拡張します。

      sudo btrfs filesystem resize max MOUNT_DIR
      

      MOUNT_DIR は、デバイスのマウント ポイントに置き換えます。マウント ポイントは、lsblk コマンドの出力の MOUNTPOINT 列に表示されます。

  8. df コマンドを使用して、ファイル システムが拡張されたことを確認します。次に例を示します。

    df -h /dev/DATA_DEVICE_NAME
    
    Filesystem       Size  Used  Avail    Use%     Mounted on
    /dev/DATA_DEVICE_NAME   118G  70M   118G     1%     MOUNT_DIR
    

Windows VM

Windows インスタンスでは、Windows の [ディスクの管理] ユーティリティを使用してパーティションのサイズを変更します。

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. サイズを変更したディスクが含まれるインスタンスの横にある [RDP] ボタンをクリックします。ブラウザ上でインスタンスに対する RDP 接続が開きます。

  3. Windows の [スタート] ボタンを右クリックし、[ディスクの管理] を選択してディスク管理ツールを開きます。

    Windows の [スタート] ボタンの右クリック メニューから、Windows ディスク管理ツールを選択します。

  4. Powershell を実行して、ディスク パーティション タイプを表示します。

    Get-Disk
    
    [Partition Style] 列の値が [MBR] の場合、ディスクのタイプは MBR パーティションです。つまり、このようなディスクの最大サイズは 2 TB になります

  5. ディスク管理ツールを更新して、ゾーン永続ディスクの追加容量を認識できるようにします。[ディスクの管理] ウィンドウの上部にある [アクション] をクリックして [最新の情報に更新] を選択します。

    [操作] メニューをクリックして [最新の情報に更新] を選択すると、ディスクの管理ツールでゾーン永続ディスク情報が更新されます。

  6. サイズを変更したディスクで、フォーマットされたパーティションを右クリックし、[ボリュームの拡張] を選択します。

    ディスクのフォーマットされたパーティションを右クリックし、[ボリュームの拡張] オプションを選択します。

  7. ボリュームの拡張ウィザードの指示に従って、既存のパーティションを活用して、追加のディスク領域を含めます。既存のパーティションが NTFS でフォーマットされている場合、パーティションの最大サイズはクラスタサイズの設定によって制限されます。

  8. ウィザードが完了してボリュームのフォーマットが終了したら、接続されたディスクのリストで Status 列を調べて、新しいディスクが Healthy ステータスとなっていることを確認します。

    Windows によって認識されたディスクのリストを表示し、インスタンスが [オンライン] で [正常] ステータスであることを確認します。

このプロセスの完了後に VM を再起動する必要はありません。これで、追加されたディスク容量をデータの保存に使用できます。

次のステップ