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

インスタンスをゾーン間で移動するには、永続ディスクのスナップショットを取り、そのスナップショットを使用して移動先のゾーンで新しいインスタンスを起動し、元のリソースを削除します。あるゾーンが非推奨になった場合は、この方法を使用して非推奨ゾーンからインスタンスを移動できます。

始める前に

要件

インスタンスを移動するには、次の要件を満たしている必要があります。

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

インスタンスを移動した後、元のリソースへの参照をすべて更新する必要があります。たとえば、古いインスタンスを指すターゲット インスタンスやターゲット プールでの参照を更新します。

リソース プロパティ

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

インスタンス プロパティの変更

プロパティ名 変更
内部 IP アドレス 通常は新しい内部 IP アドレスが割り当てられますが、インスタンスで元の内部 IP アドレスを保持することもできます。
外部 IP アドレス
  • インスタンスが同じリージョンのゾーンの間で移動する場合、外部 IP アドレスは変わりません。
  • インスタンスが異なるリージョンのゾーン間で移動する場合は、新しいインスタンスにエフェメラル外部 IP アドレスが割り当てられます。インスタンスに予約済みの IP アドレスがある場合は、新しいゾーンでインスタンスを再作成するときにそのアドレスを再度割り当てることができます。
CPU プラットフォーム 移動先のゾーンで利用できる CPU のプラットフォームに応じて、移動後にインスタンスが別の CPU プラットフォームになることがあります。

各ゾーンのすべての CPU プラットフォームの一覧については、利用可能なリージョンとゾーンをご覧ください。

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

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

インスタンスとディスクの両方のプロパティの変更

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

インスタンスの移動

gcloud ツールまたは Compute Engine API を使用してインスタンスを自動的に移動できます。または、手動で移動させることもできます。

インスタンスを移動するには、次の手順に従う必要があります。

  • 移動元のインスタンスに接続されている永続ディスクのスナップショットを取ります。
  • 移動先のゾーンに永続ディスクのコピーを作成します。
  • 同じリージョン内でインスタンスを移動する場合は、インスタンスに割り当てられているエフェメラル外部 IP アドレスを静的外部 IP アドレスに一時的に昇格します。
  • 移動先のゾーンに新しいインスタンスを作成します。
  • 新しく作成された永続ディスクを新しいインスタンスに接続します。
  • 外部 IP アドレスを新しいインスタンスに割り当てます。必要に応じて、アドレスをエフェメラル外部 IP アドレスに降格します。
  • スナップショット、元のディスク、および元のインスタンスを削除します。

手動による移動と自動移動の選択

  • リージョン間でインスタンスを移動する場合(たとえば us-west1-a から asia-south1-b に移動する)、移動を手動で行う必要があります。インスタンスに GPU またはローカル SSD が含まれている場合も、手動による移動が必要です。
  • リージョン内でインスタンスを移動する場合は、gcloud または Compute Engine API を使用できます。

インスタンスを移動する前に、要件を確認してください。

gcloud


インスタンスが稼働中であることを確認します。その上で、compute instances move サブコマンドを使用してインスタンスを移動します。

たとえば、現在 us-central1-b で稼働中の example-instance-1 というインスタンスを、そのインスタンスに接続されているすべての永続ディスクと一緒に us-central1-f に移動するには、次のコマンドを実行します。

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

このオペレーションは完了するまでに数分かかることがあります。

API


API で、本文に targetInstancedestinationZone を含めた POST リクエストを moveInstance メソッドに対して実行します。次に例を示します。

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

手動


次の例は、myrootdiskmydatadisk の 2 つの永続ディスクが接続されているインスタンス myinstance を、europe-west1-a から us-west1-b に移動する方法を示しています。サンプルのインスタンスは、次のようになります。

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

インスタンスを別のゾーンに移動するには、次のようにします。

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

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

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

    • myrootdisk というブートディスク
    • mydatadisk というデータディスク
  2. myrootdiskmydatadisk の自動削除の状態を設定します。インスタンスが削除されるときに、これらのディスクが自動的に削除されないようにするためです。

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

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

  3. (省略可)インスタンスのメタデータを保存します。

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

    gcloud compute instances describe myinstance --zone europe-west1-a | \
        tee myinstance.describe
    
  4. データのバックアップを作成します。

    予防措置として、データのバックアップを、永続ディスク スナップショットを使用して作成します。永続ディスクはまだインスタンスに接続された状態であることから、スナップショットと永続ディスクの状態との矛盾がないようにするために、スナップショットを作成する前にディスク バッファをクリアしてください

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

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names backup-myrootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

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

  5. インスタンスを削除します。

    インスタンスを削除すると、完全にシャットダウンされ、永続ディスクの接続が解除されます。

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

    The following instances will be deleted. Attached disks configured to
    be auto-deleted will be deleted unless they are attached to any other
    instances. Deleting a disk is irreversible and any data on the disk
    will be lost.
     - [myinstance] in [europe-west1-a]

    Do you want to continue (Y/n)?

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

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

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names myrootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    

    Created [.../mydatasnapshot].
    Created [.../myrootsnapshot].

  7. (省略可)永続ディスクを削除します。

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

    同じディスク名を再利用する予定がない場合は、永続ディスクの削除は後でもかまいません。

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. 前のステップで作成したスナップショットから、us-west1-b に新しい永続ディスクを作成します。最初にルートディスクを作成します。

    gcloud compute disks create myrootdiskb --source-snapshot myrootsnapshot \
        --zone us-west1-b
    

    Created [.../myrootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    myrootdiskb 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

  9. インスタンスを us-west1-b に再作成します。

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

    • インスタンスに予約済みの IP アドレスがあった場合に、そのアドレスを新しいインスタンスに再度割り当てるには --address ADDRESS オプションを指定します。

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

    • インスタンスで特定のサブネットを使用する場合、--zone [ZONE_NAME] フラグの前に --subnet [SUBNET_NAME] フラグを追加します。

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

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=myrootdiskb,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

  10. (省略可)永続ディスクのスナップショットを削除します。

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

    gcloud compute snapshots delete myrootsnapshot mydatasnapshot
    

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

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
    
このページは役立ちましたか?評価をお願いいたします。

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

Compute Engine ドキュメント