本文共 14425 字,大约阅读时间需要 48 分钟。
GlusterFS 特点:
扩展性和高性能;
高可用性;
全局统一命名空间;
弹性卷管理;
基于标准协议
GlusterFS术语Brick
Volume
FUSE
VFS
Glusterd
模块化堆栈式架构
模块化、堆栈式的架构通过对模块的组合,实现复杂的功能保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈文件分布在不同的服务器,不具备冗余性;
更容易和廉价地扩展卷的大小; 单点故障会造成数据丢失; 依赖底层的数据保护。#创建一个名为dis-volume的分布式卷,文件将根据HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3
特点
数据被分割成更小块分布到块服务器群中的不同条带区 分布减少了负载且更小的文件加速了存取的速度 没有数据冗余创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
兼顾分布式卷和复制卷的功能
用于需要冗余的情况创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
兼顾分布式卷和条带卷的功能
主要用于大文件访问处理 至少最少需要4台服务器创建了名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1server2:/dir2 server3:/dir3 server4:/dir4
兼顾分布式卷和复制卷的功能
用于需要冗余的情况 创建分布式复制卷创建名为dis-rep的分布式条带卷,配置分布式复制卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2;ldir2 server3:/dir3 server4:/dir4
五台虚拟机:一台作为客户机,另外四台作为节点,每个虚拟机新增4块磁盘(每块磁盘20G)
磁盘预划分:卷名称 | 卷类型 | 磁盘 |
---|---|---|
dis-volume | 分布式卷 | node1(/sdb1) node2(/sdb1) |
stripe-volume | 条带卷 | node3(/sdb1)node4(/sdb1) |
rep-volume | 复制卷 | node3:/data/sdb1 node4:/data/sdb1 |
dis-stripe | 分布式条带卷 | node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 |
dis-rep | 分布式复制卷 | node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 |
#!/bin/bashfor V in $(ls /dev/sd[b-z])do echo -e "n\np\n\n\n\nw\n" |fdisk $V mkfs.xfs -i size=512 ${ V}1 &>/dev/null sleep 1 M=$(echo "$V" |awk -F "/" '{print $3}') mkdir -p /data/${ M}1 &>/dev/null echo -e "${V}1 /data/${M}1 xfs defaults 0 0\n" >>/etc/fstab mount -a &>/dev/nulldone[root@node1~]# chmod +x fdisk.sh [root@node1 ~]# ./fdisk.sh ./fdisk.sh:行1: [root@localhost: 未找到命令进行磁盘创建,格式化,挂载磁盘 /dev/sdd:2147 MB, 2147483648 字节,4194304 个扇区磁盘 /dev/sdc:2147 MB, 2147483648 字节,4194304 个扇区磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区磁盘 /dev/sde:2147 MB, 2147483648 字节,4194304 个扇区------------------------------------你想选择上面那块磁盘挂载:sdb //此处输入需要挂载的磁盘
[root@localhost ~]# hostnamectl set-hostname node1[root@localhost ~]# su[root@node1 ~]# vi /etc/hosts ##设置主机映射关系192.168.10.50 node1192.168.10.20 node2192.168.10.80 node3192.168.10.90 node4[root@node1 ~]# scp /etc/hosts 192.168.10.20:/etc/hosts ##将hosts文件拷贝到其他节点直接用root@192.168.10.20's password: hosts 100% 238 153.7KB/s 00:00 [root@node1 ~]# scp /etc/hosts 192.168.10.80:/etc/hostsroot@192.168.10.80's password: hosts 100% 238 121.3KB/s 00:00 [root@node1 ~]# scp /etc/hosts 192.168.10.90:/etc/hostsroot@192.168.10.90's password: hosts
[root@node1 ~]# cd /etc/yum.repos.d/[root@node1 yum.repos.d]# mv C* backup/[root@node1 yum.repos.d]# lsbackup GLFS.repo[root@node1 yum.repos.d]# vi GLFS.repo[GLFS]name=glfsbaseurl=http://mirror.centos.org/centos/$releasever/storage/$basearch/gluster-3.12/gpgcheck=0enabled=1
[root@node1 ~]# systemctl start glusterd.service [root@node1 ~]# systemctl enable glusterd.service [root@node1 ~]# systemctl status glusterd.service● glusterd.service - GlusterFS, a clustered file-system server Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: disabled) Active: active (running) since 二 2020-11-17 08:57:47 CST; 13s ago Process: 13516 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 13517 (glusterd) CGroup: /system.slice/glusterd.service └─13517 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO11月 17 08:57:47 node1 systemd[1]: Starting GlusterFS, a clustered file-system server...11月 17 08:57:47 node1 systemd[1]: Started GlusterFS, a clustered file-system server.[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com 17 Nov 08:58:15 ntpdate[13535]: adjust time server 120.25.115.20 offset -0.002099 sec
##########这里以node1为例#####################[root@server1 yum.repos.d]# gluster peer probe node2 peer probe: success. [root@server1 yum.repos.d]# gluster peer probe node3peer probe: success. [root@server1 yum.repos.d]# gluster peer probe node4peer probe: success. [root@server1 yum.repos.d]# gluster peer status Number of Peers: 3[root@server1 yum.repos.d]# gluster peer status Number of Peers: 3Hostname: node2Uuid: ed0abdb5-f32d-4a72-bf18-b502c67e3505State: Peer in Cluster (Connected)Hostname: node3Uuid: 41860f92-143c-421d-afd0-2f1bea14df59State: Peer in Cluster (Connected)Hostname: node4Uuid: f9a8ca50-1e36-41cb-96b2-f300a1bd8404State: Peer in Cluster (Connected)
[root@node1 ~]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force[root@node1 ~]# gluster volume start dis-volvolume start: dis-vol: success[root@node1 ~]# gluster volume info dis-vol Volume Name: dis-volType: DistributeVolume ID: 25e08068-8f2e-4a9d-ad88-40ffb3faa4d1Status: StartedSnapshot Count: 0Number of Bricks: 2Transport-type: tcpBricks:Brick1: node1:/data/sdb1Brick2: node2:/data/sdb1Options Reconfigured:transport.address-family: inetnfs.disable: on
[root@server1 ~]# gluster volume create stripe-vol stripe 2 node3:/data/sdc1 node2:/data/sdc1 forcevolume create: stripe-vol: success: please start the volume to access data[root@server1 ~]# gluster volume start stripe-vol volume start: stripe-vol: success[root@server1 ~]# gluster volume info stripe-vol Volume Name: stripe-volType: StripeVolume ID: d9c60597-70d7-49b1-a40c-ae4b384e8e67Status: StartedSnapshot Count: 0Number of Bricks: 1 x 2 = 2Transport-type: tcpBricks:Brick1: node3:/data/sdc1Brick2: node2:/data/sdc1Options Reconfigured:transport.address-family: inetnfs.disable: on
[root@server1 ~]# gluster volume create rep-vol replica 2 node3:/data/sda1 node4:/data/sda1 forcevolume create: rep-vol: success: please start the volume to access data[root@server1 ~]# gluster volume start rep-vol volume start: rep-vol: success[root@server1 ~]# gluster volume info rep-vol Volume Name: rep-volType: ReplicateVolume ID: 2a6334f9-143a-4b5f-a1c0-1db36b637d4aStatus: StartedSnapshot Count: 0Number of Bricks: 1 x 2 = 2Transport-type: tcpBricks:Brick1: node3:/data/sda1Brick2: node4:/data/sda1Options Reconfigured:transport.address-family: inetnfs.disable: onperformance.client-io-threads: off
[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 forcevolume create: dis-stripe: success: please start the volume to access data[root@node1 ~]# gluster volume start dis-stripevolume start: dis-stripe: success[root@node1 ~]# gluster volume info dis-stripe Volume Name: dis-stripeType: Distributed-StripeVolume ID: 5547fe4e-44e6-4d07-bf0a-cc92f74028caStatus: StartedSnapshot Count: 0Number of Bricks: 2 x 2 = 4Transport-type: tcpBricks:Brick1: node1:/data/sdd1Brick2: node2:/data/sdd1Brick3: node3:/data/sdd1Brick4: node4:/data/sdd1Options Reconfigured:transport.address-family: inetnfs.disable: on
[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 forcevolume create: dis-rep: success: please start the volume to access data[root@node1 ~]# gluster volume info dis-rep Volume Name: dis-repType: Distributed-ReplicateVolume ID: 45e3c958-eca2-46d6-b292-45e19230653cStatus: CreatedSnapshot Count: 0Number of Bricks: 2 x 2 = 4Transport-type: tcpBricks:Brick1: node1:/data/sde1Brick2: node2:/data/sde1Brick3: node3:/data/sde1Brick4: node4:/data/sde1Options Reconfigured:transport.address-family: inetnfs.disable: onperformance.client-io-threads: off
[root@node1 ~]# gluster volume listdis-repdis-stripedis-volrep-volstripe-vol
gluster volume stop 卷名gluster volume delete 卷名
gluster volume set 卷名 auth.reject 192.168.220.100 //拒绝某台主机挂载gluster volume set 卷名 auth.allow 192.168.220.100 //允许某台主机挂载
[root@localhost ~]# yum -y install glusterfs glusterfs-fuse ##安装这两个软件,支持gluster挂载[root@localhost ~]# vi /etc/hosts ##先给几个节点添加主机名映射192.168.158.10 node1192.168.158.20 node2192.168.158.30 node3192.168.158.40 node4
[root@localhost ~]# mount.glusterfs node1:dis-vol /text/dis [root@localhost ~]# mount.glusterfs node1:stripe-vol /text/stripe [root@localhost ~]# mount.glusterfs node1:rep-vol /text/rep [root@localhost ~]# mount.glusterfs node1:dis-stripe /text/dis-stripe[root@localhost ~]# mount.glusterfs node1:dis-rep /text/dis-rep
[root@localhost ~]# df -Th文件系统 类型 容量 已用 可用 已用% 挂载点...省略node1:dis-vol fuse.glusterfs 40G 65M 40G 1% /text/disnode1:stripe-vol fuse.glusterfs 40G 65M 40G 1% /text/stripenode1:rep-vol fuse.glusterfs 20G 33M 20G 1% /text/repnode1:dis-stripe fuse.glusterfs 80G 130M 80G 1% /text/dis-stripenode1:dis-rep fuse.glusterfs 40G 65M 40G 1% /text/dis-rep
挂载信息总结: 分布式、条带式、分布条带式卷可用空间为各个磁盘空间的总和,而复制卷和分布式复制卷的可用空间大小为空间的一半,但是安全性更高
[root@localhost ~]# dd if=/dev/zero of=/demo1.log bs=40M count=1[root@localhost ~]# dd if=/dev/zero of=/demo2.log bs=40M count=1[root@localhost ~]# dd if=/dev/zero of=/demo3.log bs=40M count=1[root@localhost ~]# dd if=/dev/zero of=/demo4.log bs=40M count=1[root@localhost ~]# dd if=/dev/zero of=/demo5.log bs=40M count=1[root@localhost ~]# ls /demo*/demo1.log /demo2.log /demo3.log /demo4.log /demo5.log[root@localhost ~]# cp /demo* /text/dis[root@localhost ~]# cp /demo* /text/stripe[root@localhost ~]# cp /demo* /text/rep/[root@localhost ~]# cp /demo* /text/dis-stripe/[root@localhost ~]# cp /demo* /text/dis-rep/
[root@node1 ~]# ls -lh /data/sdb1总用量 160M-rw-r--r--. 2 root root 40M 11月 17 14:49 demo1.log-rw-r--r--. 2 root root 40M 11月 17 14:49 demo2.log-rw-r--r--. 2 root root 40M 11月 17 14:49 demo3.log-rw-r--r--. 2 root root 40M 11月 17 14:49 demo4.log
[root@node2 ~]# ls -lh /data/sdb1总用量 40M-rw-r--r--. 2 root root 40M 11月 17 14:49 demo5.log
总结:分布式卷中文件以完整的文件形式存放在各个节点中,每个节点存放一部分文件
[root@server3 ~]# ls -lh /data/sdb1总用量 100M-rw-r--r--. 2 root root 20M 11月 17 14:49 demo1.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo2.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo3.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo4.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo5.log
[root@localhost ~]# ls -lh /data/sdb1总用量 100M-rw-r--r--. 2 root root 20M 11月 17 14:49 demo1.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo2.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo3.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo4.log-rw-r--r--. 2 root root 20M 11月 17 14:49 demo5.log
总结,条带卷中每个文件被拆成N(条带数)个部分,分别存放在不同节点中,每个节点都只存放文件的1/N
[root@node1 ~]# ls -lh /data/sdc1总用量 200M-rw-r--r--. 2 root root 40M 11月 17 14:50 demo1.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo2.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo3.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo4.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo5.log
[root@node2 ~]# ls -lh /data/sdc1总用量 200M-rw-r--r--. 2 root root 40M 11月 17 14:50 demo1.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo2.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo3.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo4.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo5.log
总结:在复制卷中,每个文件会以备份的形式存放在各个节点中,每个节点都有一套完整的文件
[root@node1 ~]# ls -lh /data/sdd1总用量 80M-rw-r--r--. 2 root root 20M 11月 17 14:50 demo1.log-rw-r--r--. 2 root root 20M 11月 17 14:50 demo2.log-rw-r--r--. 2 root root 20M 11月 17 14:50 demo3.log-rw-r--r--. 2 root root 20M 11月 17 14:50 demo4.log
[root@client1 ~]# ls -lh /data/sdd1总用量 80M-rw-r--r--. 2 root root 20M 11月 17 14:50 demo1.log-rw-r--r--. 2 root root 20M 11月 17 14:50 demo2.log-rw-r--r--. 2 root root 20M 11月 17 14:50 demo3.log-rw-r--r--. 2 root root 20M 11月 17 14:50 demo4.log
[root@node3 ~]# ls -lh /data/sdd1总用量 20M-rw-r--r--. 2 root root 20M 11月 17 14:50 demo5.log
[root@node4 ~]# ls -lh /data/sdd1总用量 20M-rw-r--r--. 2 root root 20M 11月 17 14:50 demo5.log
总结:分布式条带卷先以分布式卷的形式,两两一组,保存完整的文件,再对各组的文件进行条带式拆分存储,将组内的文件分成两部分存在组内的服务器上,即一个组内的两台服务器存放的文件可以组成一部分完整的文件,另一组同理,两个组各自持有的那部分文件相加就是完全完整的文件
[root@node1 ~]# ls -lh /data/sde1总用量 160M-rw-r--r--. 2 root root 40M 11月 17 14:50 demo1.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo2.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo3.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo4.log
[root@node2 ~]# ls -lh /data/sde1总用量 160M-rw-r--r--. 2 root root 40M 11月 17 14:50 demo1.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo2.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo3.log-rw-r--r--. 2 root root 40M 11月 17 14:50 demo4.log
[root@node3 ~]# ls -lh /data/sde1总用量 40M-rw-r--r--. 2 root root 40M 11月 17 14:50 demo5.log
[root@node4 ~]# ls -lh /data/sde1总用量 40M-rw-r--r--. 2 root root 40M 11月 17 14:50 demo5.log
总结:分布式复制卷两两一组,每组保存整套完整的文件,组组之间进行备份,当一台节点挂掉,数据不受影响
如果局的对你有用的话没给个三连吧转载地址:http://bfdaf.baihongyu.com/