(本人英文水平极其有限,若有错翻还望多多包涵,不吝指正)
第一章:云存储-我们要做到谷歌那么牛X
如果你可以从scratch上建立你的IT系统和操作,你会重建现有的一切吗?这是建筑业巨头Bechtel的CIO-Geir Ramleth在2005年提出的一个问题.回答显然是不,Bechtel最后使用来自当时互联网四大领跑者–YouTube,Google,Amazon,Saleforce–的最好的业务来创建他们的下一个数据中心集.
这也恰恰是世界各地的CIO们和IT管理者们提出的问题!在这本书里,你将学习存储新的革命–来自互联网巨头最好的业务(虽然不是精确的技术)–云存储.这将减少10倍的存储总支出对比于传统的企业块或文件级存储.
本书将展示给你怎样使用领先的开源存储软件栈OpenStack Swift来实现云存储.以下是云存储的关键要素:
* TCO的大幅削减
* 无限的扩展性
* 通过虚拟化弹性的实现
* 按需使用和支付
* 通用性,你能在任何地方使用
* 多租户模式,意味着与其他部门和公司共享硬件
* 数据耐久性和可用性,甚至在存储系统局部故障的情况下
什么构成了云存储
让我们从细节上回顾上述云存储要素
TCO削减
削减TCO是云存储的关键.除非新存储系统能节省10倍总支出,不然不值得大费周章的去更换原先的块或文件级存储.关于总支出,我们认为是总的资本支出,包括设备成本和由IT存储管理,电力,动力,冷却等组成的运营成本.TCO削减是在不牺牲耐久性(保持数据完整)和可用性的前提下必须做到的.
无限的可扩展性
无论云存储提供的是公共的(由业务提供商供应)还是私有的(由central IT提供,ps:不知道是啥–),它都需要有无限的可扩展性.云存储是建立在分布式系统上的,这就意味着它有良好的可扩展性.传统的存储系统都是有上限的(扩展性),它们不适合云端存储.
弹性的
存储虚拟化分离和抽象出了存储池并提供了物理实现.这意味着你将获得一个弹性的(按需扩展和收缩)并且一元化的存储池,现实中,底层硬件既不弹性又不统一.那些花着没完没了时间去预测数据增长然后等着调整设备的IT专家们将会感激由此带来的巨大好处.
按需分配
消费者不会预订一批电并提前支付,但是一般来说会预付存储设备的钱,无论我们是否使用它.云存储使用用多少付多少的模式,你只需支付与你存储规模对等的价格.对于私有云来说,由一个最小的集群规模起步,再是按需支付(ps:起步价).这将为存储用户省去巨额开销.
通用访问
现存的企业存储在访问上有局限性.块存储很受限制,服务器必须在同一个存储区域网络中,而且存储卷不能共享.网络附属存储(NAS)必须挂载才能访问.这就对客户端的数量有了限制并且需要在局域网内访问.
云存储是极其灵活的–它对用户的数量和访问地点是没有限制的.这可能是因为云存储系统通常使用基于HTTP(GET,PUT,POST,and DELETE)的REST API而不是传统的SCSI或CIFS/NFS协议.
多租户
云存储是典型的多租户模式.租户可能是公共云上不同的组织或私有云上不同的部门.好处是集中管理和更高的利用率从而减少了开销.安全性,是多租户系统的一个问题,云存储综合强有力的身份认证,访问控制,和各种各样的加密选项综合解决了这个问题.
数据耐久性和可用性
云存储可以运行在商用硬件上,并能保证高耐久性和可用性.让人印象深刻的是在面对局部系统故障时它依然能保持高耐久性和可用性.和许多现代分布式系统一样,数据耐久性和可用性主要是由软件层负责而不是底层硬件.
云计算的局限性
云计算拥有数不清好处的同时,也存在一些局限性,主要是体现在性能领域和新的API上.
性能
存储系统一直致力于平衡可靠性,开销和性能.一般而言,只能照顾到其中任意两个方面.云存储最优处理了可靠性和开销问题,而不是性能.事实上,如我们之后会看到的,当达到一个巨大的规模时,云存储的可靠性要优于传统的RAID.顺便说一下RAID,在RAID重建过程中,如果运算规模过大,系统会处在一个产生不可恢复故障的高风险中.云存储使用不同的技术如备份,纠删码来保证高可靠性.
这意味着云存储适用于例如网络服务器和应用服务器,但不适合数据库或高性能计算.它也适用于tier 2/3存储(ps:不知道什么意思,有大神指教下么?),例如,备份,归档(照片,文档,视频,日志等),创建额外拷贝用于灾难恢复.
新的API
云存储影响应用程序的两种途径:存储接口和运转状态.首先,应用程序需要利用HTTP而不是SCSI或CIFS/NFS移植到一个新的存储接口.然后,应用需要应对一个最终一致性的存储系统.第二点需要解释下.
云存储由分布式系统建立而成,受到CAP定理的支配,即下面陈述的三点只可能同时保证不超过两点:
* 一致性:对云存储来说,这意味着从任何区域或节点的请求将返回相同的数据
* 可用性:对云存储来说,这指的是需求将获得成功响应并且响应结果被请求者认可,而不是无响应或返回错误
* 容错性(可靠性):对云存储来说,这意味着架构能承受连接故障或系统局部故障的考验
大部分云存储系统在保证了可用性和部分故障耐受性而损失了一致性,使得系统只拥有最终一致性.这意味着一个操作例如更新操作在同一时刻可能不会反射到所有节点中.传统的应用期望严格的一致性,就可能需要改进.
如果一个应用没有移植到云存储中,会中止么?当然不.有一类叫云路由的设备在云端上为应用(例如,CIFS,NFS,iSCSI,or FTP/SFTP)提供文件和块接口并且执行协议转换.这些路由也提供其他功能,例如缓存,广域网优化,压缩选择,加密,除重.它们也满足了应用处理最终一致性问题的需要.
对象存储
怎样去搭建一个云存储系统呢?最合适的底层技术是对象存储.
对象存储不同于块或文件存储,它允许使用者通过REST HTTP接口用对象(本质上是文件)的格式存储在一个扁平化的命名空间中(ps:没有嵌套文件夹).对象存储根据逻辑描述完全的虚拟化了物理实现.这就好比托运行李和随身携带行李,一旦将托运行李放入系统中,就不会知道到底在哪,一般在目的地收回.但随身行李你必须随时准确的知道你将它放在哪了.(ps:你无需知道对象存储的具体物理位置)
对象存储由横向扩展的分布式系统建立.每个节点大多数情况下运行在一个本地文件系统中.我们将会看到,相对于传统存储系统使用昂贵的专业硬件,对象存储架构考虑到廉价的商品硬件的使用.对象存储系统最关键的任务如下:
* 放置数据
* 任务自动化管理,包括耐久性和可用性
通常,用户发送HTTP 的GET,PUT,HEAD,或DELETE请求到一组节点中的任一节点,这个请求将被对象存储软件转移到物理节点上.这个软件在做任意如下操作–创建对象多副本并进行程序分块,创建纠错码,或两者结合–也会考虑到耐久性模型.
耐久性模型不是RAID,因为就像早先讨论过的,RAID一般规模不超过数百TB.第二个关键任务是管理,例如定期系统健康检查,自我修复和数据监控.使用单平面化命名空间管理更简单,这意味着一个存储管理者可以将整个集群作为一个单个实体管理.
来通过下表关于对象存储怎样满足上述云存储标准得出结论:
标准 | 满足能力 |
---|---|
低TCO | 存储节点没有特殊的需求例如高可用性,可管性,或特殊的硬件例如RAID.这意味着商品硬件能被使用从而减少基本建设支出(CAPEX). 具有自动管理特征的单平面命名空间能减少运营成本(OPEX).关于怎样减少TCO达到10倍甚至更多的全面分析超出了本书的范围. |
无限的扩展性 | 分布式架构允许容量和性能的扩展. |
伸缩性 | 充分的虚拟化方案允许数据按需增长收缩. |
按需分配 | 集中管理的充分虚拟化方案允许存储的按需自助式供给. |
通用访问 | REST HTTP接口提供了不限地点,不限用户数目的访问. |
开放的重要性
虽然软件开放不是一个技术要求,但它日益变成一种商业需求.开放意味着三件事:
* 开源:软件开源有数不清的好处,其中最重要的优点是用户对项目方向的积极影响,创新的速度,许可证费用的减少,切换供应商的能力.
* 开放的接口:为了避免供应商套牢,接口必须开放.通常,专有API是最有诱惑力的但也限制住了用户.
* 底层硬件的无关性:为了减少硬件支出和维护用户的偏好,软件需要硬件无关性.
OpenStack Swift
OpenStack Swift是一个领先的开源对象存储项目满足了之前提到的对象存储的要求和开放技术的需要,它也是本书的主要话题.首先来看看OpenStack项目是什么,然后再去明确OpenStack Swift(也被称为Swift)是什么.
OpenStack,是在2010年由NASA和Rackspace发起的一个项目,是现今发展最快的开源项目,它的使命是建立一个既能用于公共也能用于私人的云计算平台.它的两个核心原则是简单性和可扩展性.OpenStack旗下有很多子项目,其中就有网络存储和计算.对象存储项目Swift是一个高可用性,耐久性,分布式,自主管理和最终一致性的一套软件.
Swift项目,尤其是出自于Rackspace云文件平台部分,是独一无二的,因为它利用了DevOps的开发方式,工程师们和运营专家一起工作去创造和运营它,于是很轻易的就造就了一个非常强力的存储系统,也很容易去管理.Rackspace在2010年将Swift开源,贡献最多的组织有SwiftStack,Rackspace,RedHat,HP,Intel,IBM等.
除了有上述提到的一般对象存储的特性外,OpenStack Swift有一些独一无二的额外功能,如下:
* 开源:像之前提到的,没有许可证费用
* 开放标准:使用SSL作为可选加密的HTTP REST应用程序接口.开源和开放标准的联合消除了任何潜在的供应商套牢可能性.
* 全球产业集群能力:允许对在世界各地对数据备份和分布.这个功能有利于灾难恢复,负载均衡等.
* 存储策略区别存储:这个特性允许数据集(存储在分离容器中)根据需求有选择的以不同的耐久性模型存储在不同类型的底层存储设备上.例如,重要价值的数据集可以存储在三重备份的高档硬件上,不重要的数据可以存储在低等级备份的低档硬件上.常用数据可以存储在固态硬盘上.
* 局部对象检索:例如,你只想要一部电影或一个TAR文件.
* 中间件架构:允许用户添加功能.一个极好的例子就是集成了认证系统.
* 大型对象支持:能存储任意大小的对象.
* 附加功能:包括对象版本控制,过期对象自动删除,速率控制,临时URL, CNAME查找,域映射,配额支持,静态网页模式.Swift作为一个开源项目,附加功能也在不断的增加.
总结
在这章,我们了解了为什么云存储作为一种初出的存储系统却有着大幅削减TCO的重要意义.它使用了一种叫对象存储的技术.OpenStack Swift是一套开源的高级对象存储软件.它使用与传统企业级存储系统完全不同的建立于廉价商品服务器的分布式架构.下一章将从细节上解释这种架构.