GFS分布式文件系统与GFS群集架构的部署

文章目录

  • 1.GlusterFS概述
    • 1.1 GlusterFS简介
    • 1.2 GlusterFS特点
    • 1.3 GFS专业术语
    • 1.4 模块化堆栈式架构
  • 2.GlusterFS工作流程与原理
    • 2.1 工作流程
    • 2.2 工作原理
  • 3.GlusterFS的卷类型
    • 3.1 分布式卷
    • 3.2 条带卷
    • 3.3 复制卷
    • 3.4 分布式条带卷
    • 3.5 分布式复制卷
    • 3.6 相关区别
  • 4.GFS群集部署
    • 4.1 环境部署
      • 4.1.1 项目拓扑图
      • 4.1.2 项目磁盘环境的设置
    • 4.2 搭建步骤
      • 4.2.1 在每台服务器和客户机上添加映射
      • 4.2.2 在根目录下添加gfsrepo源文件
      • 4.2.3 在所有服务器和客户机上进行以下配置
      • 4.2.4 在node节点服务器上安装相关服务
      • 4.2.5 NTP时间同步
      • 4.2.6 选node1服务器为其他服务器的信任端
    • 4.3 创建卷
    • 4.4 配置客户端
      • 4.4.1 安装相关软件包
      • 4.4.2 创建临时挂载点,并挂载查看
      • 4.4.3 测试GFS卷的功能
    • 4.5 模拟故障
    • 4.6 维护命令集合

1.GlusterFS概述

1.1 GlusterFS简介

  • 开源的分布式文件系统;
  • 由存储服务器、客户端以及NFS/Samba存储网关组成;
  • 无元数据服务器

1.2 GlusterFS特点

  • 扩展性和高性能
  • 高可用性
  • 全局统一命名空间
  • 弹性卷管理
  • 基于标准协议

1.3 GFS专业术语

  • Brick(存储块):指可信主机池中由主机提供的用于物理存储的专用分区,是GlusterFS中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。
  • Volume(逻辑卷):一个逻辑卷是一组 Brick 的集合。卷是数据存储的逻辑设备,类似于LVM中的逻辑卷。大部分Gluster管理操作是在卷上进行的。
  • FUSE (Filesystem inUserspace):是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码。
  • VFS:内核空间对用户空间提供的访问磁盘的接口。
  • Glusterd(后台管理进程):在存储群集中的每个节点上都要运行。

1.4 模块化堆栈式架构

  • 模块化、堆栈式的架构
  • 通过对模块的组合,实现复杂的功能

2.GlusterFS工作流程与原理

2.1 工作流程

GFS分布式文件系统与GFS群集架构的部署_第1张图片

  • 客户端或应用程序通过GlusterFS的挂载点访问数据

  • linux系统内核通过 VFS API 收到请求并处理

  • VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GlusterFS client 端

  • GlusterFS client 收到数据后,client根据配置文件的配置对数据进行处理

  • 通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上

2.2 工作原理

GFS分布式文件系统与GFS群集架构的部署_第2张图片

  • 弹性HASH算法
通过HASH算法得到一个32位的整数
划分为N个连续的子空间,每个空间对应一个Brick
  • 弹性HASH算法的优点
保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

扩展

N个Brick(storage)节点的GlusterFS卷,平均分配2^32次方的区间的范围空间

访问文件时,通过计算该文件的HASH值,从而对应到Brick(storage)存储空间

通过HASH分配到各个节点块,每个节点块都有自己的地址

3.GlusterFS的卷类型

  • 大致分为:
1.分布式卷
2.条带卷
3.复制卷
4.分布式条带卷
5.分布式复制卷
6.条带复制卷
7.分布式条带复制卷

3.1 分布式卷

  • 概述
    没有对文件进行分块处理,文件只能存在一个server中,效率不提升
    通过扩展文件属性保存HASH值
    支持的底层文件系统有ext3、ext4、ZFS、XFS等

  • 特点
    文件分布在不同的服务器,不具备冗余性
    更容易和廉价地扩展卷的大小
    单点故障会造成数据丢失
    依赖底层的数据保护

  • 创建命令

gluster volume create dis-volume server1:/dir1 server2:/dir2
##创建一个名为dis-volume的分布式卷,文件将根据HASH分布在server1:/dir1 和 server2:/dir2中

3.2 条带卷

  • 概述
    根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点(从多个server中同时读取数据,效率提升)
    存储大文件时,性能尤为突出
    不具备冗余性,类似Raid0

  • 特点
    数据被分割成更小块分布到块服务器群中的不同条带区
    分布减少了负载且更小的文件加速了存取的速度
    没有数据冗余

  • 创建命令

gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
##创建一个名为stripe-volume 的条带卷,文件将分块轮询的存储在 server1:/dir1 和 server2:/dir2两个Brick中

3.3 复制卷

  • 概述
    同一文件保存一份或多分副本
    复制模式因为要保存副本,所以磁盘利用率较低
    多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量

  • 特点
    卷中所有的服务器均保存一个完整的副本
    卷的副本数量可由客户创建的时候决定
    至少由两个块服务器或更多服务器
    具备冗余性

  • 创建命令

gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
rep-volume 卷名 
replica 2 分两块

3.4 分布式条带卷

  • 概述
    兼顾分布式卷和条带卷的功能
    主要用于大文件访问处理
    最少需要 4 台服务器

  • 创建命令

gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
##创建一个名为dis-stripe 的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带卷数的倍数(>=2倍)

3.5 分布式复制卷

  • 概述
    兼顾分布式卷和复制卷的功能
    用于需要冗余的情况下

  • 创建命令

gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
##创建一个名为dis-rep 的分布式条带卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制卷数的倍数(>=2倍)

3.6 相关区别

  • 分布式卷:存储brick不在一个区域范围,某一个区域内brick坏了,不影响另一个区域的brick;
  • 条带卷:多个brick形成一个整体,这整体内的任意一块brick坏了,整个条带卷不可用;
  • 复制卷:多个brick形成一个整体,这整体内的每块brick内都有完整文件的复本。因此,复制卷内任意一块brick坏了,不影响复制卷的使用

4.GFS群集部署

4.1 环境部署

4.1.1 项目拓扑图

  • 五台初始化的虚拟机:一台cilent,四台nodes,nodes增加四块磁盘,每块5G

GFS分布式文件系统与GFS群集架构的部署_第3张图片

4.1.2 项目磁盘环境的设置

  • 修改主机名,添加磁盘
主机名node1~4 ;四个节点每个添加四块20G的磁盘,每块5G

fdisk -l		'//查看磁盘'
  • 格式化磁盘,并挂载(所有节点服务器)
以node1节点服务器为例
[root@node1 ~]# mkfs.ext4 /dev/sdb			'//格式化磁盘'
[root@node1 ~]# mkfs.ext4 /dev/sdc
[root@node1 ~]# mkfs.ext4 /dev/sdd
[root@node1 ~]# mkfs.ext4 /dev/sde
[root@node1 ~]# mkdir {
     /b1,/c1,/d1,/e1}		'//创建挂载目录'
[root@node1 ~]# mount /dev/sdb /b1			'//挂载磁盘'
[root@node1 ~]# mount /dev/sdc /c1
[root@node1 ~]# mount /dev/sdd /d1
[root@node1 ~]# mount /dev/sde /e1
[root@node1 ~]# df -Th		//查看挂载
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda5      xfs        52G  4.5G   48G    9% /
devtmpfs       devtmpfs  898M     0  898M    0% /dev
tmpfs          tmpfs     912M     0  912M    0% /dev/shm
tmpfs          tmpfs     912M  9.1M  903M    1% /run
tmpfs          tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sr0       iso9660   4.3G  4.3G     0  100% /mnt
/dev/sda2      xfs       5.0G   33M  5.0G    1% /home
/dev/sda1      xfs      1014M  174M  841M   18% /boot
tmpfs          tmpfs     183M  4.0K  183M    1% /run/user/42
tmpfs          tmpfs     183M   24K  183M    1% /run/user/0
/dev/sdb       ext4      4.8G   20M  4.6G    1% /b1
/dev/sdc       ext4      4.8G   20M  4.6G    1% /c1
/dev/sdd       ext4      4.8G   20M  4.6G    1% /d1
/dev/sde       ext4      4.8G   20M  4.6G    1% /e1

'四个节点都要检查sdb sdc sdd sde 四个磁盘挂载上'

扩展:

  • 创建、格式化、挂载磁盘shell脚本,一键操作
vim disk.sh
 
#! /bin/bash
echo "the disks exist list:"
##grep出系统所带磁盘
fdisk -l |grep '磁盘 /dev/sd[a-z]'    
echo "=================================================="
PS3="chose which disk you want to create:"
 ##选择需要创建的磁盘编号
select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit   
do
    case $VAR in
    sda)
 ##本地磁盘就退出case语句
        fdisk -l /dev/sda   
        break ;;
    sd[b-z])
        #create partitions
        echo "n    ##创建磁盘
                p
                
                
           
                w"  | fdisk /dev/$VAR
 
        #make filesystem
##格式化
        mkfs.xfs -i size=512 /dev/${
     VAR}"1" &> /dev/null    
	#mount the system
        mkdir -p /data/${
     VAR}"1" &> /dev/null
###永久挂载
        echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
###使得挂载生效
        mount -a &> /dev/null
        break ;;
    quit)
        break;;
    *)
        echo "wrong disk,please check again";;
    esac
done

4.2 搭建步骤

4.2.1 在每台服务器和客户机上添加映射

[root@node1 ~]# vi /etc/hosts		//添加每个服务器的映射
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.140.13  node1
192.168.140.14  node2
192.168.140.15  node3
192.168.140.20  node4

[root@node1 ~]# scp /etc/hosts root@192.168.140.14:/etc/
The authenticity of host '192.168.140.14 (192.168.140.14)' can't be established.
ECDSA key fingerprint is SHA256:gAm161KURjvWk+4etPLn4E2vukLlwL4NrYfuovDiV7Y.
ECDSA key fingerprint is MD5:43:87:bd:e0:58:df:e8:9d:1a:0a:3d:c2:13:02:27:ea.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.140.14' (ECDSA) to the list of known hosts.
root@192.168.140.14's password: 
hosts                                                      100%  246    92.7KB/s   00:00 
[root@node1 ~]# scp /etc/hosts root@192.168.140.15:/etc/
[root@node1 ~]# scp /etc/hosts root@192.168.140.20:/etc/
[root@node1 ~]# scp /etc/hosts root@192.168.140.21:/etc/

4.2.2 在根目录下添加gfsrepo源文件

  • 所有服务器和客户机上均需添加
    在这里插入图片描述

4.2.3 在所有服务器和客户机上进行以下配置

  • 关闭防火墙
systemctl stop firewalld
setenforce 0
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  • 更改yum源文件
以node1服务器为例

[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# vi gfs.repo
[gfs]
name=gfs
baseurl=file:///root/gfsrepo
gpgcheck=0
enable=1
[root@node1 yum.repos.d]# cd
[root@node1 ~]# yum clean all
[root@node1 ~]# yum makecache

4.2.4 在node节点服务器上安装相关服务

yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

//报错解决,把系统自带的包先删掉
yum remove glusterfs -y
yum remove glusterfs-libs.x86_64 -y
再安装
以node1节点服务器为例
[root@node1 ~]# systemctl start glusterd.service 
[root@node1 ~]# systemctl enable glusterd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/glusterd.service to /usr/lib/systemd/system/glusterd.service.
[root@node1 ~]# systemctl status glusterd.service 

GFS分布式文件系统与GFS群集架构的部署_第4张图片

4.2.5 NTP时间同步

  • 所有服务器上
[root@node1 ~]# ntpdate ntp1.aliyun.com
 3 Jan 22:42:07 ntpdate[56939]: step time server 120.25.115.20 offset -0.975575 sec
 [root@node1 ~]# which ntpdate
/usr/sbin/ntpdate
[root@node1 ~]# crontab -e
*/30 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

4.2.6 选node1服务器为其他服务器的信任端

只在node1上配置

[root@node1 ~]# gluster peer probe node2
peer probe: success. 
[root@node1 ~]# gluster peer probe node3
peer probe: success. 
[root@node1 ~]# gluster peer probe node4
peer probe: success.
  • 在每台服务器上查看 gluster peer 状态
[root@node1 ~]# gluster peer status 
Number of Peers: 3

Hostname: node2
Uuid: 0e4f1433-f344-4eb1-87f2-40fdc12291f1
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: eb64cdc4-7f0a-4afd-8d80-a3c8d5c2412a
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: e4626091-7477-40f0-8aef-cae8876d69ad
State: Peer in Cluster (Connected)

GFS分布式文件系统与GFS群集架构的部署_第5张图片

[root@node2 ~]# gluster peer status

GFS分布式文件系统与GFS群集架构的部署_第6张图片

[root@node3 ~]# gluster peer status

GFS分布式文件系统与GFS群集架构的部署_第7张图片

[root@node4 ~]# gluster peer status

GFS分布式文件系统与GFS群集架构的部署_第8张图片

4.3 创建卷

  • 创建分布式卷
利用node1和node2上的两块磁盘创建,dis-vol为磁盘名,force表示强制

[root@node1 ~]# gluster volume create dis-vol node1:/b1 node2:/b1 force
volume create: dis-vol: success: please start the volume to access data

[root@node1 ~]# gluster volume start dis-vol		//启动
volume start: dis-vol: success

[root@node1 ~]# gluster volume info dis-vol 	//查看详细信息
Volume Name: dis-vol
Type: Distribute		'//表示分布式卷'
Volume ID: 592c5766-5fc6-4e93-b963-82eeb7cddf69
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/b1
Brick2: node2:/b1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume status dis-vol

GFS分布式文件系统与GFS群集架构的部署_第9张图片

  • 创建条带卷
[root@node1 ~]# gluster volume create stripe-vol stripe 2 node1:/c1  node2:/c1 force
volume create: stripe-vol: success: please start the volume to access data

[root@node1 ~]# gluster volume start stripe-vol
volume start: stripe-vol: success

[root@node1 ~]# gluster volume info stripe-vol
Volume Name: stripe-vol
Type: Stripe		'//表示条带卷'
Volume ID: 45d6caa4-3e2f-43ac-872c-503382ded882
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/c1
Brick2: node2:/c1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume status stripe-vol

GFS分布式文件系统与GFS群集架构的部署_第10张图片

  • 创建复制卷
[root@node1 ~]# gluster volume create rep-vol replica 2 node3:/b1 node4:/b1 force
volume create: rep-vol: success: please start the volume to access data

[root@node1 ~]# gluster volume start rep-vol
volume start: rep-vol: success

[root@node1 ~]# gluster volume info rep-vol
Volume Name: rep-vol
Type: Replicate		'//表示复制卷'
Volume ID: 7a6c6405-5d25-4f10-a569-2545ba7ca0f9
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/b1
Brick2: node4:/b1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume status rep-vol

GFS分布式文件系统与GFS群集架构的部署_第11张图片

  • 创建分布式条带卷(至少4个节点)
[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/d1 node2:/d1 node3:/d1 node4:/d1 force
volume create: dis-stripe: success: please start the volume to access data

[root@node1 ~]# gluster volume start dis-stripe
volume start: dis-stripe: success

[root@node1 ~]# gluster volume info dis-stripe
Volume Name: dis-stripe
Type: Distributed-Stripe		'//表示分布式条带卷'
Volume ID: e44a9418-3142-4dee-b4d4-d615c5fed865
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/d1
Brick2: node2:/d1
Brick3: node3:/d1
Brick4: node4:/d1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume status dis-stripe

GFS分布式文件系统与GFS群集架构的部署_第12张图片

  • 创建分布式复制卷(至少4个节点)
[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/e1 node2:/e1 node3:/e1 node4:/e1 force
volume create: dis-rep: success: please start the volume to access data

[root@node1 ~]# gluster volume start dis-rep
volume start: dis-rep: success

[root@node1 ~]# gluster volume info dis-rep
Volume Name: dis-rep
Type: Distributed-Replicate		'//表示分布式复制卷'
Volume ID: 050a2e93-b231-4249-abbd-db511a0336c7
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/e1
Brick2: node2:/e1
Brick3: node3:/e1
Brick4: node4:/e1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume status dis-rep		//查看状态

GFS分布式文件系统与GFS群集架构的部署_第13张图片

4.4 配置客户端

4.4.1 安装相关软件包

yum -y install glusterfs glusterfs-fuse

4.4.2 创建临时挂载点,并挂载查看

  • 创建挂载目录
[root@client ~]# mkdir /dis
[root@client ~]# mkdir /strip
[root@client ~]# mkdir /replica
[root@client ~]# mkdir /dis-replica
[root@client ~]# mkdir /dis-strip
  • 挂载各种卷
"挂载分布式卷"
[root@client ~]# mount.glusterfs node1:dis-vol /dis
"挂载条带卷"
[root@client ~]# mount.glusterfs node1:stripe-vol /strip
"挂载复制卷"
[root@client ~]# mount.glusterfs node1:rep-vol /replica
"挂载分布式条带卷"
[root@client ~]# mount.glusterfs node1:dis-stripe /dis-strip
"挂载分布式复制卷"
[root@client ~]# mount.glusterfs node1:dis-rep /dis-replica
  • 查看挂载
[root@client ~]# df -Th
文件系统         类型            容量  已用  可用 已用% 挂载点
/dev/sda5        xfs              51G  4.5G   47G    9% /
devtmpfs         devtmpfs        898M     0  898M    0% /dev
tmpfs            tmpfs           912M     0  912M    0% /dev/shm
tmpfs            tmpfs           912M  9.1M  903M    1% /run
tmpfs            tmpfs           912M     0  912M    0% /sys/fs/cgroup
/dev/sda2        xfs             5.0G   33M  5.0G    1% /home
/dev/sda1        xfs            1014M  174M  841M   18% /boot
tmpfs            tmpfs           183M  4.0K  183M    1% /run/user/42
tmpfs            tmpfs           183M   40K  183M    1% /run/user/0
/dev/sr0         iso9660         4.3G  4.3G     0  100% /mnt
node1:dis-vol    fuse.glusterfs  9.6G   41M  9.1G    1% /dis
node1:stripe-vol fuse.glusterfs  9.6G   41M  9.1G    1% /strip
node1:dis-rep    fuse.glusterfs  9.6G   41M  9.1G    1% /dis-replica
node1:rep-vol    fuse.glusterfs  4.8G   21M  4.6G    1% /replica
node1:dis-stripe fuse.glusterfs   20G   81M   19G    1% /dis-strip

4.4.3 测试GFS卷的功能

  • 创建5个40M的文件
[root@client ~]# dd if=/dev/zero of=/demo1.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0330287 秒,1.3 GB/[root@client ~]# dd if=/dev/zero of=/demo2.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0602663 秒,696 MB/[root@client ~]# dd if=/dev/zero of=/demo3.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.130822 秒,321 MB/[root@client ~]# dd if=/dev/zero of=/demo4.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.115129 秒,364 MB/[root@client ~]# dd if=/dev/zero of=/demo5.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0919663 秒,456 MB/[root@client ~]# cd /
[root@client /]# ll
总用量 204850
lrwxrwxrwx.   1 root root        7 1214 01:40 bin -> usr/bin
dr-xr-xr-x.   5 root root     4096 1214 01:47 boot
-rw-r--r--.   1 root root 41943040 14 00:28 demo1.log
-rw-r--r--.   1 root root 41943040 14 00:28 demo2.log
-rw-r--r--.   1 root root 41943040 14 00:28 demo3.log
-rw-r--r--.   1 root root 41943040 14 00:29 demo4.log
-rw-r--r--.   1 root root 41943040 14 00:29 demo5.log
  • 把创建的文件复制到不同卷上
把测试文件放到分布式卷目录下,查看服务端存储分布

[root@client /]# cp demo* /dis
[root@client /]# cp demo* /dis-strip/
[root@client /]# cp demo* /dis-replica/
[root@client /]# cp demo* /strip/
[root@client /]# cp demo* /replica/
[root@client /]# cd /dis
[root@client dis]# ls -lh
总用量 201M
-rw-r--r--. 1 root root  40M 14 00:33 demo1.log
-rw-r--r--. 1 root root  40M 14 00:33 demo2.log
-rw-r--r--. 1 root root  40M 14 00:33 demo3.log
-rw-r--r--. 1 root root  40M 14 00:33 demo4.log
-rw-r--r--. 1 root root  40M 14 00:33 demo5.log
drwx------. 2 root root 4.0K 13 23:11 lost+found
  • 检查在node节点的存储分布
1)查看分布式卷
[root@node1 ~]# cd /b1
您在 /var/spool/mail/root 中有新邮件
[root@node1 b1]# ls -lh
总用量 161M
-rw-r--r-- 2 root root 40M 14 00:33 demo1.log
-rw-r--r-- 2 root root 40M 14 00:33 demo2.log
-rw-r--r-- 2 root root 40M 14 00:33 demo3.log
-rw-r--r-- 2 root root 40M 14 00:33 demo4.log
drwx------ 2 root root 16K 13 23:11 lost+found

[root@node2 ~]# cd /b1
您在 /var/spool/mail/root 中有新邮件
[root@node2 b1]# ls -lh
总用量 41M
-rw-r--r-- 2 root root 40M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:11 lost+found
"可以看出,分布式通过Hash算法把文件分布在不同节点存储,但是每个文件不被分成N块"

2)查看条带卷
[root@node1 b1]# cd /c1
[root@node1 c1]# ls -lh
总用量 101M
-rw-r--r-- 2 root root 20M 14 00:33 demo1.log
-rw-r--r-- 2 root root 20M 14 00:33 demo2.log
-rw-r--r-- 2 root root 20M 14 00:33 demo3.log
-rw-r--r-- 2 root root 20M 14 00:33 demo4.log
-rw-r--r-- 2 root root 20M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:10 lost+found
[root@node2 b1]# cd /c1
[root@node2 c1]# ls -lh
总用量 101M
-rw-r--r-- 2 root root 20M 14 00:33 demo1.log
-rw-r--r-- 2 root root 20M 14 00:33 demo2.log
-rw-r--r-- 2 root root 20M 14 00:33 demo3.log
-rw-r--r-- 2 root root 20M 14 00:33 demo4.log
-rw-r--r-- 2 root root 20M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:11 lost+found
"可以看出,每个40M的文件被分成两块进行两个节点分布式存储"

3)查看复制卷
[root@node3 ~]# cd /b1
您在 /var/spool/mail/root 中有新邮件
[root@node3 b1]# ls -lh
总用量 201M
-rw-r--r-- 2 root root 40M 14 00:33 demo1.log
-rw-r--r-- 2 root root 40M 14 00:33 demo2.log
-rw-r--r-- 2 root root 40M 14 00:33 demo3.log
-rw-r--r-- 2 root root 40M 14 00:33 demo4.log
-rw-r--r-- 2 root root 40M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:10 lost+found
[root@node4 ~]# cd /b1
您在 /var/spool/mail/root 中有新邮件
[root@node4 b1]# ls -lh
总用量 201M
-rw-r--r-- 2 root root 40M 14 00:33 demo1.log
-rw-r--r-- 2 root root 40M 14 00:33 demo2.log
-rw-r--r-- 2 root root 40M 14 00:33 demo3.log
-rw-r--r-- 2 root root 40M 14 00:33 demo4.log
-rw-r--r-- 2 root root 40M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:10 lost+found
"可以看出,每个40M的文件被复制,在两个节点存储"

4)查看分布式条带卷
[root@node1 c1]# cd /d1
[root@node1 d1]# ls -lh
总用量 81M
-rw-r--r-- 2 root root 20M 14 00:33 demo1.log
-rw-r--r-- 2 root root 20M 14 00:33 demo2.log
-rw-r--r-- 2 root root 20M 14 00:33 demo3.log
-rw-r--r-- 2 root root 20M 14 00:33 demo4.log
drwx------ 2 root root 16K 13 23:11 lost+found
[root@node2 c1]# cd /d1
[root@node2 d1]# ls -lh
总用量 81M
-rw-r--r-- 2 root root 20M 14 00:33 demo1.log
-rw-r--r-- 2 root root 20M 14 00:33 demo2.log
-rw-r--r-- 2 root root 20M 14 00:33 demo3.log
-rw-r--r-- 2 root root 20M 14 00:33 demo4.log
drwx------ 2 root root 16K 13 23:12 lost+found
"1234分布式到node1和node2;再对1234条带分割,每个文件分两半,进行存储"

[root@node3 b1]# cd /d1
[root@node3 d1]# ls -lh
总用量 21M
-rw-r--r-- 2 root root 20M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:11 lost+found
[root@node4 b1]# cd /d1
[root@node4 d1]# ls -lh
总用量 21M
-rw-r--r-- 2 root root 20M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:11 lost+found
"5分布式到node3和node4;再对5进行分割存储"

5)查看分布式复制卷
[root@node1 d1]# cd /e1
[root@node1 e1]# ls -lh
总用量 161M
-rw-r--r-- 2 root root 40M 14 00:33 demo1.log
-rw-r--r-- 2 root root 40M 14 00:33 demo2.log
-rw-r--r-- 2 root root 40M 14 00:33 demo3.log
-rw-r--r-- 2 root root 40M 14 00:33 demo4.log
drwx------ 2 root root 16K 13 23:11 lost+found
[root@node2 d1]# cd /e1
[root@node2 e1]# ls -lh
总用量 161M
-rw-r--r-- 2 root root 40M 14 00:33 demo1.log
-rw-r--r-- 2 root root 40M 14 00:33 demo2.log
-rw-r--r-- 2 root root 40M 14 00:33 demo3.log
-rw-r--r-- 2 root root 40M 14 00:33 demo4.log
drwx------ 2 root root 16K 13 23:12 lost+found
[root@node3 d1]# cd /e1
[root@node3 e1]# ls -lh
总用量 41M
-rw-r--r-- 2 root root 40M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:11 lost+found
[root@node4 d1]# cd /e1
[root@node4 e1]# ls -lh
总用量 41M
-rw-r--r-- 2 root root 40M 14 00:33 demo5.log
drwx------ 2 root root 16K 13 23:11 lost+found

"1234分布式到node1和node2;再对1234复制卷,5被分配到nod3和node4,再5的内容再做个复制卷;"

4.5 模拟故障

  • 当node2宕机
[root@node2 /]# init 0		'//或者将该服务器挂起'
  • 客户机上查看结果
[root@client /]# cd /dis
[root@client dis]# ls	
demo1.log  demo2.log  demo3.log  demo4.log  lost+found
'//分布卷缺少demo5.log'

[root@client ~]# cd /strip/
[root@client strip]# ls		'//条带卷数据完全丢失'

[root@client /]# cd /dis-replica/
[root@client dis-replica]# ls
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log  lost+found
'//复制卷数据没有丢失'

[root@client ~]# cd /dis-strip/
[root@client dis-strip]# ls
demo5.log  lost+found
'//分布式条带卷数据只剩demo5.log'

[root@client ~]# cd /dis-replica/
[root@client dis-replica]# ls
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log  lost+found
'//分布式复制卷数据没有丢失'

扩展

停止,删除卷
gluster volume stop 卷名
gluster volume delete 卷名

4.6 维护命令集合

1. 查看GlusterFS卷
[root@node1 ~]# gluster volume list 
2. 查看所有卷的信息
[root@node1 ~]# gluster volume info
3. 查看所有卷状态
[root@node1 ~]# gluster volume status
4. 停止一个卷
[root@node1 ~]# gluster volume stop dis-stripe 
5. 删除一个卷
[root@node1 ~]# gluster volume delete dis-stripe   
6. 白名单 仅允许
[root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.140.*     
##设置192.168.140.0网段的所有IP地址 都能访问dis-rep卷(分布式复制卷)
volume set: success           
7. 黑名单 仅拒绝
[root@node1 sde1]# gluster volume set dis-rep auth.reject 192.168.140.15
volume set: success
[root@node1 ~]# gluster volume 	//查看相关命令
add-brick        heal             quota            start
barrier          help             rebalance        statedump
clear-locks      info             remove-brick     status
create           list             replace-brick    stop
delete           log              reset            sync
geo-replication  profile          set              top

"reset" 恢复默认

你可能感兴趣的:(gfs)