1. GlusterFS概述
1)Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储.
2)Glusterfs通过TCP/IP或InfiniBand RDMA网络链接将客户端的存储资块源聚集在一起,使用单一的全局命名空间来管理数据,磁盘和内存资源.
3)Glusterfs基于堆叠的用户空间设计,可以为不同的工作负载提供高优的性能.
4)Glusterfs支持运行在任何标准IP网络上标准应用程序的标准客户端,如下图1所示,用户可以在全局统一的命名空间中使用NFS/CIFS等标准协议来访问应用数据.
2.Glusterfs主要特征
扩展性和高性能
高可用
全局统一命名空间
弹性hash算法
弹性卷管理
基于标准协议
3.工作原理:
- 首先是在客户端, 用户通过glusterfs的mount point 来读写数据, 对于用户来说,集群系统的存在对用户是完全透明的,用户感觉不到是操作本地系统还是远端的集群系统。
- 用户的这个操作被递交给 本地linux系统的VFS来处理。
- VFS 将数据递交给FUSE 内核文件系统:在启动 glusterfs 客户端以前,需要想系统注册一个实际的文件系统FUSE,如上图所示,该文件系统与ext3在同一个层次上面, ext3 是对实际的磁盘进行处理, 而fuse 文件系统则是将数据通过/dev/fuse 这个设备文件递交给了glusterfs client端。所以, 我们可以将 fuse文件系统理解为一个代理。
- 数据被fuse 递交给Glusterfs client 后, client 对数据进行一些指定的处理(所谓的指定,是按照client 配置文件据来进行的一系列处理, 我们在启动glusterfs client 时需要指定这个文件。
- 在glusterfs client的处理末端,通过网络将数据递交给 Glusterfs Server,并且将数据写入到服务器所控制的存储设备上。
4.常用卷类型
分布(distributed)
复制(replicate)
条带(striped)
基本卷:
(1) distribute volume:分布式卷
(2) stripe volume:条带卷
(3) replica volume:复制卷
复合卷:
(4) distribute stripe volume:分布式条带卷
(5) distribute replica volume:分布式复制卷
(6) stripe replica volume:条带复制卷
(7) distribute stripe replicavolume:分布式条带复制卷
glusterFs群集部署
一、实验环境
1.节点服务器
为了可以更好地看到结果,把硬盘内存设少
1.1 linux-1 node1 192.168.10.1
添加4块磁盘
挂载磁盘 挂载目录
/dev/sdb(3G) /b3
/dev/sdc(4G) /c4
/dev/sdd(5G) /d5
/dev/sde(6G) /e6
1.2 linux-2 node2 192.168.10.2
添加4块磁盘
挂载磁盘 挂载目录
/dev/sdb(3G) /b3
/dev/sdc(4G) /c4
/dev/sdd(5G) /d5
/dev/sde(6G) /e6
1.3 linux-3 node3 192.168.10.3
添加3块磁盘
挂载磁盘 挂载目录
/dev/sdb(3G) /b3
/dev/sdc(4G) /c4
/dev/sdd(5G) /d5
1.4 linux-4 node4 192.168.10.4
添加3块磁盘
挂载磁盘 挂载目录
/dev/sdb(3G) /b3
/dev/sdc(4G) /c4
/dev/sdd(5G) /d5
2.客户端
linux-5 client 192.168.10.5
二、实验目的
创建glusterFs各种卷并测试
卷名称 卷类型 空间大小GB brick分布情况
dis-volume 分布式卷 12 node1(/e6),node2(/e6)
stripe-volume 条带卷 10 node1(/d5),node2(/d5)
rep-volume 复制卷 5 node3(/d5),node4(/d5)
dis-stripe 分布式条带卷 12 node1(/b3),node2(/b3),node3(/b3),node4(/b3),
dis-rep 分布式复制卷 8 node1(/c4),node2(/c4),node3(/c4),node4(/c4)
三、实验步骤
- 准备环境(node1—node4)
1.1 使用fdisk分区
1. [root@localhost ~]# fdisk -l
2. [root@localhost ~]# fdisk /dev/sdb
n----p----回车默认-----回车默认-----回车默认----p----w
按照同样方法处理其他磁盘
[root@localhost ~]# fdisk /dev/sdc
[root@localhost ~]# fdisk /dev/sdd
[root@localhost ~]# fdisk /dev/sde
格式化磁盘
1. [root@localhost ~]# mkfs -t ext4 /dev/sdb1
2. [root@localhost ~]#mkfs -t ext4 /dev/sdc1
3. [root@localhost ~]# mkfs -t ext4 /dev/sdd1
4. [root@localhost ~]# mkfs -t ext4 /dev/sde1
创建挂载点并挂载
1. [root@localhost ~]# mkdir /b3 /c4 /d5 /e6
2. [root@localhost ~]# mount /dev/sdb1 /b3
3. [root@localhost ~]# mount /dev/sdc1 /c4
4. [root@localhost ~]# mount /dev/sdd1 /d5
5. [root@localhost ~]# mount /dev/sde1 /e6
创建自动挂载
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Sep 1 18:48:17 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=25ecea8a-6b8e-41fd-b304-ec54d2f15210 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
/dev/sdb1 /b3 ext4 defaults 1 2
/dev/sdc1 /c4 ext4 defaults 1 2
/dev/sdd1 /d5 ext4 defaults 1 2
/dev/sde1 /e6 ext4 defaults 1 2
[root@localhost ~]# df -hT
1.2 (node1-node4) 配置hosts文件,使节点服务器能够互相解析访问。修改主机名为自己的主机名
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.1 node1
192.168.10.2 node2
192.168.10.3 node3
192.168.10.4 node4
[root@localhost ~]# hostname node1
[root@localhost ~]# bash
[root@node1 ~]#
2. (node1–node4)安装软件–yum方式(需要配置本地其他目录的yum仓库)
1 [root@node1 ~]# yum -y install createrepo
2 [root@localhost ~]# which createrepo
3 [root@localhost ~]# mkdir /other
上传gfsrepo文件夹相关软件到此目录
[root@localhost other]# ll /other
[root@localhost other]# vim /etc/yum.repos.d/local.repo
#[local]
#name=centos7.4
#baseurl=file:///media/cdrom
#enabled=1
#gpgcheck=0
[other]
name=glusterfs
baseurl=file:///other
enabled=1
gpgcheck=0
创建软件数据库目录
1 [root@localhost other]# createrepo /other
2 [root@localhost ~]# yum makecache
安装客户端软件
[root@localhost ~]# yum -y install glusterfs glusterfs-fuse
7.2 创建挂载目录
[root@localhost ~]# mkdir -p /test/{dis,stripe,rep,dis_and_stripe,dis_and_rep}
[root@localhost ~]# ls /test
dis dis_and_rep dis_and_stripe rep stripe
7.3 修改hosts文件
[root@localhost ~]# vim /etc/hosts
192.168.10.1 node1
192.168.10.2 node2
192.168.10.3 node3
192.168.10.4 node4
[root@localhost ~]# ping node1 -c 3
7.4 挂载glusterfs文件系统
1 [root@localhost ~]#
2 [root@localhost ~]# mount -t glusterfs node1:dis-volume /test/dis
3 [root@localhost ~]# mount -t glusterfs node1:stripe-volume /test/stripe
4 [root@localhost ~]# mount -t glusterfs node1:rep-volume /test/rep
5 [root@localhost ~]# mount -t glusterfs node1:dis-stripe /test/dis_and_stripe
6 [root@localhost ~]# mount -t glusterfs node1:dis-rep /test/dis_and_rep
7.5 设置为自动挂载
[root@localhost ~]# 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_and_stripe glusterfs defaults,_netdev 0 0
node1:dis-rep /test/dis_and_rep glusterfs defaults,_netdev 0 0
8.测试glusterfs文件系统
8.1 client 192.168.10.5
卷中写入文件
[root@localhost ~]# du -sh /var/log/messages
684K /var/log/messages
1 [root@localhost ~]# cp /var/log/messages test1.log
2 [root@localhost ~]# cp /var/log/messages test2.log
3 [root@localhost ~]# cp /var/log/messages test3.log
4 [root@localhost ~]# cp /var/log/messages test4.log
5 [root@localhost ~]# cp /var/log/messages test5.log
6 [root@localhost ~]# chmod 644 test*
7 [root@localhost ~]# ll -h test*
-rw-r--r-- 1 root root 684K 10月 14 13:11 test1.log
-rw-r--r-- 1 root root 684K 10月 14 13:11 test2.log
-rw-r--r-- 1 root root 684K 10月 14 13:11 test3.log
-rw-r--r-- 1 root root 684K 10月 14 13:11 test4.log
-rw-r--r-- 1 root root 684K 10月 14 13:11 test5.log
8 [root@localhost ~]# cp test* /test/dis/
9 [root@localhost ~]# cp test* /test/stripe/
10 [root@localhost ~]# cp test* /test/rep/
11 [root@localhost ~]# cp test* /test/dis_and_stripe/
12 [root@localhost ~]# cp test* /test/dis_and_rep/
8.2 查看文件分布
1)查看分布式卷 —没有分片,还是原始大小
node1 192.168.10.1
node2 192.168.10.2
2)查看条带卷分布—大小被分片
node1,node2
3)查看复制卷分布----没有分片,原始大小
node3:/d5 ,node4:/d5
4)查看分布式条带卷 —大小被分片,同时又2份
node1–node4:/b3
5)查看分布式复制卷文件分布—没有分片,原始大小。复制为2份
node1–node4:/c4