创建自定义机器类型虚拟机实例

Compute Engine 提供了预定义机器类型,可供您在创建实例时使用。预定义机器类型已预设 vCPU 数量和内存量,按照所有价格页面中所述的固定价格计费。

如果预定义机器类型不能满足您的需求,您可以使用自定义虚拟化硬件设置创建实例。具体来说,您可以创建具有自定义 vCPU 数量和内存量的实例,实际上就是使用自定义机器类型。自定义机器类型仅适用于通用机器类型;也就是说,在创建自定义机器类型时,您实际上是基于 E2、N2、N2D 或 N1 机器类型系列部署自定义机器类型。

自定义机器类型非常适合以下场景:

  • 工作负载不适合您可以使用的预定义机器类型。
  • 工作负载需要更高的处理能力或更多的内存,但又不需要下一档更高级别机器类型所提供的全面升级。

准备工作

规范

常规

  • 自定义机器类型的总内存必须是 256 MB 的倍数。例如,系统不支持 6.9 GB,但支持 6.75 GB 和 7 GB。

  • 运行自定义机器类型的实例需遵循与运行预定义机器类型的实例相同的永久性磁盘容量限制

  • 自定义机器类型需遵循与通用机器类型相同的永久性磁盘限制。 目前,每个实例每种机器类型的永久性磁盘总大小上限为 257 TB,永久性磁盘数上限为 128 个。

E2 自定义机器类型

  • E2 机器类型支持采用 Intel 或 AMD EPYC Rome 处理器的预定义平台。您可以创建配备了 2 到 32(2 的倍数)个 vCPU 的 E2 自定义机器类型。可接受的 vCPU 的最小数量为 2。

  • 默认情况下,您可以为自定义机器类型的每个 vCPU 选择的内存取决于机器类型系列。对于 E2 机器类型,请为每个 vCPU 选择 0.5 GB - 8 GB(含边界值)的内存。

无效机器类型的示例

  • 1 个 vCPU,1024 MB 内存。该配置无效,因为 vCPU 数量太少。 E2 自定义机器类型至少需要 2 个 vCPU。
  • 32 个 vCPU,1 GB 总内存。vCPU 与内存的比率低于每个 vCPU 0.5 GB,因此无效。

有效机器类型的示例

  • 32 个 vCPU,4 GB 总内存。vCPU 总数为偶数,且总内存为 256 MB 的倍数,因此有效。
  • 2 个 vCPU,8 GB 总内存。vCPU 数量为 2 个,满足最低要求,并且总内存是 256 MB 的倍数,此外,每个 vCPU 的内存量也都介于 0.5 GB 到 8 GB 的可接受范围之间。

N2 自定义机器类型

  • 对于仅支持 Cascade Lake 平台的 N2 机器类型,您可以创建配备 2 到 80 个 vCPU 的自定义机器类型。您可以创建配备了 2 到 30(2 的倍数)个 vCPU 的 N2 自定义机器类型。对于配备了 32 个和更多 vCPU 的机器类型,您必须选择属于 4 的倍数的 vCPU 数量。举例来说,32、36、40 这样的 vCPU 数量都是有效的,而 38 则是无效的。可接受的 vCPU 的最小数量为 2。

  • 默认情况下,您可以为自定义机器类型的每个 vCPU 选择的内存取决于机器类型系列。对于 N2 机器类型,请为每个 vCPU 选择 0.5 GB 到 8.0 GB(含 0.5 GB 和 8.0 GB)的内存。您可以通过启用扩展内存来选择更大的内存量。

  • N2 机器仅在部分地区提供。如需了解详情,请阅读区域和地区页面。

无效机器类型的示例

  • 2 个 vCPU,总内存为 0.8 GB。该配置无效,因为总内存低于 N2 机器类型的下限 (每个 vCPU 0.5 GB)。
  • 34 个 vCPU,34 GB 总内存。该配置无效,因为 vCPU 的总数不能被 4 整除。
  • 1 个 vCPU,1024 MB 内存。该配置无效,因为 vCPU 数量太少。 N2 自定义机器类型至少需要 2 个 vCPU。

有效机器类型的示例

  • 36 个 vCPU,18 GB 总内存。该配置有效,因为 vCPU 总数为偶数且总内存为 256 MB 的倍数。此外,每个 vCPU 的内存量都是 0.5 GB,满足最低内存要求。由于 vCPU 的数量大于 32,因此该数量必须能够被 4 整除。
  • 2 个 vCPU,7 GB 总内存。vCPU 数量为 2 个,满足最低要求,并且总内存是 256 MB 的倍数,此外,每个 vCPU 的内存量也都介于 0.5 GB 到 8 GB 的可接受范围之间。

N2D 自定义机器类型

  • 自定义机器类型允许的 vCPU 数量上限取决于您选择的机器类型系列。对于支持 AMD EPYC Rome 平台的 N2D 机器类型,您可以部署配备了 2 到 96 个 vCPU 的自定义机器类型。

  • 您可以创建配备了 2、4、8 或 16 个 vCPU 的 N2D 自定义机器。超过 16 个后,您可以将 vCPU 的数量依次递增 16 个,最多 96 个 vCPU。可接受的 vCPU 的最小数量为 2。

  • 默认情况下,您可以为自定义机器类型的每个 vCPU 选择的内存取决于机器类型系列。对于 N2D 机器类型,请为每个 vCPU 选择 0.5 GB 到 8.0 GB(含 0.5 GB 和 8.0 GB)的内存。您可以通过启用扩展内存来选择更大的内存量。

  • N2D 机器仅在部分地区提供。如需了解详情,请阅读区域和地区页面。

无效机器类型的示例

  • 2 个 vCPU,0.4 GB 总内存。该配置无效,因为总内存低于 N2D 机器类型的下限 (每个 vCPU 0.5 GB)。
  • 34 个 vCPU,34 GB 总内存。该配置无效,因为 vCPU 的总数不能被 16 整除。
  • 1 个 vCPU,1024 MB 内存。该配置无效,因为 vCPU 数量太少。 N2D 自定义机器类型至少需要 2 个 vCPU。

有效机器类型的示例

  • 32 个 vCPU,16 GB 总内存。该配置有效,因为 vCPU 总数为偶数且总内存为 256 MB 的倍数。此外,每个 vCPU 的内存量都是 0.5 GB,满足最低内存要求。由于 vCPU 的数量大于 8,因此该数量必须能够被 16 整除。
  • 2 个 vCPU,7 GB 总内存。vCPU 数量为 2 个,满足最低要求,并且总内存是 256 MB 的倍数,此外,每个 vCPU 的内存量也都介于 0.5 GB 到 8 GB 的可接受范围之间。

N1 自定义机器类型

  • 自定义机器类型可以使用的 vCPU 数量上限是由您选择的机器类型系列决定的。对于 N1 机器类型:

    • 如果部署在支持 Skylake CPU 平台的地区,则可以创建配备最多 96 个 vCPU 的自定义机器类型。
    • 如果部署在支持 Broadwell、Haswell 或 Ivy Bridge CPU 平台的地区,则可以部署配备最多 64 个 vCPU 的自定义机器类型。

    如需查看适用于每个区域的平台,请阅读地区和区域表。

  • 您可以创建配备了 2 个或更多 vCPU 的 N1 机器类型。vCPU 数量必须为 2 的倍数,最多 96 个 vCPU(对于 Skylake 平台)或最多 64 个 vCPU(对于 Broadwell、Haswell 或 Ivy Bridge CPU 平台)。

  • 默认情况下,您可以为自定义机器类型的每个 vCPU 选择的内存取决于机器类型系列。对于 N1 机器类型,请为每个 vCPU 选择 0.9 GB 到 6.5 GB(含 0.9 GB 和 6.5 GB)的内存。您可以通过启用扩展内存来选择更大的内存量。

无效机器类型的示例

  • 1 个 vCPU,0.2 GB 总内存。由于总内存低于 N1 机器类型的下限 (0.9 GB),因此无效。
  • 1 个 vCPU,0.9 GB 总内存。由于总内存必须是 256 MB 的倍数,因此无效。如果是 1 个 vCPU,请至少使用 1024 MB 的内存。

有效机器类型的示例

  • 32 个 vCPU,29 GB 总内存。vCPU 的总数是偶数,且总内存是 256 MB 的倍数,平均每个 vCPU 的内存量是 0.9 GB,满足最低要求,因此有效。
  • 1 个 vCPU,1 GB 总内存。vCPU 数量满足最低要求,并且总内存是 256 MB 的倍数,平均每个 vCPU 的内存介于 0.9 GB 到 6.5 GB 的可接受范围之间,因此有效。

价格

Google 根据实例使用的 vCPU 数量和内存时长收取自定义机器类型的使用费用。这与预定义机器类型的计费方式不同,因此我们建议您在创建自定义机器类型之前先查看价格页面。 例如,如需查看自定义 E2 机器类型的价格,请参阅 E2 自定义 vCPU 和内存

运行自定义机器类型的实例与其他实例一样,也按 1 分钟收取起步费,但自定义机器类型的持续使用折扣的计算方式有所不同。如需了解详情,请参阅针对自定义机器类型的持续使用折扣

以 GB 或 MB 表示内存

在 Google Cloud 工具和文档中,机器类型的内存以千兆字节 (GB) 为单位计算,其中 1 GB 为 230 个字节。此计量单位也称为吉比字节 (GiB)。将内存从 GB 转换成 MB 时,1 GB = 1024 MB。

在 API 中,内存必须以 MB 为单位提供。如果您使用 gcloud 命令行工具,可以 GB 或 MB 为单位提供实例的总内存。但是,gcloud 工具要求内存值必须为整数,因此您不能提供浮点值。例如,如需表示 5.75 GB 内存,请将其转换为以 MB 为单位的数值。在此例中,5.75 GB 应表示为 5888 MB。

创建自定义机器类型实例

在创建实例之前,请务必阅读并了解适用于创建自定义机器类型的规范

控制台

  1. 在 Google Cloud Console 中,转到创建实例页面。

    转到“创建实例”页面

  2. 地区下,选择您要在其中托管此实例的地区。 此操作将过滤机器类型列表,使其仅列出该地区提供的那些类型。
  3. 机器配置下,选择通用
  4. 机器系列列表中,在第一代下方选择 N1(针对 N1 自定义机器类型)或 E2N2N2D(针对第二代自定义机器类型)。
  5. 机器类型列表中,选择自定义
  6. 拖动滑块,为实例选择 vCPU 数量和内存量。在您更改 vCPU 数量和内存量时,控制台会显示实例的预估费用。
  7. 保存您的更改,并继续执行创建过程的其余步骤。

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 beta compute instances create 命令并添加以下选项之一:

  • --custom-cpu--custom-memory--custom-vm-type 标志。
  • --machine-type=e2-custom-number-of-cpus-number-of-mb 标志。
  • --machine-type=n2d-custom-number-of-cpus-number-of-mb 标志。

如果使用 --custom-memory 标志,请以 GB 或 MB 为单位指定总内存量。该属性必须是整数,因此,如果要指定 0.25 GB 的内存增量,请将该值转换为以 MB 为单位的数值。

如需指定增量值(如 2.5 GB 内存),请将该值转换为以 MB 为单位的数值,并在提供该值时加上 MB 后缀。下面的示例将创建一个运行 E2 机器类型的实例:

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

或者,您可以使用以下格式指定自定义机器类型:

gcloud beta 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-cpusamount-of-memory-mb 分别替换为您所需的 CPU 数量和内存量。请以 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
    

例如,以下网址将创建配备了 4 个 vCPU 和 5 GB (5120 MB) 内存的实例:

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

您还可以使用上述格式指定自定义机器类型,以创建运行自定义机器类型的抢占式实例,或者创建运行自定义机器类型的实例组

为机器类型添加扩展内存

默认情况下,每种机器类型可以配备的内存量有上限,具体取决于机器类型。例如,如果您创建的是运行 N1 自定义机器类型的虚拟机,则该虚拟机的每个 vCPU 最多可以配备 6.5 GB 的内存。对于 N2 自定义机器类型,虚拟机的每个 vCPU 最多可以配备 8 GB 的内存。

对于某些工作负载,此内存量可能会不够用。您可以支付额外的费用,为每个 vCPU 提供超出默认限制的更多内存。这称为扩展内存。

借助扩展内存,您可以向机器类型添加内存,而不受每个 vCPU 的内存限制。您可以添加高达相应机器类型特定限制的扩展内存:

  • 对于 N1 机器类型,您最多可以为每个虚拟机添加到 624 GB 的总内存。
  • 对于 N2 机器类型,您最多可以为每个虚拟机添加 640 GB 的总内存。
  • 对于 N2D 机器类型,您最多可以为每个虚拟机添加 768 GB 的总内存。
  • 扩展内存不适用于 E2 机器类型。

如果您还需要更多的内存,则必须使用一种特大内存机器类型,该类型让您可以创建具有 1.4 TB 总内存的虚拟机实例。

确定您是否需要扩展内存

某些工作负载需要超出每个 vCPU 的默认容量的内存,才能实现最佳效果。这类工作负载包括基于内存中分析、高性能数据库(包括诸如 MS SQL Server、MongoDB、MemcacheD/Redis 等关系型数据库和 NoSQL 数据库)的工作负载。如果操作系统和软件堆栈的许可基于 vCPU 数量,也会使在预定义机器类型范围内选择最佳虚拟机内存配置更加困难。使用扩展内存,您可以添加所需容量的内存,使您的虚拟机实例实现最优价格和最佳性能。

价格

使用自定义机器类型时,如果每个 vCPU 的内存量不超过默认数量,则按照 N1 自定义机器类型价格N2 自定义机器类型价格收费。对于超出默认数量的内存量,Compute Engine 会按照 N1 扩展自定义内存价格N2 扩展自定义内存价格收取扩展内存费用。请注意,扩展内存的价格不同于低于默认阈值的内存价格。

扩展内存的价格会因区域而异。使用扩展内存运行的实例与其他实例一样,也按 1 分钟收取起步费。扩展内存也符合持续使用折扣的条件。如需了解详情,请参阅自定义机器类型的持续使用折扣

如需了解价格信息,请参阅扩展自定义内存价格

限制

  • 您只能向自定义机器类型添加扩展内存,不能向预定义机器类型添加。
  • 您可以为每个 vCPU 添加的内存不受限制,但您可以向每个虚拟机实例添加的内存量存在上限。对于 N1 机器类型,您可以添加高达 624 GB 的内存。对于 N2 机器类型,您可以添加高达 640 GB 的内存。对于 N2D 机器类型,您可以添加高达 768 GB 的内存。
  • N2 和 N2D 机器类型仅在部分区域和地区中提供。
  • 您必须以 256 MB 为增量指定内存。
  • 扩展内存不符合承诺使用折扣的条件。

在创建实例期间添加扩展内存

如需创建使用扩展内存的虚拟机实例,请按照以下说明进行操作。

控制台

  1. 在 Google Cloud Console 中,转到创建实例页面。

    转到“创建实例”页面

  2. 地区下,选择您要在其中托管此实例的地区。此操作也将过滤机器类型列表,使其仅列出该地区提供的类型。
  3. 机器配置下,选择通用
  4. 系列下拉列表中,选择第一代(针对 N1 自定义机器类型)或第二代(针对 N2 或 N2D 自定义机器类型)。
  5. 机器类型下拉列表中,选择自定义
  6. 选择您所需的内存量。如需添加扩展内存,请选中扩展内存选项。可选内存的范围将会扩大。
  7. 继续进行实例创建过程。

gcloud

对于 N1 机器类型,请使用 gcloud 命令和 instances create 子命令,并在其后指定 --custom-extensions 标志以启用扩展内存。然后使用 --custom- memory 参数指定所需的总内存。

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

对于 N2 机器类型,请使用 gcloud 命令和 instances create 子命令。然后依次设置 --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 机器类型,请使用 gcloud beta 命令和 instances create 子命令。然后依次设置 --custom-extensions--custom-cpu--custom-memory--custom-vm-type 标志,以指定 N2D 机器类型:

gcloud beta 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

向现有的虚拟机实例添加扩展内存

如需向现有实例添加更多内存,您必须先停止实例。 实例停止后,请按照以下说明向虚拟机添加更多内存。

控制台

  1. 在 Google Cloud Console 中,转到虚拟机实例页面。

    转到“虚拟机实例”页面

  2. 从实例列表中选择您要修改的已停止实例。
  3. 点击页面顶部的修改
  4. 机器配置下,选择通用
  5. 机器类型列表中,选择自定义
  6. 选择所需的 vCPU 数量。
  7. 选择您所需的内存量。如需添加扩展内存,请选中扩展内存选项。可选内存的范围将会扩大。
  8. 保存更改。

gcloud

gcloud 命令行工具中,使用 instances set-machine-type 子命令,并在其后指定 --custom-extensions 标志和现有 --custom-memory 参数。

例如,如需向名为 example-instance 的实例添加 2 GB 内存(该实例目前在 us-central1-b 地区运行配备了 2 个 vCPU 和 13 GB 内存的 N1 机器类型),请使用以下命令:

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

API

API 中,向 setMachineType 方法发出 POST 请求,并在请求正文中指定所需的机器类型。请使用以下格式之一:

  • 对于 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"
}

后续步骤