云存储哪家强:AWS、Azure、Google、SoftLayer

  • 大愚若智

2016 年 4 月 27 日

话题:Google云计算Azure语言 & 开发架构

目前市面上最主要的公有云服务供应商包括 AWS、Google Cloud Platform、Microsoft Azure,以及 IBM SoftLayer,他们都提供了云存储服务,具体又该如何选择?

此时必须针对每个应用程序工作负载的具体需求来决定,但考虑因素很多,例如功能、成本、位置、安全与合规、性能、私有云现有数据中心所用的技术,以及签署过的企业协议或折扣价格等。

本文将详细谈谈不同公有云供应商在云存储方面的差异。

云存储的不同类型

大部分云供应商都提供了不同类型的数据存储选项,例如:

  • 对象存储 (Object storage)
  • 块存储 (Block storage)
  • 实例 / 服务器存储("短暂"存储)
  • 归档存储 (Archival storage)
  • 内容交付网络 (CDN)
  • 队列服务 (Queue service)
  • 数据库服务
  • 缓存服务
  • 导入 / 导出服务

本文将重点介绍两种最常用的核心存储服务:对象存储块存储,因为这两种类型几乎是所有公有云服务的用户都会用到的。

对象存储:

AWS Simple Storage Service (S3)

  • 存储抽象:“Bucket”
    • 每个 Bucket 可存储无限数量的对象,每个对象最大 5TB
  • SLA:
    • Standard(标准):

      -- 可用性:年均 99.99%

      -- 持久性:年均 99.99999999999%(11 个 9)
    • Infrequent(不频繁):

      -- 可用性:年均 99.9%

      -- 持久性:年均 99.99999999999%(11 个 9)
  • 加密:传输中和存储后
    • 多种加密选项:AWS 控制的密钥,用户控制的密钥

S3 使用“Bucket”描述用于存储对象的存储抽象。每个 Bucket 可保存无限数量的对象,每个对象最大可达到 5TB。S3 分为标准和不频繁两种服务级别:标准级服务可用性为年均 99.99%,持久性为 11 个 9,简单来说,对于标准级 S3 中存储的每 10,000 个对象,每 10,000 年才会丢失一个。

S3 的另一个服务级别 Infrequent access(不频繁访问),99.9% 的可用性略低,持久性同样为 11 个 9。不频繁访问级别定价略低。

这些存储级别都可通过 SSL 和 TLS 加密传输中的数据,同时可加密存储后的数据。此外还可以在客户端自行加密数据,并将加密后的数据上传至 Amazon S3。

Google Cloud Storage

  • 存储抽象:“Bucket”
    • 每个 Bucket 可存储无限数量的对象,每个对象最大 5TB
  • SLA:
    • Standard(标准):月均 99.9%
    • Durable reduced availability(低可用持久,DRA):月均 99.0%
    • 上述两种级别的延迟均为毫秒级。
  • 加密:与 AWS 相同,但目前为 Alpha 测试阶段

Google 的对象存储服务也使用“Bucket”作为抽象,具体局限与 AWS 相同:每个 Bucket 可存储无限数量的对象,每个对象体积上限为 5TB。Google 提供了三种服务级别:标准、低可用持久 (DRA),以及近线(Nearline)。

Google 存储服务的 SLA 按月计算。对于标准级存储,具备月均 99.9% 的持续运行时间保证,对象访问延迟为毫秒级别。对于 DRA,具备月均 99% 的持续运行时间,延迟同样为毫秒级。近线级别的持续运行时间保证与 DRA 同为 99%,但延迟约为 3 秒,这更像是一种归档存储。

默认情况下,Google Cloud Storage 会使用自己的服务器端加密密钥加密传输中和存储后的数据,但也可以在客户端对数据进行加密,随后将加密后的数据写入 Google Cloud Storage。

Azure Storage

  • 存储抽象:“容器”和“Blob”
    • 无限数量的对象,每个存储账户最大 500TB,可使用多个存储账户
  • 服务级别:
    • Locally Redundant Storage(本地冗余存储,LRS),Zone Redundant Storage(区域冗余存储,ZRS),Geographically Redundant Storage(地域冗余存储,GRS)(更加接近于 AWS 和 Google 的服务),Read-Access Geo-Redundant(读取访问地域冗余,RA-GRS)
  • 加密:均通过 Azure Encryption Extensions(在您的虚拟机内运行)加密,可配合 Azure 密钥保管库 (Azure Key Vault) 使用

Azure 存储服务使用“容器”代替“Bucket”,使用“Blob”称呼块存储。Azure 每个容器可存储无限数量的对象,每个存储账户最大容量 500TB,但可同时使用多个存储账户。

Azure 提供了本地冗余 (LRS)、区域冗余 (ZRS)、地域冗余 (GRS),以及读取访问地域冗余 (RA-GRS) 选项。LRS 会在同一数据中心内部多次复制,ZRS 会在同一区域(即同一地理位置的多个数据中心间)多次复制,GRS 会在本地复制的同时复制到距离数百英里之外的辅助数据中心。RA-GRS 为备份数据中心的其他地域冗余副本提供了读取访问的能力。

Azure 存储支持对传输中的数据进行加密,存储后的数据可使用 Azure Encryption Extensions 加密,同时可将密钥存储在 Azure 密钥保管库中。Azure Encryption Extensions 是一种在虚拟机内部运行的工具,需要消耗虚拟机的 CPU 资源。

SoftLayer Object Storage

  • 基于 OpenStack Swift 平台
  • 存储抽象:“容器”
    • 每个容器可存储无限量的对象,每个对象最大 5GB,但可将数据分为多个 Chunk 保存,存储服务可创建清单文件,借此将文件重新拼接到一起。该服务可并行上传 / 下载,因此这个体积局限有些误导用户。
  • 单一服务级别
    • 持久性 99.99999999999%(11 个 9)
  • 可在群集内部复制,但非地域冗余
  • 加密:第三方工具或客户自行实施的工具,非内建

SoftLayer Object Storage 基于 OpenStack Swift 平台,也使用“容器”代表存储抽象。每个容器可支持存储无限数量的对象,每个对象体积最大为 5GB,但可将巨型对象拆分为多个 Chunk 存储,并创建清单文件,这样在下载文件时就可以自动将其重新拼接到一起。

SoftLayer 只提供一个服务级别,持久性包含 11 个 9,可在(本地数据中心)群集内部进行复制,但目前不支持地域复制,也没有内建的加密功能。

块存储

对象存储服务很适合需要以自包含“对象”方式存储并检索数据的场景,如果需要更标准的文件系统配置(并且需要兼容 POSIX),此时更适合使用块存储。

AWS Elastic Block Storage (EBS)

  • 卷容量:1GB 至 16TB(以 1GB 为增量)
  • 卷类型:
    • Magnetic:平均 IOPS 为 100,可迸发至数百 IOPS(主要用于存储 / 快照创建)
    • General Purpos (SSD):3 IOPS/GB,最高 10,000 IOPS。吞吐率限制为 128MB/ 秒,更大型(<170GB)卷最高为 160MB/ 秒
    • Provisioned IOPS (SSD):最高为 20,000 IOPS/ 卷。最大吞吐率为 320MB/ 秒(配合 EBS 优化实例使用时)
  • 可跨越可用性区域 (Availability Zone, AZ) 使用快照,但不可跨地域
  • 所有类型的卷均支持 EBS 加密

EBS 卷体积范围从 1GB 至 16TB,以 1GB 为增量,因此可以逐步获得一个非常大的卷。AWS 提供三种不同类型的卷,分别叫做 Magnetic、General Purpose,以及 Provisioned IOPS。

Magnetic 使用传统机械磁盘,据称该服务平均可实现 100 IOPS,可迸发至数百 IOPS,因此这种类型的卷并不适合高事务量的工作负载,但最适合保存希望存储并创建快照,同时不需要快速访问的数据。

General Purpose 是一种基于 SSD 的存储机制,可为每 GB 数据提供 3 IOPS,最高 10,000 IOPS。例如对于一个 3,334 GB (3.3TB) 的卷,可获得 10,000 IOPS。虽然该类型最高提供 16TB 容量,但 IOPS 的最大值 10,000 封顶,吞吐率范围从 128MB/ 秒至最高 160MB/ 秒。

EBS 的第三种类型为 Provisioned IOPS (PIOPS),这种类型同样基于 SSD。PIOPS 最高 20,000 IOPS/ 卷。如果使用 EBS 优化过的实例,最大吞吐率可进一步增至 320MB/ 秒。

所有 EBS 卷均可创建快照并跨 AZ 使用。举例来说,如果在 US-East-1A 创建一个卷并为其创建快照,随后便可自动在 US-East 的任何区域(US-East-A、B、C、D,和 E)访问该快照,但该快照无法在 US-West 使用。AWS 提供了跨地域复制快照的工具,但复制操作无法自动进行。

所有 EBS 卷均可加密。在创建卷时可以看到加密选项,此时可选择使用 AWS 管理的密钥,或自行管理的密钥。

Google Block Storage (Persistent Disk, "PD")

  • 卷容量:1GB 至 10TB
  • 卷类型:
    • HDD (标准磁介质存储)。

      -- IOPS:最高 3,000 读取 IOPS/15,000 写入 IOPS

      -- 吞吐率:180MB/ 秒读取,120MB/ 秒写入
    • SSD

      -- IOPS:最高 15,000 IOPS

      -- 吞吐率:最高 240MB/ 秒
  • 快照可在区域内所有数据中心使用,但无法跨地域
  • 所有卷上传输中和存储后的数据均被加密

Google 提供了 HDD 和 SSD 这两种类型的卷。HDD 据称最高可实现 3,000 IOPS 读取和 15,000 IOPS 写入,以及 180MB/ 秒读取和 120MB/ 秒写入的吞吐率。SSD 则可实现最高 15,000 IOPS 和高达 240MB/ 秒的吞吐率。

快照可在区域内所有数据中心使用,但无法跨地域。如有必要可自行跨地域复制快照。默认情况下,Google Persistent Disk 会加密对传输中和存储后的数据。

Azure Block Storage

  • 卷容量:1GB 至 1TB
  • 以“Page Blob”形式实施,读写操作要在后端转换为 GET/PUT 操作
  • 卷类型:
    • 标准存储

      -- IOPS:500 IOPS/ 直连磁盘

      -- 吞吐率:60MB/ 秒
    • 高级存储:基于 SSD(仅适用于 Azure 虚拟机,无法用于其他服务)

      -- IOPS:最高 80,000 IOPS

      -- 吞吐率:2,000MB/ 秒
  • 快照可跨越区域内多个数据中心复制,并提供了跨地域复制的选项
  • 传输中和存储后的数据均可使用 Azure Encryption Extensions 加密

Azure 卷可提供 1GB 至 1TB 容量,作为一种高端服务,这样的容量实在非常小,但这一局限源自 Azure 后端的实现方式。该服务使用 Page blob 而非 Block blob,可为读写操作创建兼容 POSIX 的文件系统,所执行的 freads 和 fwrites 操作会在后端转换为 GET 和 PUT 操作。这种方法使得 Azure 能够将同一套后端基础结构应用于所有存储服务,但正是因此,卷的大小存在 1TB 的局限。

Azure 提供标准和高级两种类型的卷。对于标准存储,每个直连磁盘可实现 500 IOPS,及大约 60MB/ 秒的吞吐率,这样的性能表现尚可,但并非最优秀的。不过高级存储就相当惊人了,可提供最高 80,000 IOPS 和让人惊叹的 2,000MB/ 秒吞吐率。这是一种基于 SSD 的存储,目前只能用于 Azure 虚拟机,无法将其用于其他 Azure 服务。

Azure 提供了额外的快照选项。快照可跨越同一区域的多个数据中心复制,还可通过 GRS 进行跨地域复制。

所有传输中的数据会被加密,同时也可以通过 Azure Encryption Extensions 加密存储后的数据。

SoftLayer Block Storage

  • 卷容量:20GB 至 12TB
  • 卷类型:
    • Endurance Storage(持久存储):

      -- IOPS:每 GB 0.25、2.0,或 4.0 IOPS,最高可实现 48,000 IOPS
    • Performance Storage(性能存储):

      -- IOPS:最高 6,000 IOPS。100GB 的卷可支持 6,000 IOPS

      -- 相同 IOPS 的速率需要具备 1.5TB 的持久存储
  • 快照可在区域内多个数据中心复制,并提供跨地域复制的选项(仅适用于持久存储)
  • 加密功能需要使用第三方工具和 / 或客户自行实施

SoftLayer Block Storage 可提供容量 20GB 至 12TB 的卷,分为 Endurance(持久)和 Performance(性能)两种级别。持久存储可为每 GB 卷提供 0.25、2.0,或 4.0 的 IOPS,因此如果有一个 12TB 的卷,最高可获得 48,000 的 IOPS。

性能存储最高提供 6,000 的 IOPS,该 IOPS 要求卷容量至少 100GB。对于 100GB 以上的卷,性能存储的 IOPS 上限为 6,000。如果使用持久存储,需要容量为 1.5TB 的卷才能实现相同的 6,000 IOPS。因此持久存储更适用于事务量不是非常高,但可能需要较大存储容量的工作负载。性能存储适合需要以很高速度执行非常高读写事务的工作负载。性能存储的不足之处在于无法为其创建快照。您可以为持久存储卷创建快照,并在区域内部或跨地域复制,但是对于性能存储卷,只能自行执行相关操作。

加密工作只能通过第三方工具或自行实施的工具实现。

云存储的定价

每个云供应商都提供了类似的存储服务,但由于服务之间存在诸多差异,往往很难进行严格的“同类”服务对比。价格方面,最恰当的做法是首先从待考虑的云供应商中确定最适合的服务,随后根据相关定价确定每种服务的最终成本。

编译:大愚若智


感谢陈兴璐对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

Google云计算Azure语言 & 开发架构