Gluster分布式文件系统
概述
GlusterFS (Gluster File System) 是一个开源的分布式文件系统,GlusterFS 是 Scale-Out 存储解决方案 Gluster 的核心,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。 RDMA 网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS 基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。
基本术语
名称 | 解释 |
---|---|
Brick | 最基本的存储单元,表示为trusted storage pool中输出的目录,供客户端挂载用。 |
Volume | 一个卷。在逻辑上由N个bricks组成。 |
FUSE | Unix-like OS上的可动态加载的模块,允许用户不用修改内核即可创建自己的文件系统。 |
Glusterd | Gluster management daemon,要在trusted storage pool中所有的服务器上运行。 |
POSIX | 一个标准,GlusterFS兼容。 |
GlusterFS卷类型
为了满足不同应用对高性能、高可用的需求,GlusterFS 支持 7 种卷,即 distribute 卷、stripe 卷、replica 卷、distribute stripe 卷、distribute replica 卷、stripe Replica 卷、distribute stripe replica 卷。其实不难看出,GlusterFS 卷类型实际上可以分为 3 种基本卷和 4 种复合卷,每种类型的卷都有其自身的特点和适用场景。
基本卷:
分布式卷
-
没有对文件进行分块处理
-
通过扩展文件属性保存HASH值
-
支持的底层文件系统有ext3、ext4、ZFS、XFS等
特点:
-
文件分布在不同的服务器,不具备冗余性
-
更容易和廉价地扩展卷的大小
-
单点故障会造成数据丢失
-
依赖底层的数据保护
条带卷
-
根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
-
存储大文件时,性能尤为突出
-
不具备冗余性,类似Raid0
特点:
-
数据被分割成更小块分布到块服务器群中的不同条带区
-
分布减少了负载且更小的文件加速了存取的速度
-
没有数据冗余
复制卷
-
同一文件保存一份或多分副本
-
复制模式因为要保存副本,所以磁盘利用率较低
-
多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量
特点:
-
卷中所有的服务器均保存一个完整的副本
-
卷的副本数量可由客户创建的时候决定
-
至少由两个块服务器或更多服务器
-
具备冗余性
分布式条带卷
-
兼顾分布式卷和条带卷的功能
-
主要用于大文件访问处理
-
至少最少需要 4 台服务器
分布式复制卷
-
兼顾分布式卷和复制卷的功能
-
用于需要冗余的情况下
条带复制卷
同时具有条带卷和复制卷的特点
分布式条带复制卷
三种基本卷的复合卷
命令 | 功能 |
---|---|
gluster peer probe | 添加节点 |
gluster peer detach | 移除节点 |
gluster volume create | 创建卷 |
gluster volume start | 启动卷 |
gluster volume stop | 停止卷 |
gluster volume delete | 删除卷 |
gluster volume quota enable | 开启卷配额 |
gluster volume quota disable | 关闭卷配额 |
gluster volume quota limit-usage | 设定卷配额 |
案例
实验环境:四台节点服务器、一台客户端
一台node1(192.168.1.1)
一台node2(192.168.1.2)
一台node3(192.168.1.3)
一台node4(192.168.1.4)
一台客户端(192.168.1.51)
1、配置IP地址及所需环境
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
##需要将每台节点服务器配置节点
hostname node1 #临时更改主机名
bash
hostname node2
bash
hostname node3
bash
hostname node4
bash
打开配置文件 vi /etc/sysconfig/network ##永久修改主机名
修改内容:HOSTNAME=你修改主机名
保存并退出 :wq
重启系统 reboot
#客户端和节点服务器都需要添加类似dns查找
vim /etc/hosts
192.168.1.1 node1
192.168.1.2 node2
192.168.1.3 node3
192.168.1.4 node4
2、安装Gluster文件系统服务(rpm安装包 用yum 安装、四台节点服务器都需要安装)
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/yum.repo
[yum]
name=yum
baseurl=file:///media
enabled=1
gpgcheck=0
##就不需要挂载光盘了 但要确保media下有相关的rpm软件包
yum -y clean all
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl restart glusterd #重启服务
systemctl enable glusterd #开机自启
3、在节点服务器(node1)上添加所有节点
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
peer probe: success.
gluster peer status #查看状态
Number of Peers: 3
Hostname: node2
Uuid: e9800bba-1289-48b0-a885-91360aac3d8b
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: c1a92622-eef2-4c6c-8fca-824b46fa6ae9
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 891c1e8d-5719-4a59-957b-e0cbe17ace53
State: Peer in Cluster (Connected)
4、安装客户端
yum -y install glusterfs glusterfs-fuse #系统本身自带可以不安装但也不一定
mkdir -p /test/{dis,stripe,rep,dis-stripe,dis-rep} #添加测试目录便于测试
5、在节点服务器上创建目录(便于测试)
mkdir /data{1..10}
创建分布式卷
gluster volume create dis-volume node1:/data1 node2:/data1 force
#创建一个分布式卷名字叫dis-volume连接到node1和node2上,写到data1目录上
gluster volume info stripe-volume ##查看条带卷信息
gluster volume start stripe-volume ##启用条带卷
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FksrPNxP-1617156906588)(image-20210331090707698.png)]
客户端验证
在客户端上挂载node1上的dis-volume卷到 /test/dis
mount -t glusterfs node1:dis-volume /test/dis
cd /test/dis
touch {1..12}.txt
最后查看node1上和node2上的/data1下的文件 会随机放入node1上和node2
创建条带卷
gluster volume create stripe-volume stripe 2 node1:/data2 node2:/data2 force
gluster volume start stripe-volume
客户端验证
在客户端上挂载node1上的stripe-volume卷到 /test/stripe
mount -t glusterfs node1:stripe-volume /test/stripe
cd /test/stripe/
dd if=/dev/zero of=aa bs=1MB count=80
#调用/dev/zero文件写入到aa中 大小为1mb次数为80次 注意aa的位置
dd: 调用文件
if:源文件
of:目的文件
bs:大小
count:次数
最后查看node1上和node2上的/data2下的文件 会平均放入node1上和node2
ls -lhd /data2/aa
-rw-r--r--. 2 root root 39M 3月 31 09:39 /data2/aa
ls:查看命令
-l:以列表形式查看
-h:以便于人阅读的方式查看大小
-d:查看目录本身
创建复制卷
gluster volume create rep-volume replica 2 node1:/data3 node2:/data3 force #创建复制卷
gluster volume start rep-volume #打开辅助卷
客户端验证
mount -t glusterfs node1:rep-volume /test/rep #连接复制卷
cd /test/rep
touch 1.txt
创建分布式条带卷
最少四台节点服务器
gluster volume create dis-stripe stripe 2 node1:/data4 node2:/data4 node3:/data4 node4:/data4 force #创建分布式条带卷
gluster volume start ##打开分布式条带卷
客户端验证
mount -t glusterfs node1:dis-stripe /test/dis-stripe
cd /test/dis-stripe
dd if=/dev/zero of=/test/dis-stripe/cc bs=1MB count=80
dd if=/dev/zero of=/test/dis-stripe/dd bs=1MB count=80
节点服务器上查看/data4 既满足分布式的随机分布又满足条带式的平均分布
创建分布式复制卷
最少需要四台节点服务器
gluster volume create dis-rep replica 2 node1:/data5 node2:/data5 node3:/data5 node4:/data5 force ##创建分布式复制卷
gluster volume start dis-rep #打开分布式复制卷
客户端验证
mount -t glusterfs node1:dis-rep /test/dis-rep
cd /test/dis-rep
dd if=/dev/zero of=ee bs=1MB count=80
dd if=/dev/zero of=ff bs=1MB count=80
节点服务上查看/data5 既满足分布式的随机分布又满足复制卷的复制
ls -lhd /data5/ee
-rw-r--r--. 2 root root 77M 3月 31 10:07 /data5/ee
还有,条带式复制卷,分布式条带复制卷需要八台节点服务器因为太多了就不做了 道理懂就好了
客户端设置开机自动挂载方便直接写入数据
vim /etc/fstab
node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0
node1:stripe-volume /test/stripe glusterfs defaults,_netdev 0 0
node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0
node1:dis-stripe /test/dis-stripe glusterfs defaults,_netdev 0 0
node1:dis-rep /test/dis-rep glusterfs defaults,_netdev 0 0
设置卷访问控制
gluster volume set 卷名 auth.allow 192.168.1.*