カスタム VM インスタンスの作成

Compute Engine は、VM インスタンスの作成時に使用できる事前定義されたマシンタイプを提供しています。事前定義されたマシンタイプには、vCPU の数とメモリの容量がプリセットされており、セット価格で課金されます。

事前定義された VM がニーズに合わない場合は、カスタムの仮想ハードウェア設定を使用して VM インスタンスを作成できます。具体的には、カスタム マシンタイプを効果的に利用して、vCPU の数とメモリ容量をカスタマイズした VM インスタンスを作成できます。カスタム マシンタイプは、汎用マシン ファミリーで使用できます。カスタム VM を作成すると、E2、N2、N2D、または N1 マシン ファミリーからカスタム VM をデプロイします。

カスタム VM は、次のようなシナリオに適しています。

  • 事前定義された仮想マシンタイプに適していないワークロード。
  • 処理能力やメモリがさらに必要だが、次のレベルのマシンタイプで提供されるアップグレードをすべては必要としないワークロード。

始める前に

料金

Google は、VM が使用する vCPU の数とメモリの時間に基づいてカスタム VM の請求を行います。事前定義されたマシンタイプの課金方法とは異なります。詳細については、VM の料金をご覧ください。

カスタム VM には、他のインスタンスと同じ 1 分間の最低料金が発生しますが、カスタム マシンタイプの継続利用割引は計算方法が異なります。詳細については、カスタム VM の継続利用割引をご覧ください。

メモリの表記(GB または MB)

Google Cloud のツールとドキュメントでは、マシンタイプ メモリはギガバイト(GB)単位で計算されます。1 GB は 230 バイトです。この測定単位はギビバイト(GiB)とも呼ばれます。メモリを GB から MB に変換する場合、1 GB = 1,024 MB です。

API では、メモリは常に MB 単位で指定します。gcloud コマンドライン ツールを使用する場合、VM の合計メモリを GB 単位または MB 単位で指定できます。ただし、gcloud ツールを使用する際にはメモリ値は整数と想定されているため、浮動小数点値を指定することはできません。たとえば、5.75 GB を表現するには、5.75 GB を MB に変換します。この場合、5.75 GB は 5,888 MB と表現します。

カスタム マシンタイプの VM インスタンスを作成する

VM インスタンスを作成する前に、このマシンタイプの作成に関するカスタム仕様を読んで理解しておいてください。

Console

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

    [インスタンスの作成] に移動

  2. [ゾーン] リストで、この VM をホストするゾーンを選択します。[シリーズ] リストは、選択したゾーンで使用可能なマシンタイプ ファミリーのみが含まれるようにフィルタされます。

  3. [マシンの構成] セクションで、[汎用] を選択します。

    1. [シリーズ] リストで、N1 カスタム マシンタイプの場合は [第 1 世代] の [N1] をクリックし、第 2 世代のカスタム マシンタイプの場合は、[E2] または [N2]、[N2D] をクリックします。
    2. [マシンタイプ] リストから [カスタム] を選択します。
    3. VM インスタンスの vCPU の数とメモリ容量を指定するには、スライダーをドラッグするか、テキスト ボックスに値を入力します。vCPU の数とメモリを変更すると、コンソールに VM の見積もり価格が表示されます。
  4. VM の作成を続行します。

gcloud

カスタム マシンタイプの gcloud コマンドは、マシンタイプ ファミリーごとにわずかに異なります。

N1 マシンタイプの場合は、gcloud compute instances create コマンドを使用して次のいずれかのオプションを指定します。

  • --custom-cpu--custom-memory フラグ。
  • --machine-type=custom-[NUMBER_OF_CPUS]-[NUMBER_OF_MB] フラグ。

たとえば、次のコマンドは、4 個の vCPU と 5 GB の合計メモリを備えた N1 マシンタイプを実行するインスタンスを作成します。

gcloud compute instances create example-instance \
    --custom-cpu=4 --custom-memory=5

N2 マシンタイプの場合は、gcloud compute instances create コマンドを使用して次のいずれかのオプションを指定します。

  • --custom-cpu--custom-memory--custom-vm-type フラグ。
  • --machine-type=n2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB フラグ。

--custom-memory フラグを使用する場合、メモリの合計量を GB または MB で指定します。プロパティは整数にする必要があるため、0.25 GB 単位のメモリを指定する場合は、代わりに値を MB に変換して指定します。

メモリの 2.5 GB などの増分値を指定するには、値を MB に変換して、その値に MB のサフィックスを付けて指定します。次の例では、N2 マシンタイプを実行するインスタンスを作成します。

gcloud compute instances create example-instance \
    --custom-cpu=6 --custom-memory=3072MB --custom-vm-type=n2

または、カスタム マシンタイプは次の形式を使用して、後から指定することもできます。

gcloud compute instances create example-instance \
    --machine-type n2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

以下を置き換えます。

  • NUMBER_OF_CPUS: 目的の CPU 数。
  • NUMBER_OF_MB: メモリ容量(MB)。

例:

gcloud compute instances create example-instance --machine-type=n2-custom-6-3072

N2D または E2 マシンタイプの場合は、gcloud compute instances create コマンドを使用して次のいずれかのオプションを指定します。

  • --custom-cpu--custom-memory--custom-vm-type フラグ。
  • --machine-type=n2d-custom-NUMBER_OF_CPUS-NUMBER_OF_MB フラグ。
  • --machine-type=e2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB フラグ。

E2 共有コア カスタム マシンタイプの場合は、同じ gcloud compute instances create コマンドを使用し、共有コア マシンタイプ microsmall、または medium を指定します。

  • --machine-type=e2-custom SHARED_CORE_MACHINE_SIZE-NUMBER_OF_MB フラグ。

例:

gcloud compute instances create example-instance \
    --machine-type=e2-custom-medium-NUMBER_OF_MB

--custom-memory フラグを使用する場合、メモリの合計量を GB または MB で指定します。プロパティは整数にする必要があります。0.25 GB 単位のメモリを指定する場合は、代わりに値を MB に変換して指定します。

メモリの 2.5 GB などの増分値を指定するには、値を MB に変換して、その値に MB のサフィックスを付けて指定します。次の例では、E2 マシンタイプを実行するインスタンスを作成します。

gcloud compute instances create example-instance \
    --custom-cpu=6 --custom-memory=3072MB --custom-vm-type=e2

または、次の形式を使用してカスタム マシンタイプを指定することもできます。

gcloud compute instances create example-instance \
    --machine-type=e2-custom-NUMBER_OF_CPUS-NUMBER_OF_MB

以下を置き換えます。

  • NUMBER_OF_CPUS: 目的の CPU 数。
  • NUMBER_OF_MB: メモリ容量(MB)。

例:

gcloud compute instances create example-instance --machine-type=e2-custom-6-3072

API

API では、通常どおりインスタンス作成リクエストを作成しますが、machineType 値を指定する場合は次のいずれかの形式を使用します。NUMBER_OF_CPUS を CPU 数に、AMOUNT_OF_MEMORY_MB を必要なメモリ容量にそれぞれ置き換えます。メモリは MB 単位で指定します。

  • N1 マシンタイプの場合、次のように指定します。

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • N2 マシンタイプの場合、次のように指定します。

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • N2D マシンタイプの場合:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • E2 マシンタイプの場合、次のように指定します。

    zones/ZONE/machineTypes/e2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY_MB
    
  • E2 共有コア カスタム マシンタイプの場合は、次のように指定します。

    zones/ZONE/machineTypes/e2-custom-SHARED_CORE_MACHINE_SIZE-AMOUNT_OF_MEMORY_MB
    

たとえば、次の URL は、4 個の vCPU と 5 GB(5,120 MB)のメモリのインスタンスを作成します。

zones/us-central1-f/machineTypes/custom-4-5120

同様に、カスタム マシンタイプのプリエンプティブル インスタンスインスタンスのグループを作成することもできます。

マシンタイプに拡張メモリを追加する

各マシンタイプには、マシンに応じてデフォルトで特定のメモリ量が設定されています。たとえば、カスタム N1 VM を作成する場合は、vCPU あたり最大 6.5 GB のメモリを設定できます。カスタム N2 VM の場合、この数値は vCPU あたり最大 8 GB のメモリに引き上げられます。

一部のワークロードでは、これらのメモリ容量では足りないことがあります。追加料金をご負担いただければ、vCPU ごとにデフォルトの上限を超えるメモリを利用できます。これを拡張メモリと呼びます。

拡張メモリを使用すると、vCPU ごとに制限なしでメモリをマシンタイプに追加できます。マシンのタイプに基づいて、特定の上限まで拡張メモリを追加できます。

  • N1 マシンタイプの場合、VM ごとに合計で最大 624 GB のメモリを追加できます。
  • N2 マシンタイプの場合、VM ごとに合計で最大 768 GB のメモリを追加できます。
  • N2D マシンタイプの場合、VM ごとに合計で最大 768 GB のメモリを追加できます。
  • E2 マシンタイプでは、拡張メモリを使用できません。

さらに多くのメモリが必要な場合は、メガメモリ マシンタイプのいずれかを使用する必要があります。このマシンタイプでは、VM インスタンスごとに合計 1.4 TB のメモリを持つインスタンスを作成できます。

拡張メモリが必要かどうかの判断

ワークロードによっては、最適な成果を得るために必要な vCPU あたりのメモリ容量がデフォルトの量を超えることがあります。MS SQL Server、MongoDB、MemcacheD / Redis といったリレーショナル データベースや NoSQL データベースなど、インメモリの高パフォーマンス分析データベースに基づくワークロードが、このカテゴリに該当します。また、オペレーティング システムやソフトウェア スタックのライセンスは vCPU ベースであるため、事前定義されたマシンタイプで最適な VM メモリ構成を選択することは容易ではありません。拡張メモリを使用すると、VM が必要とするだけのメモリを追加して最高の費用対効果を実現できます。

料金

カスタム マシンタイプをご使用の場合、vCPU あたりのメモリ容量がデフォルトの量までであれば、N1 カスタム マシンタイプの料金または N2 カスタム マシンタイプの料金が適用されます。E2 カスタムマシンと E2 共有コア カスタム マシンタイプは同じ料金体系を共有します。

一方、デフォルトを超える拡張メモリについては、N1 拡張カスタムメモリの料金または N2 拡張カスタムメモリの料金が適用されます。拡張メモリの料金とデフォルト範囲のメモリの料金は異なります。

拡張メモリの料金はリージョンごとに異なります。実行中のインスタンスで拡張メモリを使用した場合も、最小課金時間はその他のインスタンスと同じ 1 分です。また、拡張メモリも継続利用割引の対象になります。

詳細については、カスタム マシンタイプの継続利用割引拡張カスタムメモリの料金をご覧ください。

制限事項

  • 拡張メモリは、カスタム マシンタイプに対してのみ追加できます。事前定義されたマシンタイプはサポートされていません。
  • 追加できる vCPU あたりのメモリの上限はありませんが、各 VM インスタンスに追加できるメモリの容量には上限があります。N1 マシンタイプの場合、最大 624 GB のメモリを追加できます。N2 マシンタイプの場合、最大 768 GB のメモリを追加できます。N2D マシンタイプの場合、最大 768 GB のメモリを追加できます。
  • N2 マシンタイプと N2D マシンタイプは一部のリージョンとゾーンでのみ使用できます。
  • メモリは 256 MB 単位で指定する必要があります。
  • 拡張メモリは、確約利用割引の対象にはなりません。

インスタンスの作成時に拡張メモリを追加する

VM インスタンスの作成時に拡張メモリを追加する手順は次のとおりです。

Console

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

    [インスタンスの作成] に移動

  2. [ゾーン] リストで、この VM をホストするゾーンを選択します。[シリーズ] リストは、選択したゾーンで使用可能なマシンタイプ ファミリーのみが含まれるようにフィルタされます。

  3. [マシンの構成] セクションで、[汎用] を選択します。

    1. [シリーズ] リストで、N1 カスタム マシンタイプの場合は [第 1 世代] の [N1] をクリックし、第 2 世代のカスタム マシンタイプの場合は、[N2] または [N2D] をクリックします。
    2. [マシンタイプ] リストから [カスタム] を選択します。
    3. vCPU の数を指定するには、[コア数] スライダーをドラッグするか、テキスト ボックスに値を入力します。
    4. 拡張メモリを追加するには、[メモリを拡張する] を選択し、次の操作を行います。

      1. VM インスタンスのメモリ量を指定するには、[メモリ] スライダーをドラッグするか、テキスト ボックスに値を入力します。

      vCPU の数とメモリを変更すると、コンソールに VM の見積もり価格が表示されます。

  4. VM の作成を続行します。

gcloud

N1 マシンタイプの場合、gcloud コマンドと instances create サブコマンドを使用します。その際、--custom-extensions フラグを指定して拡張メモリを有効にします。また、--custom- memory パラメータ使用して必要な合計メモリを指定します。

gcloud compute instances create example-instance  \
    --custom-extensions --custom-cpu=2 --custom-memory=15

N2 マシンタイプの場合、instances create サブコマンドとともに gcloud コマンドを使用します。--custom-extensions フラグ、--custom-cpu フラグ、--custom-memory フラグに続けて、--custom-vm-type フラグで N2 マシンタイプを指定します。

gcloud compute instances create example-instance \
    --custom-extensions --custom-cpu=2 --custom-memory=16 \
    --custom-vm-type=n2

N2D マシンタイプの場合、instances create サブコマンドとともに gcloud コマンドを使用します。--custom-extensions フラグ、--custom-cpu フラグ、--custom-memory フラグに続けて、--custom-vm-type フラグで N2D マシンタイプを指定します。

gcloud compute instances create example-instance \
    --custom-extensions --custom-cpu=2 --custom-memory=16 \
    --custom-vm-type=n2d

API

API では、通常どおりインスタンス作成リクエストを作成しますが、machineType 値を指定する場合は次のいずれかの形式を使用します。

  • N1 マシンタイプの場合、次のように指定します。

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • N2 マシンタイプの場合、次のように指定します。

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • N2D マシンタイプの場合:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    

以下を置き換えます。

  • NUMBER_OF_CPUS: vCPU の数。
  • AMOUNT_OF_MEMORY: メモリ(MB)。

たとえば、以下の例では、2 個の vCPU と 20 GB のメモリを持つ N2 マシンタイプを指定しています。

zones/ZONE/machineTypes/n2-custom-2-20480-ext

既存の VM インスタンスに拡張メモリを追加する

既存のインスタンスに対してメモリを追加する場合は、最初にそのインスタンスを停止する必要があります。インスタンスが停止したら、次の手順に沿って VM にメモリを追加します。

Console

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

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

  2. 変更対象の停止した VM を VM リストから選択します。

  3. ページ上部の [編集] をクリックします。

  4. [マシンの構成] で、[汎用] を選択します。

  5. [マシンタイプ] リストから [カスタム] を選択します。

  6. 必要な vCPU の数を選択します。

  7. 拡張メモリを追加するには、[メモリを拡張する] を選択して、必要なメモリ容量を指定します。

  8. 変更を保存します。

gcloud

gcloud コマンドライン ツールで instances set-machine-type サブコマンドを使用し、既存の --custom-memory パラメータとともに --custom-extensions フラグを指定します。

たとえば、example-instance という VM インスタンス(us-central1-b ゾーンに 2 vCPU、13 GB メモリ搭載の N1 マシンタイプを使用)に 2 GB のメモリを追加するには、次のコマンドを使用します。

gcloud compute instances set-machine-type example-instance \
   --zone=us-central1-b --custom-cpu=2 \
   --custom-memory=15 --custom-extensions

API

API では、リクエスト本文に目的のマシンタイプを追加して POST リクエストを setMachineType メソッドに発行します。次のいずれかの形式で指定してください。

  • N1 マシンタイプの場合、次のように指定します。

    zones/ZONE/machineTypes/custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • N2 マシンタイプの場合、次のように指定します。

    zones/ZONE/machineTypes/n2-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    
  • N2D マシンタイプの場合:

    zones/ZONE/machineTypes/n2d-custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY-ext
    

以下を置き換えます。

  • NUMBER_OF_CPUS: vCPU の数。
  • AMOUNT_OF_MEMORY: メモリ(MB)。

たとえば、2 個の vCPU と 15 GB のメモリを備えたマシンタイプを使用する場合、リクエストは次のようになります。

zones/ZONE/machineTypes/custom-2-15360-ext

例:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/setMachineType

{
    machineType: "zones/us-central1-f/machineTypes/custom-2-15360-ext"
}

次のステップ