インスタンスの停止と起動

このページでは、VM インスタンスの停止方法および起動方法について説明します。インスタンス停止の詳細については、インスタンスのライフサイクルをご覧ください。

不要になったインスタンスは一時的に停止して後で再起動できます。停止されたインスタンスの永続ディスク、内部 IP、MAC アドレスは保持されます。ただし、ゲスト OS はインスタンスによりシャットダウンされ、アプリケーションの状態は失われます。基本的に、停止されたインスタンスはパワーオン時の状態にリセットされ、データは保存されません。マシンタイプの変更、接続されているディスクの追加と削除、最小 CPU プラットフォームの変更、GPU の追加と削除、推奨サイズの適用を行う場合には、インスタンスを停止します。

インスタンスを停止すると、Compute Engine からインスタンスに ACPI 電源オフ信号が送信されます。最新のゲスト オペレーティング システムは、電源オフ信号に応じて電源を切る前に、クリーン シャットダウンを行うよう構成されています。Compute Engine は、ゲスト オペレーティング システムがシャットダウンを完了するのをしばらく待ってから、インスタンスを TERMINATED 状態に切り替えます。

停止したインスタンスに対して料金は発生しませんが、そのインスタンスに接続されているすべてのリソースについては料金が発生します。たとえば、永続ディスクや外部 IP アドレスに対しては、インスタンスが停止している間も料金表に従って請求が発生します。接続されたリソースに対する請求を停止するには、停止したインスタンスの構成を変更してこれらのリソースを使用しないようにしてから、インスタンスを削除します。

始める前に

制限事項

ローカル SSD が接続されたインスタンスは停止できません。Compute Engine には、インスタンスにローカル SSD の接続されているときにゲスト オペレーティング システム内からのインスタンスのシャットダウンを防止する機能はないため、特に注意してください。

ローカル SSD

ローカル SSD が接続されたインスタンスは停止できません。代わりに、インスタンスを完全に削除する前に、重要なデータをローカル SSD から永続ディスクまたは別のインスタンスに移行する必要があります。Compute Engine には、ローカル SSD の接続されたインスタンスがゲスト オペレーティング システム内からシャットダウンされるのを防止する機能はないため、ゲスト オペレーティング システムからインスタンスを停止する場合は特に注意してください。

課金

VM が TERMINATED 状態になると、VM リソースは課金されません。

具体的には、VM が RUNNING 状態で停止処理中のとき(まだ TERMINATED ではない)、vCPU、メモリ、GPU、ローカル SSD の使用は課金されます。STOPPING 状態が終了して VM が TERMINATED 状態になると、上記のリソースの課金は停止されます。

上記以外のすべてのリソース(永続ディスクや静的外部 IP アドレスなど)については、接続している VM が TERMINATED 状態になっても課金されるので注意してください。

インスタンスの状態の詳細については、インスタンスのライフサイクルのドキュメントをご覧ください。

インスタンスの停止

インスタンスを停止するには、Google Cloud Platform Consolegcloud ツール、または API を使用します。

Console

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

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

  2. 停止したいインスタンスを選択します。インスタンスは複数選択できます。
  3. [VM インスタンス] ページで、[停止] をクリックします。

gcloud

instances stop コマンドを使用して停止したいインスタンスを 1 つまたは複数指定します。

gcloud compute instances stop example-instance-1 example-instance-2

API

API で POST リクエストを作成して、インスタンスを停止します。

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/stop

TERMINATED 状態のインスタンスは、構成の設定とインスタンス メタデータを保持した状態で残りますが、メモリ内データと仮想マシン状態は失われます。停止したインスタンスに接続されたリソースは、手動で接続を解除するか、インスタンスを削除するまで接続されたままになります。

インスタンスが TERMINATED 状態になると、インスタンスの再起動削除ができます。インスタンスはいつまでも TERMINATED 状態にしておいてかまいません。ただし、インスタンスを再起動する予定がない場合は、停止状態で残すのではなく削除してください。

OS からのインスタンスの停止

必要に応じて、ゲスト オペレーティング システムからインスタンスを停止できます。

Linux

sudo shutdown -h now または sudo poweroff コマンドを使用します。仮想マシンにログインした状態で、次のいずれかのコマンドを実行します。

me@example-instance:~$ sudo shutdown -h now
me@example-instance:~$ sudo poweroff

Windows

Windows インスタンスを再起動するには、[スタート] メニューを使用して、前述の sudo reboot と同様の操作を行います。[スタート] メニューで、[ログオフ] の横の矢印をクリックして、[再起動] をクリックします。

停止されたインスタンスの起動

停止されたインスタンスを起動するには、instances().start メソッドを使用します。このメソッドは、現在 TERMINATED 状態にある仮想マシン インスタンスを起動します。

start メソッドは TERMINATED 状態のインスタンスを再起動しますが、reset()sudo reboot などのメソッドは、現在実行中のインスタンスでのみ動作します。ほとんどのインスタンスは TERMINATED 状態である限り再起動できますが、ローカル SSD が接続された仮想マシン インスタンスは例外で、再起動できません。

Console

  1. Google Cloud Platform Console の [VM インスタンス] ページに移動します。

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

  2. 再起動するインスタンスを選択します。
  3. ページの右上の [起動] ボタンをクリックして、インスタンスを再起動します。

gcloud

gcloud compute を使用してインスタンスをリセットするには:

gcloud compute instances start example-instance

API

API で、次の URI に対して POST リクエストを行い、プロジェクト、ゾーン、インスタンス名を適切に置き換えます。

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/start

クライアント ライブラリを使用してインスタンスを再起動するには、instances().start メソッドへのリクエストを作成します。

def restartInstance(auth_http, gce_service):
  request = gce_service.instances().start(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

このメソッドの詳細については、instances().start のリファレンス ドキュメントをご覧ください。

暗号化されたディスクのあるインスタンスの再起動

再起動するインスタンスが顧客指定の暗号鍵を使用している場合は、インスタンスを再起動するときにその鍵を指定する必要があります。

Console

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

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

  2. 起動するインスタンスの名前をクリックします。インスタンスの詳細ページが開きます。
  3. [起動] ボタンをクリックします。ウィンドウが開くと、そのインスタンスに接続されているデバイスの暗号鍵を指定できます。
  4. そのインスタンスに接続されている暗号化された各ディスクの暗号鍵を指定します。
  5. [起動] をクリックしてインスタンスを起動します。

gcloud

インスタンスの起動時に、鍵(--csek-key-file フラグを使用)とディスクの名前を指定します。RSA でラップされた鍵を使用する場合は、gcloud beta コンポーネントを使用します。

gcloud compute instances start [INSTANCE_NAME] \
  --csek-key-file [ENCRYPTION_KEY]

ここで:

  • [INSTANCE_NAME] はインスタンスの名前です。
  • [ENCRYPTION_KEY] は、インスタンスに接続されている永続ディスクの暗号化に使用する暗号鍵です。

API

API では、暗号鍵を使用してインスタンスを起動するには、POST リクエストを作成します。RSA でラップされた鍵を使用する場合は、v1 API ではなくベータ版 API へのリクエストを行います。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/startWithEncryptionKey
{
  "instanceEncryptionKey": {
    "rsaEncryptedKey": "[ENCRYPTION_KEY]"
  },
  "disk": [
    {
       "source": "[DISK_NAME]",
       "diskEncryptionKey": {
         "rsaEncryptedKey": "[ENCRYPTION_KEY]"
       }
    }
  ]
}

ここで:

  • [INSTANCE_NAME] はインスタンスの名前です。
  • [PROJECT_ID] はプロジェクト ID です。
  • [ZONE] は、このインスタンスのゾーンです。
  • [MACHINE_TYPE] は、インスタンスのマシンタイプです。
  • [DISK_NAME] は、顧客指定の暗号鍵を使用して暗号化されている接続されたディスクです。
  • [ENCRYPTION_KEY] は、インスタンスに接続されている永続ディスクの暗号化に使用する暗号鍵です。

インスタンスのリセット

インスタンスのリセットは、リセットボタンを押したり、電源ボタンを長押ししたりしてパソコンをハードリセットするのに似ています。インスタンスをリセットすると、マシンのメモリの内容が強制的にワイプされ、仮想マシンは初期状態にリセットされます。インスタンスは、ゲスト OS のクリーン シャットダウンを実行しません。この処理の間中、インスタンスは RUNNING 状態のままとなります。

インスタンスをリセットしても、インスタンスのプロパティは変更されません。インスタンスのエフェメラル IP アドレス、永続ディスク、マシンタイプなどの情報は保持されます。ただし、メモリに保存されたデータは、そのデータをバックアップしない限りリセットされます。

実行中のインスタンスのリセットは、GCP Console の [リセット] ボタンや、gcloudinstances reset コマンドを使用するか、API で POST リクエストを発行することで実行できます。

Console

  1. Google Cloud Platform Console の [VM インスタンス] ページに移動します。

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

  2. リセットする 1 つ以上のインスタンスの横のチェックボックスをオンにします。
  3. ページの右上にある [リセット] ボタンをクリックして、インスタンスをリセットします。

gcloud

gcloud compute を使用してインスタンスをリセットするには:

gcloud compute instances reset example-instance

API

API で、次の URI に対して POST リクエストを行い、プロジェクト、ゾーン、インスタンス名を適切に置き換えます。

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/reset

クライアント ライブラリを使用してインスタンスをリセットするには、instances().reset メソッドへのリクエストを作成します。

def resetInstance(auth_http, gce_service):
  request = gce_service.instances().reset(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

このメソッドの詳細については、instances().reset のリファレンス ドキュメントをご覧ください。

reset コマンドの実行後、インスタンスが完全にシャットダウンして再起動が始まると、それ以降のゾーン オペレーションの状態は DONE になります。

その他の再起動方法

次の方法でもインスタンスをリセットできます。

  • sudo reboot(Linux のみ) - インスタンス内から呼び出します。メモリをワイプして、元のメタデータ、イメージ、永続ディスクでインスタンスをもう一度初期化します。更新されたバージョンのイメージを選択せず、インスタンスは同じエフェメラル IP アドレスのままです。これはパソコンの再起動に似ています。
  • gcloud compute instances delete の後に gcloud compute instances create - これは完全に削除した後の再起動であり、gcloud compute instances create に渡される情報を使用してインスタンスを初期化します。その後、使用したい新しいイメージやその他のリソースを選択できます。再起動されたインスタンスは、別の IP アドレスになっている可能性があります。この方法では、インスタンスをホストしている物理マシンがスワップされる可能性があります。

次のステップ

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

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

Compute Engine ドキュメント