电子说
【导读】 如今分布式存储产品众多令人眼花缭乱,如何选型?要根据其背后的核心架构来分析它本来的原貌,然后才能决定其是否适合我们的具体场景。
【作者】 赵海
目前市面上各个厂家的分布式存储产品五花八门,但是如果透过产品本身的包装看到其背后的核心技术体系,基本上会分为两种架构,一种是有中心架构的分布式文件系统架构,以GFS、HDFS为代表;另外一种是完全无中心的分布式存储架构,以Ceph、Swift、GlusterFS为代表。对具体分布式存储产品选型的时候,要根据其背后的核心架构来分析它本来的原貌,然后才能决定其是否适合我们的具体场景。
GFS和HDFS都是基于文件系统实现的分布式存储系统;都是有中心的分布式架构 (图2.1) ;通过对中心节点元数据的索引查询得到数据地址空间,然后再去数据节点上查询数据本身的机制来完成数据的读写;都是基于文件数据存储场景设计的架构 ;都是适合顺序写入顺序读取,对随机读写不友好。
图2.1 中心化的分布式存储架构
接下来,我们来看GFS和HDFS都有哪些具体特性,我们应该如何应用?
相对于GFS来说,我们来看HDFS做了哪些区别?
GlusterFS虽然是基于文件系统的分布式存储技术,但是它与GFS/HDFS有本质的区别,它是去中心化的无中心分布式架构(图2.2);它是通过对文件全目录的DHT算法计算得到相应的Brike地址,从而实现对数据的读写;它与Ceph/Swift的架构区别在于它没有集中收集保存集群拓扑结构信息的存储区,因此在做计算的时候,需要遍历整个卷的Brike信息。
图2.2 Gluster FS
接下来,我们来看GlusterFS都有哪些具体特性,我们应该如何应用?
我们知道, 相对于文件系统的中心架构分布式存储技术,Ceph&Swift都是去中心化的无中心分布式架构(图2.3);他们底层都是对象存储技术;他们都是通过对对象的哈希算法得到相应的Bucket&Node地址,从而实现对数据的读写 。
图2.3 去中心化的分布式存储架构
接下来,我们来看Ceph和Swift都有哪些具体特性,我们应该如何应用?
虽然底层都是对象存储,相对于Ceph来说,Swift又有哪些独特的特性呢?
总结来看,由于Swift需要通过Proxy节点完成与数据节点的交互,虽然Proxy节点可以负载均衡,但是毕竟经历了中间层,在并发量较大而且小文件操作量比较的场景下,Ceph的性能表现会优秀一些。 为了说明我们从原理层面的判断,接下来借助ICCLAB&SPLAB的性能测试结果来说明。
表1 Ceph集群配置
[Node1 - MON] | [Node2 - OSD] | [Node2 - OSD] |
---|---|---|
[HDD1: OS] | [HDD1: OS] | [HDD1: OS] |
[HDD2: not used] | [HDD2: osd.0 - xfs] | [HDD2: osd.2 - xfs] |
[HDD3: not used] | [HDD3: osd.1 - xfs] | [HDD3: osd.3 - xfs] |
[HDD4: not used] | [HDD4: journal] | [HDD4: journal] |
表2 Swift集群配置
[Node1 - Proxy] | [Node2 - Storage] | [Node2 - Storage] |
---|---|---|
[HDD1: OS] | [HDD1: OS] | [HDD1: OS] |
[HDD2: not used] | [HDD2: dev1 - xfs] | [HDD2: dev3 - xfs] |
[HDD3: not used] | [HDD3: dev2 - xfs] | [HDD3: dev4 - xfs] |
[HDD4: not used] | [HDD4: not used] | [HDD4: not used] |
以上是测试本身对于Ceph和Swift的节点及物理对象配置信息,从表的对比,基本可以看出物理硬件配置都是相同的,只不过在Swift的配置当中还需要配置Container相关逻辑对象。
{x}count{y}kb,x表示Swift集群当中设置的Container数量,y表示进行压力测试所用的数据大小。从图中表现出来的性能趋势分析:
Ceph_{x}Swift{x},x表示并发数量。从图中表现出来的性能趋势分析:
通过对主流分布式存储技术的各项特性分析梳理之后,我们基本上可以得出以下若干结论:
全部0条评论
快来发表一下你的评论吧 !