VM の停止と起動


このページでは、仮想マシン(VM)インスタンスを停止および起動する方法について説明します。Compute Engine は STOPTERMINATE を区別せずに使用します。VM を一時停止して再開する方法については、VM の一時停止と再開をご覧ください。VM の停止と一時停止の詳細については、VM インスタンスのライフサイクルをご覧ください。

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

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

始める前に

制限事項

ローカル SSD がアタッチされている VM を停止して再起動することはできません。ただし、VM でローカル SSD が使用されている場合、Compute Engine はゲスト OS 内からの VM のシャットダウンを防ぐことはできません。ゲスト OS を介してローカル SSD を使用する VM をシャットダウンすると、VM を再起動できず、ローカル SSD 上のデータは失われます。VM を削除する前に、重要なデータをローカル SSD から永続ディスクまたは別の VM への移行を確実に行ってください。

課金

TERMINATED 状態の VM は状態のインスタンスは秒単位の使用量に対して課金されず、リージョナル CPU 割り当てにもカウントされません。ただし、永続ディスク外部 IP アドレスなど、VM に接続しているリソースは、削除されるまで課金対象になります。接続されたリソースに対する課金を停止するには、停止した VM を再構成し、これらのリソースを切断してから削除します。

使用していない VM を停止すれば、アクティブでない VM に対して課金されることはなくなります。準備ができたら、同じ VM プロパティ、メタデータ、リソースを使用して VM を再起動できます。

VM を停止する

VM を停止するには、Google Cloud Consolegcloud ツール、または Compute Engine API を使用します。

Console

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

    [VM インスタンス] に移動

  2. 停止する VM を選択します。VM は複数選択できます。

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

gcloud

VM を停止するには、gcloud compute instances stop コマンドを使用し、停止する VM を 1 つ以上指定します。

gcloud compute instances stop VM_NAME

VM_NAME は、停止する VM の名前に置き換えます。

API

VM を停止するには、instances.stop メソッドを使用して POST リクエストを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop

次のように置き換えます。

  • PROJECT_ID: VM が属しているプロジェクト
  • ZONE: VM インスタンスが配置されているゾーン
  • VM_NAME: 停止する VM の名前

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

VM が TERMINATED 状態になると、VM を再起動するか、VM を削除できます。VM を再起動する予定がない場合は、VM を削除します。

OS から VM を停止する

sudo shutdown -h now または sudo poweroff コマンドを使用して、ゲスト OS から VM を停止することもできます。ローカル SSD を使用する VM を停止するには、次のコマンドを使用します。VM にログインした状態で次のいずれかのコマンドを実行します。

sudo shutdown -h now
sudo poweroff

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

停止された VM を再起動するには、instances().start メソッドを使用します。このメソッドは、TERMINATED 状態で停止している VM を起動します。

start メソッドは TERMINATED 状態の VM を再起動しますが、reset()sudo reboot などのメソッドは、現在動作中の VM に対してのみ機能します。VM が TERMINATED 状態であれば、プリエンプティブル VM を含む、ほぼすべての VM を再起動できます。

Console

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

    [VM インスタンス] に移動

  2. 起動する VM を 1 つ以上選択します。

  3. [開始 / 再開] をクリックします。

gcloud

VM を起動するには、gcloud compute instances start コマンドを使用して、起動する VM を 1 つ以上指定します。

gcloud compute instances start VM_NAME

VM_NAME は、起動する VM の名前に置き換えます。

API

VM を起動するには、instances.start メソッドを使用して POST リクエストを作成します。

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start

次のように置き換えます。

  • PROJECT_ID: VM が属しているプロジェクト
  • ZONE: VM インスタンスが配置されているゾーン
  • VM_NAME: 起動する VM の名前

クライアント ライブラリを使用して VM を再起動するには、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

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

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

Console

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

    [VM インスタンス] に移動

  2. 起動する VM を選択します。

  3. [開始 / 再開] をクリックします。ウィンドウが開くと、その VM にアタッチされているデバイスの暗号鍵を指定できます。

  4. その VM にアタッチされている暗号化された各ディスクの暗号鍵を指定します。

  5. [起動] をクリックして VM を起動します。

gcloud

暗号鍵を使用する VM を起動するには、--csek-key-file フラグを指定して gcloud compute instances start コマンドを使用します。RSA でラップされた鍵を使用している場合は、gcloud beta コマンドを使用します。

gcloud compute instances start VM_NAME \
    --csek-key-file ENCRYPTION_KEY_FILE

次のように置き換えます。

  • VM_NAME: 起動する VM の名前
  • ENCRYPTION_KEY_FILE: 暗号鍵を含む JSON ファイルの相対パス。この鍵は、VM にアタッチされている永続ディスクを暗号化するために使用されます。詳細については、暗号鍵のファイル形式をご覧ください。

API

暗号鍵を持つ VM を開始するには、instances.startWithEncryptionKey メソッドを使用して POST リクエストを作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/startWithEncryptionKey
    {
      "disks": [
        {
           "source": "DISK_URL",
           "diskEncryptionKey": {
             "ENCRYPTION_TYPE": "ENCRYPTION_KEY"
           }
        }
      ]
    }
 

次のように置き換えます。

  • PROJECT_ID: VM が属しているプロジェクト
  • ZONE: VM インスタンスが配置されているゾーン
  • VM_NAME: 起動する VM の名前
  • DISK_URL: 顧客指定の暗号鍵で暗号化され、アタッチされているディスクの完全リソース名に対応するリソース URL
  • ENCRYPTION_TYPE: 使用しているディスク暗号化のタイプ(rawKeykmsKeyNamersaEncryptedKey のいずれか)。rsaEncryptedKey を使用する場合、v1 API の代わりにベータ版 API を使用する必要があります。
  • ENCRYPTION_KEY: VM にアタッチしている永続ディスクの暗号化に使用された暗号鍵。rawKey 型または rsaEncryptedKey 型の鍵は base64 でエンコードする必要があります。RSA 鍵のラッピングの指示に沿って、rsaEncryptedKey 型の鍵を用意します。

VM をリセットする

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

動作中の VM をリセットするには、Google Cloud Consolegcloud ツール、または Compute Engine API を使用します。

Console

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

    [VM インスタンス] に移動

  2. リセットする VM を 1 つ以上選択します。

  3. [リセット] をクリックします。

gcloud

動作中の VM をリセットするには、gcloud compute instances reset コマンドを使用し、リセットする VM を 1 つ以上指定します。

gcloud compute instances reset VM_NAME

VM_NAME は、リセットする VM の名前に置き換えます。

API

VM をリセットするには、instances.reset メソッドを使用して POST リクエストを作成します。

 POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/reset

次のように置き換えます。

  • PROJECT_ID: VM が属しているプロジェクト
  • ZONE: VM インスタンスが配置されているゾーン
  • VM_NAME: リセットする VM の名前

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

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

  print response

reset コマンドを実行すると、VM のシャットダウン後に、後続のゾーン オペレーションDONE を返します。

その他の再起動のメソッド

次の方法で VM をリセットすることもできます。

  • sudo reboot(Linux のみ): VM 内からこのメソッドを呼び出します。このメソッドにより、メモリがワイプされて、元のメタデータ、イメージ、永続ディスクで VM が再初期化されます。このコマンドは、更新されたバージョンのイメージを選択せず、VM は同じエフェメラル IP アドレスを保持します。これは、パソコンの再起動に似ています。
  • Windows VM の再起動: 上の例の sudo reboot と同様に、[スタート] メニューを使用して Windows VM を再起動できます。[スタート] メニューで、[ログオフ] の横にある矢印をクリックして、[再起動] をクリックします。

次のステップ