GlusterFS是一个可伸缩的网络文件系统,使用常见的现成的硬件,您可以创建大型分布式存储流媒体解决方案、数据分析、和其他数据相关的任务。GlusterFS是自由和开源软件。

详细参考官网:https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/

一、部署环境
1、系统环境:
fedora操作系统(xfs文件系统)

2、硬件规划
主机名称 IP地址
compute4 192.168.141.24
compute5 192.168.141.24
3、其它硬件要求
a、一块网卡
b、每台主机至少两块硬盘,一块用于安装OS,其他用于Gluster storage

4、注意事项:
GlusterFS默认地把动态生成的配置数据存放于/var/lib/glusterd目录下,日志数据存放于/var/log下,请确保它们所在的分区空间足够多,避免因磁盘满而导致GlusterFS运行故障而服务宕机。

5、配置域名解析 (备注:两个节点相同配置)
vi /etc/hosts
10.10.0.24 compute4
10.10.0.25 compute5

6、分区准备 (备注:二台服务器,各准备一块480G硬盘)
Disk /dev/sdb: 446.6 GiB, 479559942144 bytes, 936640512 sectors

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 936640511 936638464 446.6G 83 Linux

#自动分区脚本 (备注:两台服务器相同操作)
[root@compute4 ~]# cat fdisk_sdb.sh
#!/bin/bash
echo "n
p
1

w
" | fdisk /dev/sdb
partprobe

#格式化 (备注:两台服务器相同操作)
[root@compute4 ~]# mkfs.xfs /dev/sdb1 -f
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=29269952 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0
data = bsize=4096 blocks=117079808, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=57167, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

#设置开机自启动 (备注:两台服务器相同操作)
[root@compute4 ~]# echo "/dev/sdb1 /mnt xfs defaults 0 0" >>/etc/fstab

#查看 (备注:两台服务器相同操作)
[root@compute4 ~]# cat /etc/fstab
/dev/mapper/fedora00-root / xfs defaults 0 0
UUID=31323eb2-0fba-46c3-aa9f-9373490a63bd /boot ext4 defaults 1 2
/dev/mapper/fedora00-swap swap swap defaults 0 0
/dev/sdb1 /mnt xfs defaults 0 0

#挂载 (备注:两台服务器相同操作)
[root@compute4 ~]# mount -a

#查看挂载是否到/mnt目录 (备注:两台服务器相同操作)
[root@compute4 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 79G 0 79G 0% /dev
tmpfs 79G 12K 79G 1% /dev/shm
tmpfs 79G 1.3M 79G 1% /run
tmpfs 79G 0 79G 0% /sys/fs/cgroup
/dev/mapper/fedora00-root 100G 3.3G 97G 4% /
tmpfs 79G 0 79G 0% /tmp
/dev/sda3 976M 135M 775M 15% /boot
tmpfs 16G 0 16G 0% /run/user/0
/dev/sdb1 447G 488M 446G 1% /mnt

二、glusterfs部署
1、glusterfs软件安装 (备注:两台服务器相同操作)
[root@compute4 ~]# dnf install glusterfs-server -y

2、配置防火墙 (备注:两台服务器相同操作)
清空iptables
[root@compute4 ~]# iptables -F
或配置防火墙规则
节点上的gluster进程需要能够相互通信。为了简化此设置,请将每个节点上的防火墙配置为接受来自其他节点的所有流量。
iptables -I INPUT -p all -s <ip-address> -j ACCEPT

3、启动服务 (备注:两台服务器相同操作)
[root@compute4 ~]#systemctl start glusterd
[root@compute4 ~]#systemctl status glusterd
[root@compute4 ~]# systemctl enable glusterd
Created symlink /etc/systemd/system/multi-user.target.wants/glusterd.service → /usr/lib/systemd/system/glusterd.service.

#启动服务

[root@compute4 ~]#systemctl start glusterfsd

[root@compute4 ~]#systemctl enable glusterfsd

[root@compute4 ~]#systemctl status glusterfsd

4、配置可信池
注意:使用主机名时,需要从另一台服务器ping通其主机名
[root@compute4 ~]# ping compute5
PING compute4 (10.10.0.24) 56(84) bytes of data.
64 bytes from compute5 (10.10.0.24): icmp_seq=1 ttl=64 time=0.393 ms

[root@compute5 ~]# ping compute4
PING compute4 (10.10.0.24) 56(84) bytes of data.
64 bytes from compute4 (10.10.0.24): icmp_seq=1 ttl=64 time=0.393 ms

#在compute4上面操作
[root@compute4 ~]# gluster peer probe compute5
peer probe: success.

#在compute5上面操作
[root@compute5 ~]# gluster peer probe compute4
peer probe: success. Host compute4 port 24007 already in peer list

5、检查状态
#在compute4上面操作
[root@compute4 ~]# gluster peer status
Number of Peers: 1
Hostname: compute5
Uuid: a1d42adb-0207-459a-abfb-73c53efd2689
State: Peer in Cluster (Connected)

#在compute5上面操作
[root@compute5 ~]# gluster peer status
Number of Peers: 1
Hostname: compute4
Uuid: 091f6810-9cac-4415-8077-6a9fba708013
State: Peer in Cluster (Connected)

6、建立一个GlusterFS卷(两个节点都要执行)
GlusterFS卷共有三种基本类型,分别是Distributed(分布式存储)、Striped(将一个文件分成多个固定长度的数据,分布存放在所有存储块,相当于RAID0)、Replicated(镜像存储,相当于RAID1).
基于striped和replicated,结合使用distributed后,又可以扩展出分布式分片存储卷和分布式镜像存储卷两种新的类型。而后两种扩展类型并没有新的命令格式仅是通过设置数据冗余分数和添加
进逻辑卷的bricks数量动态定义的

#创建一个GlusterFS Replicated卷(两个节点都要执行)
[root@compute5 ~]# mkdir -p /mnt/brick1/gv0

#(备注:在任意一个节点操作)
[root@compute4 gv0]# gluster volume create gv0 replica 2 compute4:/mnt/brick1/gv0 compute5:/mnt/brick1/gv0
volume create: gv0: success: please start the volume to access data

#其它命令
#启动卷
[root@compute4 gv0]# gluster volume start gv0
volume start: gv0: success

#停止卷
# gluster volume stop gv0

#查看卷信息
[root@compute4 gv0]# gluster volume info
Volume Name: gv0
Type: Replicate
Volume ID: 297db7f2-099f-40f8-962a-bb8b918afcb6
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: compute4:/mnt/brick1/gv0
Brick2: compute5:/mnt/brick1/gv0
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

#删除卷
gluster volume delete gv0

#在gv0卷中增加一个存储块comoute6:/data
gluster volume add-brick gv0 comoute6:/data
gluster rebalance gv0 start

#在gv0卷中删除一个存储块comoute6:/data
gluster volume remove-brick gv0 comoute6:/data
gluster rebalance gv0 start
#如果以上操作票遇到报错,请查看/var/log/gluster下的日志,以定位排错

三、测试GlusterFS卷
1、安装挂载 (备注:客户端操作)
# yum install centos-release-gluster38
# yum install -y glusterfs glusterfs-fuse
# mkdir /heboan_data
# mount -t glusterfs server1:/gv0 /heboan_data/ (挂载任一节点即可)

2、测试文件 (备注:客户端执行)
# echo "this is a test file" >/heboan_data/test.txt
在sever1、server2可以查看到test文件
# cat /data/brick1/gv0/test.txt

3、宕机测试
#将其中一个节点停止存储服务
# systemctl stop glusterd
# systemctl stop glusterfsd

4、在客户端删除test.txt,新建test2.txt
# rm -f /heboan_data/test.txt
# echo "this is a test2 file" >/heboan_data/test2.txt

此时查看服务被停止的节点上的文件还是test.txt,另一个节点则变成test2.txt

此时启动服务
# systemctl start glusterd

5、文件恢复同步
#创建Distributed逻辑卷
# gluster volume create gv1 server1:/data server2:/data
# gluster volume info
# gluster volume start gv1

#创建Striped逻辑卷
创建一个名字为gv2,包含两个存储块,使用TCP协议的Striped逻辑卷:
# gluster volume create gv2 stripe 2 transport tcp server1:/data server2:/data
# gluster volume info
# gluster volume start gv2

#迁移卷
将server2的数据迁移到server3
先将server3加入集群
# gluster peer probe server3
迁移
# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 start
查看迁移状态
# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 status
数据迁移完毕后提交
# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 commit
如果机器server1出现故障已经不能运行,执行强制提交然后要求gluster马上执行一次同步
# gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 commit -force
# gluster volume heal gv0 full

更多用法参考:

https://www.cnblogs.com/sxchengchen/p/7805667.html

分布式文件系统MFS、Ceph、GlusterFS、Lustre的比较:

http://blog.csdn.net/dipolar/article/details/50154349

GlusterFS分布式文件系统部署的更多相关文章

  1. GlusterFS分布式文件系统部署及基本使用(CentOS 7.6)

    GlusterFS分布式文件系统部署及基本使用(CentOS 7.6) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Gluster File System 是一款自由软件,主要由 ...

  2. FastDFS 分布式文件系统部署实战及基本使用

    FastDFS 分布式文件系统部署实战及基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. FastDFS是一个开源的高性能分布式文件系统.它的主要功能包括:文件存储,文件同步 ...

  3. GlusterFS分布式文件系统高速管理

    TaoCloud XDFS基于GlusterFS开源分布式文件系统,进行了系统优化.project化.定制化和产品化工作,五年以上的实践积累了大量实践经验,包含客户案例.最佳实践.定制开发.咨询服务和 ...

  4. GlusterFS 分布式文件系统的使用入门-管理GlusterFS卷

    GlusterFS 分布式文件系统的使用入门-管理GlusterFS卷 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.卷的扩容 您可以根据需要在群集联机且可用时扩展卷.例如,您 ...

  5. GlusterFS 分布式文件系统

    简介 官方文档:https://docs.gluster.org/en/latest/Quick-Start-Guide/Architecture/ Glusterfs是一个开源的分布式文件系统,是S ...

  6. GlusterFS分布式文件系统的使用

    glusterfs是一款开源的分布式文件系统. 它具备高扩展.高可用及高性能等特性,由于其无元数据服务器的设计,使其真正实现了线性的扩展能力,使存储总容量可轻松达到PB级别,支持数千客户端并发访问. ...

  7. FastDFS轻量级分布式文件系统部署

    FastDFS介绍 FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统,作者余庆,支持 Linux.FreeBSD.AID 等 Unix 系统,解决了大数据存储和读写负载均衡等问题,适合 ...

  8. CentOS7.5 GlusterFS 分布式文件系统集群环境搭建

    环境准备: 系统版本:CentOS Linux release 7.5.1804 (Core) glusterfs:3.6.9 userspace-rcu-master: 硬件资源: 10.200.2 ...

  9. glusterfs分布式文件系统

    第一:安装依赖包: yum install libibverbs librdmacm xfsprogs nfs-utils rpcbind libaio liblvm2app  lvm2-devel ...

随机推荐

  1. SQL Server 获取满足条件的每个条件下的前N条数据

    从数据库获取数据时,经常会遇到获取一个数据列表和该列表中每条数据对应的另一个列表的情况,如果二级列表获取的是全部数据,那么就比较简单.如果二级列表获取的是前n条数据,就会比较麻烦. 从操作上来看,好像 ...

  2. gulp (转)

    “1. 我为什么使用grunt: 2. 我为何放弃grunt转投gulp: 3. 我为何放弃gulp与grunt,转投npm scripts: 4. 我为何放弃前端” —— 司徒正美 前端(段子)界的 ...

  3. P2029 跳舞

    题目描述 小明今天得到一个跳舞毯游戏程序Dance.游戏每次连续出N个移动的“箭头”,箭头依次标号为1到N,并且的相应的分数S[1..N].如果你能“踏中”第i号箭头,你将获得相应的分数S[i]:否则 ...

  4. ZOJ 1081 Points Within | 判断点在多边形内

    题目: 给个n个点的多边形,n个点按顺序给出,给个点m,判断m在不在多边形内部 题解: 网上有两种方法,这里写一种:射线法 大体的思想是:以这个点为端点,做一条平行与x轴的射线(代码中射线指向x轴正方 ...

  5. POJ 2186 受欢迎的牛 Tarjan基础题

    #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #inc ...

  6. hdu 5111 树上求交

    hdu 5111 树上求交(树链剖分 + 主席树) 题意: 给出两棵树,大小分别为\(n1\),\(n2\), 树上的结点权值为\(weight_i\) 同一棵树上的结点权值各不相同,不同树上的结点权 ...

  7. 论文笔记《Tracking Using Dynamic Programming for Appearance-Based Sign Language Recognition》

    一.概述 这是我在做手势识别的时候,在解决手势画面提取的时候看的一篇paper,这里关键是使用了动态规划来作为跟踪算法,效果是可以比拟cameshift和kf的,但在occlusion,gaps或者离 ...

  8. Codeforces Round #357 (Div. 2) C

    C. Heap Operations time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  9. this bind apply call

    this 是当前函数运行时所属的对象bind 是指定一个函数运行时的上下文,也就是说把这个函数的this指向绑定到相应对象上,默认的暴露在全局御中的函数this指向widow对象, 严格模式下全局的t ...

  10. java IO的字节流和字符流及其区别

    1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStre ...