このドキュメントでは、仮想マシン(VM)インスタンスを手動で停止、再始動、リセット、再起動する方法について説明します。これらの操作は、次のようなシナリオで役立ちます。
VM が不要になった場合や、1 つ以上のプロパティを変更する場合は、VM を停止します。たとえば、VM の名前の変更、マシンタイプの変更、アタッチされているディスクの追加または削除、最小 CPU プラットフォームの変更を行います。VM を停止したら、再起動してワークロードを再開するか、不要になった VM を削除します。
VM が応答しない場合や、ゲスト オペレーティング システム(OS)がクラッシュした場合などに、VM をリセットします。VM のリセット後、ワークロードを再開できます。
たとえば、VM のメモリをワイプして元の起動状態に再初期化する場合、ゲスト OS 内から VM を再起動します。ゲスト OS 内から VM を再起動した後、ワークロードを再開できます。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
Go
このページの Go サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- 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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
Java
このページの Java サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- 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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
Node.js
このページの Node.js サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- 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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
PHP
このページの PHP サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- 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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
Python
このページの Python サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- 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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
必要なロール
VM の停止と再起動に必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)(roles/compute.instanceAdmin.v1
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理に関する記事をご覧ください。
この事前定義ロールには、VM の停止と再起動に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
VM を停止して再起動するには、次の権限が必要です。
-
VM を停止するには: VM に対する
compute.instances.stop
-
ゲスト OS 内から VM を停止するには: インスタンス レベルの公開 SSH 認証鍵を使用する場合、VM に対する
compute.instances.setMetadata
。 -
VM を再起動するには: VM に対する
compute.instances.start
-
暗号鍵を使用する VM を再起動するには: VM に対する
compute.instances.startWithEncryptionKey
-
VM をリセットするには: VM に対する
compute.instances.reset
-
ゲスト OS 内から VM を再起動するには: VM に対する
compute.instances.setMetadata
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
VM を停止する
実行中の VM を停止すると、次のようになります。
Compute Engine は ACPI シャットダウン信号を VM に送信し、ゲスト OS がクリーン シャットダウンを実行するまで短時間待機します。次に、Compute Engine は VM の状態を
STOPPING
に設定し、1 分以内にTERMINATED
に移行します。VM はパワーオン状態にリセットされ、内部 IP、MAC アドレス、構成設定、メタデータを保持します。ただし、VM のメモリ内データと VM の状態は失われます。メモリ内データと VM の状態を保持する必要がある場合は、代わりに VM を一時停止します。
また、VM にリソースをアタッチした場合、それらのリソースは手動で切断するか、VM を削除するまで、接続されたままになります。VM にローカル SSD ディスクがアタッチされている場合、VM を停止すると、デフォルトでローカル SSD ディスク上のすべてのデータが破棄されます。ローカル SSD ディスクにデータを保持するには、--discard-local-ssd=false
フラグを指定して gcloud CLI を使用し、VM を停止する必要があります。詳細については、ローカル SSD を使用した VM を停止するをご覧ください。
VM を停止するには、このドキュメントで説明する方法のいずれかを選択します。
VM を停止した後、再起動または削除できます。VM を再起動する予定がない場合は、削除することをおすすめします。
Google Cloud を介して VM を停止する
複数の VM を一度に停止するには、Google Cloud コンソールを使用します。
コンソール
1 つ以上の VM を停止する手順は次のとおりです。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
停止する VM を選択します。
[停止] をクリックし、[停止] をクリックして確定します。
gcloud
VM を停止するには、gcloud compute instances stop
コマンドを使用します。
gcloud compute instances stop VM_NAME \
--project=PROJECT_ID \
--zone=ZONE
次のように置き換えます。
VM_NAME
: VM の名前。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。
ローカル SSD ディスクを VM にアタッチし、VM の停止後にローカル SSD データを保持する場合は、--discard-local-ssd=false
フラグを使用して gcloud beta compute instances stop
コマンドを使用します。
gcloud beta compute instances stop VM_NAME \
--discard-local-ssd=false \
--project=PROJECT_ID \
--zone=ZONE
Go
Java
Node.js
PHP
Python
REST
VM を停止するには、instances.stop
メソッドに POST
リクエストを送信します。
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
次のように置き換えます。
VM_NAME
: VM の名前。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。
ゲスト OS 内から VM を停止する
VM に接続しているときにゲスト OS 内から VM を停止するには、次のいずれかのタブを選択します。
Linux
Linux VM を停止するには、次のいずれかの方法を選択します。
ACPI シャットダウン シグナルを VM に送信する前に、VM がシャットダウン スクリプトを実行できるようにするには、次のコマンドを実行します。
sudo shutdown -h now
それ以外の場合、強制的にシャットダウンするには、次のコマンドを実行します。
sudo poweroff
Windows
Windows VM を停止するには、次のいずれかの方法を選択します。
ACPI シャットダウン シグナルを VM に送信する前に、VM がシャットダウン スクリプトを実行できるようにするには、次のコマンドを実行します。
shutdown /s
それ以外の場合、強制的にシャットダウンするには、次のコマンドを実行します。
shutdown /f
VM を再起動する
停止した VM を再起動できるのは、VM が TERMINATED
状態の場合のみです。VM を再起動するには、このドキュメントで説明する次のいずれかの方法を選択します。
暗号化されたディスクなしの VM を再起動する
暗号化されたディスクを使用しない停止された VM を再起動します(デフォルト)。複数の VM を一度に再起動するには、Google Cloud コンソールを使用します。
コンソール
1 つ以上の VM を再起動する手順は次のとおりです。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
VM を 1 つ以上選択します。
[
開始 / 再開] をクリックします。
gcloud
VM を再起動するには、gcloud compute instances start
コマンドを使用します。
gcloud compute instances start VM_NAME \
--project=PROJECT_ID \
--zone=ZONE
次のように置き換えます。
VM_NAME
: VM の名前。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。
Go
Java
Node.js
PHP
Python
REST
VM を再起動するには、instances.start
メソッドに POST
リクエストを送信します。
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
次のように置き換えます。
VM_NAME
: 再起動する VM の名前。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。
暗号化されたディスクを使用する VM を再起動する
顧客指定の暗号鍵を使用して VM にアタッチされている永続ディスクを暗号化する停止された VM を再起動できます。
コンソール
暗号化されたディスクを使用する VM を再起動する手順は次のとおりです。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
再起動する VM を選択します。
[
開始 / 再開] をクリックします。この VM にアタッチされている暗号化された各ディスクの暗号鍵を指定し、[開始] をクリックします。
gcloud
暗号化されたディスクを使用する VM を再起動するには、--csek-key-file
フラグを指定して gcloud compute instances start
コマンドを使用します。RSA でラップされた鍵を使用している場合は、gcloud beta compute instances start
コマンドを使用します。
gcloud compute instances start VM_NAME \
--csek-key-file=ENCRYPTION_KEY_FILE \
--project=PROJECT_ID \
--zone=ZONE
次のように置き換えます。
VM_NAME
: VM の名前。ENCRYPTION_KEY_FILE
: 顧客指定の暗号鍵を含む JSON ファイルの相対パス。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。
Go
Java
Node.js
PHP
Python
REST
暗号化されたディスクを使用する 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 が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。VM_NAME
: VM の名前。DISK_URL
: 顧客指定の暗号鍵で暗号化され、アタッチされているディスクの完全リソース名に対応するリソース URL。ENCRYPTION_TYPE
: 使用しているディスク暗号化のタイプ。rawKey
、kmsKeyName
、rsaEncryptedKey
のいずれかです。rsaEncryptedKey
タイプを使用する場合は、v1 API ではなく、ベータ版 API にPOST
リクエストを送信する必要があります。ENCRYPTION_KEY
: VM にアタッチされている永続ディスクの暗号化に使用される暗号鍵。rawKey
鍵またはrsaEncryptedKey
鍵は base64 でエンコードされている必要があります。また、rsaEncryptedKey
鍵を準備するには、RSA 鍵のラッピングをご覧ください。
VM をリセットする
実行中の VM のリセットは、リセットボタンを押すか、電源ボタンを長押ししてパソコンをハードリセットすることに似ています。VM をリセットすると、VM がゲスト OS のクリーン シャットダウンを実行する時間が与えられません。その結果、ディスクのファイルシステムが破損する可能性があります。Google Cloud では、ゲスト OS がクラッシュし、他の方法がない場合にのみ、VM をリセットすることをおすすめします。VM を再初期化してクリーン シャットダウンを行う場合は、このドキュメントの VM を再起動するをご覧ください。
VM をリセットすると、次のようになります。
VM は、元のメタデータ、イメージ、永続ディスクを使用して初期ブート状態に再初期化されます。
データをバックアップしない限り、VM はマシンのメモリの内容を強制的にワイプします。
このプロセスの間、VM の状態は
RUNNING
のままです。
VM をリセットしても、VM のプロパティは変更されません。VM は、エフェメラル IP、静的外部 IP、永続ディスク、ローカル SSD ディスク(存在する場合)、マシンタイプを保持します。
コンソール
1 つ以上の実行中の VM をリセットするには、次の操作を行います。
Google Cloud コンソールで [VM インスタンス] ページに移動します。
リセットする VM を選択します。
[リセット] をクリックし、もう一度 [リセット] をクリックします。
gcloud
実行中の VM をリセットするには、gcloud compute instances reset
コマンドを使用します。
gcloud compute instances reset VM_NAME \
--project=PROJECT_ID \
--zone=ZONE
次のように置き換えます。
VM_NAME
: VM の名前。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。
Go
Java
Node.js
PHP
Python
REST
実行中の VM をリセットするには、instances.reset
メソッドに POST
リクエストを送信します。
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/reset
次のように置き換えます。
VM_NAME
: VM の名前。PROJECT_ID
: VM が配置されているプロジェクトのプロジェクト ID。ZONE
: VM が配置されているゾーン。
VM を再起動する
ゲスト OS 内から VM を再起動すると、次のようになります。
VM は、元のメタデータ、イメージ、永続ディスクを使用して初期ブート状態に再初期化されます。
データをバックアップしない限り、VM はマシンのメモリの内容をワイプします。
このプロセスの間、VM の状態は
RUNNING
のままです。
VM をリセットする場合と比較して、ゲスト OS 内から VM を再起動すると、ACPI シャットダウン シグナルを VM に送信する前に、VM が実行中のすべてのタスクを終了するのを待機します。これにより、VM はクリーン シャットダウンを実行できます。
VM を再起動しても、VM のプロパティは変更されません。VM は、エフェメラル IP、静的外部 IP、永続ディスク、ローカル SSD ディスク(存在する場合)、マシンタイプを保持します。
Linux
Linux VM をリセットするには、次のコマンドを実行してゲスト OS を再起動します。
sudo reboot
Windows
Windows VM をリセットするには、次のコマンドを実行してゲスト OS を再起動します。
shutdown /r /t 0
必要に応じて、VM のシャットダウンと再起動のプロセスをモニタリングするには、Windows ブート マネージャーのメニューを有効にします。
請求
VM が停止して Compute Engine が状態を TERMINATED
に設定すると、CPU 使用量に対する課金は発生しなくなります。ただし、永続ディスクや外部 IP アドレスなど、VM にアタッチされているリソースは、引き続き課金対象です。
VM に接続されているリソースに対する課金を停止するには、次のいずれかを行います。
停止した VM からこれらのリソースを切断します。
VM を削除します。この操作を行うと、VM にアタッチされているリソースも削除されます。
次のステップ
VM が自動的に起動と停止を行うようにスケジュール設定する方法を確認する。
VM のランタイムを制限する方法を学習する。
次のいずれかの方法で、VM が予期せずシャットダウンした後のトラブルシューティングの方法を学習します。
インタラクティブ シリアル コンソールを使用して VM のトラブルシューティングを行います。
VM のマシンタイプを変更する方法を学習する。