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

このページでは、リージョン永続ディスク ストレージ リソースを追加して管理する方法について説明します。リージョン永続ディスクをサイズ変更する場合、大きくすることだけが可能です。永続ディスクのサイズを小さくすることはできません。

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

  • ブートディスクとしては使用できません。
  • ゾーン障害の発生時に別の VM インスタンスへの強制接続をサポートします。
  • リージョン永続ディスクは、イメージではなくスナップショットから作成できます。
  • パフォーマンスの違いがあります。これについては、ストレージ オプションのドキュメントをご覧ください。

リージョン永続ディスクでは、1 つのリージョン内の 2 つのゾーンの間でデータの同期レプリケーションが行われます。ゾーンに障害が発生した場合、ワークロードは同じゾーンまたは別のゾーンの別の VM インスタンスにフェイルオーバーされます。その後、リージョン永続ディスクをそのインスタンスに強制的に接続できます。強制接続の時間は 1 分以内に設定されています。

予期しないデータ損失を防ぐため、スナップショットを使用してリージョン永続ディスクをバックアップすることをおすすめします。

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

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

作成したすべての永続ディスクには、デフォルトの物理ブロックサイズ(4 KB)が設定されます。データベース アプリケーションで物理ブロックサイズを増やす必要がある場合は、ディスクの作成時に 16 KB を選択できます。この機能は、ブートディスクではサポートされていません。既存のディスクの物理ブロックサイズを変更する場合は、ディスクのスナップショットを作成してから新しいディスクを作成する必要があります。ディスクの物理ブロックサイズを直接編集することはできません。

始める前に

制限事項

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

  • ブートディスクとしては使用できません。
  • リージョン永続ディスクは、イメージではなくスナップショットから作成できます。
  • リージョン標準永続ディスクの最小サイズは 200 GB です。
  • メモリ最適化マシンタイプでリージョン永続ディスクは使用できません。

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

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

Console

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

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

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

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

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

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

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

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

  9. [ソースタイプ] でソースタイプを選択します。
  10. 必要に応じて、物理ブロックサイズ(KB)を選択します。ディスクのデフォルト サイズは 4 KB です。ただし、プルダウン メニューから 16 KB を選択して、ディスクの物理ブロックサイズを増やすことができます。この機能はベータ版です。
  11. [暗号化] を選択します。
  12. [作成] をクリックしてディスクの作成を終了します。

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

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

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

gcloud

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

  1. compute disks create コマンドを使用して新しいリージョン永続ディスクを作成します。スループットや IOPS を上げるためにリージョン SSD 永続ディスクが必要な場合は、--type フラグを含めて pd-ssd を指定します。--physical-block-size フラグを追加して、物理ブロックサイズを設定することもできます。このフラグを含めるには、beta compute disks create コマンドを使用する必要があります。この機能はベータ版です。

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

    ここで

    • [DISK_NAME] は新しいディスクの名前です。
    • [DISK_SIZE] は新しいディスクのサイズ(GB)です。
    • [DISK_TYPE] は永続ディスクの種類です。pd-standard または pd-ssd を指定します。
    • [REGION] は、リージョン ディスクが配置されるリージョンです。例: europe-west1
    • [ZONE1][ZONE2] は、2 つのディスク レプリカが配置されるリージョン内のゾーンです。
      ゾーンは 2 つ選択する必要があります。例: europe-west1-a,europe-west1-b
    • [BLOCK_SIZE] は、4096(4 KB)または 16384(16 KB)のいずれかです。4 KB がデフォルトの物理ブロックサイズです。16 KB は物理ブロックサイズの増加分です。このフラグを指定して beta compute disks create コマンドを使用します。この機能はベータ版です。
  2. ディスクを作成したら、実行中または停止しているインスタンスに接続します。compute instances attach-disk コマンドを使用して、--disk フラグを指定します。

    gcloud compute instances attach-disk [INSTANCE_NAME] \
        --disk [DISK_NAME]
    

    ここで

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

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

  3. compute disks describe コマンドを使用して、ディスクの説明を表示します。レスポンスには、ディスクの物理ブロックサイズが含まれます。

API

  1. API で、POST リクエストを作成してリージョン永続ディスクを作成します。compute.regionDisks.insert リクエストの本文で、ディスクの namereplicaZones のプロパティを指定して新しいディスクを初期化します。空のディスクを作成するには、イメージやスナップショットのソースを指定しないでください。必要に応じて、physicalBlockSizeBytes プロパティを使用して、物理ブロックのストレージ サイズを設定します。このプロパティのベータ版 API メソッド compute.regionDisks.insert を使用します。この機能はベータ版です。

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

    ここで

    • [PROJECT_ID] はプロジェクト ID です。
    • [DISK_NAME] は新しいディスクの名前です。

    • [BLOCK_SIZE] は、4096(4 KB)または 16384(16 KB)のいずれかです。4 KB がデフォルトの物理ブロックサイズです。16 KB は物理ブロックサイズの増加分です。このプロパティのベータ版 API メソッド compute.regionDisks.insert を使用します。この機能はベータ版です。

    • [ZONE1][ZONE2] は、新しいディスクのレプリカが配置されるゾーンです。

  2. API で、compute.instances.attachDisk メソッドに対する POST リクエストを作成し、先ほど作成した永続ディスクへの URL を含めます。

    POST https://www.googleapis.com/compute/v1/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 インスタンスが実行されているゾーンが使用不可になると、インスタンスにアクセスして接続解除操作を実行できないため、インスタンスからディスクを切断できなくなる可能性があります。強制接続を使用すると、そのディスクが現在別のインスタンスに接続されている場合でも、リージョン永続ディスクを VM インスタンスに接続できます。

強制接続操作が完了すると、Compute Engine は元の 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 ツールで instances attach-disk コマンドを使用して、レプリカ ディスクを VM インスタンスに接続します。--disk-scope フラグを指定し、regional に設定します。

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

ここで

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

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

API

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

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

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

ここで

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

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

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

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

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

Console

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

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

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

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

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

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

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

gcloud

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

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

ここで

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

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

API

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

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

{
 "sizeGb": "[DISK_SIZE]"
}

ここで

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

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

複数のインスタンス間でリージョン永続ディスクを共有する

非ブート永続ディスクを複数の仮想マシン インスタンスに読み取り専用モードで接続し、複数インスタンス間で静的データを共有できます。1 つの永続ディスクの静的データを複数インスタンスで共有することは、個別インスタンス固有のディスクにデータをレプリケートするよりもコストがかかりません。

永続ディスクを複数インスタンスに接続する場合、すべてのインスタンスが永続ディスクを読み取り専用モードで接続する必要があります。複数のインスタンスに読み取り / 書き込みモードで永続ディスクを接続することはできません。複数のインスタンスで動的記憶領域を共有する必要がある場合は、次のいずれかのオプションを使用できます。

複数のインスタンスで共有したいデータを含む永続ディスクがある場合は、読み取り/書き込みインスタンスとの接続を切断し、1 つ以上のインスタンスと読み取り専用モードで接続します。

Console

  1. [インスタンス] ページに移動して、プロジェクトのインスタンスの一覧を表示します。

    インスタンス ページに移動

  2. [名前] 列で、ディスクを接続するインスタンスの名前をクリックします。インスタンスの詳細ページが開きます。
  3. インスタンス詳細ページの一番上で [編集] をクリックします。
  4. [追加ディスク] セクションで [項目を追加] をクリックし、接続されている非ブート永続ディスクのリストにディスク項目を追加します。
  5. [名前] 列で [ディスクを選択してください] をクリックし、接続するディスクの名前をクリックします。新しい非ブートディスクを作成する場合は、そのディスクのプロパティを構成し、[作成] をクリックして変更内容を適用します。
  6. [モード] 列で [読み取りと書き込み] をクリックし、モードを [読み取り専用] に変更します。
  7. インスタンスの詳細ページの一番下にある [保存] をクリックして、変更内容をインスタンスに適用します。
  8. インスタンスに接続して、ディスクをマウントします。
  9. このプロセスを繰り返して、他のインスタンスに読み取り専用モードでディスクを追加します。

gcloud

gcloud ツールで compute instances attach-disk コマンドを使用し、--mode フラグで ro オプションを指定します。

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

ここで

  • [INSTANCE_NAME] は、永続ディスクを接続するインスタンスの名前です。
  • [DISK_NAME] は、接続するディスクの名前です。

ディスクを接続した後で、インスタンスに接続して、ディスクをマウントします。

ディスクを読み取り専用モードで追加するインスタンスごとにこのコマンドを繰り返します。

API

API で、compute.instances.attachDisk メソッドに対する POST リクエストを作成します。リクエストの本文で、mode パラメータに READ_ONLY を指定します。

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

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

ここで

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

ディスクを接続した後で、インスタンスに接続して、ディスクをマウントします。

ディスクを読み取り専用モードで追加するインスタンスごとにこのリクエストを繰り返します。

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

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

gcloud

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

gcloud compute disks snapshot [DISK_NAME] \
    --zone [ZONE] \
    --snapshot-name [SNAPSHOT_DISK_NAME]

ここで

  • [DISK_NAME] はスナップショットを作成するディスクの名前です。
  • [ZONE] はソース ゾーンディスクが配置されている場所です。
  • [SNAPSHOT_DISK_NAME] は新しいスナップショットが作成されるディスクの名前です。

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

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

ここで

  • [DISK_NAME] は新しいディスクの名前です。
  • [REGION] は、ディスクが配置されるリージョンです。
  • [ZONE1][ZONE2] は、新しいリージョン永続ディスクのレプリカが存在するゾーンです。
  • [SNAPSHOT_DISK_NAME] は、ソース スナップショット ディスクの名前です。

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

API

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

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

ここで

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

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

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

{
 "name": "[DISK_NAME]",
 "sourceSnapshot": "global/snapshots/[SNAPSHOT_NAME]",
 "replicaZones": [
 "projects/[PROJECT_ID]/zones/[ZONE1]",
 "projects/[PROJECT_ID]/zones/[ZONE2]"
 ],
}

ここで

  • [PROJECT_ID] はプロジェクト ID です。
  • [REGION] は、ディスクが配置されるリージョンです。
  • [DISK_NAME] は新しいディスクの名前です。
  • [SNAPSHOT_NAME] は復元するスナップショットです。
  • [ZONE1][ZONE2] は、新しいリージョン永続ディスクのレプリカが存在するゾーンです。 ## 次のステップ
このページは役立ちましたか?評価をお願いいたします。

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

Compute Engine ドキュメント