GlusterFS简介
开源的分布式文件系统
由存储服务器、客户端以及NFS/Samba存储网关组成
无元数据服务器
Gluster FS特点
扩展性和高性能
高可用性
全局统一命名空间
弹性卷管理
基于标准协议
弹性HASH算法
通过HASH算法得到一个32位的整数
划分为N个连续的子空间,每个空间对应一个Brick
弹性HASH算法的优点
保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
GlusterFS的卷类型
分布式卷
没有对文件进行分块处理
通过扩展文件属性保存HASH值
支持的底层文件系统有EXT3、EXT4、ZF8、XFS等
特点
文件分布在不的服务器,不具备冗余性
更容易和廉价地扩展卷的大小
单点故障会造成数据丢失
依赖底层的数据保护
条带卷
根据偏移量将文件分成N快(N个条带节点),轮询的存储在每个Brick server节点
存储大文件,性能尤为突出
不具备冗余性,类似Raido
特点
数据被分割成更小块分布到块服务器群中的不同条带区
分布减少了负载且更小的文件加速了存取的速度
没有数据冗余
复制卷
同一文件保存一份或多份副本
因为要保存副本,所以磁盘利用率较低
若多个节点上的存储空间不一致,将按照木桶效应取低节点的容量作为该卷的总容量
特点
卷中所有的服务器均保存一个完整的副本
卷的副本数量可由客户创建的时候决定
至少有两块服务器或更多服务器
具备冗余性
分布式条带卷
分布式复制卷
条带复制卷
分布式条带复制卷
部署Gluster FS集群
1.基础环境
2.前四台机器挂载磁盘 (创建完磁盘后,编写脚本,执行)
#!/bin/bash
declare -A dev_name
dev_name['sdb']=b3
dev_name['sdc']=c4
dev_name['sdd']=d5
dev_name['sde']=e6
# 自动分区
fenqu() {
fdisk /dev/$1 << EOF
n
w
EOF
}
# 格式化分区
mkfs_ext4() {
mkfs.ext4 /dev/${1}1
}
for i in ${!dev_name[@]}
do
fenqu "$i"
mkfs_ext4 "$i"
mkdir /${dev_name[$i]}
#mount /dev/${i}1 /${dev_name[$i]}
echo "UUID=$(blkid | grep ${i}1 | awk -F '"' '{print $2}') /${dev_name[$i]} ext4 defaults 0 0" >> /etc/fstab
done
mount -a
df -Th
3.所有机器上传软件包
tar zxf glusterfs_rpm.tar.gz
cd glusterfs_rpm/glusterfs/
yum -y localinstall *
cd
4.所有机器写入hosts解析
cat >> /etc/hosts << EOF
192.168.27.149 node1
192.168.27.129 node2
192.168.27.130 node3
192.168.27.132 node4
192.168.27.133 client
EOF
5.在前四台机器开启服务
systemctl start glusterd.service
systemctl enable glusterd.service
6.在第一台机器执行
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
gluster peer status
使用卷在(node1节点)
1.分布式卷
#创建分布式卷
gluster volume create dis-volume node1:/e6 node2:/e6 force
查看卷
#查看详情
gluster volume info dis-volume
#查看具有的卷
gluster volume list
启动卷
gluster volume start dis-volume
切换到客户端 ,挂载使用
mkdir -p /test/dis
mount -t glusterfs node1:dis-volume /test/dis/
查询可以看到,可以使用,并且空间没有浪费
2.条带卷(被淘汰了,所以不演示使用)
#创建条带卷的方式
gluster volume create stripe-volume stripe 2 node1:/d5 node2:/d5 force
gluster volume info stripe-volume
gluster volume start stripe-volume
3.复制卷(切换node1节点)
#创建并启动复制卷
gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force
gluster volume info rep-volume
gluster volume start rep-volume
在客户端挂载使用复制卷
mkdir /test/rep
mount -t glusterfs node1:rep-volume /test/rep/
df -Th
符合复制卷的特点(占用的空间,只能使用一半,另一半用来备份)
验证复制卷
#在客户端复制一个文件,在对应的node节点上的位置上就会有相对于的备份文件存在
cp /etc/fstab /test/rep/
4.分布式府志卷(在node1节点上操作)
gluster volume create dis-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
gluster volume info dis-rep
gluster volume start dis-rep
在client节点上挂载使用
mkdir /test/dis-rep
mount -t glusterfs node1:dis-rep /test/dis-rep
验证效果(在node1上查看卷所分的位置)
在client节点上,创建一个文件,在node节点上查对应的位置
5.永久挂载 (在客户端操作)
vi /etc/fstab
node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0
#node1:dis-volume 挂载卷的名字
#/test/dis 挂载的位置