Linux部署Glusterfs分布式存储

小柒博客 291,5727字数 1764阅读5分52秒阅读模式

一、glusterfs简介

Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端。是整合了许多存储块(server)通过Infiniband RDMA或者 Tcp/Ip方式互联的一个并行的网络文件系统。

GlusterFS支持运行在任何标准IP网络上标准应用程序的标准客户端,用户可以在全局统一的命名空间中使用NFS/CIFS等标准协议来访问应用数据。GlusterFS使得用户可摆脱原有的独立、高成本的封闭存储系统,能够利用普通廉价的存储设备来部署可集中管理、横向扩展、虚拟化的存储池,存储容量可扩展至TB/PB级。

1glusterfs架构图

Linux部署Glusterfs分布式存储-图片1

2、常见术语

名称

解释

Brick

最基本的存储单元,表示为trusted storage pool中输出的目录,供客户端挂载用

Volume

一个卷,在逻辑上由N个bricks组成

Glusterd Gluster

management daemon,要在trusted storage pool中所有的服务器上运行

POSIX

一个标准,GlusterFS兼容

3、优势

1)无元数据服务设计,弹性HASH

2)高性能:PB级容量、GB级吞吐量、数百集群规模

3)用户空间模块化堆栈式设计

4)高可用性,支持复制和自修复

5)适合大文件存储

4、劣势

1)大量小文件性能表现不佳

2)复制存储利用率低

准备环境:

硬件环境

IP地址

CPU

内存

磁盘数量

OS版本

node1

192.168.199.101

1

2

3 (20 10 10/G)

CentOS 7.4

node2

192.168.199.166

1

2

3 (20 10 10/G)

CentOS 7.4

node3

192.168.199.188

1

2

3 (20 10 10/G)

CentOS 7.4

二、glusterfs部署

1、三台机更换Glusterfs的repo源及hosts解析,关闭防火墙及时间同步

Node1:

#关闭selinux、iptables

[root@localhost ~]# sed -i '/^SE.*en.*/s/enforcing/disabled/'g /etc/selinux/config

[root@localhost ~]# setenforce 0

[root@localhost ~]# chkconfig iptables off && service iptables stop

#主机名设置临时生效

[root@localhost ~]# hostname node1 && su –

[root@node1 ~]# sed -i '/HOSTNAME/s/local.*n$/node1/' /etc/sysconfig/network

#主机名解析

[root@node1 ~]# vim /etc/hosts

192.168.199.101 node1
192.168.199.166 node2
192.168.199.188 node3

#时间同步

[root@node1 ~]# yum install ntpdate –y

[root@node1 ~]# ntpdate -u ntp.api.bz

Node2:

#关闭selinux、iptables

[root@localhost ~]# sed -i '/^SE.*en.*/s/enforcing/disabled/'g /etc/selinux/config

[root@localhost ~]# setenforce 0

[root@localhost ~]# chkconfig iptables off && service iptables stop

#主机名设置临时生效

[root@localhost ~]# hostname node2 && su –

[root@node2 ~]# sed -i '/HOSTNAME/s/local.*n$/node1/' /etc/sysconfig/network

#主机名解析

[root@node1 ~]# vim /etc/hosts

192.168.199.101 node1
192.168.199.166 node2
192.168.199.188 node3

#时间同步

[root@node2 ~]# yum install ntpdate –y

[root@node2 ~]# ntpdate -u ntp.api.bz

Node3:

#关闭selinux、iptables

[root@localhost ~]# sed -i '/^SE.*en.*/s/enforcing/disabled/'g /etc/selinux/config

[root@localhost ~]# setenforce 0

[root@localhost ~]# chkconfig iptables off && service iptables stop

#主机名设置临时生效

[root@localhost ~]# hostname node3 && su –

[root@node3 ~]# sed -i '/HOSTNAME/s/local.*n$/node1/' /etc/sysconfig/network

#主机名解析

[root@node1 ~]# vim /etc/hosts

192.168.199.101 node1
192.168.199.166 node2
192.168.199.188 node3

#时间同步

[root@node3 ~]# yum install ntpdate –y

[root@node3 ~]# ntpdate -u ntp.api.bz

2、安装glusterfs4.1版本(glusterfs.server默认监听端口为)(三台机同样操作)

Node1:

#下载glusterfs.repo源

[root@node1 ~]# wget -c -P /etc/yum.repos.d https://mirrors.yangxingzhen.com/yum/glusterfs.repo

[root@node1 ~]# cat /etc/yum.repos.d/glusterfs.repo

Linux部署Glusterfs分布式存储-图片2

#初始化磁盘

[root@node1 ~]# mkfs.ext4 /dev/sdb

[root@node1 ~]# mkfs.ext4 /dev/sdc

[root@node1 ~]# mkfs.ext4 /dev/sdd

Linux部署Glusterfs分布式存储-图片3

Node2:

#下载glusterfs.repo源

[root@node2 ~]# wget -c -P /etc/yum.repos.d https://mirrors.yangxingzhen.com/yum/glusterfs.repo

[root@node2 ~]# cat /etc/yum.repos.d/glusterfs.repo

Linux部署Glusterfs分布式存储-图片4

#初始化磁盘

[root@node2 ~]# mkfs.ext4 /dev/sdb

[root@node2 ~]# mkfs.ext4 /dev/sdc

[root@node2 ~]# mkfs.ext4 /dev/sdd

Linux部署Glusterfs分布式存储-图片5

Node3:

#下载glusterfs.repo源

[root@node3 ~]# wget -c -P /etc/yum.repos.d https://mirrors.yangxingzhen.com/yum/glusterfs.repo

[root@node3 ~]# cat /etc/yum.repos.d/glusterfs.repo

Linux部署Glusterfs分布式存储-图片6

#初始化磁盘

[root@node3 ~]# mkfs.ext4 /dev/sdb

[root@node3 ~]# mkfs.ext4 /dev/sdc

[root@node3 ~]# mkfs.ext4 /dev/sdd

Linux部署Glusterfs分布式存储-图片7

3、开始安装(三台机同步操作)

Node1:

#安装glusterfs

[root@node1 ~]# yum -y install glusterfs glusterfs-fuse glusterfs-server

#创建三块存储驱动挂载的三个路径

[root@node1 ~]# mkdir -p /data/{brick1,brick2,brick3}

#依次挂载(记得做开机自动挂载/etc/fatab文件中)

[root@node1 ~]# mount /dev/sdb /data/brick1/

[root@node1 ~]# mount /dev/sdc /data/brick2/

[root@node1 ~]# mount /dev/sdd /data/brick3/

#启动glusterfs

[root@node1 ~]# /etc/init.d/glusterd start

[root@node1 ~]# /etc/init.d/glusterd status

#查看是否加了开机自启动

[root@node1 ~]# chkconfig –list|grep glusterd

#查看主机迟中主机的状态

[root@node1 ~]# gluster peer status

Node2:

#安装glusterfs

[root@node2 ~]# yum -y install glusterfs glusterfs-fuse glusterfs-server

#创建三块存储驱动挂载的三个路径

[root@node2 ~]# mkdir -p /data/{brick1,brick2,brick3}

#依次挂载(记得做开机自动挂载/etc/fatab文件中)

[root@node2 ~]# mount /dev/sdb /data/brick1/

[root@node2 ~]# mount /dev/sdc /data/brick2/

[root@node2 ~]# mount /dev/sdd /data/brick3/

#启动glusterfs

[root@node2 ~]# /etc/init.d/glusterd start

[root@node2 ~]# /etc/init.d/glusterd status

#查看是否加了开机自启动

[root@node2 ~]# chkconfig –list|grep glusterd

#查看主机迟中主机的状态

[root@node2 ~]# gluster peer status

Node3:

#安装glusterfs

[root@node3 ~]# yum -y install glusterfs glusterfs-fuse glusterfs-server

#创建三块存储驱动挂载的三个路径

[root@node3 ~]# mkdir -p /data/{brick1,brick2,brick3}

#依次挂载(记得做开机自动挂载/etc/fatab文件中)

[root@node3 ~]# mount /dev/sdb /data/brick1/

[root@node3 ~]# mount /dev/sdc /data/brick2/

[root@node3 ~]# mount /dev/sdd /data/brick3/

#启动glusterfs

[root@node3 ~]# /etc/init.d/glusterd start

[root@node3 ~]# /etc/init.d/glusterd status

#查看是否加了开机自启动

[root@node3 ~]# chkconfig –list|grep glusterd

#查看主机迟中主机的状态

[root@node3 ~]# gluster peer status

4、配置分布式(任意一台机器上操作即可,这边测试用node1)

#加入主机池

[root@node1 yum.repos.d]# gluster peer probe node2

[root@node1 yum.repos.d]# gluster peer probe node3

Linux部署Glusterfs分布式存储-图片8

#创建分布式复制卷(企业推荐模式保证数据的丢失)

[root@node1 yum.repos.d]# gluster volume create srm_gv replica 2 node1:/data/brick1 node2:/data/brick1 force

Linux部署Glusterfs分布式存储-图片9

#启动分布式卷并查看卷信息

[root@node1 yum.repos.d]# gluster volume start srm_gv

[root@node1 yum.repos.d]# gluster volume info srm_gv

#直接挂在到本机进行查看

[root@node1 yum.repos.d]# mount -t glusterfs 127.0.0.1:/srm_gv /mnt

Linux部署Glusterfs分布式存储-图片10

#测试分布式卷node1创建

[root@node1 mnt]# mkdir -p srmapp

[root@node1 mnt]# ls

[root@node1 mnt]# cd /data/brick1/

[root@node1 mnt]# ls

Linux部署Glusterfs分布式存储-图片11

#Node2查看

[root@node2 yum.repos.d]# cd /data/brick1/

[root@node2 yum.repos.d]# ls

Linux部署Glusterfs分布式存储-图片12

5、在线添加添加卷(node1操作)

Node1:

[root@node1 brick1]# gluster volume add-brick srm_gv replica 2 node1:/data/brick2/ node2:/data/brick2/ force

Linux部署Glusterfs分布式存储-图片13

[root@node1 brick1]# df -h

#df -h查看,挂载上去表示扩容成功

#直接创建文件进行测试数据分布

[root@node1 brick1]# touch {1..100}.txt

[root@node1 brick1]# ls

[root@node1 brick1]# ls |wc -l

Linux部署Glusterfs分布式存储-图片14

6、glusterfs常用的命令

#看下节点有没有在线

[root@node1 ~]# gluster volume status nfsp

#启动完全修复

[root@node1 ~]# gluster volume heal gv2 full

#查看需要修复的文件

[root@node1 ~]# gluster volume heal gv2 info

#查看修复成功的文件

[root@node1 ~]# gluster volume heal gv2 info healed

#查看修复失败的文件

[root@node1 ~]# gluster volume heal gv2 heal-failed

#查看主机的状态

[root@node1 ~]# gluster peer status

#查看脑裂的文件

[root@node1 ~]# gluster volume heal gv2 info split-brain

#激活quota功能

[root@node1 ~]# gluster volume quota gv2 enable

#关闭quota功能

[root@node1 ~]# gulster volume quota gv2 disable

#目录限制(卷中文件夹的大小)

[root@node1 ~]# gluster volume quota limit-usage /data/30MB --/gv2/data

#quota信息列表

[root@node1 ~]# gluster volume quota gv2 list

列出集群中所有卷

[root@node1 ~]# gluster volume list

#限制目录的quota信息

[root@node1 ~]# gluster volume quota gv2 list /data

#设置信息的超时时间

[root@node1 ~]# gluster volume set gv2 features.quota-timeout 5

#删除某个目录的quota设置

[root@node1 ~]# gluster volume quota gv2 remove /data

[root@node1 ~]# gluster volume remove-brick srm_gv replica 2 node1:/data/brick1 node2:/data/brick1 force

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
微信号已复制
微信公众号
微信扫一扫,关注我!
weinxin
公众号已复制
小柒博客
  • 本文由 小柒博客 发表于 2019年6月24日 16:37:51
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.com/4082.html
评论  2  访客  1  作者  1
    • 运维老司机
      运维老司机 6

      亲测,写的不错 :razz:

      • 小柒博客
        小柒博客

        :razz: :razz:

      匿名

      发表评论

      匿名网友
      :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

      拖动滑块以完成验证