传统存储架构的局限性和分布式存储的优点
传统SAN存储设备一般采用双控制器架构,两者互为备份,配置两台交换机与前端的服务器进行连接,这种双控制器架构方式会有以下两个方面的缺点:
1. 网络带宽容易变成整个存储性能的瓶颈;
2. 如果一个控制器损坏,系统的性能将大幅下降,影响存储的正常使用。
传统存储架构的局限性主要体现在以下几个方面:
1、横向扩展性较差
受限于前端控制器的对外服务能力,纵向扩展磁盘数量无法有效提升存储设备对外提供服务的能力。同时,前端控制器横向扩展能力非常有限,业界最多仅能实现几个控制器的横向。因此,前端控制器成为整个存储性能的瓶颈。
2、不同厂家传统存储之间的差异性带来的管理问题
不同厂商设备的管理和使用方式各有不同,由于软硬件紧耦合、管理接口不统一等限制因素无法做到资源的统一管理和弹性调度,也会带来存储利用率较低的现象。因此,不同存储的存在影响了存储使用的便利性和利用率。
分布式存储往往采用分布式的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。它不但提高了系统的可靠性、可用性和存取效率,还易于扩展,将通用硬件引入的不稳定因素降到最低。优点如下:
1.高性能
一个具有高性能的分布式存户通常能够高效地管理读缓存和写缓存,并且支持自动的分级存储。分布式存储通过将热点区域内数据映射到高速存储中,来提高系统响应速度;一旦这些区域不再是热点,那么存储系统会将它们移出高速存储。而写缓存技术则可使配合高速存储来明显改变整体存储的性能,按照一定的策略,先将数据写入高速存储,再在适当的时间进行同步落盘。
2.弹性扩展
得益于合理的分布式架构,分布式存储可预估并且弹性扩展计算、存储容量和性能。分布式存储的水平扩展有以下几个特性:
1) 节点扩展后,旧数据会自动迁移到新节点,实现负载均衡,避免单点过热的情况出现;
2) 水平扩展只需要将新节点和原有集群连接到同一网络,整个过程不会对业务造成影响;
3) 当节点被添加到集群,集群系统的整体容量和性能也随之线性扩展,此后新节点的资源就会被管理平台接管,被用于分配或者回收。
3.支持分级存储
由于通过网络进行松耦合链接,分布式存储允许高速存储和低速存储分开部署,或者任意比例混布。在不可预测的业务环境或者敏捷应用情况下,分层存储的优势可以发挥到最佳。解决了目前缓存分层存储最大的问题是当性能池读不命中后,从冷池提取数据的粒度太大,导致延迟高,从而给造成整体的性能的抖动的问题。
4.多副本的一致性
与传统的存储架构使用RAID模式来保证数据的可靠性不同,分布式存储采用了多副本备份机制。在存储数据之前,分布式存储对数据进行了分片,分片后的数据按照一定的规则保存在集群节点上。为了保证多个数据副本之间的一致性,分布式存储通常采用的是一个副本写入,多个副本读取的强一致性技术,使用镜像、条带、分布式校验等方式满足租户对于可靠性不同的需求。在读取数据失败的时候,系统可以通过从其他副本读取数据,重新写入该副本进行恢复,从而保证副本的总数固定;当数据长时间处于不一致状态时,系统会自动数据重建恢复,同时租户可设定数据恢复的带宽规则,最小化对业务的影响。
5.容灾与备份
在分布式存储的容灾中,一个重要的手段就是多时间点快照技术,使得用户生产系统能够实现一定时间间隔下的各版本数据的保存。特别值得一提的是,多时间点快照技术支持同时提取多个时间点样本同时恢复,这对于很多逻辑错误的灾难定位十分有用,如果用户有多台服务器或虚拟机可以用作系统恢复,通过比照和分析,可以快速找到哪个时间点才是需要回复的时间点,降低了故障定位的难度,缩短了定位时间。这个功能还非常有利于进行故障重现,从而进行分析和研究,避免灾难在未来再次发生。多副本技术,数据条带化放置,多时间点快照和周期增量复制等技术为分布式存储的高可靠性提供了保障。
6.存储系统标准化
随着分布式存储的发展,存储行业的标准化进程也不断推进,分布式存储优先采用行业标准接口进行存储接入。在平台层面,通过将异构存储资源进行抽象化,将传统的存储设备级的操作封装成面向存储资源的操作,从而简化异构存储基础架构的操作,以实现存储资源的集中管理,并能够自动执行创建、变更、回收等整个存储生命周期流程。基于异构存储整合的功能,用户可以实现跨不同品牌、介质地实现容灾,如用中低端阵列为高端阵列容灾,用不同磁盘阵列为闪存阵列容灾等等,从侧面降低了存储采购和管理成本。(观点来自@baimmi 某金融集团 架构师)
分布式存储与传统的SAN、NAS相比的优势和缺点
分布式存储与传统的SAN、NAS相比,优势如下:
1、性能:在分布式存储达到一定规模是,性能会超过传统的SAN、NAS。大量磁盘和节点,结合适当的数据分布策略,可以达到非常高的聚合带宽。传统的SAN、NAS都会有性能瓶颈,一旦达到最大扩展能力,性能不会改变甚至降低。
2、价格:传统的SAN、NAS,价格比较高。特别是SAN网络设备,光纤网络成本比较高。而且,以后扩展还需要增加扩展柜。成本太高。分布式存储只需要IP网络,几台X86服务器加内置硬盘就可以组建起来,初期成本比较低。扩展也非常方便,加服务器就行。
3、可持续性:传统的SAN、NAS扩展能力受限,一个机头最多可以带几百个磁盘。如果想要个PB以上的共享存储,分布式存储只最好的选择。不用担心扩展能力问题。
缺点:
1、需要比较强的技术能力和运维能力,甚至有开发能力的用户。传统存储开箱即用,硬件由厂家提供,也有完善的文档和服务。而分布式很多是开源或者是有公司基于开源系统提供支持服务,版本迭代比较快,出问题后有可能需要自己解决。
2、数据一致性问题。对于Oracle RAC这一类对数据一致性要求比较高的应用场景,分布式存储的性能可能就稍弱了,因为分布式的结构,数据同步是一个大问题,虽然现在技术一直在进步,但是也不如传统存储设备数据存储方式可靠。
3、稳定性问题。分布式存储非常依赖网络环境和带宽,如果网络发生抖动或者故障,都可能会影响分布式存储系统运行。例如,一旦发生IP冲突,那么整体分布式存储可能都无法访问。传统存储一般使用专用SAN或IP网络,稳定性方面,更可靠一些。(观点来自@刘东 某软件集团 咨询顾问)
关联阅读:
分布式存储如何保证数据一致性?
从服务端角度,如何尽快将更新后的数据分布到整个系统,降低达到最终一致性的时间窗口,是提高系统的可用度和用户体验非常重要的方面。对于分布式存储系统:
N — 数据复制的份数
W — 更新数据是需要保证写完成的节点数
R — 读取数据的时候需要读取的节点数
如果W+R>N,写的节点和读的节点重叠,则是强一致性。例如对于典型的一主一备同步复制的分布式存储系统,N=2,W=2,R=1,则不管读的是主副本还是从副本的数据,都是一致的。
如果W+R<=N,则是弱一致性。例如对于一主一备异步复制的分布式存储,N=2,W=1,R=1,则如果读的是从副本,就可能无法读取主副本已经更新过的数据,从而读到了脏数据所以是弱一致性。
对于分布存储式系统,为了保证高可用性,一般设置N>=3,且强制在主副本读取,也是通常说的分布式存储系统使用强一致性原则。(@baimmi )
分布式存储的文件存储和对象存储有哪些区别?
文件存储与对象存储区别主要可从三方面来进行比较:
1、展现模式:
文件存储:以盘符 / 目录的形式展现,优点是符合用户现有使用习惯,用户可以像使用本地硬盘一样使用存储系统,缺点是无法定制化存储元数据信息,对业务系统无优化;
对象存储:与应用系统相结合形式展现,优点是可按需调用存储接口,并为文件设置元数据以及标签属性,可满足业务系统定制化需求,缺点是需要业务系统直接调用存储,用户无法直接调用系统内数据。
2、访问协议
文件存储:NFS/CIFS 协议访问,优点是锁机制可支持多人同时对数据进行修改(锁机制由应用系统决定 , 缺点是为保证数据访问一致性,需要进行数据索引信息同步,对系统并发性能以及系统规模存在较大影响。
对象存储:HTTP 传输协议以及 RESTful 接口访问,优点是通过算法存放文件元数据信息,无元数据同步限制,系统可无限制扩展,且性能随着存储系统规模扩展而线性提升,缺点是采用 RESTful 接口 Put 、 Get 、 Delete ,不支持多人同时对同一文件修改。
3、数据结构
文件存储:采用树形目录结构,读取和存储数据要经过更长路径才能到达目标位置。随着数据越来越多,目录结构会越来越繁杂,查找以及调取文件的速度会越来越慢(操作系统对目录字节数存在限制); 如若出现设备损坏或者扩容时,需要将巨型目录树中的数据重新分配均衡,效率较差。
对象存储:采用扁平目录结构,抛弃了嵌套的文件夹,避免维护庞大的目录树,只保留二级(或三级)目录结构。根下直接就是桶 桶中直接存放对象,桶中不能再建桶(禁止多层文件夹)。 每个对象文件都只需要一个 ID 就能获取对象。
适用场景总结:
文件存储:数百 TB-PB 级数据并行计算类应用;亿级别以内小文件存储类应用;需要在线修改数据类应用系统,如:非编系统。
对象存储:PB- 数百 PB 级数据存储存储类应用;千亿级海量小文件数据存储以及海量并发。(@赵琳)