リージョン永続ディスクの追加やサイズ変更

このページでは、リージョン永続ディスク ストレージ リソースを追加および管理する方法について説明します。リージョン永続ディスクをサイズ変更する場合、大きくすることだけが可能です。永続ディスクのサイズを小さくすることはできません。リージョン永続ディスクは、ブートデバイスとしては使用できません。フェイルオーバーの発生時に、別の VM インスタンスへの強制接続は行われません。

リージョン永続ディスクはゾーンの永続ディスクと同様の品質ですが、いくつかの点で異なります。

  • 読み取り / 書き込み(RW)モードでマウントする必要があります。読み取り専用(RO)モードはサポートされていません。
  • ブートディスクとしては使用できません。
  • ゾーン障害時に、複製されたディスクを別の VM インスタンスに強制接続する機能がサポートされています。
  • リージョン永続ディスクは、イメージではなくスナップショットから作成できます。
  • パフォーマンスの違いがあります。これについては、ストレージ オプションのドキュメントをご覧ください。

リージョン永続ディスクでは、1 つのリージョン内の 2 つのゾーンの間でデータの同期レプリケーションが行われます。万一ゾーンに障害が発生した場合、トラフィックを別の VM インスタンスに向けることができ、複製されたディスクを同じゾーンまたはセカンダリ ゾーンの別の VM インスタンスに強制接続できます。強制接続時間は 1 分未満で発生するように設計されています。

リージョン永続ディスクは、堅牢なシステムを設計するとき、および高可用性を必要とする MySQL や Postgres のようなステートフルなデータベース サービスに対して考慮する必要がある適切なオプションです。

リソースとそのパフォーマンスを比較するには、Compute Engine のストレージ オプションをご覧ください。

始める前に

制限事項

リージョン永続ディスクには次の制限があります。

  • 読み取り / 書き込み(RW)モードでマウントする必要があります。読み取り専用(RO)モードはサポートされていません。
  • ブートディスクとしては使用できません。
  • リージョン永続ディスクは、イメージではなくスナップショットから作成できます。

インスタンスへのリージョン永続ディスクの追加

リージョン標準永続ディスクまたはリージョン SSD 永続ディスクを作成して、インスタンスに接続します。インスタンスがない場合は、まず新しいインスタンスを作成して起動する必要があります。インスタンスは、ディスクと同じリージョンに作成する必要があります。

Console

まずリージョン永続ディスクを作成してから、既存のインスタンスに接続する必要があります。リージョン永続ディスクはフェイルオーバー時に強制接続できないため、ブートディスクとして作成することはきません。

リージョン永続ディスクを作成します。

  1. [ディスク] ページに移動します。

    [ディスク] ページに移動

  2. プロジェクトを選択します。
  3. [ディスクを作成] をクリックします。
  4. [名前] でディスクの名前を指定します。
  5. [タイプ] でディスクのタイプを選択します。
  6. [Replicate this disk within region] チェックボックスをオンにします。
  7. リージョンを選択します。

    インスタンスの作成時に同じリージョンを選択する必要があるため、リージョンをメモしておきます。

  8. そのリージョン内の 2 つのゾーンを選択し、[OK] をクリックします。

    ゾーンは 2 つ選択する必要があります。いずれかのゾーンのインスタンスにディスクを接続する必要があるため、選択したゾーンをメモしておきます。

  9. [ソースタイプ] でソースタイプを選択します。
  10. [暗号化] を選択します。
  11. [作成] をクリックしてディスクの作成を終了します。

リージョン永続ディスクを作成したら、それをインスタンスに接続します。

既存のインスタンスにディスクを接続するとき、ディスクがすでに別のインスタンスに接続されている場合はエラー メッセージが表示されることがあります。場合によっては、[追加ディスク] プルダウン メニューの [強制接続] チェックボックスをオンにして、ディスクをインスタンスに強制接続する必要があります。

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

gcloud

gcloud ツールを使用して、リージョン永続ディスクを作成して接続します。

  1. create コマンドを使用して新しいリージョン永続ディスクを作成します。スループットや IOPS を上げるためにリージョン SSD 永続ディスクが必要な場合は、--type フラグを含めて pd-ssd を指定します。

    gcloud beta compute disks create [DISK_NAME] --size [DISK_SIZE] --type [DISK_TYPE] --region [REGION] --replica-zones [ZONE1,ZONE2]
    

    ここで:

    • [DISK_NAME] は新しいディスクの名前です。
    • [DISK_SIZE] は新しいディスクのサイズ(GB)です。
    • [DISK_TYPE] は永続ディスクのタイプです。pd-standard または pd-ssd を指定します。
    • [REGION] は、リージョン ディスクが配置されるリージョンです。例: europe-west1
    • [ZONE1,ZONE2] は、2 つのディスクが配置されるリージョン内のゾーンです。
      ゾーンは 2 つ選択する必要があります。例: europe-west1-a,europe-west1-b
  2. ディスクを作成したら、実行中または停止しているインスタンスに接続します。gcloud beta compute instances attach-disk コマンドを使用し、--disk-scope regional フラグを指定してリージョン ディスクであることを示します。

    gcloud beta compute instances attach-disk [INSTANCE_NAME] --disk [DISK_NAME] --disk-scope regional
    

    ここで:

    • [INSTANCE_NAME] は、新しいリージョン永続ディスクを追加するインスタンスの名前です。
    • [DISK_NAME] は、インスタンスに接続する新しいディスクの名前です。
    • --disk-scoperegional に設定します。

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

API

  1. API で、POST リクエストを作成してリージョン永続ディスクを作成します。compute.regionDisks.insert リクエストの本文で、ディスクの namereplicaZones のプロパティを指定して新しいディスクを初期化します。空のディスクを作成するには、イメージやスナップショットのソースを指定しないでください。

    POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]
    
    {
     "name": "[DISK_NAME]",
     "replicaZones": "projects/[PROJECT_ID]/zones/[ZONE1]",
                     "projects/[PROJECT_ID]/zones/[ZONE2]"
    }
    

    ここで:

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE1] は、新しいディスクが配置されるゾーンです。ディスクをインスタンスに接続するゾーンと同じです。
    • [ZONE2] は、レプリカ ディスクのロケーションです。
    • [DISK_NAME] は新しいディスクの名前です。
  2. API で、compute.instances.attachDisk メソッドに対する POST リクエストを作成し、先ほど作成した永続ディスクへの URL を含めます。

    POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk
    
    {
     "source": "/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]"
    }
    

    ここで:

    • [PROJECT_ID] はプロジェクト ID です。
    • [ZONE] は、インスタンスと新しいディスクが配置されるゾーンです。
    • [INSTANCE_NAME] は、新しい永続ディスクを追加するインスタンスの名前です。
    • [DISK_NAME] は新しいディスクの名前です。

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

ゾーン障害時のリージョン永続ディスクへのアクセス

万一ゾーンが停止した場合、force-attach コマンドによって、リージョン永続ディスクを別のゾーンの VM インスタンスにフェイルオーバーできます。

書き込みは、両方のレプリカで永続的に保持されている場合にのみ、VM に確認応答されます。レプリカの 1 つが利用できない場合、Compute Engine は正常なレプリカにのみ書き込みます。異常なレプリカがバックアップされて Compute Engine によって判別されると、正常なレプリカと透過的に同期され、完全同期モードのオペレーションが再開されます。このオペレーションは VM に対して透過的です。リージョン永続ディスク上にデータの消失や回復の形跡はありません。

まれに両方のレプリカが同時に使用できなくなる場合や、別のレプリカの同期中に正常なレプリカが使用できなくなる場合は、対応するディスクが使用不可となります。

強制接続ステップの実行後に、インスタンスを手動でシャットダウンするオプションもあります。

ゾーン内障害

リージョン永続ディスクを同じゾーン内の VM インスタンスに強制接続することもできます。このゾーン内フェイルオーバー オプションは、VM の構成ミス、不完全な OS アップグレード、その他の障害モードによって引き起こされた停止の処理に使用できます。

Console

スタンバイの VM インスタンスを作成し、ディスクをインスタンスに強制接続します。

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. プロジェクトを選択します。
  3. [名前] でインスタンスの名前を指定します。
  4. リージョン永続ディスクが配置されているリージョンを選択します。
  5. ディスクが接続されていた元の VM インスタンスの代替ゾーンを選択します。

    ディスクは [ディスク] ページに表示されます。

  6. [管理、ディスク、ネットワーク、SSH 認証鍵] をクリックします。
  7. [ディスク] をクリックします。
  8. [追加ディスク] で [+ 既存のディスクを接続] をクリックします。
  9. プルダウン メニューからリージョン永続ディスクを選択します。
  10. チェックボックスをオンにして、ディスクを強制接続します。
  11. [完了] をクリックします。
  12. [作成] をクリックして、このインスタンスの作成を完了します。

    新しい VM インスタンスが [VM インスタンス] ページに表示されます。
    ゾーンが停止から回復したら、同じ手順を実施してディスクを元のインスタンスに強制接続します。

gcloud

gcloud ツールで attach-disk コマンドを使用して、レプリカ ディスクを VM インスタンスに接続します。--force-attach フラグを含め、True に設定します。

gcloud beta compute instances attach-disk [INSTANCE_NAME]
    --disk [DISK_NAME] --disk-scope [REGIONAL] --force-attach [TRUE]

ここで:

  • [INSTANCE_NAME] はリージョン内の新しい VM インスタンスの名前です。
  • [DISK_NAME] はディスクの名前です。
  • --disk-scoperegional に設定します。

ディスクを強制接続したら、必要に応じてファイル システムをディスクにマウントします。インスタンスは、強制接続されたディスクを使用して読み取りおよび書き込みオペレーションを続行できます。

API

compute.instances.attachDisk メソッドに対する POST リクエストを作成し、作成した永続ディスクへの URL を含めます。forceAttach=true クエリ パラメータは、プライマリ インスタンスにまだディスクがある場合でもディスクを新しい VM インスタンスに接続するために必要です。

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/attachDisk?forceAttach=true

{
 "source": "projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]"
}

ここで:

  • [PROJECT_ID] はプロジェクト ID です。
  • [REGION] は、インスタンスと新しいディスクが配置されるリージョンです。
  • [INSTANCE_NAME] は、新しい永続ディスクを追加するインスタンスの名前です。
  • [DISK_NAME] は新しいディスクの名前です。

レプリカ ディスクを接続したら、必要に応じてファイル システムをディスクにマウントします。インスタンスは、レプリカ ディスクを使用して読み取りおよび書き込みオペレーションを続行できます。

リージョン永続ディスクのサイズ変更

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

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

Console

リージョン永続ディスクのサイズを変更します。

  1. [ディスク] ページに移動します。

    [ディスク] ページに移動

  2. サイズを変更するディスクを選択します。
  3. ページ上部の [編集] をクリックします。
  4. ディスクのサイズを GB 単位で入力します。

    行えるのはディスクサイズの拡張のみです。ディスクサイズの縮小はできません。

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

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

gcloud

gcloud ツールで disks resize コマンドを使用します。--size フラグを目的のディスクサイズ(GB)とともに指定し、--region フラグをディスクが配置されるリージョンとともに指定します。

gcloud beta compute disks resize [DISK_NAME] --region [DISK REGION]--size [DISK_SIZE]

ここで:

  • [DISK_NAME] はサイズ変更しているディスクの名前です。
  • [DISK REGION] はディスクが配置されるリージョンです。
  • [DISK_SIZE] はディスクの新しいサイズ(GB)です。

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

API

API で、compute.regionDisks.resize メソッドに対する POST リクエストを作成します。リクエストの本文には、sizeGb パラメータを指定し、GB 単位で目的のディスクサイズを設定します。

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK_NAME]/resize

{
 "sizeGb": "[DISK_SIZE]"
}

ここで:

  • [PROJECT_ID] はプロジェクト ID です。
  • [REGION] はディスクが配置されるリージョンです。
  • [DISK_NAME] はサイズ変更しているディスクの名前です。
  • [DISK_SIZE] はディスクの新しいサイズ(GB)です。

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

ゾーン永続ディスクのリージョン永続ディスクへの移行

既存のゾーン永続ディスクをリージョン永続ディスクに変換するには、現在の永続ディスクのスナップショットを作成し、スナップショットからリージョン永続ディスクを作成します。

gcloud

gcloud ツールで disks snapshot コマンドを使用して、--zone フラグと --snapshot-name フラグを指定します。

gcloud compute disks snapshot [DISK_NAME] --zone [DISK_ZONE]
--snapshot-name [SNAPSHOT_DISK_NAME]

ここで:

  • [DISK_NAME] はスナップショットを作成するディスクの名前です。
  • [DISK_ZONE] はディスクが存在するゾーンです。
  • [SNAPSHOT_DISK_NAME] は新しいスナップショットが作成されるディスクの名前です。

gcloud beta compute disks create を使用して、ゾーンディスクのスナップショットからリージョン ディスクを作成します。ディスク名と、--region--replica-zones--source-snapshot の各フラグを指定します。

gcloud beta compute disks create [DISK_NAME] --region [DISK_REGION]
--replica-zones [ZONE1,ZONE2] --source-snapshot [SNAPSHOT_DISK_NAME]

ここで:

  • [DISK_NAME] は新しいディスクの名前です。
  • [DISK_REGION] は、ディスクが配置されるリージョンです。
  • [ZONE1,ZONE2] は、複製されたディスクが配置されるゾーンです。
  • [SNAPSHOT_DISK_NAME] は、ソース スナップショット ディスクの名前です。

同じ方法を使用して、リージョン ディスクをゾーンディスクに移行できます。

API

API で、compute.disk.createSnapshot メソッドに対する POST リクエストを作成し、ディスクのスナップショットを作成します。リクエスト本文で、ディスクが存在する zone、スナップショットを作成する disk の名前、createSnapshot を指定します。

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]/disks/[DISK]/createSnapshot

ここで:

  • [PROJECT_ID] はプロジェクト ID です。
  • [ZONE] はディスクが配置されるゾーンです。
  • [DISK] はスナップショットを作成するディスクの名前です。

API で、POST リクエストを作成してリージョン永続ディスクを作成します。compute.regionDisks.insert リクエストの本文で、新しいディスクを初期化して、ディスク名とレプリカゾーンのプロパティを指定します。これはデータディスクであるため、空のディスクを作成する sourceImage プロパティは含めないでください。

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/regions/[REGION]

{
 "name": "[DISK_NAME]",
 "replicaZones": "projects/[PROJECT_NAME]/zones/[ZONE1]",
                 "projects/[PROJECT_NAME]/zones/[ZONE2]"
}

ここで:

  • [PROJECT_ID] はプロジェクト ID です。
  • [ZONE1] は、インスタンスと新しいディスクが配置されるゾーンです。
  • [ZONE2] は、複製されたディスクのロケーションです。
  • [DISK_NAME] は新しいディスクの名前です。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント