目前市面上最主要的公有云服务供应商包括 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)
- Standard(标准):
- 加密:传输中和存储后
- 多种加密选项: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/ 秒
- HDD (标准磁介质存储)。
- 快照可在区域内所有数据中心使用,但无法跨地域
- 所有卷上传输中和存储后的数据均被加密
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 的持久存储
- Endurance Storage(持久存储):
- 快照可在区域内多个数据中心复制,并提供跨地域复制的选项(仅适用于持久存储)
- 加密功能需要使用第三方工具和 / 或客户自行实施
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 )关注我们。
评论