为云工作负载设计最佳存储策略

Last reviewed 2024-03-14 UTC

本指南可帮助您评估云工作负载的存储要求,了解 Google Cloud 中的可用存储选项,并设计提供最佳业务价值的存储策略。

如需以可视化形式大致了解主要设计建议,请参阅决策树图

如果您之前阅读过本文档,并且需要变更的摘要,请参阅更新日志

设计过程概览

作为云架构师,在规划云工作负载的存储时,您需要首先考虑工作负载的功能特征、安全约束、弹性要求、性能预期以及费用目标。 其次,您需要查看 Google Cloud 中可用的存储服务和功能。然后,根据您的要求和可用选项,选择所需的存储服务和功能。

下图展示了此 3 阶段设计过程:

为云工作负载设计存储空间的分阶段方法。

定义您的要求

使用本部分中的调查问卷来定义要在 Google Cloud 中部署的工作负载的关键存储要求。

定义存储要求的指南

回答调查问卷时,请注意以下准则:

  • 精细定义要求

    例如,如果您的应用需要基于网络文件系统 (NFS) 的文件存储,请确定所需的 NFS 版本。

  • 考虑未来要求

    例如,您当前的部署可能会为亚洲国家/地区的用户提供服务,但您打算将业务扩展到其他大洲。在这种情况下,请考虑新业务地区的任何与存储相关的监管要求。

  • 考虑特定于云的机会和要求

    • 充分利用特定于云的机会。

      例如,要优化存储在 Cloud Storage 中的数据的存储费用,您可以使用数据保留政策和生命周期配置来控制存储时长。

    • 考虑特定于云的要求。

      例如,本地数据可能存在于单个数据中心,并且您可能需要在两个 Google Cloud 位置之间复制迁移的数据以实现冗余。

调查问卷

以下调查问卷不是用于规划的详尽核对清单。您可从它们入手,系统地分析要部署到 Google Cloud 的工作负载的所有存储要求。

评估工作负载的特征

  • 您需要存储哪类数据?

    示例

    • 静态网站内容
    • 用于灾难恢复的备份和归档
    • 合规性审计日志
    • 用户直接下载的大型数据对象
    • 事务性数据
    • 非结构化和异构数据

  • 您需要多少容量?考虑您当前和未来的要求。

  • 容量是否应该随使用量自动扩缩?

  • 有哪些访问要求?例如,是否可以从 Google Cloud 外部访问数据?

  • 预期的读写格式是什么?

    示例

    • 频繁写入和读取
    • 频繁写入,但偶尔读取
    • 偶尔写入和读取
    • 偶尔写入,但频繁读取

  • 工作负载是否需要基于文件的访问权限(例如使用 NFS)?

  • 多个客户端是否能够同时读取或写入数据?

识别安全约束

  • 您的数据加密有哪些要求?例如,您是否需要使用自己控制的密钥?

  • 有数据驻留要求吗?

定义数据弹性要求

  • 您的工作负载是否需要低延迟缓存或暂存空间?
  • 您是否需要复制云中的数据以提供冗余?
  • 您是否需要复制数据集的严格读写一致性?

设定性能预期

  • 所需的 I/O 速率是多少?

  • 您的应用需要什么级别的读写吞吐量?

  • 您需要哪些环境的存储空间?对于给定的工作负载,您可能需要生产环境的高性能存储,但可以为非生产环境选择较低性能的选项。

查看存储选项

Google Cloud 提供所有关键存储格式的存储服务:块存储、文件存储和对象存储。查看并评估每种存储格式的可用服务的特征、设计选项和相关优势。

概览

块存储

您存储在块存储中的数据分为多个块,每个块存储为具有唯一地址的独立。应用通过引用适当的块地址来访问数据。块存储针对高 IOPS 工作负载(例如事务处理)进行了优化。它类似于本地存储区域网络 (SAN) 和直接附加存储 (DAS) 系统。

Google Cloud 中的块存储选项是 Compute Engine 服务的一部分。

选项 概览
Persistent Disk 适用于已部署到 Compute Engine 虚拟机和 Google Kubernetes Engine (GKE) 集群的企业和数据库应用的专用硬盘 (HDD) 和固态硬盘 (SSD)。
Google Cloud Hyperdisk 适用于 Compute Engine 虚拟机的快速和冗余网络存储,具有可配置的性能和可动态调整大小的卷。
本地 SSD 用于高性能应用的临时本地附加块存储服务。

文件存储

数据整理并表示在文件层次结构中,这些文件存储在文件夹中,类似于本地网络附加存储 (NAS)。您可以使用 NFS 和服务器消息块 (SMB) 等协议将文件系统装载在客户端上。应用使用相关文件名和目录路径访问数据。

Google Cloud 提供一系列全代管式第三方解决方案来存储文件。

解决方案 概览
Google Cloud Filestore

适用于 Compute Engine 虚拟机和 Google Kubernetes Engine 集群的 NFSv3 文件服务器。

您可以选择适合自己用例的服务层级(基本、大规模或 Enterprise)。

Google Cloud NetApp Volumes 使用 NFSv3、NFSv4.1 或 SMB 的基于文件的存储空间。
更多选项 请参阅文件服务器选项总结

对象存储

数据以对象形式存储在存储桶的平面层次结构中。每个对象都分配有一个全局唯一 ID。对象可以具有系统分配和用户定义的元数据,以帮助您组织和管理数据。应用使用 REST API 或客户端库通过引用对象 ID 来访问数据。对象存储类似于本地 SAN 的扩缩能力,但更易于管理且费用更低。

Cloud Storage 可为各种数据类型提供费用低廉、极为持久的无限制对象存储服务。您可以在 Google Cloud 内部和外部的任意位置访问存储在 Cloud Storage 中的数据。(可选)跨区域的冗余可实现最大的可靠性。您可以选择适合数据保留和访问频率要求的存储类别。

比较分析

下表提供了对 Google Cloud 中存储服务的关键功能的比较分析。

Persistent Disk Hyperdisk 本地固态硬盘 Filestore Google Cloud NetApp Volumes Cloud Storage
容量

每个磁盘 10 GiB 到 64 TiB

每个虚拟机 257 TiB

每个磁盘 4 GiB 到 64 TiB

每个虚拟机 512 TiB

每个磁盘 375 GiB

每个虚拟机 12 TiB

每个 Filestore 实例具有 1-100 TiB(最小和最大容量以及扩缩增量因服务层级而异)

每个存储池 2-500 TiB

每个卷 100 GiB 到 100 TiB

没有下限或上限
扩缩
  • 纵向扩容
  • 添加和移除磁盘
  • 使用代管式实例组进行自动扩缩
动态扩缩性能和容量 不可扩缩
  • 基本层级:纵向扩容
  • Enterprise 和可用区层级:扩容和缩容
扩容和缩容 根据使用情况自动扩缩
共享
有限共享
  • 只读:多个虚拟机
  • 多写入者:2 个虚拟机
不可共享 不可共享 可在多个 Compute Engine 虚拟机远程客户端GKE 集群上装载 可在多个 Compute Engine 虚拟机和 GKE 集群上装载
  • 可从任意位置读写
  • Cloud CDN 和第三方 CDN 集成
加密密钥
Google 管理的密钥、客户管理的密钥或客户提供的密钥 Google 管理的密钥、客户管理的密钥或客户提供的密钥 Google 管理的密钥
  • Google 管理的密钥(所有服务层级)
  • 客户管理的密钥(Enterprise 和可用区层级)
Google 管理的密钥或客户管理的密钥 由 Google 管理、客户管理或客户提供的密钥
持久性
磁盘的生命周期 磁盘的生命周期 临时(数据在停止或删除虚拟机之前保留) Filestore 实例的生命周期 卷的生命周期 存储桶的生命周期
可用性
可用区级 可用区级
  • Enterprise 实例的区域可用性,基本实例和可用区实例的可用区可用性
  • Enterprise 和可用区实例的快照
  • 备份
性能
根据磁盘大小和 CPU 数量线性扩缩高性能 可动态扩缩的高性能永久性存储空间 高性能暂存存储
  • 基本层级:一致的性能
  • Enterprise 和可用区层级:线性扩缩性能

可扩缩的性能

具体期望取决于服务等级

自动扩缩读写速率和动态负载重新分布
管理
手动格式化和装载 手动格式化和装载 手动格式化、stripe 和装载 全代管式 全代管式 全代管式
工作负载
  • IOPS 密集型或对延迟时间敏感的应用
  • 数据库
  • 共享只读存储空间
  • 快速、持久的虚拟机备份
  • 性能密集型工作负载
  • 横向扩容分析
  • 专为闪存优化的数据库
  • 用于分析的热缓存
  • scratch 磁盘
  • 直接原样迁移本地文件系统
  • 共享配置文件
  • 常用工具和实用程序
  • 集中式日志
  • 直接原样迁移本地文件系统
  • 共享配置文件
  • 常用工具和实用程序
  • 集中式日志
  • Windows 工作负载
  • 流式视频
  • 媒体素材资源库
  • 高吞吐量数据湖
  • 备份和归档
  • 长尾内容

选择存储方案

选择存储方案包括两个部分:

  • 确定所需的存储服务。
  • 在给定服务中选择所需的特征和设计选项。

    特定于服务的功能和设计选项的示例

    Persistent Disk

    • 部署区域和可用区
    • 区域复制
    • 磁盘类型、大小和 IOPS(适用于极端永久性磁盘)
    • 加密密钥:由 Google 管理、由客户管理或由客户提供
    • 快照时间表

    Hyperdisk

    • 部署可用区
    • 磁盘类型、大小和 IOPS
    • 加密密钥:由 Google 管理、由客户管理或由客户提供
    • 快照时间表

    Filestore

    • 部署区域和可用区
    • 实例层级
    • 容量
    • IP 范围:自动分配或自定义
    • 访问权限控制

    NetApp Volumes

    • 部署区域
    • 存储池的服务等级
    • 池和卷容量
    • 卷协议
    • 卷导出规则

    Cloud Storage

    • 位置:多区域、双区域、单区域
    • 存储类别:Standard、Nearline、Coldline、Archive
    • 访问权限控制:统一或精细
    • 加密密钥:由 Google 管理、由客户管理或由客户提供
    • 保留政策

存储建议

请将以下建议用作起点,选择满足您的要求的存储服务和功能。本文档后面部分的决策树也提供了这些建议。

  • 对于需要基于文件的访问权限的应用,请根据您对访问协议、可用性和性能的要求选择合适的文件存储服务。

    访问协议 建议
    NFSv3
    • 如果您需要区域可用性,请使用 Filestore Enterprise。
    • 如果可用区可用性足够,但您需要高性能,请使用 Filestore 可用区级。
    • 否则,请使用 Filestore Basic 或 NetApp Volumes

    如需详细了解 Filestore 服务层级之间的差异,请参阅服务层级

    SMB 或 NFSv4.1 使用 NetApp Volumes。

  • 对于需要具有高性能主存储空间的工作负载,请根据您的要求使用本地 SSD、Persistent Disk 或超磁盘。

    要求 建议
    快速 scratch 磁盘或缓存

    使用本地 SSD 磁盘(临时)。

    依序 IOPS 将永久性磁盘与 pd-standard 磁盘类型搭配使用。
    IOPS 密集型工作负载 将永久性磁盘与 pd-extremepd-ssd 磁盘类型搭配使用。
    平衡性能和费用 将永久性磁盘与 pd-balanced 磁盘类型搭配使用。
    动态扩缩性能和容量

    使用 Hyperdisk。

    选择合适的 Hyperdisk 类型:

    • 对于横向扩容分析、适用于成本敏感的应用的数据硬盘和冷存储,建议使用 Hyperdisk Throughput。
    • 建议将 Hyperdisk Extreme 用于需要高 I/O 的工作负载,例如高性能数据库。

    • 根据您的冗余要求,在可用区磁盘或区域磁盘间进行选择。
      要求 建议
      区域中单个可用区的冗余 使用可用区 Persistent Disk 或超磁盘。
      同一区域内多个可用区中的冗余 使用区域永久性磁盘。
      如需查看详细的比较分析,请参阅 Persistent Disk 选项
  • 对于规模不受限制的全球可用存储,请使用 Cloud Storage。

    根据数据访问频率和存储时长,选择合适的 Cloud Storage 类别。

    要求 建议
    访问频率各不相同,或者数据保留期限未知或不可预测。 使用 Autoclass 功能,根据每个对象的访问模式自动将存储桶中的对象转换为适当的存储类别。
    针对频繁访问的数据(包括高吞吐量分析、数据湖、网站、流式视频和移动应用)的存储。

    使用 Standard 存储类别。

    要缓存频繁访问的数据,并从靠近客户端的位置提供这些数据,请使用 Cloud CDN

    存储至少 30 天的不常访问数据(例如备份和长尾多媒体内容)的低成本存储。 使用 Nearline 存储类别。
    存储至少 90 天的不常访问的数据(例如灾难恢复)的低成本存储。 使用 Coldline 存储类别。
    存储至少 365 天的不常访问的数据的低成本存储,包括监管归档。 使用 Archive 存储类别。

    如需详细的比较分析,请参阅 Cloud Storage 类别

数据转移选项

选择适当的 Google Cloud 存储服务后,如需部署和运行工作负载,您需要将数据转移到 Google Cloud。您需要转移的数据可能存在于本地或其他云平台上。

您可以使用以下方法将数据转移到 Google Cloud:

  • 使用 Storage Transfer Service 在线转移数据:在对象和文件存储系统(包括 Cloud Storage、Amazon S3、Azure 存储服务)与本地数据源之间自动转移大量数据。
  • 使用 Transfer Appliance 离线转移数据:在网络连接和带宽不可用、受限或费用高昂的情况下,将大量数据离线转移并加载到 Google Cloud。
  • 将数据上传到 Cloud Storage:使用 Google Cloud 控制台、gcloud CLI、Cloud Storage API 或客户端库将数据在线上传到 Cloud Storage 存储桶。

选择数据转移方法时,请考虑数据大小、时间限制、带宽可用性、费用目标以及安全性和合规性要求等因素。如需详细了解如何规划和实现数据转移到 Google Cloud,请参阅迁移到 Google Cloud:转移大型数据集

存储选项决策树

以下决策树图将指导您完成前面讨论的 Google Cloud 存储建议:

查看放大图片

用于选择存储策略的决策树。

后续步骤

更新日志

本部分简要介绍了本指南中的重大技术更改。

日期 变更说明
2024 年 3 月 14 日 新增了数据转移选项部分。
2023 年 12 月 8 日 更新了 Hyperdisk 和本地 SSD 的容量。
2023 年 10 月 17 日 更新了存储建议和决策树图,以包含 Google Cloud NetApp 卷作为 NFSv3 文件存储的选项。
2023 年 8 月 25 日
  • 添加了以下产品和功能指南:
    • Hyperdisk
    • Google Cloud NetApp Volumes
    • Cloud Storage 自动类别
    • Filestore 可用区级的快照
    • Filestore 可用区级和 Enterprise 级的备份
  • 简化了决策树图,并进行了更新,以添加以下产品和功能:
    • Hyperdisk
    • NetApp Volumes
    • Cloud Storage 自动类别
    • Filestore 层级
2021 年 10 月 6 日 新增了 Filestore Enterprise 的指南。
2021 年 8 月 20 日 初始版。

贡献者

作者: Kumar Dhanagopal | 跨产品解决方案开发者

其他贡献者: