目前市面上最主要的公有云服务供应商包括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
聚焦云计算,扫描二维码,关注HostUCan云计算