从AWS的EBS看云时代的块存储

enoch_520 2014-11-04 11:09:46
转载自 http://blog.csdn.net/enoch520/article/details/38980129
一.什么是块存储

对于普通用户来说,块存储可以说既熟悉又陌生。其实我们平时用的PC硬盘、U盘、移动硬盘都可以归为块存储设备。简单说,块存储就是提供了块级存储接口可持久化保存数据的存储设备,包括个人PC用的硬盘、U盘,企业级SAS硬盘、SAN共享存储以及随着云计算到来的弹性分布式块存储服务等。而AMAZON 的EBS是弹性分布式块存储服务的典型代表,也是迄今规模量级最大的弹性分布式块存储服务。

二.什么是EBS

EBS全称Elastic Block Store,是AWS提供的块级存储服务,用于给AWS EC2提供独立的块存储卷。EBS在EC2上呈现出来的就如同普通的硬盘,但实际上对接的是EBS后台的分布式存储系统,而并不是本地硬盘。

AWS EBS提供了很多云计算的特性,比如存储与计算分离、弹性可扩展、多副本数据、提供快照与快速恢复服务、性能自定义等,可以说,这些特性都是传统的PC本地磁盘所无法提供的。下面将就这些特性来一一分析。

三.云时代块存储的特性分析

1. 存储与计算分离(弹性)

“弹性”是云计算里最常提到的个词儿。所谓弹性,就是不固定,不绑定,由软件来定义,所以传统的基于本地磁盘的块存储是无法提供弹性功能的。因为本地磁盘和服务器是通过硬件级接口绑定在一起的,存储资源和计算资源集成在一个主板之上,同生共死。想像你在AWS购买一台EC2,同时也购买了一个基于本地盘的块存储挂载到EC2上,当这台EC2所在的母机宕机,或者硬件受到损坏时,EC2不可用,同时块存储设备上的数据也无法找回了。当然,AWS的工程师同学可以将这台服务器上的硬盘拆下,换到另一台服务器上把数据读出,但这样的运营成本将会无比高昂。

EBS通过存储与计算分离,实现了块存储的“弹性”特性。EC2只提供计算资源,EBS通过单独购买,然后再挂载到EC2上,EC2与EBS具体各自独立的生命周期,在EC2上,可以随时增加、删除、迁移EBS。当这台EC2不可用时,可以在很短时间把EBS挂载的新的EC2上,继续使用,数据完全不受影响。除了故障快速恢复,EBS还可以支持数据快速迁移、容量快速扩容等弹性功能。

2. 数据可靠性

对大多数人来讲,块存储设备是可靠性非常高的存储设备。我们使用个人PC,使用U盘,很少会考虑到硬盘、U盘上的数据会不会丢,会不会错?我们在PC上写word文档,只有按下ctrl+s,我们就放心了。而事实上,PC硬盘、U盘的可靠性确实不错,一个普通硬盘,用上好几年都没有问题,更不用说企业级的SAS硬盘、SAN存储了。

然而,对于一个拥有几千台、几万台的数据中心,普通硬盘的可靠性又怎样呢?这其实是个概率问题。事实证明,当数据中心到达一定规模后,就会硬件故障常态化,主板故障、硬盘故障、内存故障几乎是每天都会发生,而其中负责数据落地的硬盘,发生故障的影响是最大的。 而EBS是将多台x86服务器组合成一个分布式集群来提供块服务,数据会有多份副本存储。单台服务器宕机或者单块磁盘损坏,不会影响到用户数据和服务,对用户完全透明。所以,从概率上来讲,EBS所提供的块存储服务,其数据可靠性要比传统的本地磁盘要高。

3. 服务可用性

对于分布式的块存储服务来讲,保持服务高可用是最大的挑战,然而对于块存储的场景,用户对于可用性的要求却又非常敏感,可以想像,当您的个人PC的硬盘突然无法写入/读取,想必应该是会非常着急吧。 对于分布式块存储,可用性的挑战主要来自于三个方面,一是服务器节点的可用性,二是网络的可用性,三是运维的复杂性。

服务器节点的可用性可以通过多副本,消除单点来达到;而网络的可用性比较复杂。据我所知,EBS采用了主备网络的方式来保证网络的可用性,主网络平时提供数据服务,在主网络异常时,启用备网络服务。而运维的复杂性,由于有人的参与,所以最不可控,也最容易出问题。AWS EBS过去的几次较大故障,大部分都是运维操作失误导致的,所以运维自动化显得尤为重要。

4. 性能

块存服务直接面向用户,所以对性能的好坏也极为敏感。IO延时1ms和IO 10ms对用户的体验完全不可同日而语。分布式块存储服务的性能主要取决于两部分的延时,一是网络延时,一是存储介质本身的性能。在分布式的块存储服务中,由于实现了存储与计算分离,必然要引入网络延时。在某些IO场景下(比如顺序读写),分布式存储的IO延时要高于本地磁盘IO。所以一般情况下,计算节点与存储节点不会跨机房部署,否则网络延时的影响会比较大。

作为云计算供应商,AWS EBS的性能也许不是最好的,但EBS做得比较好的是对性能采取了用户定义、用户选择的方式,让用户对性能有个预期。AmazonEBS提供两种类型的卷,即标准卷和预配置IOPS卷。它们的性能特点和价格不同,可以根据应用程序的要求和预算定制所需的存储性能。

标准卷可为要求有适度或突发式I/O的应用程序提供存储。这些卷平均可以提供大约100IOPS,最多可突增至数百IOPS。标准卷也非常适合用作引导卷,其突发能力可提供快速的实例启动时间(通常十几秒)。

预配置IOPS卷旨在为数据库等I/O密集型随机读写工作负载提供可预计的高性能。创建一个卷时,利用预置IOPS为卷确定IOPS速率,随之AmazonEBS在该卷的生命周期内提供该速率。AmazonEBS目前支持每预配置IOPS卷最多4000 个IOPS。您可以将多个条带式卷组合在一起,为应用程序提供每个AmazonEC2数千IOPS的能力。

随着SSD成本的降低,AWS也推出了基于SSD介质的EBS,性能上会有一个提升,当然价格也会提高。

5. 用户隔离

传统的本地磁盘是单租户模式,一块磁盘被一个用户独占使用。而在分布式块存储中,是多租户共享一个分布式集群。这里面的用户隔离和流量控制就显得异常重要。一个分布式块存储集群往往承载着成千上万的用户访问,但一个集群的总带宽是有限的。如果某个用户持续进行高带宽的IO,占用大部分的集群带宽资源,那么必然会引来其它用户的投诉。所以在分布式块存储中,必须要对用户进行一定的资源隔离和资源限制,对带宽、IOPS等关键性能数据做实时的调整和控制,才能保证整个集群的稳定运行。

四.分布式块存储的未来

在云计算的场景下,采用分布式块存储是实现某些云计算特性的必经之路。随着硬件的发展,分布式块存储的架构也会不断演进,比如基于SSD介质的分布式块存储会越来越被用户接受;万兆网络的发展普及,也会让分布式块存储的性能上了一台阶。除了AWS、阿里云等这类云供就商,开源界的分布式块存储也将持续发展。比如开源的sheepdog、CEPH等系统,都是非常优秀的开源分布式存储系统,其某些设计思想是非常巧妙和实用的。
...全文
1082 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

409

社区成员

发帖
与我相关
我的任务
社区描述
AWS
社区管理员
  • AWS
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧