Skip to Content
GPU 接口文档磁盘与云存储云存储Pro接口概览与调用流程

云存储Pro(CFS)接口

云存储Pro(CFS)为容器实例提供独立的文件存储。同一账号、同一可用区的多个容器实例可以挂载同一份 CFS;卸载只是解除实例与存储的挂载关系,不会删除 CFS。

使用前须知

  • 当前创建、扩容、删除和询价能力面向 *容器可用区,普通云主机可用区不支持这套 CFS 操作。可通过 DescribeCompShareSupportZone 查询可用区并查看 IsPod。
  • 每个账号在同一可用区最多有 1 份未删除的 CFS,这个限制不会因为切换项目而增加。挂载时使用实例实际所在可用区的 CFS,不支持跨可用区挂载。
  • 容量为 50~2048 GiB(最大 2 TiB),支持扩容,不支持缩容。
  • 创建和购买询价支持 Month、Year、Day、Dynamic,默认 Month,不支持新购 Postpay。
  • 给运行中的实例挂载或卸载 CFS 会自动停止并启动实例,请先保存任务并安排业务中断窗口。
  • 创建、扩容及首次自动开通存储会产生费用;删除前请备份数据。

接口一览

场景Action关键说明
查询购买价格GetCompShareCFSPrice根据容量、计费方式和购买周期询价
创建存储CreateCFS自定义名称、容量和购买周期,返回 CfsId
查询存储DescribeCFS查询容量、到期时间及挂载实例;支持列表与单条查询
挂载到实例AttachUS3传 cpod- 实例 ID,系统自动选取同账号、同可用区的 CFS
从实例卸载DetachCFS传 UHostId,无需传 CfsId
查询扩容价格GetCompShareCFSUpgradePriceSize 为扩容后的总容量
扩容存储ResizeCFS目标容量必须严格大于当前容量
查询退费金额GetCompShareCFSRefundPrice本接口的资源字段为 CFSId
删除存储DeleteCFS默认要求所有实例都已卸载;可设置 Recycle=true 先卸载再删除

挂载 CFS 复用 AttachUS3,不是 AttachCFS。AttachUS3 对 cpod- 实例执行 CFS 挂载,对普通 uhost- 实例则执行 US3 对象存储挂载。两种场景的使用限制不同。

推荐调用流程

首次创建并挂载

  1. 选择容器可用区,调用 DescribeCFS 检查当前项目下是否已有 CFS。同一账号在其他项目中已有 CFS 时,也不能在该可用区重复创建。
  2. 如需新建,调用 GetCompShareCFSPrice 确认价格,再用相同的 Size、ChargeType、Quantity 调用 CreateCFS。
  3. 调用 AttachUS3,只需传目标实例的 UHostId 和地域、可用区,不需要指定 CfsId。
  4. 调用 DescribeCFS 检查 MountStatus 和 MountedUHostIds,并通过 DescribeCompShareInstance 确认实例恢复运行。

也可以直接调用 AttachUS3: 如果账号在实例所在可用区尚无 CFS,接口会自动创建 50 GiB、按月计费、购买周期为 1 的 CFS,再进行挂载。这不是免费的挂载动作;如果需要自选容量、计费方式或代金券,请先调用 CreateCFS。

创建新容器实例时,还可以在 CreateCompShareInstance 中设置 EnableCfs=true,挂载账号在同一可用区已有的 CFS。该参数默认 false;找不到已有 CFS 时实例仍会正常创建,但不会自动创建 CFS,和直接调用 AttachUS3 的行为不同。

扩容

先查询当前容量,再用同一目标 Size 依次调用 GetCompShareCFSUpgradePrice 和 ResizeCFS。例如从 100 GiB 扩到 200 GiB,传 Size=200,不是 100。完成后重新查询 DescribeCFS 确认容量。

卸载与删除

先备份数据,通过 DescribeCFS 查看挂载实例;调用 DetachCFS 解除所有挂载后,再调用 DeleteCFS。如果仍有挂载,默认删除会被拒绝,实例关机不等于已卸载。

也可以在确认相关实例均已停止后,使用 DeleteCFS 的 Recycle=true 先卸载再删除。它不是回收站或强制删除开关:检测到运行中的挂载实例时会拒绝删除,并返回 RunningUHostIds。退费可提前通过 GetCompShareCFSRefundPrice 预览,最终以删除时的结算为准。

请求格式与鉴权

这些接口使用 GPU OpenAPI 的公钥、私钥签名,不使用模型 API Key。配置方式见 API 接口范例。各接口页的 JSON 是请求参数示例,正式调用时由 SDK 完成签名;也可以使用页面上的「试一试」。

Region、Zone 使用地域和可用区名称,ProjectId 可用于指定项目。账号标识和内部数字可用区 ID 由网关处理,不需要自行填写 top_organization_id、organization_id、zone_id。

以下示例只查询存储,不会创建或变更资源。其他 Action 可以使用同样的 SDK 通用调用方式,参数以对应接口页为准。

import os from ucloud.client import Client from ucloud.core import exc client = Client({ "region": "cn-bj2", "public_key": os.environ["UCLOUD_PUBLIC_KEY"], "private_key": os.environ["UCLOUD_PRIVATE_KEY"], "base_url": "https://api.compshare.cn", }) try: response = client.ucompshare().invoke("DescribeCFS", { "Region": "cn-bj2", "Zone": "cn-bj2-03", }) for item in response.get("CFSSet", []): print(item["CfsId"], item.get("Size"), item.get("MountStatus")) except exc.UCloudException as error: print("请求失败:", error)
Last updated on