リージョン 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
-
Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。
gcloud init
- デフォルトのリージョンとゾーンを設定します。
Terraform
このページの Terraform サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Google Cloud CLI をインストールします。
-
gcloud CLI を初期化するには:
gcloud init
-
Google アカウントのローカル認証情報を作成します。
gcloud auth application-default login
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
-
制限事項
- リージョン Persistent Disk をアタッチできるのは、E2、N1、N2、N2D のマシンタイプを使用する 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 ボリュームを作成する
Google Cloud コンソールで、[ディスク] ページに移動します。
必要なプロジェクトを選択します。
[ディスクを作成] をクリックします。
[名前] でディスクの名前を指定します。
[ロケーション] で [リージョン] を選択します。
リージョンとゾーンを選択します。VM の作成時に同じリージョンを選択する必要があります。
同じリージョン内の [レプリカゾーン] を選択します。いずれかのゾーンの VM にディスクをアタッチする必要があるため、選択したゾーンをメモしておきます。
[ディスクソースのタイプ] を選択します。
ディスクタイプとサイズを選択します。デフォルトは 100 GiB のバランス Persistent Disk です。
[作成] をクリックしてディスクの作成を終了します。
リージョン Persistent Disk ボリュームを VM にアタッチする
ディスクを VM にアタッチするには、[VM インスタンス] ページに移動します。
[名前] 列で、VM の名前をクリックします。
[編集]
をクリックします。[+ 既存のディスクを接続] をクリックします。
VM に追加するリージョン Persistent Disk を選択します。
選択したディスクがすでに別のインスタンスに接続されているという警告が表示された場合は、[ディスクを強制接続する] ボックスを選択して、現在編集している VM にディスクを強制的にアタッチします。
リージョン Persistent Disk ボリュームを強制的にアタッチするユースケースについては、リージョン Persistent Disk のフェイルオーバーをご覧ください。
[保存] をクリックします。
[VM の編集] ページで、[保存] をクリックします。
gcloud
Google Cloud CLI を使用して、リージョン Persistent Disk ボリュームを作成してアタッチします。
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
)ZONE1
、ZONE2
: 2 つのディスク レプリカが配置されるリージョン内のゾーン(例:europe-west1-b,europe-west1-c
)
--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
リソースを使用します。
REST
リージョン 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
: プロジェクト IDREGION
: リージョン ディスクを配置するリージョン(例:europe-west1
)DISK_NAME
: 新しいディスクの名前ZONE1
、ZONE2
: 新しいディスクのレプリカが配置されるゾーン。DISK_SIZE
: 新しいディスクのサイズ(GiB)DISK_TYPE
: Persistent Disk の種類。デフォルト値はpd-standard
です。
ディスクをアタッチするには、
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
: プロジェクト IDZONE
: VM のロケーションVM_NAME
: 新しい Persistent Disk ボリュームを追加する VM の名前REGION
: リージョン ディスクが配置されるリージョンDISK_NAME
: 新しいディスクの名前
新しいディスクを作成して VM にアタッチしたら、ディスクをフォーマットしてマウントする必要があります。この操作を行うことで、オペレーティング システムが保存容量を使用できるようになります。
リージョン Persistent Disk を VM ブートディスクとして使用する
本番環境のワークロードをプロビジョニングする前に、事前にプロビジョニングされたステートフル ワークロードのブートディスクとしてリージョン Persistent Disk をアタッチします。リージョン ブートディスクは 2 つの VM に同時にアタッチできないため、リージョン Persistent Disk はホット スタンバイ用ではありません。
リージョン Persistent Disk は、スナップショットからのみ作成できます。イメージからは作成できません。
リージョン Persistent Disk を VM ブートディスクとして使用するには次のようにします。
- スナップショットからリージョン ディスクを作成します。
- 次の手順で、ディスクをブートディスクとしてアタッチします。
リージョン 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
: プロジェクト IDZONE
: 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
- VM を停止します。
gcloud compute instances stop STANDBY_VM_NAME --zone=ZONE
- 現在のブートディスクを VM から切断します。
gcloud compute instances detach-disk STANDBY_VM_NAME
--zone=ZONE --disk=CURRENT_BOOT_DEVICE_NAME - リージョン Persistent Disk を VM にアタッチします。
gcloud compute instances attach-disk STANDBY_VM_NAME
--zone=ZONE
--disk=REPD_DISK_NAME
--disk-scope=regional --force-attach 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
VM を停止します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/stop
現在のブートディスクを VM から切断します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/detachDisk?deviceName=CURRENT_BOOT_DEVICE_NAME
リージョン 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 }
VM を再起動します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/STANDBY_VM_NAME/start
上記のコマンドの変数を次のように置き換えます。
PROJECT_ID
: プロジェクト IDSTANDBY_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 のサイズを変更する
Google Cloud コンソールで、[ディスク] ページに移動します。
サイズを変更するディスクを選択します。
ページ上部の [編集] をクリックします。
ディスクのサイズを GiB 単位で入力します。
[保存] をクリックして、ディスクのサイズ変更を完了します。
ディスクのリストに新しいディスクサイズが表示されます。
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
パラメータを使用します。
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
: プロジェクト IDREGION
: ディスクが配置されるリージョンDISK_NAME
: サイズを変更するディスクの名前DISK_SIZE
: ディスクの新しいサイズ(GiB)
ディスクをサイズ変更したら、オペレーティング システムが追加の容量にアクセスできるように、ファイル システムをサイズ変更する必要があります。
複数の VM 間で読み取り専用 Persistent Disk を共有する
非ブート Persistent Disk を複数の VM に読み取り専用モードでアタッチし、複数の VM 間で静的データを共有できます。1 つの Persistent Disk の静的データを複数の VM で共有することは、個々の VM 固有のディスクにデータをレプリケートするよりもコストがかかりません。
複数の VM 間で動的保存容量を共有する必要がある場合は、次のいずれかのオプションを使用できます。
- VM を Cloud Storage に接続する。
- VM を Filestore に接続する。
- Compute Engine 上にネットワーク ファイル サーバーを作成する。
複数の VM で共有する必要があるデータを格納する Persistent Disk が存在する場合は、読み取り / 書き込み VM との接続を切断し、1 つ以上の VM に読み取り専用モードでアタッチします。
コンソール
複数の VM 間で読み取り専用 Persistent Disk を共有する
Google Cloud コンソールで [VM インスタンス] ページに移動します。
ディスクをアタッチする VM の名前をクリックします。[VM インスタンスの詳細] ページが開きます。
ページ上部にある [編集] をクリックします。
[追加ディスク] セクションで、[既存のディスクを接続] をクリックします。
リストからリージョン Persistent Disk を選択します。
[モード] セクションで、[読み取り専用] を選択します。
[完了] をクリックします。
ページの下部にある、[保存] をクリックして、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
: プロジェクト IDZONE
: VM のゾーンVM_NAME
: Persistent Disk をアタッチする対象 VM の名前REGION
: ディスクが配置されるリージョンDISK_NAME
: アタッチするディスクの名前
ディスクをアタッチした後、このディスクを読み取り専用モードでアタッチする各 VM に接続し、ディスクをマウントします。
ゾーン Persistent Disk のリージョン Persistent Disk への移行
既存のゾーン Persistent Disk をリージョン Persistent Disk に変換するには、既存のゾーンディスクのクローンを作成して新しいリージョン ディスクを作成します。詳細については、ゾーンディスクからリージョン ディスクのクローンを作成するをご覧ください。
次のステップ
- Persistent Disk の料金体系を確認する。
- Persistent Disk のスナップショットを作成する。
- インスタンス グループまたは VM インスタンスのグループについて確認する。
- Google Cloud で復元性の高いスケーラブルなウェブ アプリケーションを構築する。
- Google Cloud 障害復旧クックブックを参照する。
- リージョン Persistent Disk ボリュームのレプリカ状態をモニタリングする方法を確認する。
- リージョン Persistent Disk のレプリケーション状態を判断する方法を確認する。