将块存储卷与服务一起使用¶
对于容器化的应用程序,Snowflake 支持以下存储卷类型:Snowflake 内部暂存区、本地存储、内存存储卷和块存储卷。
在服务规范中指定块存储¶
要创建使用块存储的服务,请在服务规范中提供必要的配置,如下所示:
指定
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>
以下字段为必填字段:
name
:卷的名称。source
:卷的类型。对于块存储卷,值为block
。size
:块存储卷的存储容量,以字节为计量单位。值必须始终为整数(使用 Gi 单位后缀指定)。例如,5Gi
表示5*1024*1024*1024
个字节。大小值可以介于1Gi
到16384Gi
之间。
以下是可选字段:
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
指定
spec.containers.volumeMount
字段,以描述应用程序容器中装载块存储卷的位置。您在此字段中提供的信息对于所有支持的存储卷都是相同的。
访问控制要求¶
如果要使用现有快照(fromSnapshot
在规范中)初始化卷,则服务的所有者角色必须对快照拥有 USAGE 权限。
服务的所有者角色还必须对包含快照的数据库和架构拥有 USAGE 权限。
管理快照¶
您可以拍摄块存储卷的快照,并在以后使用备份,如下所示:
使用快照备份恢复现有的块存储卷。
创建新服务时,使用快照备份作为种子数据来初始化新的块存储卷。
在拍摄快照之前,您应确保所有更新都刷新到磁盘。
Snowflake 提供了以下命令来创建和管理快照:
此外,要在现有块存储卷上恢复快照,可以执行 ALTER SERVICE ...RESTORE VOLUME 命令。请注意,您需要先暂停服务,然后才能恢复快照。恢复卷后,服务将自动恢复。
块存储成本¶
有关更多信息,请参阅 Snowflake 服务消耗表。
示例¶
有关示例,请参阅 教程。教程提供了创建装载了块存储卷的服务的分步说明。
准则和限制¶
以下限制适用于使用块存储卷的服务:
一般限制。如果您在这些限制方面遇到任何问题,请联系您的账户代表。
块存储卷大小值的范围可以从 1Gi 到 16384Gi。
每个服务最多可支持三个块卷。这是指 服务规范 中的
spec.volumes
。每个 Snowflake 账户的块存储卷总数限制为 10 个。
每个 Snowflake 账户允许的快照数为 100。
使用块存储卷的服务必须具有相同的最小和最大实例数。
创建服务后,以下限制将适用:
当服务正在使用块存储卷时,不能使用 ALTER SERVICE ... SET ... 命令更改服务实例的数量。
您不能更改块存储卷的
size
、iops
或throughput
字段。不能添加新的块存储卷,也不能移除现有的块存储卷。
如果升级或者暂停和恢复服务,则块存储卷会被保留。当服务暂停时,您将继续支付卷的费用,因为卷被保留了下来。升级或恢复服务后,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)。