このドキュメントでは、ゾーン間またはリージョン間で仮想マシン(VM)インスタンスを移動する方法について説明します。
始める前に
- ゾーンのドキュメントを読みます。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Go
ローカル開発環境でこのページの Go サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Java
ローカル開発環境でこのページの Java サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Node.js
ローカル開発環境でこのページの Node.js サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
Python
ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
-
要件
このセクションでは、ゾーンとリージョンの間で VM を移動するための要件について説明します。
プロジェクトの割り当て。プロジェクトには、以下の操作に十分な割り当てが必要です。
- 新しいスナップショットを作成する。
- エフェメラル外部 IP アドレスを昇格させる。
移行先のリージョンに新しい VM とディスクを作成する。
たとえば、移動する VM にディスクが 3 つアタッチされている場合、永続ディスク 3 つ分の一時的なスナップショットと 3 つ分の新しいディスクの作成に十分な割り当てが必要です。新しいディスクを作成すると、一時スナップショットを削除できます。
[割り当て] ページで、上記のリソースに十分な割り当てがあることを確認します。詳細については、割り当てについてをご覧ください。
永続ディスク。移動する VM にアタッチされている永続ディスクは、他の VM にアタッチされません。
ローカル SSD。ローカル SSD は一時的なストレージとして使用されることを前提としています。VM を手動で終了すると、ローカル SSD 上のデータは保持されません。ローカル SSD のデータを維持する必要がある場合は、永続ディスクなど、耐久性のあるストレージ オプションを使用してください。
GPU。VM に GPU が含まれている場合は、使用する GPU が VM の宛先ゾーンで使用可能であることを確認します。GPU と使用可能なゾーンのリストについては、Compute Engine の GPU をご覧ください。
サブネットワーク。
us-west1-a
とasia-south1-b
の間など、リージョン間で VM を移動するときに、VM がサブネットワークに属している場合は、VM に新しいサブネットワークを選択する必要があります。サブネットの作成方法については、サブネットの追加をご覧ください。
制約事項
リージョン間で VM を移動する場合、VM のエフェメラル内部 IP アドレスまたは外部 IP アドレスを保持することはできません。VM を再作成する場合は、新しい IP アドレスを選択する必要があります。
リソース プロパティ
VM を移動するには、VM をシャットダウンし、移動先のゾーンまたはリージョンに移動してから再起動する必要があります。VM の移動後は、元のリソースへの参照をすべて更新します。たとえば、以前の VM を指すターゲット 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 とディスクの両方のプロパティの変更
次の表に、VM とディスクの両方に適用されるプロパティを示します。
プロパティ名 | 変更 |
---|---|
ID | 新しいリソース ID が生成されます。 |
作成のタイムスタンプ | 新しい作成タイムスタンプが生成されます。 |
ゾーンのリソースの URL | すべてのゾーンリソース URL が、移動先のゾーンを反映するよう変更されます。変更されるリソースの URL は次のとおりです。
|
VM をゾーンまたはリージョン間で移動する
ゾーンまたはリージョン間で VM を移動するには、次の操作を行います。
- ソース VM のマシンイメージを作成します。
- 別のゾーンまたはリージョンにあるマシンイメージから VM を作成します。
次の例では、VM をゾーン間で移動する方法を示します。
この例では、mybootdisk
と mydatadisk
という名前の 2 つの永続ディスクを持つ myinstance
という名前の VM を europe-west1-c
から us-west1-b
に移動します。
移動する VM に関連付けられているディスクを特定します。
gcloud compute instances describe myinstance --format="list(name,status,disks)"
この例では、
myinstance
VM に次の 2 つのディスクが関連付けられています。mybootdisk
というブートディスクmydatadisk
というデータディスク
mybootdisk
とmydatadisk
の自動削除の状態をfalse
に設定して、VM の削除時に、これらのディスクが自動削除されないようにします。gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-c \ --disk mybootdisk --no-auto-delete
状態が更新された場合は、
gcloud compute
がレスポンスUpdated [...]
を返します。自動削除状態がすでに false に設定されている場合は、gcloud compute
が次のレスポンスを返します。No change requested; skipping update for [myinstance].
(省略可)VM メタデータを保存します。
VM を削除すると、VM メタデータも削除されます。この情報を別のファイルに保存し、VM メタデータを新しい VM に再適用できます。
VM のメタデータを次のように記述します。
gcloud compute instances describe myinstance --zone europe-west1-c
この内容は別のファイルに保存します。
永続ディスクのスナップショットを使用して、データのバックアップを作成します。
予防措置として、VM に永続ディスクがアタッチしている間に、永続ディスクのスナップショットを使用してデータのバックアップを作成します。スナップショットを取得する前に、スナップショットのベスト プラクティスを遵守して、それが永続ディスクの状態と一致するようにします。
ディスク バッファをクリアした後で、次のようにしてスナップショットを作成します。
gcloud compute disks snapshot mybootdisk mydatadisk \ --snapshot-names backup-mybootsnapshot,backup-mydatasnapshot \ --zone europe-west1-c
スナップショットが作成されたことを確認するには、
gcloud compute snapshots list
を実行します。(省略可)同じリージョン内のゾーン間で VM を移動する場合で、内部または外部のエフェメラル IP アドレスを保持する場合は、内部または外部 IP アドレスを静的 IP アドレスに昇格させることで、後で再利用できます。
VM を削除します。
VM を削除すると、VM が完全にシャットダウンされ、永続ディスクが切断されます。
gcloud compute instances delete myinstance --zone europe-west1-c
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-c]
Do you want to continue (Y/n)?
すでにこのプロセスの以前の手順でディスクの自動削除状態をオフにしているため、「Y」と入力して続行し、警告を無視します。
次に、ブートディスクとデータディスクの両方について、別のスナップショットを作成します。
gcloud compute disks snapshot mybootdisk mydatadisk \ --snapshot-names mybootsnapshot,mydatasnapshot \ --zone europe-west1-c
Created [.../mydatasnapshot]. Created [.../mybootsnapshot].
(省略可)永続ディスクを削除します。
永続ディスクの名前を新しいディスクに再利用する場合は、その名前を解放するために既存のディスクを削除する必要があります。ディスクを削除すると、永続ディスクのストレージ費用も節約できます。
同じディスク名を再使用する予定がない場合は、削除する必要はありません。
gcloud compute disks delete mybootdisk mydatadisk --zone europe-west1-c
作成したスナップショットから
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
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
(省略可)永続ディスクのスナップショットを削除します。
仮想マシンが移動されたことを確認した後は、作成した一時スナップショットを削除するとストレージ費用を節約できます。
gcloud compute snapshots delete mybootsnapshot mydatasnapshot
バックアップ スナップショットが不要になった場合は、そのスナップショットも削除します。
gcloud compute snapshots delete backup-mybootsnapshot backup-mydatasnapshot
VM の詳細を取得し、VM にアタッチされているディスクを特定します。
VM が削除されたときにディスクが自動的に削除されないように、ブートディスクとデータディスクの自動削除状態を
false
に設定します。永続ディスクのスナップショットを使用して、データのバックアップを作成します。
予防措置として、VM に永続ディスクがアタッチしている間に、永続ディスクのスナップショットを使用してデータのバックアップを作成します。スナップショットを取得する前に、スナップショットのベスト プラクティスを遵守して、それが永続ディスクの状態と一致するようにします。
ディスク バッファをクリアした後で、次のようにしてスナップショットを作成します。
移動元のゾーンから VM を削除します。
次に、ブートディスクとデータディスクの両方について、別のスナップショットを作成します。
(省略可)永続ディスクを削除します。
永続ディスクの名前を新しいディスクに再利用する場合は、その名前を解放するために既存のディスクを削除する必要があります。ディスクを削除すると、永続ディスクのストレージ費用も節約できます。
同じディスク名を再使用する予定がない場合は、削除する必要はありません。
作成したスナップショットから、移動先のゾーンに新しい永続ディスクを作成します。まずブートディスクを作成し、次にデータディスクを作成します。
移行先のゾーンの新しいディスクで VM を再作成します。
(省略可)一時的なディスク スナップショットを削除します。仮想マシンが移動されたことを確認した後は、作成した一時スナップショットを削除するとストレージ費用を節約できます。
VM の詳細を取得し、VM にアタッチされているディスクを特定します。
VM が削除されたときにディスクが自動的に削除されないように、ブートディスクとデータディスクの自動削除状態を
false
に設定します。永続ディスクのスナップショットを使用して、データのバックアップを作成します。
予防措置として、VM に永続ディスクがアタッチしている間に、永続ディスクのスナップショットを使用してデータのバックアップを作成します。スナップショットを取得する前に、スナップショットのベスト プラクティスを遵守して、それが永続ディスクの状態と一致するようにします。
ディスク バッファをクリアした後で、次のようにしてスナップショットを作成します。
移動元のゾーンから VM を削除します。
次に、ブートディスクとデータディスクの両方について、別のスナップショットを作成します。
(省略可)永続ディスクを削除します。
永続ディスクの名前を新しいディスクに再利用する場合は、その名前を解放するために既存のディスクを削除する必要があります。ディスクを削除すると、永続ディスクのストレージ費用も節約できます。
同じディスク名を再使用する予定がない場合は、削除する必要はありません。
作成したスナップショットから、移動先のゾーンに新しい永続ディスクを作成します。まずブートディスクを作成し、次にデータディスクを作成します。
移行先のゾーンの新しいディスクで VM を再作成します。
(省略可)一時的なディスク スナップショットを削除します。仮想マシンが移動されたことを確認した後は、作成した一時スナップショットを削除するとストレージ費用を節約できます。
VM の詳細を取得し、VM にアタッチされているディスクを特定します。
VM が削除されたときにディスクが自動的に削除されないように、ブートディスクとデータディスクの自動削除状態を
false
に設定します。永続ディスクのスナップショットを使用して、データのバックアップを作成します。
予防措置として、VM に永続ディスクがアタッチしている間に、永続ディスクのスナップショットを使用してデータのバックアップを作成します。スナップショットを取得する前に、スナップショットのベスト プラクティスを遵守して、それが永続ディスクの状態と一致するようにします。
ディスク バッファをクリアした後で、次のようにしてスナップショットを作成します。
移動元のゾーンから VM を削除します。
次に、ブートディスクとデータディスクの両方について、別のスナップショットを作成します。
(省略可)永続ディスクを削除します。
永続ディスクの名前を新しいディスクに再利用する場合は、その名前を解放するために既存のディスクを削除する必要があります。ディスクを削除すると、永続ディスクのストレージ費用も節約できます。
同じディスク名を再使用する予定がない場合は、削除する必要はありません。
作成したスナップショットから、移動先のゾーンに新しい永続ディスクを作成します。まずブートディスクを作成し、次にデータディスクを作成します。
移行先のゾーンの新しいディスクで VM を再作成します。
(省略可)一時的なディスク スナップショットを削除します。仮想マシンが移動されたことを確認した後は、作成した一時スナップショットを削除するとストレージ費用を節約できます。
VM の詳細を取得し、VM にアタッチされているディスクを特定します。
VM が削除されたときにディスクが自動的に削除されないように、ブートディスクとデータディスクの自動削除状態を
false
に設定します。永続ディスクのスナップショットを使用して、データのバックアップを作成します。
予防措置として、VM に永続ディスクがアタッチしている間に、永続ディスクのスナップショットを使用してデータのバックアップを作成します。スナップショットを取得する前に、スナップショットのベスト プラクティスを遵守して、それが永続ディスクの状態と一致するようにします。
ディスク バッファをクリアした後で、次のようにしてスナップショットを作成します。
移動元のゾーンから VM を削除します。
次に、ブートディスクとデータディスクの両方について、別のスナップショットを作成します。
(省略可)永続ディスクを削除します。
永続ディスクの名前を新しいディスクに再利用する場合は、その名前を解放するために既存のディスクを削除する必要があります。ディスクを削除すると、永続ディスクのストレージ費用も節約できます。
同じディスク名を再使用する予定がない場合は、削除する必要はありません。
作成したスナップショットから、移動先のゾーンに新しい永続ディスクを作成します。まずブートディスクを作成し、次にデータディスクを作成します。
移行先のゾーンの新しいディスクで VM を再作成します。
(省略可)一時的なディスク スナップショットを削除します。仮想マシンが移動されたことを確認した後は、作成した一時スナップショットを削除するとストレージ費用を節約できます。
次のステップ
- プロジェクトのデフォルトのゾーン / リージョンを変更する方法について学習する。
- ライブ マイグレーションについて学習する。
- VM のステータスを確認する。
- Compute Engine への VM の移行について学習する。