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

このページでは、VM インスタンスの停止方法および起動方法について説明します。インスタンスの停止、リセット、削除の違いを比較する表については、インスタンスのライフサイクルをご覧ください。

不要になったインスタンスは一時的に停止して、後で再起動できます。停止されたインスタンスの永続ディスク、内部 IP、静的外部 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 状態になると、上記のリソースの課金は停止されます。

TERMINATED VM に接続されている他のリソース(永続ディスクや静的外部 IP アドレスなど)に対しては、引き続き課金されることに注意してください。

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

インスタンスの停止

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

Console

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

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

  2. 停止するインスタンスを選択します。インスタンスは複数選択できます。
  3. [停止] をクリックします。

gcloud

instances stop コマンドで、停止するインスタンスを選択します。インスタンスは複数選択できます。

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

API

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

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/instances/example-instance/stop

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

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

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

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

Linux

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

sudo shutdown -h now
sudo poweroff

Windows

Windows OS を基に VM インスタンスを停止するには、[スタート] メニューで [ログオフ] の横にある矢印をクリックし、[シャットダウン] をクリックします。

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

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

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

Console

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

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

  2. 再起動するインスタンスを選択します。
  3. [開始] ボタンをクリックします。

gcloud

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

gcloud compute instances start example-instance

API

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

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/instances/example-instance/start

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

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

      print response

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

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

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

Console

  1. Google Cloud Console で、[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://compute.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"
       }
    }
  ]
}

以下を置き換えます。

  • project-id: 実際のプロジェクト ID です。
  • zone: インスタンスのゾーン
  • instance-name: インスタンスの名前。
  • encryption-key: インスタンスに接続されている永続ディスクの暗号化に使用する暗号鍵。
  • disk-name は、顧客指定の暗号鍵を使用して暗号化されている接続されたディスクです。

インスタンスのリセット

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

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

実行中のインスタンスをリセットするには、Cloud Console の [リセット] ボタンまたは gcloudinstances reset コマンドを使用するか、API で POST リクエストを実行します。

Console

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

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

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

gcloud

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

gcloud compute instances reset example-instance

API

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

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/instances/example-instance/reset

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

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

  print response

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

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

その他の再起動方法

または、次のコマンドを使用してもインスタンスをリセットできます。

  • sudo reboot(Linux のみ): インスタンス内から呼び出します。これにより、メモリがワイプされて、元のメタデータ、イメージ、永続ディスクでインスタンスが再初期化されます。sudo reboot は、更新されたバージョンのイメージを選択せず、インスタンスは同じエフェメラル IP アドレスを保持します。これは、コンピュータの再起動に似ています。
  • gcloud compute instances delete の後に続く gcloud compute instances create: すべてを消去したうえで行われる破壊的再起動です。この場合、gcloud compute instances create に渡された情報を使用してインスタンスが初期化されます。その後、使用する新しいイメージやその他のリソースを選択できます。再起動されたインスタンスには、別の IP アドレスが指定される可能性があります。この方法では、インスタンスをホストしている物理マシンがスワップされる可能性があります。

次のステップ