常见的分布式存储开源软件有:GlusterFS、Ceph、HDFS、MooseFS、FastDFS 等它,它们都有以下几个优点:

  • 扩容方便,轻松达到 PB 级别或以上
  • 提升读写性能(LB)或数据高可用(HA)
  • 避免单个节点故障导致整个架构问题
  • 价格相对便宜,大量的廉价设备就可以组成

    一、简介

    GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指 GlusterFS 采用弹性哈希算法,没有中心节点,所有节点全部平等,部署配置方便。

    1.特性

    全对称架构、支持多种卷类型(类似 RAID0/1/5/10/01)、支持卷级别的压缩、支持 FUSE、支持 NFS、支持 SMB、支持 Hadoop、支持 OpenStack、与 oVirt 深度整合。

    2.概念

  • birck:GlusterFS 的基本元素,以节点服务器目录形式展现
  • volume:多个 brick 的逻辑集合
  • metadata:元数据,用于描述文件、目录等的信息
  • self-heal:用于后台运行检测副本卷中文件和目录的不一致性并解决这些不一致
  • FUSE:Filesystem Userspace 是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码通过在用户空间运行文件系统的代码通过 FUSE 代码与内核进行桥接
  • Gluster Server:数据存储服务器,即组成 GlusterFS 存储集群的节点
  • Gluster Client:使用 GlusterFS 存储服务的服务器,如 KVM、OpenStack、LB RealServer、HA node

    二、部署

    https://download.gluster.org/pub/gluster/glusterfs/LATEST/
    https://download.gluster.org/pub/gluster/glusterfs/LATEST/glusterfs-10.2.tar.gz

存储集群的搭建主要指的是服务端的部署,客户端使用的时候挂载就好了

1.服务器

准备三台存储服务器,修改 hosts 文件

1
2
3
xxx.xxx.xxx.xxx node-01
xxx.xxx.xxx.xxx node-02
xxx.xxx.xxx.xxx node-03

安装 GlusterFS 服务器端

1
2
3
4
5
6
7
8
9
yum install glusterfs-server
yum install glusterfs glusterfs-fuse
#添加开机启动
systemctl enable glusterd
#启动、关闭服务
systemctl start glusterd
systemctl stop glusterd
#服务状态
systemctl status glusterd

创建分区(或者现有分区),挂载到服务器单独目录上,准备加入 GlusterFS 集群

1
2
3
4
5
6
fdisk -l
#创建 XFS 分区
mkfs.xfs -i size=512 /dev/vdb1
#挂载分区
echo '/dev/vdb1 /data/glusterfs xfs defaults 0 0' >> /etc/fstab
mount -a && mount

2.信任池

任意开启 GlusterFS 服务的主机上将其他主机加入到信任的主机池里

1
2
3
4
5
6
7
#添加到信任池中
gluster peer probe node-02
gluster peer probe node-03
gluster peer status

gluster volume create
mkdir -p /export/vdb1 && mount -a && mkdir -p /export/vdb1/brick

3.逻辑卷

1
2
3
4
5
6
gluster volume create gv0 replica 3 \
node-01:/data/glusterfs/gv0 \
node-02:/data/glusterfs/gv0 \
node-03:/data/glusterfs/gv0

gluster volume info

常见卷的模式

卷模式 描述
Replicated 复制卷,类似 RAID1
Striped(新版本会弃用) 条带卷,类似 RAID0
Distributed 分布卷
Distribute Replicated 分布与复制组合
Dispersed 类似RAID5、RAID6

三、使用

1.挂载卷

挂载的 IP 选集群任意一个 IP 即可,冒号后接逻辑卷名

1
2
3
yum install glusterfs glusterfs-fuse
#挂载 gv0 卷
mount -t glusterfs xxx.xxx.xxx.xxx:/gv0 /opt/glusterfs