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

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

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

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

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

ゲスト OS とアプリケーションの状態を維持する必要がある場合は、代わりにインスタンスを一時停止します。

始める前に

制限事項

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

ローカル SSD

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

課金

TERMINATED 状態のインスタンスは秒単位の使用量に対して課金されず、リージョナル CPU 割り当てにもカウントされないため、使用していないインスタンスを停止すれば、アクティブでないインスタンスに対して課金されることがなくなります。準備ができたら、同じインスタンスのプロパティ、メタデータ、リソースを使用して、再び同じインスタンスを起動できます。

TERMINATED 状態のインスタンスは、秒単位で課金されることはありませんが、静的 IP や永続ディスクなどの仮想マシンにアタッチされたリソースは、削除されるまで課金対象となります

インスタンスの停止

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

Console

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

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

  2. 停止するインスタンスを選択します。インスタンスは複数選択できます。

  3. [停止] をクリックします。

gcloud

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

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 からのインスタンスの停止

必要に応じて、sudo shutdown -h now または sudo poweroff コマンドを使用して、ゲスト オペレーティング システムからインスタンスを停止できます。仮想マシンにログインした状態で、次のいずれかのコマンドを実行します。

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

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

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

start メソッドは TERMINATED 状態のインスタンスを再起動しますが、reset()sudo reboot などのメソッドは、現在実行中のインスタンスでのみ動作します。TERMINATED 状態であればほぼすべてのインスタンスを再起動できます。

Console

  1. Google Cloud 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. 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://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"
       }
    }
  ]
}

以下を置き換えます。

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

インスタンスのリセット

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

実行中のインスタンスをリセットするには、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 リクエストを行い、プロジェクト、ゾーン、インスタンス名を適切に置き換えます。

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")

  print response

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

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

その他の再起動方法を使用する

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

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

次のステップ