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-88)(image-.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.*
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207546.html原文链接:https://javaforall.net
