リージョン Persistent Disk ボリュームを作成して管理する


リージョン Persistent Disk は、Compute Engine に高可用性(HA)サービスを実装できるストレージ オプションです。リージョン Persistent Disk は、同じリージョン内の 2 つのゾーン間でデータを同期的に複製し、1 つのゾーンの障害に対してディスクデータの HA を確保します。リージョン Persistent Disk は、次のいずれかの方法で仮想マシン(VM)で使用できます。

このドキュメントでは、リージョン Persistent Disk に対して次のタスクを行う方法について説明します。

  • リージョン Persistent Disk ボリュームを作成して管理する
  • リージョン Persistent Disk ボリュームを VM に追加する

始める前に

  • Persistent Disk の種類の違いを確認します。
  • リージョン Persistent Disk の基本を確認します。
  • リージョン Persistent Disk のフェイルオーバーについて確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    Terraform

    このページの Terraform サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、 ローカル開発環境の認証の設定 をご覧ください。

    REST

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

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

制限事項

  • リージョン Persistent Disk をアタッチできるのは、E2N1N2N2D のマシンタイプを使用する VM のみです。
  • リージョン Persistent Disk はイメージからは作成できません。
  • 読み取り専用モードを使用すると、最大 10 個の VM インスタンスにリージョン バランス永続ディスクをアタッチできます。
  • リージョン標準永続ディスクの最小サイズは 200 GiB です。
  • リージョン Persistent Disk ボリュームのサイズを増やすことはできますが、縮小はできません。
  • リージョン Persistent Disk ボリュームのパフォーマンス特性は、ゾーン Persistent Disk ボリュームとは異なります。詳細については、ブロック ストレージのパフォーマンスをご覧ください。
  • ゾーンディスクのクローンを作成してリージョン Persistent Disk を作成する場合、2 つのゾーンレプリカは作成時には完全には同期しません。作成後、リージョン ディスクのクローンは平均で 3 分以内に使用できるようになります。ただし、ディスクが完全に複製された状態になり、目標復旧時点(RPO)がゼロに近くなるまで、数十分かかる場合があります。詳細については、リージョン Persistent Disk が完全に複製されたかどうかを確認する方法をご覧ください。

リージョン Persistent Disk を使用して新しい VM を作成する

VM を作成する際は、必要に応じて、リージョン Persistent Disk ボリュームを追加のディスクとして含めることができます。

リージョン Persistent Disk ボリュームを作成して VM の作成時に VM にアタッチする方法については、追加の非ブートディスクを含む VM インスタンスを作成するまたは新しいインスタンス テンプレートを作成をご覧ください。

リージョン Persistent Disk を VM に追加する

リージョン Persistent Disk を作成して VM にアタッチします。VM は、ディスクと同じリージョンに存在する必要があります。

Google Cloud コンソールでディスクを作成する場合、デフォルトのディスクタイプpd-balanced です。gcloud CLI または REST を使用してディスクを作成する場合、デフォルトのディスクタイプは pd-standard です。

コンソール

先にリージョン Persistent Disk ボリュームを作成してから、既存の VM インスタンスにアタッチする必要があります。リージョン Persistent Disk はフェイルオーバー中に強制的にアタッチできないため、ブートディスクとしては作成できません。

リージョン Persistent Disk ボリュームを作成する

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

    [ディスク] に移動

  2. 必要なプロジェクトを選択します。

  3. [ディスクを作成] をクリックします。

  4. [名前] でディスクの名前を指定します。

  5. [ロケーション] で [リージョン] を選択します。

  6. リージョンゾーンを選択します。VM の作成時に同じリージョンを選択する必要があります。

  7. 同じリージョン内の [レプリカゾーン] を選択します。いずれかのゾーンの VM にディスクをアタッチする必要があるため、選択したゾーンをメモしておきます。

  8. [ディスクソースのタイプ] を選択します。

  9. ディスクタイプサイズを選択します。デフォルトは 100 GiB のバランス Persistent Disk です。

  10. [作成] をクリックしてディスクの作成を終了します。

リージョン Persistent Disk ボリュームを VM にアタッチする

  1. ディスクを VM にアタッチするには、[VM インスタンス] ページに移動します。

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

  2. [名前] 列で、VM の名前をクリックします。

  3. [編集] をクリックします。

  4. [+ 既存のディスクを接続] をクリックします。

  5. VM に追加するリージョン Persistent Disk を選択します。

  6. 選択したディスクがすでに別のインスタンスに接続されているという警告が表示された場合は、[ディスクを強制接続する] ボックスを選択して、現在編集している VM にディスクを強制的にアタッチします。

    リージョン Persistent Disk ボリュームを強制的にアタッチするユースケースについては、リージョン Persistent Disk のフェイルオーバーをご覧ください。

  7. [保存] をクリックします。

  8. [VM の編集] ページで、[保存] をクリックします。

gcloud

Google Cloud CLI を使用して、リージョン Persistent Disk ボリュームを作成してアタッチします。

  1. compute disks create コマンドを使用して、リージョン Persistent Disk ボリュームを作成します。スループットや IOPS を上げるためにリージョン SSD Persistent Disk が必要な場合は、--type フラグで pd-ssd を指定します。

    gcloud compute disks create DISK_NAME \
        --size=DISK_SIZE \
        --type=DISK_TYPE \
        --region=REGION \
        --replica-zones=ZONE1,ZONE2
    

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

    • DISK_NAME: 新しいディスクの名前
    • DISK_SIZE: 新しいディスクのサイズ(GiB)
    • DISK_TYPE: Persistent Disk の種類。デフォルト値は pd-standard です。
    • REGION: リージョン ディスクを配置するリージョン(例: europe-west1
    • ZONE1ZONE2: 2 つのディスク レプリカが配置されるリージョン内のゾーン(例: europe-west1-b,europe-west1-c
  2. --disk-scope フラグを regional に設定して compute instances attach-disk コマンドを使用し、ディスクを実行中または停止中の VM にアタッチします。

    gcloud compute instances attach-disk VM_NAME \
        --disk=DISK_NAME \
        --disk-scope=regional
    

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

    • VM_NAME: 新しいリージョン Persistent Disk ボリュームを追加する VM の名前
    • DISK_NAME: VM にアタッチする新しいディスクの名前

Terraform

リージョン Persistent Disk ボリュームを作成するには、google_compute_region_disk リソースを使用します。

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

REST

  1. リージョン Persistent Disk ボリュームを作成するには、compute.regionDisks.insert メソッドPOST リクエストを発行します。空のディスクを作成するため、イメージやスナップショットのソースは指定しないでください。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks
    {
     "name": "DISK_NAME",
     "region": "projects/PROJECT_ID/regions/REGION",
     "replicaZones": [
       "projects/PROJECT_ID/zones/ZONE1",
       "projects/PROJECT_ID/zones/ZONE2"
     ],
     "sizeGb": "DISK_SIZE",
     "type": "projects/PROJECT_ID/regions/REGION/diskTypes/DISK_TYPE"
    }
    

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

    • PROJECT_ID: プロジェクト ID
    • REGION: リージョン ディスクを配置するリージョン(例: europe-west1
    • DISK_NAME: 新しいディスクの名前
    • ZONE1ZONE2: 新しいディスクのレプリカが配置されるゾーン。
    • DISK_SIZE: 新しいディスクのサイズ(GiB)
    • DISK_TYPE: Persistent Disk の種類。デフォルト値は pd-standard です。
  2. ディスクをアタッチするには、compute.instances.attachDisk メソッドPOST リクエストを発行し、作成した Persistent Disk ボリュームへの URL を含めます。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk
    {
     "source": "/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
    }
    

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

    • PROJECT_ID: プロジェクト ID
    • ZONE: VM のロケーション
    • VM_NAME: 新しい Persistent Disk ボリュームを追加する VM の名前
    • REGION: リージョン ディスクが配置されるリージョン
    • DISK_NAME: 新しいディスクの名前

新しいディスクを作成して VM にアタッチしたら、ディスクをフォーマットしてマウントする必要があります。この操作を行うことで、オペレーティング システムが保存容量を使用できるようになります。

リージョン Persistent Disk を VM ブートディスクとして使用する

本番環境のワークロードをプロビジョニングする前に、事前にプロビジョニングされたステートフル ワークロードのブートディスクとしてリージョン Persistent Disk をアタッチします。リージョン ブートディスクは 2 つの VM に同時にアタッチできないため、リージョン Persistent Disk はホット スタンバイ用ではありません。

リージョン Persistent Disk は、スナップショットからのみ作成できます。イメージからは作成できません。

リージョン Persistent Disk を VM ブートディスクとして使用するには次のようにします。

  1. スナップショットからリージョン ディスクを作成します。
  2. 次の手順で、ディスクをブートディスクとしてアタッチします。

リージョン Persistent Disk ブートディスクを使用して新しい VM を作成する

高可用性 VM を設定する場合は、リージョン Persistent Disk ブートディスクを使用してプライマリ VM を作成できます。これにより、ゾーンが停止した場合に VM を再起動できます。

ブートデバイスがリージョン Persistent Disk である高可用性設定では、スタンバイ インスタンスの事前作成と事前実行は行わないことをおすすめします。代わりに、フェイルオーバー段階でスタンバイ インスタンスを作成するときに、forceAttach オプションを使用して既存のリージョン ディスクをアタッチします。

リージョン Persistent Disk であるブートディスクを使用して VM を作成するには次のようにします。

gcloud

gcloud compute instances create PRIMARY_INSTANCE_NAME  \
 --zone=ZONE  \
 --create-disk=^:^name=REPD_DISK_NAME:scope=regional:boot=true:source-snapshot=SNAPSHOT_NAME:replica-zones=ZONE,REMOTE_ZONE

disk パラメータを指定する際、文字 ^:^ はパラメータ間の区切り文字がコロン(:)であることを示します。これにより、replica-zones パラメータを指定する際にカンマ(,)を使用できます。

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

  • PRIMARY_INSTANCE_NAME は、VM の名前に置き換えます
  • ZONE は、VM を作成するゾーンの名前に置き換えます
  • REPD_DISK_NAME は、リージョン Persistent Disk の名前に置き換えます
  • SNAPSHOT_NAME は、ブートディスクに作成したスナップショットの名前に置き換えます
  • REMOTE_ZONE は、リージョン Persistent Disk の代替ゾーンに置き換えます

REST

VM の作成でリージョン ディスクを使用して新しい VM を作成するには、boot: 'true'replicaZones を指定します。次に例を示します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
 "name": "VM_NAME",
 "disks": [{
    "boot": true,
    "initializeParams": {
      "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME",
      "replicaZones": [
           "projects/PROJECT_ID/zones/ZONE",
           "projects/PROJECT_ID/zones/REMOTE_ZONE"]
   }
  }],
}

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

  • PROJECT_ID: プロジェクト ID
  • ZONE: VM を作成するゾーンの名前
  • VM_NAME: VM の名前
  • BOOT_SNAPSHOT_NAME: ブートディスク スナップショットの名前
  • REMOTE_ZONE: リージョン Persistent Disk のリモートゾーン

フェイルオーバー ゾーンに 2 つ目の VM を作成して、ブートディスクにリージョン Persistent Disk を使用するプライマリ VM を復元するには次のようにします。

gcloud

gcloud compute instances create STANDBY_VM_NAME  \
 --zone=ZONE  \
 --disk=boot=yes,name=DISK_NAME,scope=regional,force-attach=true

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

  • STANDBY_VM_NAME は、スタンバイ VM の名前に置き換えます
  • ZONE は、リージョン Persistent Disk の複製先のゾーンの名前に置き換えます
  • DISK_NAME は、アタッチするリージョン Persistent Disk の名前に置き換えます

省略可: 停止や障害によって、最初にアタッチした VM からリージョン Persistent Disk ブートディスクを正常に切断できない場合は、force-attach=true を含めます。

リージョン Persistent Disk をブートディスクとして既存の VM にアタッチする

リージョン Persistent Disk をブートディスクとして VM にアタッチすることで、バックアップ ゾーンで実行中のセカンダリ VM にフェイルオーバーするには、次のようにします。以下の手順では、標準スナップショットからリージョン Persistent Disk をすでに作成していることを前提としています。

gcloud

  1. VM を停止します。
    gcloud compute instances stop STANDBY_VM_NAME  --zone=ZONE
    
  2. 現在のブートディスクを VM から切断します。
    gcloud compute instances detach-disk STANDBY_VM_NAME  
    --zone=ZONE --disk=CURRENT_BOOT_DEVICE_NAME
  3. リージョン Persistent Disk を VM にアタッチします。
    gcloud compute instances attach-disk STANDBY_VM_NAME  
    --zone=ZONE
    --disk=REPD_DISK_NAME
    --disk-scope=regional --force-attach
  4. VM を再起動します。

    gcloud compute instances start STANDBY_VM_NAME
    

上記のコマンドの変数を次のように置き換えます。

  • STANDBY_VM_NAME: リージョン Persistent Disk をアタッチする VM の名前
  • ZONE: VM を配置するゾーン
  • CURRENT_BOOT_DEVICE_NAME: VM で使用されているブートディスクの名前。通常、これは VM の名前と同じです。
  • REPD_DISK_NAME: ブートディスクとして VM にアタッチするリージョン Persistent Disk の名前

省略可: 停止や障害によって、最初にアタッチした VM からリージョン Persistent Disk ブートディスクを正常に切断できない場合は、フラグ --force-attach を含めます。

REST

  1. VM を停止します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/stop
    
  2. 現在のブートディスクを VM から切断します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/detachDisk?deviceName=CURRENT_BOOT_DEVICE_NAME
    
  3. リージョン Persistent Disk を VM にアタッチします。

    compute.instances.attachDisk メソッドに対する POST リクエストを作成し、リージョン Persistent Disk ボリュームへの URL を指定します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/attachDisk
    {
    "source": "compute/v1/projects/PROJECT_ID/regions/REGION/disks/REPD_DISK_NAME",
    "boot": true
    }
  4. VM を再起動します。

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

上記のコマンドの変数を次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • STANDBY_VM_NAME: リージョン Persistent Disk をアタッチする VM の名前
  • ZONE: VM を配置するゾーン
  • CURRENT_BOOT_DEVICE_NAME: VM で使用されているブートディスクの名前。通常、これは VM の名前と同じです。
  • REGION: リージョン Persistent Disk を配置するリージョン
  • REPD_DISK_NAME: ブートディスクとして VM にアタッチするリージョン Persistent Disk の名前

省略可: 停止または障害によって、最初にアタッチされた VM からリージョン Persistent Disk ブートディスクを正常に切断できない場合は、リクエストの本文に "forceAttach": true を含めます。

リージョン Persistent Disk ボリュームの一覧と説明

構成したすべてのリージョン Persistent Disk ボリュームの一覧と、次のようなプロパティに関する情報を表示できます。次に例を示します。

  • ディスク ID
  • ディスク名
  • サイズ
  • ディスクタイプ
  • リージョン
  • ゾーンレプリカ

リージョン Persistent Disk ボリュームの詳細情報を表示するには、REST または gcloud CLI を使用します。

  • 特定のリージョンとプロジェクトにあるすべてのリージョン Persistent Disk ボリュームの詳細を表示するには、compute.regionDisks.list メソッドを使用します。
  • 特定のリージョン Persistent Disk ボリュームの詳細を表示するには、--region フラグを指定して gcloud compute disks describe コマンドを実行し、ディスクの名前とそのリージョンを指定します。

リージョン Persistent Disk のサイズを変更する

リージョン Persistent Disk を持つ VM で追加の保存容量、IOPS、スループットが必要な場合は、ディスクのサイズを変更できます。データを固有のボリュームに分離する必要がある場合は、VM 用に複数のセカンダリ ディスクを作成します。実行中の VM にアタッチしているかどうかにかかわらず、いつでもディスクをサイズ変更できます。

リージョン Persistent Disk をサイズ変更するためのコマンドは、標準 Persistent Disk のサイズ変更のコマンドと同じですが、リージョン用の追加のフラグがあります。

ディスクサイズの拡張のみを行うことができ、縮小することはできません。ディスクサイズを縮小するには、小さいサイズの新しいディスクを作成する必要があります。サイズの大きい元のディスクを削除するまで、両方のディスクに対して課金されます。

コンソール

リージョン Persistent Disk のサイズを変更する

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

    [ディスク] に移動

  2. サイズを変更するディスクを選択します。

  3. ページ上部の [編集] をクリックします。

  4. ディスクのサイズを GiB 単位で入力します。

  5. [保存] をクリックして、ディスクのサイズ変更を完了します。

ディスクのリストに新しいディスクサイズが表示されます。

gcloud

gcloud CLI で、compute disks resize コマンドを使用してリージョン Persistent Disk のサイズを変更します。

gcloud compute disks resize DISK_NAME \
    --region=REGION  \
    --size=DISK_SIZE

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

  • DISK_NAME: サイズ変更するディスクの名前
  • REGION: ディスクが配置されるリージョン
  • DISK_SIZE: ディスクの新しいサイズ(GiB)

Terraform

リージョン Persistent Disk のサイズを変更するには、google_compute_region_disk リソースsize パラメータを使用します。

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

size パラメータを image パラメータまたは snapshot パラメータとともに指定する場合、size の値はイメージまたはスナップショットのサイズ以上にする必要があります。

image パラメータと snapshot パラメータを省略した場合、size パラメータは既存のディスクサイズよりも小さく設定できます。この操作を行うと、Terraform によってディスクが破棄され、新しい空の Persistent Disk が作成されます。再作成の際、Terraform はラベルやスナップショット スケジュールなど、Terraform 構成に含まれていない他のデータをコピーしません。Terraform によるディスクの破棄と再作成を防ぐには、Terraform 構成に lifecycle.prevent_destroy = true 設定を追加します。

REST

リージョン Persistent Disk のサイズを変更するには、compute.regionDisks.resize メソッドに対する POST リクエストを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/resize

{
  "sizeGb": "DISK_SIZE"
}

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

  • PROJECT_ID: プロジェクト ID
  • REGION: ディスクが配置されるリージョン
  • DISK_NAME: サイズを変更するディスクの名前
  • DISK_SIZE: ディスクの新しいサイズ(GiB)

ディスクをサイズ変更したら、オペレーティング システムが追加の容量にアクセスできるように、ファイル システムをサイズ変更する必要があります。

複数の VM 間で読み取り専用 Persistent Disk を共有する

非ブート Persistent Disk を複数の VM に読み取り専用モードでアタッチし、複数の VM 間で静的データを共有できます。1 つの Persistent Disk の静的データを複数の VM で共有することは、個々の VM 固有のディスクにデータをレプリケートするよりもコストがかかりません。

複数の VM 間で動的保存容量を共有する必要がある場合は、次のいずれかのオプションを使用できます。

複数の VM で共有する必要があるデータを格納する Persistent Disk が存在する場合は、読み取り / 書き込み VM との接続を切断し、1 つ以上の VM に読み取り専用モードでアタッチします。

コンソール

複数の VM 間で読み取り専用 Persistent Disk を共有する

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

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

  2. ディスクをアタッチする VM の名前をクリックします。[VM インスタンスの詳細] ページが開きます。

  3. ページ上部にある [編集] をクリックします。

  4. [追加ディスク] セクションで、[既存のディスクを接続] をクリックします。

  5. リストからリージョン Persistent Disk を選択します。

  6. [モード] セクションで、[読み取り専用] を選択します。

  7. [完了] をクリックします。

  8. ページの下部にある、[保存] をクリックして、VM に変更を適用します。

gcloud

gcloud CLI で複数の VM 間で読み取り専用 Persistent Disk を共有するには、compute instances attach-disk コマンド--disk-scope フラグを regional に、--mode フラグを ro に設定します。

gcloud beta compute instances attach-disk /VM_NAME \
    --disk=DISK_NAME \
    --disk-scope=regional \
    --mode=ro

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

  • VM_NAME: Persistent Disk をアタッチする対象 VM の名前
  • DISK_NAME: アタッチするディスクの名前

REST

複数の VM 間で読み取り専用 Persistent Disk を共有するには、compute.instances.attachDisk メソッドに対する POST リクエストを作成します。リクエストの本文で、mode パラメータに READ_ONLY を指定します。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk

{
  "source": "regions/REGION/disks/DISK_NAME",
  "mode": "READ_ONLY"
}

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

  • PROJECT_ID: プロジェクト ID
  • ZONE: VM のゾーン
  • VM_NAME: Persistent Disk をアタッチする対象 VM の名前
  • REGION: ディスクが配置されるリージョン
  • DISK_NAME: アタッチするディスクの名前

ディスクをアタッチした後、このディスクを読み取り専用モードでアタッチする各 VM に接続し、ディスクをマウントします。

ゾーン Persistent Disk のリージョン Persistent Disk への移行

既存のゾーン Persistent Disk をリージョン Persistent Disk に変換するには、既存のゾーンディスクのクローンを作成して新しいリージョン ディスクを作成します。詳細については、ゾーンディスクからリージョン ディスクのクローンを作成するをご覧ください。

次のステップ