仮想マシン(VM)インスタンスが、ローカル SSD に接続されておらず、マネージド インスタンス グループ(MIG)の一部でない場合は、インスタンスを停止した後に、そのマシンタイプを変更できます。
既存のマシンタイプが VM で実行するワークロードに適していない場合は、その VM のマシンタイプを変更します。たとえば、セットアップ、開発、テスト中に小さいマシンタイプで VM を起動し、本番環境ワークロードの準備ができたら、より大きいマシンタイプを使用するように VM を変更できます。
この操作は、次の状況で行うことができます。
- 同じマシンシリーズ内で、vCPU またはメモリの数が異なる類似のマシンタイプに変更する。次のようにします。
n2-highcpu-4
をn2-standard-4
に変更できます。c3d-standard-30
をc3d-highmem-30
に変更できます。
- マシンタイプを変更して別のマシンシリーズを使用する。これは、T2A マシンシリーズと A2 マシンシリーズを除く、第 1 世代と第 2 世代のマシンシリーズでのみサポートされています。たとえば、次のようにします。
n2-standard-4
をc2-standard-8
に変更できます。n1-highmem-4
をn2d-standard-16
に変更できます。
第 1 世代または第 2 世代のマシンシリーズ(N1、N2、M1 など)を使用する VM のマシンタイプを、第 3 世代以降のマシンシリーズ(M3、C3、N4 など)のマシンタイプに変更する場合は、ワークロードを新しい Compute インスタンスに移動するに記載されている手順を実施する必要があります。
次のリソースに影響を与えることなくマシンタイプを変更できます。
- VM の SSH 認証鍵
- VM 構成(VM メタデータなど)
- 接続された Persistent Disk または Hyperdisk 上のデータ(インストールされたアプリケーションやアプリケーション データなど)
MIG 内の VM のマシンタイプを変更するには、MIG で VM 構成の更新を自動的に適用するをご覧ください。
始める前に
- VM を停止する方法を理解しておきます。
- マシンタイプについて理解しておきます。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
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 のマシンタイプを変更するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) - サービス アカウントとして実行できる VM に接続するには: サービス アカウント ユーザー(v1)(
roles/iam.serviceAccountUser
)
ロールの付与の詳細については、アクセス権の管理をご覧ください。
これらの事前定義ロールには、VM のマシンタイプを変更するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
VM のマシンタイプを変更するには、次の権限が必要です。
-
VM に対する
compute.instances.setMachineType
-
VM に対する
compute.instances.start
-
VM に対する
compute.instances.stop
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
制限事項
- コンピューティング インスタンスに 1 つ以上のローカル SSD がある場合、インスタンスのマシンタイプは変更できません。
- コンピューティング インスタンスがエフェメラル外部 IP アドレスを使用する場合、インスタンスのマシンタイプを変更すると、IP アドレスが変更される可能性があります。IP アドレスを維持するには、マシンタイプを変更する前に、静的外部 IP アドレスにプロモートします。
- 一部の構成では、コンピューティング インスタンスのマシンタイプを変更できません。
- ベアメタル インスタンスのマシンタイプは変更できません。
- マシンタイプを第 1 世代または第 2 世代のマシンシリーズから第 3 世代以降のマシンシリーズのマシンタイプに変更する場合は、この手順は実施できません。代わりに、ワークロードを新しいコンピューティング インスタンスに移動するの説明に従ってください。
- マシンタイプを Arm マシンタイプに変更する場合は、この手順は実施できません。代わりに、ワークロードを新しいコンピューティング インスタンスに移動するの説明に従ってください。
- このドキュメントの手順では、G2 アクセラレータ最適化マシンタイプのマシンタイプを変更できます。他のアクセラレータ最適化マシンタイプについては、アクセラレータ最適化 VM を変更するをご覧ください。
料金への影響
請求される料金はマシンタイプごとに異なるため、マシンタイプを変更する際は、料金への影響を確認してください。たとえば、e2-standard-2
マシンタイプの費用は e2-micro
マシンタイプより高くなります。
マシンタイプを変更すると、VM の継続利用割引に影響する可能性があります。継続利用割引は、同じリージョンの異なるカテゴリごとに個別に計算されます。マシンタイプを変更して新しいマシンタイプが別のカテゴリになった場合、以降の VM の実行時間は新しいカテゴリの継続利用割引にカウントされます。
たとえば、n2-standard-2
マシンタイプの VM が半月稼働しているとします。このマシンタイプを m1-ultramem-40
に変更することにします。変更すると、Compute Engine はメモリ最適化 vCPU とメモリのカテゴリの継続利用割引を適用して、VM の実行時間を計測するようになります。
請求書には、マシンタイプの変更を行う前から n2-standard-2
マシンタイプに適用されている継続利用割引と、VM が月の残り 25% 以上の間 m1-ultramem-40
で実行されていれば、別途 m1-ultramem-40
に適用された継続利用割引が記載されます。
より小さなマシンタイプに移行する
リソースが多いマシンタイプからリソースが少ないマシンタイプに移行する場合(例: e2-standard-8
マシンタイプから e2-standard-2
マシンタイプへの移行)は、ハードウェアのリソースに関する問題やパフォーマンスの制限が発生する可能性があります。これは、小さいマシンタイプのほうが性能が低いためです。新しいマシンタイプで、現在の VM で実行されているアプリケーションやサービスをサポートできることを確認するか、より小さいマシンタイプで実行できるようサービスやアプリケーションを更新してください。
マシンタイプを変更する前に、サイズ適正化の推奨事項を確認します。Compute Engine の推奨サイズについては、VM インスタンスのマシンタイプに関する推奨事項の適用をご覧ください。
ベスト プラクティス
VM マシンタイプを正常に変更するためのベスト プラクティスは次のとおりです。
スナップショットを使用して、Persistent Disk データを定期的にバックアップする。マシンタイプを変更する前に、Persistent Disk データのスナップショットを作成することを検討してください。新しいマシンタイプで既存の VM 上のデータをサポートできることを確認する場合、Persistent Disk のスナップショットを作成します。このスナップショットを使用して新しいマシンタイプで 2 番目の VM を起動し、VM が正常に起動することを確認します。
/etc/fstab
ファイルにディスクを追加する。追加のディスクを VM にアタッチする場合は、それらのディスクを/etc/fstab
ファイルに追加して、VM の再起動時に自動的にマウントされるようにします。マシンタイプを変更する前に予約を作成する。リソースの可用性に関連するエラーを回避するには、必要なリソースが使用できるときに新しいマシンタイプの Compute Engine の予約を作成して、ゾーン内でそのリソースを確保します。予約を使用すると、必要なときにリソースを確実に利用できます。
プロジェクトを作成するには、次の手順を完了します。
計画された VM と同じプロパティを使用して予約を作成します(または既存の予約を特定します)。予約の VM 数は、変更する VM の数以上にする必要があります。他の VM がこの予約を使用できないようにするには、
specificReservationRequired
オプションを使用します。計画された VM が予約を使用可能であることを確認します。
- VM に正しい予約アフィニティがあることを確認します。
- VM を変更する直前に、予約に十分な容量があることを確認します。
マシンタイプを変更する
マシンタイプを変更できるのは停止した VM だけです。VM が停止しているとみなされるのは、VM がTERMINATED
状態にあるときのみです。実行中の VM のマシンタイプは変更できません。
マシンタイプを最新世代にアップグレードする場合は、VM 移行オプションを評価するを確認してから続行してください。
コンソール
Google Cloud コンソールで [VM インスタンス] ページに移動します。
[名前] 列で、マシンタイプを変更する VM の名前をクリックします。
[VM インスタンスの詳細] ページで、次の手順を行います。
- VM が実行されている場合は、ページ上部のメニューで [停止] を選択して VM を停止します。
- VM を編集するには、[ 編集] をクリックします。
[マシンの構成] セクションで、使用するマシンタイプを選択するか、カスタム マシンタイプを作成します。
変更を保存するには、[保存] をクリックします。
VM を再起動します。
gcloud
gcloud compute instances stop
コマンドを使用して VM を停止します。gcloud compute instances stop VM_NAME
VM_NAME
は、変更するマシンタイプを含む VM に置き換えます。マシンタイプを変更するには、
gcloud compute instances set-machine-type
コマンドを使用します。gcloud compute instances set-machine-type VM_NAME \ --machine-type NEW_MACHINE_TYPE
NEW_MACHINE_TYPE
は、VM の新しいマシンタイプに置き換えます。マシンタイプは次のいずれかになります。-
例:
e2-standard-2
-
たとえば、4 個の vCPU と 2 GB のメモリを持つカスタム マシンタイプを設定するには、
--machine-type e2-custom-4-2048
を指定します。
-
gcloud compute instances start
コマンドを使用して VM を開始します。gcloud compute instances start VM_NAME
VM_NAME
は、変更した VM の名前に置き換えます。
Java
Java
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Java の設定手順に沿って操作します。詳細については、Compute Engine Java API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
Python
このサンプルを試す前に、Compute Engine クイックスタート: クライアント ライブラリの使用に記載されている Python の設定手順に沿って操作します。詳細については、Compute Engine Python API リファレンス ドキュメントをご覧ください。
Compute Engine に対して認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
REST
instances.stop
メソッドを使用して VM を停止します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
次のように置き換えます。
PROJECT_ID
: プロジェクト IDZONE
: VM を含むゾーンVM_NAME
: 変更するマシンタイプを含む VM。
マシンタイプを変更するには、次のように
instances.setMachineType
メソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMachineType
リクエストの本文で、更新した
machineType
を指定します。{ machineType: "zones/MACHINE_TYPE_ZONE/machineTypes/NEW_MACHINE_TYPE" }
次のように置き換えます。
MACHINE_TYPE_ZONE
: マシンタイプを含むゾーンNEW_MACHINE_TYPE
: VM の新しいマシンタイプマシンタイプは次のいずれかになります。
-
例:
e2-standard-2
-
たとえば、4 個の vCPU と 2 GB のメモリを持つカスタム マシンタイプを設定するには、
--machine-type e2-custom-4-2048
を指定します。
-
instances.start
メソッドを使用して VM を開始します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
次のように置き換えます。
PROJECT_ID
: プロジェクト IDZONE
: VM を含むゾーンVM_NAME
: 変更した VM の名前
次のステップ
- マシンタイプに関する推奨事項を確認する。
- マネージド インスタンス グループについて学習する。
- スケーラブルで復元性が高いアプリのためのパターンを学習する。
- 第 3 世代以降のマシンシリーズを使用するように第 1 世代または第 2 世代の VM を更新する。ワークロードを新しいコンピューティング インスタンスに移動するをご覧ください。