GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。
优点:
不足:
原文:架构以及详细介绍
fio,iometer,dd等工具都适合在Linux系统上测试磁盘利用率,读写的io吞吐量。 detail
Xlator=translator:glusterfs 模块的代名词
Brick :存储目录是Glusterfs 的基本存储单元,由可信存储池中服务器上对外
输出的目录表示。存储目录的格式由服务器和目录的绝对路径构成,具体如下:
SERVER:EXPORT.例如:myhostname:/exports/myexportdir/
Volume :卷是存储目录的逻辑组合。大部分gluster 管理操作是在卷上进行的。
Metadata:元数据关于数据的数据,用于描述文件、目录等的相关信息。
FUSE=Filesystem inUserspace: 是一个内核模块,允许用户创建自己的文件系
统无需修改内核代码。
Glusterd : Glusterfs 后台进程,运行在所有Glusterfs 节点上。
DistributeVolume: 分布式卷
ReplicateVolume: 副本卷
StripeVolume: 条带卷
DistributeReplicate Volume: 分布式副本卷
DHT=Distribute HashTable
AFR=Automatic FileReplication
SAN = Storage AreaNetwork: 存储区域网络是一种高速网络或子网络,提供在计算机与存储之间的数据传输。
NAS = Network-attachedstorage:网络附属存储是一种将分布、独立的数据整合为大型、集中化管理的数据中心,以便于对不同主机和应用服务器进行访问的技术。
RPC =Remote ProcedureCall: 远程过程调用
XDR =eXtern DataRepresentation: RPC 传递数据的格式
CLI=Command LineInterface 控制台
argp=Argument Parser
UUID=University UnqiueIdentifier
SVC =service
CLNT =client
MGMT=management
cbks = Call Backs
ctx = context
lk = lock
attr = attribute
txn = transaction
rb = replace brick
worm = write once , readmany
参考: 链接
.glusterfs目录大小基本是等于当前brick中的所有文件大小,原因是里面主要存放的是brick中文件的硬链接。
https://joejulian.name/blog/what-is-this-new-glusterfs-directory-in-33/
http://dangzhiqiang.blog.51cto.com/7961271/1787940
1. Distributed Glusterfs Volume
分布式卷,只做分布式,无冗余、副本等容灾措施,一旦操作失败,数据将会丢失
2. Replicated Glusterfs Volume
副本卷,做副本,即使某个块brick中文件丢失,还可以通过其他副本找回
复制卷相当于 RAID1,在向 GlusterFS 中存储文件时,GlusterFS 将其拷贝到所有节点,并且是同步的,这会极大降低磁盘性能,并 呈线性降低,但是复制卷随着节点数量增加,起数据冗余能力也在增加,因为每个节点上都有一份数据的完全拷贝,创建复制卷命 令如下
3. Distributed Replicated Glusterfs Volume
分布式副本卷,结合上者的特点,提供分布式冗余存储策略。
4. Striped Glusterfs Volume
条带卷,将大文件拆分到多个bricks中(每个brick都存储文件的部分),调高访问效率,无冗余机制、
5. Distributed Striped Glusterfs Volume
分布式条带卷,提供分布式文件存储,并将文件平均分配到各个bricks。(块数=stripe*n(1,2,3...)
参考:ref
Cluster, Storage, Performance, Protocol, Features等
常见Glusterfs 操作命令 ,链接
1. 使用probe添加服务器到存储池 添加一台服务器到存储池,使用下面命令:
$gluster peer probe SERVER
例如,创建一个由四台服务器组成的存储池,从server1添加三台服务器到存储池:
$gluster peer probe server2 Probe successful $gluster peer probe server3 Probe successful $gluster peer probe server4 Probe successful
注意:不要在本服务器使用probe添加自己到存储池
2.从server1验证添加状态使用下面命令:
$gluster peer status
Glusterfs 部署实践
网文参考 :http://jaminzhang.github.io/glusterfs/GlusterFS-02-Deploy-and-Config/
下面直接pia结论
1. GlusterFS数据读写表现比Ceph稳定2. 当客户端实际应用存在缓存的顺序读写情况下:
a) Ceph的写速率超过GlusterFSb) 在256M文件以下的4,16,64K三种情况下Ceph仍是线性表现,在实际应用环境中性能超过GlusterFS。
c) GlusterFS可以提供与网卡吞吐量相当的读速率,且稳定
3. 当客户端实际应用存在缓存的随机读写情况下,两者难以有较大差别,相对地好象GlusterFS要好一些。
原文:http://www.openstack.cn/?p=2215
(结论)从数据基本分布方式来看,目前开源的总体就分为单个文件存储、副本或者是镜像文件存储、及数据分块存储。在数据分块存储中,有典型的条带化Stripe存储,如lustre及gluster的stripe存储方式,以及HDFS、MFS文件真正分块(chunk)存储的方式。
分块存储在大多数情况下并不能提升文件写效率,当然这也和系统机制有关,如lustre的stripe存储就比文件单独存储的方式效率要高,但其他的分布式文件系统没有如此明显的差异,glusterfs的stripe存储效率还极其的低,很少人会使用它。但分块存储在读效率上会有明显的提升,特别是针对大文件读时。
副本存储或者镜像存储的数据存储方式是一种比较普遍的数据安全保证的数据分布。实现起来也比较容易。还有一种提供数据保护的数据分布方式就是纠删码。目前在开源分布式文件系统中好像没有看到有人将其实现,但在一些商业分布式文件系统中能看到它的身影,其实现难度也比副本存储的难度大。一些国内的分布式文件系统研发公司将其作为开源分布式文件系统二次开发目标。这种数据存储方式类似于RAID5,不仅能够提供数据保护,还节约了硬件成本。
在技术群中不少人都会问一个相类似的问题“大家认为哪个开源分布式文件系统最好?如果你追求的高效,并且在一定程度上可以容忍少量数据的丢失,那么lustre将会是你的不二选择,至于数据的安全性,你可以使用第三方的软件或者系统来实现,或者说直接就忽略之;如果你的业务需求是做数据挖掘数据分析,那么不用多想了,没有人不选择HDFS而去选择其他的;如果你想使用起来功能比较完善,并且管理起来比较方便,那么GlusterFS会是不错的选择;如果你想使用它来存储小文件,好吧,以上那些除了MFS适合一点点(不少公司使用MFS进行小规模存储小文件),其他的也都是扯犊子的;当然,如果确实需要存储海量小文件,也是有专门为小文件设计的开源分布式文件系统,例如国人开发的FastDFS、MogileFS以及淘宝开源的TFS,只是对于这些分布式文件系统个人就不是很熟悉了,也只是知道个大概而已。
以上分布式文件系统都不适合小文件(一般<1M的文件)存储
http://www.uml.org.cn/sjjm/201507284.asp
1、网络问题导致的Glusterfs 挂载失败,ref
2、GlusterfsIO业界损耗情况
3、硬盘、主机故障处理 ref
4、DHT以及HashLocation ref
Reference
http://www.99cloud.net/html/2016/jiuzhouyuanchuang_0706/192.html