ゾーン間での VM インスタンスの移動


このドキュメントでは、projects.moveInstance API を使用するか、または一連の手順を行い手動で VM インスタンスをゾーン間で移動する方法を説明します。

可能な限り、projects.moveInstance メソッド API を使用して VM を自動的に移行する必要があります。ただし、VM をリージョン間で移動する場合、その VM がサブネットワークに属していると API は使用できません。手動で移動する必要があります。詳細については、このドキュメントの制限事項をご覧ください。

VM を手動で移動するには、次の手順を行います。

  1. 元の VM にアタッチされている永続ディスクのスナップショットを作成します。
  2. 移動先のゾーンに永続ディスクのコピーを作成します。
  3. 外部 IP アドレスと内部 IP アドレスの場合:
    • 同じリージョン内のゾーン間で VM を移動する際にエフェメラル IP アドレスを保持する場合は、VM に割り振られたエフェメラル IP アドレスを静的 IP アドレスに一時的に昇格させ、次に、移動先のゾーンで作成した新しい VM インスタンスに割り振ります。
    • リージョン間で VM を移動する場合は、VM インスタンスに別の IP アドレスを選択する必要があります。
  4. 移動先のゾーンで、新しい VM を作成して起動します。リージョン間で移動する場合は、新しい VM に新たなサブネットワークを選択する必要もあります。
  5. 新しい永続ディスクを新しい VM にアタッチします。
  6. 外部 IP アドレスを新しい VM に割り当てます。必要に応じて、アドレスをエフェメラル外部 IP アドレスに降格します。
  7. スナップショット、元のディスク、元の VM を削除します。

始める前に

要件

VM は、移行するにあたって次の要件を満たしている必要があります。

  • 新しいスナップショットの作成とエフェメラル外部 IP アドレスの昇格に十分な割り当てがプロジェクトに存在すること。
  • 移動先のリージョンに、新しい VM とディスクのための十分な割り当てがあること。たとえば、移動する VM にディスクが 3 つアタッチされている場合、永続ディスク 3 つ分の一時的なスナップショットと 3 つ分の新しいディスクの作成に十分な割り当てが必要です。新しいディスクを作成すると、一時スナップショットを削除できます。
  • 移動する VM に接続されている永続ディスクが、複数の VM にアタッチされていないこと。
  • VM に GPU が含まれている場合は、使用する GPU がターゲット ゾーンで使用可能であること。GPU と使用可能なゾーンのリストについては、Compute Engine の GPU をご覧ください。

移動中の VM はシャットダウンされ、移動後に再起動されます。VM の移動後は、元のリソースへの参照をすべて更新します。たとえば、以前の VM を指すターゲット VM やターゲット プールなどでの参照を更新します。

制限事項

可能な場合は moveInstances API を使用しますが、moveInstances API を使用できないシナリオもあります。特に、次のシナリオでは手動での移動が必要になります。

  • VM インスタンスが現在 TERMINATED 状態になっている。
  • VM インスタンスがマネージド インスタンス グループ(MIG)のメンバーになっている。
  • リージョン間、たとえば us-west1-aasia-south1-b の間で VM を移動するときに、VM がサブネットワークに属している。この場合、手動での移動を行い、VM に新しいサブネットワークを選択する必要があります。
  • VM インスタンスにローカル SSD がアタッチされているか、移動先のゾーンで利用できない GPU を使用している。
    • ローカル SSD は一時ストレージとしての使用が意図されています。ローカル SSD 上のデータは手動による VM 終了後に保持されません。このため、VM 移動の一環として実行する必要があります。ローカル SSD のデータを維持する必要がある場合は、永続ディスクなど、耐久性のあるストレージ オプションを使用してください。
    • 必要な GPU が移動先のゾーンで利用できない場合は、同じ GPU を提供する新しいゾーンを選択するか、移動先のゾーンで新しい GPU を選択してください。
  • VM インスタンスが UEFI ファームウェアを使用する Shielded VM である。

手動による移動と自動移動のどちらを行うかに関係なく、要件を満たしていなければ、VM を正常に移動することはできません。

リソース プロパティ

移動の際、サーバーが生成した、VM とディスクのプロパティのいくつかが変更されます。

VM プロパティの変更

プロパティ名 変更
内部 IP アドレス 通常は新しい内部 IP アドレスが割り当てられますが、VM が元の内部 IP アドレスを保持する場合もあります。
外部 IP アドレス VM が同じリージョンのゾーンの間で移動する場合、外部 IP アドレスは変わりません。それ以外の場合は、VM インスタンスに別の外部 IP アドレスを選択します。
CPU プラットフォーム 移動先のゾーンで利用できる CPU のプラットフォームによっては、移動後の VM が別の CPU プラットフォームを使用する可能性があります。各ゾーンのすべての CPU プラットフォームの完全な一覧については、利用可能なリージョンとゾーンをご覧ください。
ネットワーク / サブネットワーク VM がサブネットワークに属している場合で、VM をリージョン間で移動する場合は、VM に新しいサブネットワークを選択する必要があります。同じリージョン内のゾーン間で VM を移動する場合は、同じサブネットワークが保持されます。

ディスク プロパティの変更

プロパティ名 変更
ソース スナップショット 新しいディスクのソース スナップショットは、移動中に作成された一時スナップショットに設定されます。
ソース スナップショット ID ソース スナップショット ID は、一時スナップショットの ID に設定されます。
ソースイメージ ソースイメージ フィールドは空です。
イメージ ID イメージ ID は空です。
最後の接続解除のタイムスタンプ 最後の接続解除のタイムスタンプは空です。
最後の接続のタイムスタンプ 最後のアタッチのタイムスタンプは、新しいディスクが新しいインスタンスにアタッチされたときのタイムスタンプに変更されます。

VM とディスクの両方のプロパティの変更

プロパティ名 変更
ID 新しいリソース ID が生成されます。
作成のタイムスタンプ 新しい作成タイムスタンプが生成されます。
ゾーンのリソースの URL すべてのゾーンリソース URL が、移動先のゾーンを反映するよう変更されます。変更されるリソースの URL は次のとおりです。
  • VM のソースディスクの URL
  • VM のマシンタイプの URL
  • セルフリンクの URL
  • ゾーンの URL
  • ディスクタイプの URL
  • ディスクの users[] リストに記載された VM の URL(ある場合)

VM を自動的に移動する

VM を移動する前に、要件制限事項を確認してください。

gcloud

VM が稼働中であることを確認します。その後、gcloud ツールを使用して compute instances move サブコマンドを実行し、VM を移動します。

たとえば、example-instance-1 という VM とそれにアタッチしているすべての永続ディスクを現在実行中の us-central1-b から新しいリージョン us-central1-f に移動するには、次のコマンドを実行します。

gcloud compute instances move example-instance-1 \
    --zone us-central1-b --destination-zone us-central1-f

API

API では、moveInstance API に POST リクエストを発行します。その際、リクエスト本文で targetInstancedestinationZone を指定します。次に例を示します。

{
   "targetInstance": "zones/us-central1-b/instances/example-instance-1",
   "destinationZone": "zones/us-central1-f"
}

VM を手動で移動する

可能であれば、moveInstance API を使用して VM を自動的に移動してください。この API を使用することで、VM の移行手順がすべて処理されます。ただし、この API を使用できない場合は、手動での移動が可能です。

次の例では、mybootdiskmydatadisk の 2 つの永続ディスクを持つ VM myinstanceeurope-west1-a から us-west1-b に移動する方法を示します。VM の例は次のようになります。

gcloud compute instances list
NAME       ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
myinstance europe-west1-a n1-standard-4 10.240.116.177 146.148.112.106 RUNNING

VM を別のゾーンに移動するには:

  1. 移動する VM に関連付けられているディスクを特定します。

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

    この例では、myinstance VM に次の 2 つのディスクが関連付けられています。

    • mybootdisk というブートディスク
    • mydatadisk というデータディスク
  2. mybootdiskmydatadisk の自動削除の状態を false に設定して、VM の削除時に、これらのディスクが自動削除されないようにします。

    gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-a \
        --disk mybootdisk --no-auto-delete
    

    状態が更新された場合は、gcloud compute がレスポンス Updated [...] を返します。自動削除状態がすでに false に設定されている場合は、gcloud compute が次のレスポンスを返します。

    No change requested; skipping update for [myinstance].
  3. (省略可)VM メタデータを保存します。

    VM を削除すると、VM メタデータも削除されます。この情報を別のファイルに保存し、VM メタデータを新しい VM に再適用できます。

    VM のメタデータを次のように記述します。

    gcloud compute instances describe myinstance --zone europe-west1-a
    

    この内容は別のファイルに保存します。

  4. データのバックアップを作成します。

    予防措置として、VM に永続ディスクがアタッチしている間に、永続ディスクのスナップショットを使用してデータのバックアップを作成します。スナップショットを取得する前に、ディスクバッファをクリアして、スナップショットが永続ディスクの状態と一致するようにします。

    ディスク バッファをクリアした後で、次のようにしてスナップショットを作成します。

    gcloud compute disks snapshot mybootdisk mydatadisk \
        --snapshot-names backup-mybootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

    スナップショットが作成されたことを確認するには、gcloud compute snapshots list を実行します。

  5. (省略可)同じリージョン内のゾーン間で VM を移動する場合で、内部または外部のエフェメラル IP アドレスを保持する場合は、内部または外部 IP アドレスを静的 IP アドレスに昇格させることで、後で再利用できます。

  6. VM を削除します。

    VM を削除すると、VM が完全にシャットダウンされ、永続ディスクが切断されます。

    gcloud compute instances delete myinstance --zone europe-west1-a
    

    gcloud から、削除を確定するよう求められます。

     The following VMs are deleted. Any attached disks configured to
     be auto-deleted are deleted unless they are attached to any other
     VMs or the --keep-disks flag is given and specifies them for keeping.
     Deleting a disk is irreversible and any data on the disk is lost.
      — [myinstance] in [europe-west1-a]
     

    Do you want to continue (Y/n)?

    すでにこのプロセスの以前の手順でディスクの自動削除状態をオフにしているため、「Y」と入力して続行し、警告を無視します。

  7. 次に、ブートディスクとデータディスクの両方について、別のスナップショットを作成します。

    gcloud compute disks snapshot mybootdisk mydatadisk \
        --snapshot-names mybootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../mybootsnapshot].
  8. (省略可)永続ディスクを削除します。

    永続ディスクの名前を新しいディスクに再利用する場合は、その名前を解放するために既存のディスクを削除する必要があります。ディスクを削除すると、永続ディスクのストレージ費用も節約できます。

    同じディスク名を再使用する予定がない場合は、削除する必要はありません。

    gcloud compute disks delete mybootdisk mydatadisk --zone europe-west1-a
    
  9. 作成したスナップショットから us-west1-b に新しい永続ディスクを作成します。まずブートディスクを作成します。

    gcloud compute disks create mybootdiskb --source-snapshot mybootsnapshot \
        --zone us-west1-b
    
    Created [.../mybootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mybootdiskb us-west1-b     100     pd-standard READY

    次に、データディスクを作成します。

    gcloud compute disks create mydatadiskb --source-snapshot mydatasnapshot \
        --zone us-west1-b
    
    Created [.../mydatadiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mydatadiskb us-west1-b 4000    pd-standard READY
  10. us-west1-b に VM を再作成します。

    • VM のメタデータをファイル(たとえば、myinstance.describe)に保存することを選択した場合、そのファイルを使用して VM に同じメタデータを設定できます。

    • VM に静的外部 IP アドレスがある場合、そのアドレスを新しい VM に再度割り当てるには --address [ADDRESS] オプションを指定します。リージョン間で VM を移動する場合は、新しい VM インスタンスに別の外部 IP アドレスを選択する必要があります。

    • VM に静的内部 IP アドレスがある場合、そのアドレスを新しい VM に再度割り当てるには --private-network-ip ADDRESS オプションを指定します。リージョン間で VM を移動する場合は、新しい VM インスタンスに別の内部 IP アドレスを選択する必要があります。

    • VM に GPU が含まれている場合は、--accelerator オプションを使用して VM に GPU を追加します。

    • VM で特定のサブネットを使用する場合は、--subnet [SUBNET_NAME] フラグを追加します。

    その他のフラグの完全なリストについては、gcloud compute instances create コマンドをご覧ください。

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=mybootdiskb,boot=yes,mode=rw \
        --disk name=mydatadiskb,mode=rw
    
    Created [.../myinstanceb].
    NAME        ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
    myinstanceb us-west1-b     n1-standard-4 10.240.173.229 146.148.112.106 RUNNING
  11. (省略可)永続ディスクのスナップショットを削除します。

    仮想マシンが移動されたことを確認した後は、作成した一時スナップショットを削除するとストレージ費用を節約できます。

    gcloud compute snapshots delete mybootsnapshot mydatasnapshot
    

    バックアップ スナップショットが不要になった場合は、そのスナップショットも削除します。

    gcloud compute snapshots delete backup-mybootsnapshot backup-mydatasnapshot
    

次のステップ