分布式文件系统GlusterFS

Linux ginotang 1818℃ 0评论

什么是GlusterFS

GlusterFS是一个运行于用户空间的分布式网络文件系统(FUSE),它是在用户和底层文件系统之间的一个用软件实现的基于网络传输的系统。基本架构如下:

glusterfs

glusterfs

可见,用户并不直接把文件写入硬盘,而是交由GlusterFS处理,根据不同的策略更新到文件系统中,但是GlusterFS对用户并不可见,客户端所有的文件操作和平常一样。

GlusterFS的相关概念

  • Brick Brick就是一个用于在信任池(trusted storage pool)中相互共享的文件夹
  • Volume Brick的集合,用户的所有文件操作都是基于Volume,可以简单理解一个Volume就是一个挂载点
  • Trusted Storage Pool 信任池,用于创建Volume的主机集合,只有池中的主机可以相互通讯
  • FUSE File System In User Space 运行于用户空间的文件系统
  • Distributed File System 分布式文件系统,数据可以保存在不同的网络节点上,用户像访问普通文件一样而无需知道具体的节点

Volume的种类

为了满足不同的生产场景,GlusterFS提供了不同的Volume种类,常用的有

  • 复制卷
  • 分布式复制卷
  • 条带化卷

Distributed Volume(分布式卷)

结构图:

distributed_volume

distributed_volume

这是默认的glusterfs volume,分布式卷的特点是:文件只保存在一个brick上。假如一个volume包含两个brick(brick1和brick2),文件会随机选取其中一个作为保存节点。当brick1损坏,brick1中的数据就会完全丢失,同理brick2也如此。

分布式卷的优点:

  • 速度较快,其中一个brick可以作为另一个brick的负载均衡节点
  • 空间利用率高,可用空间等于brick数量的和

分布式卷的缺点:

  • 数据安全性较低

Replicated Volume(复制卷)

结构图:

replicated_volume

replicated_volume

复制卷中任一个brick中的数据在另外一个brick都有一个副本,因此数据比较安全,当其中一个brick损坏了,我们还可以通过另一个brick访问这些数据。因此,在创建卷的时候brick至少需要两个,越多越安全。

复制卷的优点:

  • 数据安全

复制卷的缺点:

  • 速度较慢,因为相同的数据需要同时写入两个brick中
  • 空间利用率低,保存等量的数据,复制卷比分布式卷需要更多的空间

分布式复制卷(Distributed Replicated Volume)

同时拥有分布式卷和复制卷的优点:保证文件安全的同时提升文件的写入速度。

结构图:

distributed_replicated_volume

distributed_replicated_volume

分布式复制卷的创建方法:

创建卷的时候不能忽略了brick的排列顺序,上面的命令中我们指定了复制卷的数量是2,那么,相邻的两个brick就会成为复制卷,也就是说:server1:/exp1server2:/exp2是一个复制卷,server3:/exp3server4:/exp4是另一个复制卷,最后这两个volume就自动成为分布式volume。

注意:brick的数量必须是replica中指定数字的倍数。

Striped Volume(条带化卷)

条带化卷类似于Raid设备中的Raid 0,一个文件会被拆分成多个部分,这些部分会保存在不同的brick中。因此,条带化卷是极端不安全的,但它的写入速度所有卷种类中最快的。

结构图:

striped_volume

striped_volume

Distributed Striped Volume(分布式条带化卷)

和条带化卷类似,唯一不同的是文件可以保存到更多的brick中。

结构图:

distributed_striped_volume

distributed_striped_volume

创建方法:

和分布式复制卷一样,相邻的两个卷会成为一个striped volume,因此brick的数量也应该是stripe指定数量的倍数。

在CentOS7中创建复制卷

只需要简单的几个步骤,就可以搭建一个可用的分布式文件系统。准备环境:

  • 两台主机,centos7-host1和centos7-host2
  • 关闭selinux和防火墙

安装glusterfs-server

centos7中的默认仓库没有glusterfs-server软件包,因此需要先添加仓库

创建brick

以下命令需要在两台服务器中执行。这个步骤可选,如果没有事先创建brick,会在创建volume的过程同时自动帮你创建

配置信任池

在centos7-host1中执行以下命令

执行完毕之后,centos7-host2节点会自动添加centos7-host1到自己的信任池中

也可以在centos7-host2中添加

这样,centos7-host1就会自动添加centos7-host2为信任节点

创建volume

以下命令只需要在任意一个节点中执行

注意:

  • 现有版本建议使用3个节点创建replicated volume,以防止裂脑的问题
  • 不建议在根节点创建brick,否则创建volume过程需要使用force强制执行

注意:在创建volume的过程中,如果brick路径不存在,gluster命令会自动帮你创建。

查看volume信息

测试文件系统是否可用

建议使用一台单独的客户端进行测试,我们挂载的是volume,并不是brick,不要搞混了。

然后分别在两个节点的brick路径中查看是否有这个文件,如果有,表示replicated volume运作成功

转载请注明:Pure nonsense » 分布式文件系统GlusterFS

喜欢 (0)
0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x
()
x