增加 Managed Lustre 实例的容量

您可以增加 Managed Lustre 实例的存储容量。容量无法降低。

增加实例的容量时,您可以在更新操作进行期间继续使用该实例。

增加容量时的限制

对于具有两种不同步长的性能层级,实例的当前容量决定了其可能的最大容量。

如果实例的容量等于或低于步长阈值,则其大小最多可以增加到阈值本身。无法扩展到超出此限制。

例如,在“每 TiB 250 MBps”层级中,步长变化的阈值为 10,224,000 GiB。任何容量等于或低于此阈值的实例最多只能扩容到 10,224,000 GiB。

计算新容量

您可以将实例的容量更新为性能层级和步长允许的最大值。这些值如下所示:

性能层 最小容量 最大容量 步长
1,000 MBps/TiB 9,000 GiB 10,008,000 GiB (9.5 PiB) 对于不超过 2,556,000 GiB 的存储容量:9,000 GiB
对于更大的存储容量:72,000 GiB
500 MBps/TiB 18,000 GiB 20,016,000 GiB (19.1 PiB) 对于不超过 5,112,000 GiB 的存储容量:18,000 GiB
对于更大的存储容量:144,000 GiB
250 MBps/TiB 36,000 GiB 40,032,000 GiB (38.2 PiB) 对于不超过 10,224,000 GiB 的存储容量:36,000 GiB
对于更大的存储容量:288,000 GiB
每 TiB 125 MBps 72,000 GiB 20,448,000 GiB (19.5 PiB) 72,000 GiB
动态(每 TiB 25 MBps) 472,000 GiB 84,016,000 GiB (80.1 PiB) 472,000 GiB

更新后的容量必须是步长的倍数,且不能超过该步长的最大值。

您的 Google Cloud 项目具有吞吐量和容量配额,这些配额会影响每个可用区中每个虚拟私有云 (VPC) 网络的可用容量。在增加实例容量之前,您可能需要申请额外的吞吐量或容量配额。如需了解详情,请参阅配额和限制。

容量计算器

使用以下计算器,为所选性能层级找到有效的容量。

更新实例容量

您可以使用 Google Cloud 控制台或 Google Cloud CLI 更新实例的容量。

Google Cloud 控制台

  1. 前往 Google Cloud 控制台中的 Managed Lustre 页面。

    前往 Managed Lustre

  2. 点击要更新的实例的实例名称。此时系统会显示实例概览页面。

  3. 点击修改。

  4. 输入新的存储容量值。该值必须小于或等于允许的最大容量,并且必须是步长的倍数。如需了解这些值,请参阅计算新容量。

  5. 点击提交。

gcloud

使用 gcloud lustre instances update 命令增加实例的存储容量:

gcloud lustre instances update INSTANCE_NAME \
  --location=LOCATION \
  --capacity-gib=NEW_CAPACITY

其中:

  • INSTANCE_NAME 是要更新的实例。
  • LOCATION 是实例所在的可用区。
  • NEW_CAPACITY 是此实例的新存储容量,以吉比字节 (GiB) 为单位。该值不能超过允许的最大容量,并且必须是步长的倍数。如需了解这些值,请参阅计算新容量。

REST

如需使用 REST API 更新实例,请向其特定端点发送 PATCH 请求:

PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/instances/INSTANCE_NAME?updateMask=capacityGib
Authorization: Bearer [YOUR_ACCESS_TOKEN]

{
  "capacityGib": NEW_CAPACITY
}

其中,必须指定以下值:

  • PROJECT_ID 是 Google Cloud 项目 ID。
  • ZONE 是实例的 Google Cloud 可用区。
  • INSTANCE_NAME 是要更新的 Managed Lustre 实例的名称。
  • updateMask=capacityGib 指定要更新的字段。只有字段在掩码中时,才会被覆盖。
  • NEW_CAPACITY 是此实例的新存储容量,以吉比字节 (GiB) 为单位。该值不能超过允许的最大容量,并且必须是步长的倍数。如需了解这些值,请参阅计算新容量。

如需了解详情,请参阅 instances.patch API 参考文档。

提交更新请求后,Managed Lustre 会检查您的可用配额。如果配额充足,实例容量会在一段时间内增加,具体取决于大小变化。增加配额可能需要 20 分钟到一个小时或更长时间。

在更新操作期间,您可以继续使用实例。

查看更新状态

您可以通过以下界面查看更新请求的状态。

Google Cloud 控制台

  1. 前往 Google Cloud 控制台中的 Managed Lustre 页面。

    前往 Managed Lustre

  2. 点击列表中的实例名称。系统会显示实例详情页面,其中包含实例更新请求的当前状态。

gcloud

默认情况下,gcloud lustre instances update 命令会等待操作完成,然后再返回 shell 提示:

Request issued for: [my-instance]
Waiting for operation [projects/my-project/locations/us-central1-a/operations/operation-1234567890-123] to complete...

完成后,命令行会显示 Updated instance [my-instance] 以及实例详细信息,包括更新后的容量。

如果您使用 --async 标志运行了更新命令,或者需要从命令行查询更新状态,则可以检索操作详细信息,以查看实例是否已完成更新:

gcloud lustre operations describe OPERATION_ID \
  --location=ZONE

在实例更新期间,响应会显示 done: false 值。 完成后,done 会设置为 true。

例如:

$ gcloud lustre operations describe operation-1234567890-123abc456-789def012-a1b2c3d4 \
    --location=us-central1-a

done: false
metadata:
  '@type': type.googleapis.com/google.cloud.lustre.v1.OperationMetadata
  apiVersion: v1
  createTime: '2025-08-27T18:13:49.771203623Z'
  requestedCancellation: false
  target: projects/my-project/locations/us-central1-a/instances/my-instance
  verb: update
name: projects/my-project/locations/us-central1-a/operations/operation-1234567890-123abc456-789def012-a1b2c3d4

REST

如需查询更新操作的状态,请使用响应中的操作 ID。操作 ID 的格式如下:

  • operation-1234567890123-6127783ad26ea-88913969-02748053

向以下端点发送请求:

GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/operations/OPERATION_ID
Authorization: Bearer

如果成功,响应正文将包含一个 Operation 实例。

增加容量后的性能

Managed Lustre 实例的最大吞吐量由其存储容量和性能层级决定。增加现有实例的存储容量也会增加其最大吞吐量。

在写入新数据之前,可能看不到性能提升。随着新数据写入并在额外存储空间中重新分布,吞吐量性能会逐渐提高。

“设备上已没有剩余空间”错误

当文件系统接近满容量(通常利用率超过 90%)时,您可能会开始收到过早的 No space left on device 或 FILESYSTEM_NO_SPACE_ON_DEVICE (ENOSPC) 错误,即使监控工具指示总可用空间仍然可用也是如此。

分布式文件系统中的多种底层机制都可能导致此行为:

  • OST 不平衡:Lustre 会跨多个对象存储目标 (OST) 对文件数据进行条带化。不过,无论条带化配置如何,某些工作负载模式都可能会填满单个 OST。常见原因包括以附加模式 (O_APPEND) 写入文件或维护大型未关联文件。

  • 扩容后错误:即使在为集群增加容量后,您也可能会继续收到 ENOSPC 错误。虽然扩容会添加新的 OST,但不会自动将现有文件重新平衡到新添加的目标。

  • 客户端空间授予:Compute Engine 客户端会动态预留部分磁盘可用空间,以提高性能。此预留的授权空间会减少可用的物理池,这意味着容量指标可能无法反映分布式客户端已声明的空间。

  • Inode 耗尽:生成数百万个文件的工作负载可能会在达到物理存储空间限制之前耗尽文件系统的可用 inode,从而导致在创建新文件时出现 ENOSPC 错误。

建议的缓解策略:

  • 监控容量并设置提醒:除了监控集群总容量外,还要监控每个 OST 的容量利用率和各个 inode 指标。从已装载的客户端运行 lfs df 命令,以查看每个目标的容量用量;使用 lfs df -i 查看每个目标的 inode 用量;或参阅监控实例和操作,详细了解监控指标。

    设置自动提醒,以便在总容量或单个 OST 利用率超过 80% 时触发(请参阅创建存储容量提醒)。

  • 增加容量:当总容量达到 80-90% 时,请考虑增加 Managed Lustre 实例的容量。您可能需要在扩容前申请更多配额。

  • 重新平衡存储空间:使用 lfs migrate 命令(最好在非阻塞模式 [-n] 下)手动将文件从过度利用的 OST 转移到较空或新添加的 OST。

  • 检查客户端上是否存在未关联的文件:打开的未关联文件是指即使在与文件系统命名空间解除关联后,仍由进程保持打开状态的大型文件。这些孤立文件会保留在磁盘上,占用空间,但在标准目录列表中不可见。在这种情况下,Cloud Monitoring 容量指标和 lfs df 命令报告的空间用量高于 du 或 lfs find。在客户端上使用 lsof 命令,通过查找标记为 (deleted) 的条目来识别这些文件。确定后,终止持有文件句柄的进程或重启应用会释放文件系统空间。