将块存储卷与服务一起使用

对于容器化的应用程序,Snowflake 支持以下存储卷类型:Snowflake 内部暂存区、本地存储、内存存储卷和块存储卷。

在服务规范中指定块存储

要创建使用块存储的服务,请在服务规范中提供必要的配置,如下所示:

  1. 指定 spec.volumes 字段以定义要创建的块存储卷。

    volumes:
      - name: <name>
        source: block
        size: <size in Gi>
        blockConfig:                             # optional
          initialContents:
            fromSnapshot: <snapshot name>
          iops: <number-of-operations>
          throughput: <MiB per second>
    
    Copy

    以下字段为必填字段:

    • name:卷的名称。

    • source:卷的类型。对于块存储卷,值为 block

    • size:块存储卷的存储容量,以字节为计量单位。值必须始终为整数(使用 Gi 单位后缀指定)。例如,5Gi 表示 5*1024*1024*1024 个字节。大小值可以介于 1Gi16384Gi 之间。

    以下是可选字段:

    • blockConfig.initialContents.fromSnapshot:指定从另一个卷中截取的 快照 的名称(在以下各部分中说明)。快照用于初始化块卷。

      快照名称可以是 完全限定的对象标识符,例如 TUTORIAL_DB.DATA_SCHEMA.MY_SNAPSHOT。另外,快照名称相对于服务的数据库和架构来解析。例如,如果您在 TUTORIAL_DB.DATA_SCHEMA 中创建了服务,那么 fromSnapshot: MY_SNAPSHOT 就相当于 fromSnapshot: TUTORIAL_DB.DATA_SCHEMA.MY_SNAPSHOT

    • blockConfig.iops:指定每秒支持的输入/输出操作峰值数。请注意,每次操作的数据大小上限为 256 KiB。

      • AWS 的支持范围为 3000-16000,默认值为 3000。

      • Azure 支持的范围为 3000-80000,默认值为 3000。

    • blockConfig.throughput:指定为卷配置的峰值吞吐量,单位为 MiB/秒。

      • AWS 的支持范围为 125-1000,默认值为 125。

      • Azure 支持的范围为 125-1200,默认值为 125。

    例如:

    volumes:
      - name: vol-1
        source: block
        size: 200Gi
        blockConfig:
          initialContents:
            fromSnapshot: snapshot1
          iops: 3000
          throughput: 125
    
    Copy
  2. 指定 spec.containers.volumeMount 字段,以描述应用程序容器中装载块存储卷的位置。您在此字段中提供的信息对于所有支持的存储卷都是相同的。

访问控制要求

如果要使用现有快照(fromSnapshot 在规范中)初始化卷,则服务的所有者角色必须对快照拥有 USAGE 权限。

服务的所有者角色还必须对包含快照的数据库和架构拥有 USAGE 权限。

管理快照

您可以拍摄块存储卷的快照,并在以后使用备份,如下所示:

  • 使用快照备份恢复现有的块存储卷。

  • 创建新服务时,使用快照备份作为种子数据来初始化新的块存储卷。

在拍摄快照之前,您应确保所有更新都刷新到磁盘。

Snowflake 提供了以下命令来创建和管理快照:

此外,要在现有块存储卷上恢复快照,可以执行 ALTER SERVICE ...RESTORE VOLUME 命令。请注意,您需要先暂停服务,然后才能恢复快照。恢复卷后,服务将自动恢复。

块存储成本

有关更多信息,请参阅 Snowflake 服务消耗表

示例

有关示例,请参阅 教程。教程提供了创建装载了块存储卷的服务的分步说明。

准则和限制

以下限制适用于使用块存储卷的服务:

  • 一般限制。如果您在这些限制方面遇到任何问题,请联系您的账户代表。

    • 块存储卷大小值的范围可以从 1Gi 到 16384Gi。

    • 每个服务最多可支持三个块卷。这是指 服务规范 中的 spec.volumes

    • 每个 Snowflake 账户的块存储卷总数限制为 10 个。

    • 每个 Snowflake 账户允许的快照数为 100。

  • 使用块存储卷的服务必须具有相同的最小和最大实例数。

  • 创建服务后,以下限制将适用:

    • 当服务正在使用块存储卷时,不能使用 ALTER SERVICE ... SET ... 命令更改服务实例的数量。

    • 您不能更改块存储卷的 sizeiopsthroughput 字段。

    • 不能添加新的块存储卷,也不能移除现有的块存储卷。

    • 如果升级或者暂停和恢复服务,则块存储卷会被保留。当服务暂停时,您将继续支付卷的费用,因为卷被保留了下来。升级或恢复服务后,Snowflake 会将每个块存储卷附加到与以前相同的服务实例 ID。

    • 如果弃用服务,块存储卷会被删除。要保留卷中中数据,请对卷 拍摄快照。以后可以使用快照初始化新卷。

  • IOPS 和吞吐量相关准则

    • 如果您的服务 IO 性能没有达到预期,并且服务受到块卷 IO 或吞吐量的影响,您可以考虑增加 IOPS 或吞吐量。在当前实施中,任何此类更改都需要您重新创建服务。

      您可以查看以下 可用的平台指标,以确定您的服务是否在块存储上遇到瓶颈:

      • container.cpu.usage

      • volume.read.iops

      • volume.write.iops

      • volume.read.throughput

      • volume.write.throughput

    • 对于 AWS:

      • 可配置的最大 IOPS 是每 GiB 卷大小 500 IOPS,最大为 16000 IOPS。例如,10 GiB 卷的最大 IOPS 可以是 500 * 10 = 5000。因此,请注意,只有当您的卷为 32 GiB 或更大时,才能配置最大 IOPS 16000。

      • 可配置的最大吞吐量为每 4 IOPS 1 MiB/秒,最大为 1000 MiBs/秒。例如,使用默认的 3000 IOPS,您可以配置高达 750 MiB/秒的吞吐量 (3000/4=750)。

    • 对于 Azure:

      • 在卷大小为 6GB 后,超出 6GB 的每 GB(磁盘类型)所支持的 IOPS 数量将增加 500 个。10GB 卷的最大 IOPS 可以是 500 * 4 + 3000 = 5000。因此,请注意,只有在卷为 160 GiB 或更大时,才能配置最大 IOPS 80000。

      • 6 GB 后,可配置的最大吞吐量是每 IOPS 为 0.25 MiB/秒,最大为 1200 MiBs/秒。例如,使用默认的 3000 IOPS,您可以配置高达 750 MiB/秒的吞吐量 (3000*0.25=750)。

语言: 中文