目前市面上最主要的公有云服务供应商包括AWS、Google Cloud Platform、Microsoft Azure,以及IBM SoftLayer,他们都提供了云存储服务,具体又该如何选择?
此时必须针对每个应用程序工作负载的具体需求来决定,但考虑因素很多,例如功能、成本、位置、安全与合规、性能、私有云现有数据中心所用的技术,以及签署过的企业协议或折扣价格等。
本文将详细谈谈不同公有云供应商在 云存储 方面的差异。
大部分云供应商都提供了不同类型的数据存储选项,例如:
本文将重点介绍两种最常用的核心存储服务: 对象存储 和 块存储 ,因为这两种类型几乎是所有公有云服务的用户都会用到的。
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的对象存储服务也使用“Bucket”作为抽象,具体局限与AWS相同:每个Bucket可存储无限数量的对象,每个对象体积上限为5TB。Google提供了三种服务级别:标准、低可用持久(DRA),以及近线(Nearline)。
Google存储服务的SLA按月计算。对于标准级存储,具备月均99.9%的持续运行时间保证,对象访问延迟为毫秒级别。对于DRA,具备月均99%的持续运行时间,延迟同样为毫秒级。近线级别的持续运行时间保证与DRA同为99%,但延迟约为3秒,这更像是一种归档存储。
默认情况下,Google Cloud Storage会使用自己的服务器端加密密钥加密传输中和存储后的数据,但也可以在客户端对数据进行加密,随后将加密后的数据写入Google Cloud Storage。
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存储,并创建清单文件,这样在下载文件时就可以自动将其重新拼接到一起。
SoftLayer只提供一个服务级别,持久性包含11个9,可在(本地数据中心)群集内部进行复制,但目前不支持地域复制,也没有内建的加密功能。
对象存储服务很适合需要以自包含“对象”方式存储并检索数据的场景,如果需要更标准的文件系统配置(并且需要兼容POSIX),此时更适合使用块存储。
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提供了HDD和SSD这两种类型的卷。HDD据称最高可实现3,000 IOPS读取和15,000 IOPS写入,以及180MB/秒读取和120MB/秒写入的吞吐率。SSD则可实现最高15,000 IOPS和高达240MB/秒的吞吐率。
快照可在区域内所有数据中心使用,但无法跨地域。如有必要可自行跨地域复制快照。默认情况下,Google Persistent Disk会加密对传输中和存储后的数据。
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(持久)和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 )关注我们。