仮想マシン(VM)インスタンスが、ローカル SSD に接続されておらず、マネージド インスタンス グループ(MIG)の一部でない場合は、インスタンスを停止した後に、そのマシンタイプを変更できます。
既存のマシンタイプが VM で実行するワークロードに適していない場合は、その VM のマシンタイプを変更します。ワークロードの変化に合わせて、VM のマシンタイプを変更して、vCPU の数とメモリを調整できます。たとえば、セットアップ、開発、テスト中に小さいマシンで VM を起動し、本番環境ワークロードの準備ができたら、より大きいマシンタイプを使用するように VM を変更できます。
ローカル SSD がアタッチされておらず、MIG の一部ではない VM の場合は、次のリソースに影響を与えることなくマシンタイプを変更できます。
- VM の SSH 認証鍵
- VM 構成(VM メタデータなど)
- VM の永続ディスクデータ(インストールされたアプリケーションやアプリケーション データなど)
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
-
Create local authentication credentials for your user account:
gcloud auth application-default login
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
Python
このページの Python サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
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 のマシンタイプを変更するために必要な compute.instances.setMachineType
権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
制限事項
- コンピューティング インスタンスにローカル SSD がある場合、インスタンスのマシンタイプは変更できません。
- コンピューティング インスタンスがエフェメラル外部 IP アドレスを使用する場合、インスタンスのマシンタイプを変更すると、IP アドレスが変更される可能性があります。IP アドレスを維持するには、静的外部 IP アドレスに昇格させます。
- 一部の構成では、コンピューティング インスタンスのマシンタイプを変更できません。
- マシンタイプを VM マシンタイプからベアメタル マシンタイプに変更することはできません。
- マシン ファミリーの最新世代の CPU を使用する場合は、VM 移行オプションを評価するをご覧ください。
- マシンタイプを 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
に適用された継続利用割引が記載されます。
ベスト プラクティス
VM マシンタイプを正常に変更するためのベスト プラクティスは次のとおりです。
スナップショットを使用して、定期的に永続ディスクデータのバックアップを取る。 マシンタイプを変更する前に、永続ディスクデータのスナップショットを取ることを検討してください。新しいマシンタイプで既存の VM 上のデータをサポートできることを確認する場合、永続ディスクのスナップショットを取り、それを使用して新しいマシンタイプで 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 の名前
より小さなマシンタイプに移行する
リソースが多いマシンタイプからリソースが少ないマシンタイプに移行する場合(例: e2-standard-8
マシンタイプから e2-standard-2
マシンタイプへの移行)は、ハードウェアのリソースに関する問題やパフォーマンスの制限が発生する可能性があります。これは、小さいマシンタイプのほうが性能が低いためです。新しいマシンタイプで、現在の VM で実行されているアプリケーションやサービスをサポートできることを確認するか、より小さいマシンタイプで実行できるようサービスやアプリケーションを更新してください。
マシンタイプを変更する前に、サイズ適正化の推奨事項を確認します。Compute Engine の推奨サイズについては、VM インスタンスのマシンタイプに関する推奨事項の適用をご覧ください。
コンピューティング インスタンスを新しいマシンシリーズに移行する
要件を満たしている場合は、マシンタイプを m1-ultramem-160
から m3-ultramem-128
などに変更することで、新しい世代のマシンシリーズのマシンタイプを使用するようにコンピューティング インスタンスを変更できます。
新しい世代のマシンタイプと Arm マシンタイプでは、現在のマシンタイプと同じ機能やインターフェースがサポートされていない場合があります。移行プロセスを開始する前に、新しいインスタンスに移行する準備の要件と考慮事項を確認してください。
コンピューティング インスタンスのマシンタイプを新しいマシンタイプに変更するには、以下のセクションのいずれかの方法を使用します。
新しいコンピューティング インスタンスを作成してワークロードを移行する
この手順では、新しいコンピューティング インスタンスを作成し、ワークロードを新しいインスタンスに移動します。
この手順を実施する方法の詳細については、ワークロードを新しいコンピューティング インスタンスに移動するをご覧ください。
マシンタイプを別のマシンタイプに変更する
この手順では、現在のコンピューティング インスタンスが新しいマシンタイプを使用するように更新できることを確認し、マシンタイプを変更します。
以下のいずれかの条件に該当する場合は、マシンタイプの変更ではなく、ワークロードを新しいコンピューティング インスタンスに移動するの手順を使用する必要があります。
- コンピューティング インスタンスのマシンタイプを x86 マシンタイプから Arm マシンタイプに変更する。
- コンピューティング インスタンスでローカル SSD を使用している。
- VM インスタンスをベアメタル インスタンスに変更する。
- 現在のインスタンスで使用されているオペレーティング システムが、新しいマシンタイプでサポートされていない。
インスタンスのマシンタイプを変更する手順は次のとおりです。
現在のコンピューティング インスタンスが、新しいマシンタイプでサポートされているオペレーティング システムのバージョンを使用していることを確認します。
アプリケーションとプログラムが、gVNIC や NVMe などの別のネットワークやストレージ インターフェースに対応できることを確認します。
- gVNIC を使用するようにインスタンスを更新するには、Google Virtual NIC の使用とキューの割り当てとマシンタイプの変更をご覧ください。
- NVMe インターフェースとドライバを使用するための準備については、インターフェースの選択をご覧ください。
- VM インスタンスで Microsoft Windows を使用している場合は、まず 2022 年 5 月より前に作成された VM の NVME ドライバを置き換える必要があります。これは、既存の VM インスタンスのブートディスクと、VM インスタンスの作成に使用されるスナップショットまたはカスタム イメージの両方に適用されます。
コンピューティング インスタンスのマシンタイプの変更に関するベスト プラクティスを確認します。
マシンタイプの変更で説明されている手順を行ってください。
次のステップ
- マシンタイプに関する推奨事項を確認する。
- マネージド インスタンス グループについて学習する。
- スケーラブルで復元性が高いアプリのためのパターンを学習する。