GlusterFs架构、原理及优缺点

分布式存储已经研究很多年,但直到近年来,伴随着谷歌、亚马逊和阿里等互联网公司云计算和大数据应用的兴起,它才大规模应用到工程实践中。如谷歌的分布式文件系统GFS、分布式表格系统google Bigtable,亚马逊的对象存储AWS,阿里的TFS等都是很好的代表,同时也催生了一大批优秀的开源分布式存储系统,包括ceph、swift、Lustre和glusterfs等。

分布式存储系统

分布式存储按其存储接口分为三种:文件存储、块存储和对象存储。

文件存储

通常支持POSIX接口(如glusterfs,但GFS、HDFS是非POSIX接口的),可以像普通文件系统(如ext4)那样访问,但又比普通文件系统多了并行化访问的能力和冗余机制。主要的分布式文件存储系统有TFS、cephfs、glusterfs和HDFS等。主要存储非结构化数据,如普通文件、图片、音视频等。可以采用NFS和CIFS等协议访问,共享方便。NAS是文件存储类型。

块存储

这种接口通常以QEMU Driver或者Kernel Module的方式存在,主要通过qemu或iscsi协议访问。主要的块存储系统有ceph块存储、sheepdog等。主要用来存储结构化数据,如数据库数据。数据共享不方便。DAS和SAN都是块存储类型。

对象存储

对象存储系统综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势。以对象作为基本的存储单元,向外提供RESTful数据读写接口,常以网络服务的形式提供数据访问。主要的对象存储系统有AWS、swift和ceph对象存储。主要用来存储非结构化数据。

Glusterfs

Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过Infiniband RDMA 或Tcp/Ip 方式将许多廉价的x86 主机,通过网络互联成一个并行的网络文件系统。具有可扩展性、高性能、高可用性等特点。

GlusterFS 的亮点

采用堆叠式设计,dht/afr/strip组合出七种数据放置策略,何其优雅; 底层存储直接用文件,glusterfs崩溃了上find/cat/rm/ls修复,水晶般透明;命令行控制台很好用,分布式系统集中管理;posix /cifs/nfs/swift/s3支持,本地同步复制,跨地域异步复制,动态扩容,自动修复,回收站,快照,配额限制,线性扩展,InfiniBand 支持。

#GlusterFS 的不足
除了不大稳定外,strip按文件而非按块切太浪费,dht按文件名切分容易导致数据分布不均,不支持文件级别复制份数,修复依赖文件访问触发(已改进,有 self heal daemon 了,每隔十分钟触发一次),数据放置策略死板,不考虑可用空间和系统负载要求brick大小一致(似乎已改进),不支持用户认证/映射/授权。

综合来看,倒也没太严重的死穴,被 Redhat 收购并作为 Redhat Storage Server 的基础,还是可以信任的,可以长期关注。

致读者

推荐一篇写得非常好的GlusterFs学习教程:https://www.hellodemos.com/hello-glusterfs/glusterfs-demos.html

上一篇:K8S中使用glusterfs


下一篇:Glusterfs的超级缺陷