GlusterFS简介
- 开源的分布式文件系统
- 由存储服务器,客户端以及NFS/Samba存储网关组成
- 无元服务器
GlusterFS特点
- 扩展性和高性能
- 高可用性
- 全局统一命名空间
- 弹性卷管理
- 基于标准管理
GlusterFS术语
- Brick
- Volume
- FUSE
- VFS
- Glusterd
弹性HASH算法
- 通过HASH算法得到一个32位的整数
- 划分为N个连续的子空间,每一个空间对应一个Brick
- 弹性HASH算法的优点
- 保证 数据平均分布在每一个Brick中
- 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
GlusterFS的卷类型
- 分布式卷
- 条带卷
- 复制卷
- 分布式条带卷
- 分布式复制卷
- 条带复制卷
- 分布式条带复制卷
分布式卷
- 没有对文件进行分块处理
- 通过扩展文件属性保存HASH值
- 支持的底层文件系统由EXT3,EXT4,ZFS
分布式卷特点
- 文件分布在不同的服务器,不具备冗余性
- 更容易和了两件的扩展卷的大小
- 单点故障会造成数据丢失
- 依赖底层的数据保护
条带卷
- 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
- 数据被分割成更小块分布到服务器群中的不同条带区
- 分布减少了负载且更小的文件加速了存取的速度
- 没有数据冗余
复制卷
- 同一文件保存一份或多副本
- 因为保存副本,所以磁盘利用率较低
- 若多个节点上的存储空间不一致,将安装木桶效应取最低节点的容量作为该卷的总容量
特点
- 卷中所有的服务器均保存一个完整的副本
- 卷的副本数量可由客户创建的时候决定
- 至少有两个块服务器或更多服务器
- 具备冗余性
分布式条带卷
- 兼顾分布式卷和条带卷的功能
- 主要用于大文件访问处理
- 自少需要4台服务器
分布式复制卷
- 兼顾分布式卷和复制卷的功能
- 用于需要冗余的情况
部署GFS分布式存储系统
资源列表
echo "192.168.10.51 node1" >> /etc/hosts
echo "192.168.10.52 node2" >> /etc/hosts
echo "192.168.10.53 node3" >> /etc/hosts
echo "192.168.10.54 node4" >> /etc/hosts
echo "192.168.10.68 client" >> /etc/hosts
cat /etc/hosts
操作系统 | IP | 主机名 | 磁盘 | 挂载目录 |
Centos7 | 192.168.10.51 | node1 | /dev/sdb(3GB),/dev/sdc(4GB),/dev/sdd(5GB),/dev/sde(6G) | /b3 /ce/ d5 /e6 |
Centos7 | 192.168.10.52 | node2 | /dev/sdb(3GB),/dev/sdc(4GB),/dev/sdd(5GB),/dev/sde(6G) | /b3 /ce/ d5 /e6 |
Centos7 | 192.168.10.53 | node3 | /dev/sdb(3GB),/dev/sdc(4GB),/dev/sdd(5GB),/dev/sde(6G) | /b3 /ce/ d5 /e6 |
Centos7 | 192.168.10.54 | node4 | /dev/sdb(3GB),/dev/sdc(4GB),/dev/sdd(5GB),/dev/sde(6G) | /b3 /ce/ d5 /e6 |
Centos7 | 192.168.10.68 | client |
修改主机名
#在四个节点执行
hostnamectl set-hostname node1-4
添加hosts主机解析
echo "192.168.10.51 node1" >> /etc/hosts
echo "192.168.10.52 node2" >> /etc/hosts
echo "192.168.10.53 node3" >> /etc/hosts
echo "192.168.10.54 node4" >> /etc/hosts
echo "192.168.10.68 client" >> /etc/hosts
cat /etc/hosts
挂载磁盘(在所有node节点操作)
fdisk /dev/sdb
mkfs.xfs /dev/sdb1
mkdiir /b3
mount /dev/sdb1 /b3
下载启动gfs(在所有node节点操作)
yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service
systemctl enable glusterd.service
加入集群(在node1节点操作)
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
创建分布式卷
gluster volume create dis-volume node1:/e6 node2:/e6 force
#创建分布式卷,名字为dis-volume,使用node中的e6,和node2的e6
gluster volume info dis-volume
#查看分布式卷
gluster volume start dis-volume
#启动分布式卷
在客户机测试
yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-fuse
mkdir -p /test/dis
mount -t glusterfs node1:dis-volume /test/dis/
df -Th
node1:dis-volume fuse.glusterfs 12G 188M 12G 2% /test/dis
创建分布式复制卷
gluster volume create dis-dist replica 2 transport tcp node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
gluster volume start dis-dist
gluster volume info dis-dist
在客户机测试
mkdir -p /test/dis-rep
mount -t glusterfs node1:dis-dist /test/dis-rep
df -Th
node1:dis-dist fuse.glusterfs 8.0G 147M 7.9G 2% /test/dis-rep
创建复制卷
gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force
gluster volume start rep-volume
gluster volume info rep-volume
在客户机进行测试
mkdir -p /test/rep
mount -t glusterfs node1:rep-volume /test/rep
df -Th
node1:rep-volume fuse.glusterfs 5.0G 84M 5.0G 2% /test/rep
永久挂载
echo 'node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0' >> /etc/fstab
node1:rep-volume
: 这部分指定了 GlusterFS 卷的服务器地址(node1)和卷名称(rep-volume)。这意味着您的 GlusterFS 卷是在名为 node1 的主机上,卷名为 rep-volume。
/test/rep
: 这是您在本地(即挂载该 GlusterFS 卷的客户端)想要挂载该卷的目录。挂载后,您可以通过访问 /test/rep 来查看和操作 GlusterFS 卷中的文件和目录。
glusterfs
: 指定了文件系统的类型为 GlusterFS,这是让系统知道应该如何处理这个挂载点。
defaults,_netdev
: 这些是挂载选项。
defaults 使用默认的挂载选项,这些选项通常包括 rw(读写权限)、suid、dev、exec、auto、nouser 和 async。
_netdev 是一个特殊选项,告诉系统这个设备需要网络连接,并且在网络初始化之后再进行挂载。这对于网络文件系统如 GlusterFS 是非常重要的,确保系统不会在启动过程中因网络尚未就绪而挂载失败。
0 0
: 最后的两个数字分别代表 dump 和 pass。0 表示不进行磁盘备份(dump)以及在系统fsck(文件系统检查)时不检查此文件系统(pass)。