企业级别应用--GFS分布式文件系统(GlusterFS工作原理、弹性 HASH 算法 、GlusterFS卷的类型、 部署GlusterFS)

一、 GlusterFS 概述

1.1 GlusterFS 简介

GlusterFS 是一个开源的分布式文件系统,主要由存储服务器(BrickServer)、客户端及 NFS/Samba 存储网关(可选, 根据需要选择使用)组成。在存储数据方面具有强大的横向扩展能力,通过扩展不同的节点可以支持数 PB 级别的存储容量。

GlusterFS 借助 TCP/IP 或 InfiniBandRDMA 网络将分散的存储资源汇聚在 一起,统一提供存储服务,并使用单一全局命名空间来管理数据。

与传统分布式相比的优点

传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率非常高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃。

GlusterFS 分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性及存储效率。GlusterFS 支持 TCP/IP 和 InfiniBandRDMA 高速网络互联,客户端可通过原生 GlusterFS 协议访问数据,其他没有运行 GlusterFS 客户端 的终端可利用 NFS/CIFS 标准协议通过存储网关访问数据。

1.2 GlusterFS 的特点

扩展性和高性能

  • Scale-Out 架构通过增加存储节点的方式来提高存储容量和性能(磁盘、计算和 I/O 资源都可以独立增加)。
  • Gluster 弹性哈希(Elastic Hash)解决了 GlusterFS 对元数据服务器的依赖, GlusterFS 采用弹性哈希算法在存储池中定位数据。GlusterFS 中可以智能地定位任意数据分片(将数据分片存储在不同节点上),不需要查看索引或者向元数据服务器查询。这种设计机制实现了存储的横向扩展, 改善了单点故障及性能瓶颈,真正实现了并行化数据访问。

高可用性

GlusterFS 通过配置某些类型的存储卷,可以对文件进行自动复制(类似于 RAID1) ,即使某个节点出现故障,也不影响数据的访问。当数据出现不一致时,自动修复功能能够把数据恢复到正确的状态,数据的修复是以增量的方式在后台执行, 不会占用太多系统资源。

全局统一命名空间

全局统一命名空间将所有的存储资源聚集成一个单一的虚拟存储池,对用户和应用屏蔽了物理存储信息。存储资源(类似于 LVM)可以根据生产环
境中的需要进行弹性扩展或收缩。在多节点场景中,全局统一命名空间还可以基于不同节点做负载均衡,大大提高了存取效率。

弹性卷管理

GlusterFS 通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立
逻辑划分。逻辑存储池可以在线进行增加和移除,不会导致业务中断

基于标准协议

Gluster 存储服务支持 NFS、CIFS、HTTP、FTP、SMB 及 Gluster 原生协议,完全与 POSIX 标准兼容。现有应用程序不需要做任何修改就可以对 Gluster 中的数据进行访问,也可以使用专用 API 进行访问(效率更高),这在公有云环境中部署 Gluster 时非常有用。

1.3 GlusterFS 术语

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

1.4 模块化堆栈式架构

GlusterFS 采用模块化、堆栈式的架构,可以根据需求配置定制化的应用环境,通过对模块进行各种组合,即可实现复杂的功能。

例如 Replicate 模块可实现 RAID1,Stripe 模块可实现 RAID0,通过两者的组合可实现 RAID10 和 RAID01,同时获得更高的性能及可靠性。

在这里插入图片描述
GlusterFS 是模块化堆栈式的架构设计,模块称为 Translator,是 GlusterFS 提供的一种强大机制,借助这种良好定义的接口可以高效简便地扩展文件系统的功能

  • 服务端与客户端的设计高度模块化的同时模块接口是兼容的,同一个 translator 可同时在客户端和服务器加载。
  • GlusterFS 中所有的功能都是通过 translator 实现的,其中客户端要比服务端更复杂,所以功能的重点主要集中在客户端上。

二、 GlusterFS 工作原理

2.1 GlusterFS 工作流程

在这里插入图片描述
GlusterFS 的工作流程如下:

  1. 客户端或应用程序通过 GlusterFS 的挂载点访问数据。
  2. Linux 系统内核通过 VFSAPI 收到请求并处理。
  3. VFS将数据递交给FUSE内核文件系统,并向系统注册一个实际的文件系统FUSE, 而 FUSE 文件系统则是将数据通过/dev/fuse 设备文件递交给了 GlusterFS client 端。可以 将 FUSE 文件系统理解为一个代理。
  4. GlusterFS client 收到数据后,client 根据配置文件对数据进行处理。
  5. 经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFS Server,并且将数据写入服务器存储设备。

2.2 弹性 HASH 算法

弹性 HASH 算法是 Davies-Meyer 算法的具体实现,通过 HASH 算法可以得到一个 32 位的整数范围的 hash 值,假设逻辑卷中有 N 个存储单位 Brick,则 32 位的整数范围将被划分为 N 个连续的子空间,每个空间对应一个 Brick。当用户或应用程序访问某一个命名空间时,通过对该命名空间计算 HASH 值,根据该 HASH 值所对应的 32 位整数空间定位数据所在的 Brick。

2.3 GlusterFS 的卷类型

GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷和分布式条带复制卷,这七种卷可以满足不同应用对高性能、高可用的需求。

  • 分布式卷(Distribute volume):文件通过 HASH 算法分布到所有 Brick Server 上, 这种卷是 Glusterf 的基础;以文件为单位根据 HASH 算法散列到不同的 Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的 RAID0,不具有容错能力。
  • 条带卷(Stripevolume):类似 RAID0,文件被分成数据块并以轮询的方式分布到多 个 BrickServer 上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高。
  • 复制卷(Replica volume):将文件同步到多个 Brick 上,使其具备多个文件副本, 属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。
  • 分布式条带卷(DistributeStripevolume):BrickServer 数量是条带数(数据块分布 的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。
  • 分布式复制卷(Distribute Replica volume):Brick Server 数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。
  • 条带复制卷(Stripe Replica volume):类似 RAID 10,同时具有条带卷和复制卷的特点。
  • 分布式条带复制卷(Distribute Stripe Replicavolume):三种基本卷的复合卷,通常 用于类 Map Reduce 应用。

2.3.1 分布式卷

分布式卷是 GlusterFS 的默认卷,在创建卷时,默认选项是创建分布式卷。在该模式下, 文件直接存储在某个 Server 节点上。直接使用本地文件系统进行文件存储。

  • 没有对文件进行分块处理
  • 通过扩展文件属性保存HASH值
  • 支持的底层文件系统有EXT3、EXT4、ZFS、XFS等

特点:

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

2.3.2 条带卷

Stripe 模式相当于 RAID0,在该模式下,根据偏移量将文件分成 N 块(N 个条带节点), 轮询地存储在每个 BrickServer 节点。节点把每个数据块都作为普通文件存入本地文件系统 中,通过扩展属性记录总块数(Stripe-count)和每块的序号(Stripe-index)。

特点:

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

2.3.3 复制卷

复制模式,也称为 AFR(AutoFileReplication),相当于 RAID1,即同一文件保存一份或多份副本,每个节点上保存相同的内容和目录结构。。如果多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量。

特点:

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

2.3.4 分布式条带卷

分布式条带卷兼顾分布式卷和条带卷的功能,主要用于大文件访问处理,创建一个分布式条带卷最少需要 4 台服务器。

创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复 制卷;如果存储服务器的数量是条带或复制数的 2 倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷。

2.3.5 分布式复制卷

分布式复制卷兼顾分布式卷和复制卷的功能,主要用于需要冗余的情况下。一般适用于存储安全性要求较高的场合,比如银行等。

三、 部署 GlusterFS 群集

实验目的

通过将测试文件存储在部署的 GlusterFS 群集中,查看各种卷类型的存储方式。

实验环境

需要准备五台虚拟机,关闭防火墙和 Selinux。其中 Node1 到 Node4 节点分配 4GB 内存,客户端节点分配 4GB 内存。各节点通过 VMware 虚拟网络 Vmnet8 连接。

实验参数

VMware软件
一台centos7虚拟机,IP地址为:14.0.0.7,主机名为:node1,添加4块磁盘,分别都为20G

一台centos7虚拟机,IP地址为:14.0.0.110,主机名为:node2,添加4块磁盘,分别都为20G

一台centos7虚拟机,IP地址为:14.0.0.111,主机名为:node3,添加4块磁盘,分别都为20G

一台centos7虚拟机,IP地址为:14.0.0.112,主机名为:node4,添加4块磁盘,分别都为20G

一台centos7虚拟机,IP地址为:14.0.0.177,主机名为:client,当做测试机使用

实验过程

1. 环境准备

为四台虚拟机添加都添加四块大小为20G的硬盘
在这里插入图片描述
对所有的五台虚拟机进行操作,一定要关闭防火墙,清空防火墙规则也不行,会导致实验失败

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0

分别使用"fdisk -l"命令查看应按添加是否成功,以其中一台为例子

在这里插入图片描述

2. 修改主机名,做hosts文件解析

按照之前的实验参数对应的主机名,分别对四台节点服务器进行以下相同操作

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# su
[root@node1 ~]# vim /etc/hosts    ##将以下内容追加到文件的末尾
14.0.0.7 node1
14.0.0.110 node2
14.0.0.111 node3
14.0.0.112 node4

在这里插入图片描述

3. 编辑脚本进行磁盘分区,并挂载

在四台node节点服务器上,编辑脚本自动进行分区,以node1界定啊服务器为例子。

[root@node1 ~]# cd /opt
[root@node1 opt]# vim fdisk.sh
#!bin/bash
for disk in `fdisk -l |grep -o 'sd[b-z]'| uniq |awk 'BEGIN{ORS=" "} {print $0 }'`
do
     echo "n
           p
                
                
           
           w"| fdisk /dev/$disk
mkfs.xfs -i size=512 /dev/${disk}"1" &> /dev/null
 mkdir -p /data/${
    
    disk}"1" &> /dev/null
echo -e "/dev/${disk}"1" /data/${disk}"1" xfs defaults 0 0\n" >> /etc/fstab
  mount -a &> /dev/null
done
[root@node1 opt]# chmod +x fdisk.sh 
[root@node1 opt]# sh fdisk.sh

在这里插入图片描述

[root@node1 opt]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        15G  3.8G   12G   26% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs       2.0G  179M  1.9G    9% /boot
/dev/mapper/centos-home xfs        25G   33M   25G    1% /home
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdb1               xfs        20G   33M   20G    1% /data/sdb1
/dev/sdc1               xfs        20G   33M   20G    1% /data/sdc1
/dev/sdd1               xfs        20G   33M   20G    1% /data/sdd1
/dev/sde1               xfs        20G   33M   20G    1% /data/sde1

将脚本文件用scp命令传输到另外三台node服务器上执行(以传输到14.0.0.110为例)

[root@node1 opt]# scp fdisk.sh root@14.0.0.110:/opt   ##将本地的fdisk.sh文件传输到节点服务器的/opt目录下
The authenticity of host '14.0.0.110 (14.0.0.110)' can't be established.
ECDSA key fingerprint is SHA256:sWKQiGLxIkZB0eRDa5cJpygOXtCmJKqdaa99GVj6viI.
ECDSA key fingerprint is MD5:36:ae:96:cf:f6:56:40:ee:42:37:12:73:73:6a:53:81.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '14.0.0.110' (ECDSA) to the list of known hosts.
root@14.0.0.110's password: 
fdisk.sh                                     100%  395    73.4KB/s   00:00  
[root@node1 opt]# scp fdisk.sh root@14.0.0.111:/opt
[root@node1 opt]# scp fdisk.sh root@14.0.0.112:/opt

分别对各个节点进行操作

[root@node2 ~]# cd /opt
[root@node2 opt]# ls
fdisk.sh  rh
[root@node2 opt]# sh fdisk.sh

4. 配置yum本地源,安装环境包

在所有的节点服务器上操作(以node1服务器为例,其他三台一样的操作),将gluster的rpm环境包拷贝进当前目录下

[root@node1 opt]# cd ~
[root@node1 ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  模板  图片  下载  桌面
gfsrepo          公共                  视频  文档  音乐
[root@node1 ~]# mkdir /opt/gfs
[root@node1 ~]# mv gfsrepo/ /opt/gfs/
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# mkdir bak
[root@node1 yum.repos.d]# mv C* bak/
[root@node1 yum.repos.d]# ls
bak
[root@node1 yum.repos.d]# vim GLFS.repo
[GLFS]
name=glfs
baseurl=file:///opt/gfs/gfsrepo
gpgcheck=0
enabled=1
[root@node1 yum.repos.d]# yum list    ##加载一下

在这里插入图片描述

[root@node1 yum.repos.d]# yum remove glusterfs-client-xlators.x86_64 glusterfs glusterfs-libs -y   ##因为centos7中默认已经安装了部分依赖包,版本比yum源的版本高,所以先将这些软件包卸载,再进行安装,否则报错。
[root@node1 yum.repos.d]# yum install glusterfs-server glusterfs-fuse glusterfs-rdma -y    ##安装gluster环境依赖包
[root@node1 yum.repos.d]# systemctl start glusterd.service    ##开启glusterd服务
[root@node1 yum.repos.d]# 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 yum.repos.d]# 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-09-14 12:17:11 CST; 40s ago
 Main PID: 13030 (glusterd)
   CGroup: /system.slice/glusterd.service
           └─13030 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level I...

9 14 12:17:11 node1 systemd[1]: Starting GlusterFS, a clustered file-sy.....
9 14 12:17:11 node1 systemd[1]: Started GlusterFS, a clustered file-sys...r.
Hint: Some lines were ellipsized, use -l to show in full.

5. 同步时间,添加到存储信任池

将时间同步与阿里云时间一样

[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com
14 Sep 18:33:31 ntpdate[17167]: adjust time server 120.25.115.20 offset 0.003253 sec

[root@node2 ~]# ntpdate ntp1.aliyun.com
14 Sep 18:33:38 ntpdate[16974]: adjust time server 120.25.115.20 offset 0.001146 sec

[root@node3 ~]# ntpdate ntp1.aliyun.com
14 Sep 18:33:45 ntpdate[69222]: adjust time server 120.25.115.20 offset 0.001511 sec

[root@node4 gfs]# ntpdate ntp1.aliyun.com
14 Sep 18:33:04 ntpdate[13964]: adjust time server 120.25.115.20 offset 0.006495 sec

将node服务器添加到存储信任池,在任何一个节点上添加就可以了,可以在任何一个节点上查看存储信任池的状态

[root@node1 yum.repos.d]# gluster peer probe node2
peer probe: success. 
[root@node1 yum.repos.d]# gluster peer probe node3
peer probe: success. 
[root@node1 yum.repos.d]# gluster peer probe node4
peer probe: success. 

[root@node1 yum.repos.d]# gluster peer status    ##查看gluster的地址池状态
Number of Peers: 3

Hostname: node2
Uuid: 4abc4d2b-5e27-4dfc-b846-900b6d1860ad
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: 2ae7b76b-aa30-43e9-ac47-5ef41c0ccf78
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: dc4c1a0b-6b60-442a-a0ab-c4fff72677f3
State: Peer in Cluster (Connected)

6. 分布式卷的建立与查看

这里使用node1和node2的sdb1硬盘来建立分布式卷,在任何一个节点服务器上都可以进行创建,在node3服务器上演示

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

查看分布式卷的详细信息

[root@node3 ~]#  gluster volume list    ##查看卷列表
dis-vol
[root@node3 ~]#  gluster volume info dis-vol    ##查看分布式卷的详细信息
 
Volume Name: dis-vol
Type: Distribute
Volume ID: 1d3977d0-7b39-4455-ab3f-1c4d579934ff
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node3 ~]#  gluster volume start dis-vol   ##开启分布式卷
volume start: dis-vol: success
  • gluster volume stop dis-vol 关闭分布式卷
  • gluster volume delete dis-vol 删除分布式卷

7. 客户机的环境搭建,并挂载分布式卷

[root@localhost ~]# hostnamectl set-hostname client    ##改主机名
[root@localhost ~]# su
配置yum本地源
[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# mkdir bak
[root@client yum.repos.d]# mv C* bak/
[root@client yum.repos.d]# vim GLFS.repo
[GLFS]
name=glfs
baseurl=file:///opt/gfs/gfsrepo
gpgcheck=0
enabled=1
[root@node3 ~]# yum list
[root@node1 yum.repos.d]# yum remove glusterfs-client-xlators.x86_64 glusterfs glusterfs-libs -y  
[root@node1 yum.repos.d]# yum install glusterfs-server glusterfs-fuse glusterfs-rdma -y 
[root@node1 yum.repos.d]# vim /etc/hosts
14.0.0.7 node1
14.0.0.110 node2
14.0.0.111 node3
14.0.0.112 node4

分布式卷挂载命令在client上进行输入,可以挂载任何一个节点,都可以实现挂载

[root@client yum.repos.d]# mkdir -p /test/dis     ##创建挂载目录
[root@client yum.repos.d]# mount.glusterfs node4:dis-vol /test/dis    ##实现挂载
[root@client yum.repos.d]# df -Th
文件系统       类型            容量  已用  可用 已用% 挂载点
/dev/sda5      xfs              40G  4.9G   36G   13% /
devtmpfs       devtmpfs        895M     0  895M    0% /dev
tmpfs          tmpfs           910M     0  910M    0% /dev/shm
tmpfs          tmpfs           910M   11M  900M    2% /run
tmpfs          tmpfs           910M     0  910M    0% /sys/fs/cgroup
/dev/sda2      xfs              50G   33M   50G    1% /home
/dev/sda1      xfs             2.0G  174M  1.9G    9% /boot
tmpfs          tmpfs           182M  8.0K  182M    1% /run/user/42
tmpfs          tmpfs           182M   40K  182M    1% /run/user/0
/dev/sr0       iso9660         4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
node4:dis-vol  fuse.glusterfs   40G   65M   40G    1% /test/dis

8. 创建测试性文件

创建5个大小为40M的的文件

[root@client yum.repos.d]# dd if=/dev/zero of=/demo1.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0391551 秒,1.1 GB/
[root@client yum.repos.d]# dd if=/dev/zero of=/demo2.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.230143 秒,182 MB/
[root@client yum.repos.d]# dd if=/dev/zero of=/demo3.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.66821 秒,62.8 MB/
[root@client yum.repos.d]# dd if=/dev/zero of=/demo4.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.867869 秒,48.3 MB/
[root@client yum.repos.d]# dd if=/dev/zero of=/demo5.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.737165 秒,56.9 MB/

在这里插入图片描述

9. 分布式卷的文件存储测试

将测试文件直接拷贝到挂载目录下,查看两个node服务器的存储状况

[root@client /]# cp demo* /test/dis/
[root@client /]# ls /test/dis/
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log

在node服务器上查看

[root@node1 ~]# cd /data/sdb1
[root@node1 sdb1]# ll -h
总用量 160M
-rw-r--r--. 2 root root 40M 9  14 22:19 demo1.log
-rw-r--r--. 2 root root 40M 9  14 22:19 demo2.log
-rw-r--r--. 2 root root 40M 9  14 22:19 demo3.log
-rw-r--r--. 2 root root 40M 9  14 22:19 demo4.log
[root@node2 ~]# cd /data/sdb1
[root@node2 sdb1]# ll -h
总用量 40M
-rw-r--r--. 2 root root 40M 9  14 22:19 demo5.log

10. 条带卷的创建与测试

[root@node3 ~]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force    ##创建条带卷
volume create: stripe-vol: success: please start the volume to access data
[root@node3 ~]# gluster volume list
dis-vol
stripe-vol
[root@node3 ~]# gluster volume start stripe-vol    ##开启条带卷
volume start: stripe-vol: success

在client服务器上挂载

[root@client /]# mkdir /test/stripe-vol
[root@client /]# mount.glusterfs node4:ss-vol /test/dis
sbin/ srv/  sys/  
[root@client /]# mount.glusterfs node4:stripe-vol /test/stripe-vol/
[root@client /]# df -hT
文件系统         类型            容量  已用  可用 已用% 挂载点
/dev/sda5        xfs              40G  5.1G   35G   13% /
devtmpfs         devtmpfs        895M     0  895M    0% /dev
tmpfs            tmpfs           910M     0  910M    0% /dev/shm
tmpfs            tmpfs           910M   11M  900M    2% /run
tmpfs            tmpfs           910M     0  910M    0% /sys/fs/cgroup
/dev/sda2        xfs              50G   33M   50G    1% /home
/dev/sda1        xfs             2.0G  174M  1.9G    9% /boot
tmpfs            tmpfs           182M  8.0K  182M    1% /run/user/42
tmpfs            tmpfs           182M   40K  182M    1% /run/user/0
/dev/sr0         iso9660         4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
node4:dis-vol    fuse.glusterfs   40G  265M   40G    1% /test/dis
node4:stripe-vol fuse.glusterfs   40G   65M   40G    1% /test/stripe-vol
[root@client /]# cp demo* /test/stripe-vol/

在node服务器上进行查看

[root@node1 sdb1]# cd ../sdc1/
[root@node1 sdc1]# ll -h
总用量 100M
-rw-r--r--. 2 root root 20M 9  14 22:26 demo1.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo2.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo3.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo4.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo5.log
[root@node2 sdb1]# cd ../sdc1/
[root@node2 sdc1]# ll -h
总用量 100M
-rw-r--r--. 2 root root 20M 9  14 22:26 demo1.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo2.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo3.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo4.log
-rw-r--r--. 2 root root 20M 9  14 22:26 demo5.log

11. 复制卷的创建与测试

[root@node3 ~]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-vol: success: please start the volume to access data
[root@node3 ~]# gluster volume list
dis-vol
rep-vol
stripe-vol
[root@node3 ~]# gluster volume start rep-vol 
volume start: rep-vol: success

client服务器上

[root@client /]# mkdir /test/rep-vol
[root@client /]# mount.glusterfs node4:rep-vol /test/rep-vol/
[root@client /]# df -hT
文件系统         类型            容量  已用  可用 已用% 挂载点
/dev/sda5        xfs              40G  5.1G   35G   13% /
devtmpfs         devtmpfs        895M     0  895M    0% /dev
tmpfs            tmpfs           910M     0  910M    0% /dev/shm
tmpfs            tmpfs           910M   11M  900M    2% /run
tmpfs            tmpfs           910M     0  910M    0% /sys/fs/cgroup
/dev/sda2        xfs              50G   33M   50G    1% /home
/dev/sda1        xfs             2.0G  174M  1.9G    9% /boot
tmpfs            tmpfs           182M  8.0K  182M    1% /run/user/42
tmpfs            tmpfs           182M   40K  182M    1% /run/user/0
/dev/sr0         iso9660         4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
node4:dis-vol    fuse.glusterfs   40G  265M   40G    1% /test/dis
node4:stripe-vol fuse.glusterfs   40G  265M   40G    1% /test/stripe-vol
node4:rep-vol    fuse.glusterfs   20G   33M   20G    1% /test/rep-vol
[root@client /]# cp demo* /test/rep-vol/

node服务器上查看

[root@node3 ~]# cd /data/sdb1/
[root@node3 sdb1]# ll -h
总用量 200M
-rw-r--r--. 2 root root 40M 9  14 22:31 demo1.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo2.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo3.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo4.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo5.log
[root@node4 ~]# cd /data/sdb1/
[root@node4 sdb1]# ll -h
总用量 200M
-rw-r--r--. 2 root root 40M 9  14 22:31 demo1.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo2.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo3.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo4.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo5.log

12. 分布式条带卷的创建与测试

[root@node3 sdb1]# gluster volume create dis-stripe stripe 2  node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: dis-stripe: success: please start the volume to access data
[root@node3 sdb1]# gluster volume list
dis-stripe
dis-vol
rep-vol
stripe-vol
[root@node3 sdb1]# gluster volume start dis-stripe 
volume start: dis-stripe: success

client服务器

[root@client /]# mkdir /test/dis-stripe
[root@client /]# mount.glusterfs node4:dis-stripe /test/dis-stripe/
[root@client /]# df -Th
文件系统         类型            容量  已用  可用 已用% 挂载点
/dev/sda5        xfs              40G  5.1G   35G   13% /
devtmpfs         devtmpfs        895M     0  895M    0% /dev
tmpfs            tmpfs           910M     0  910M    0% /dev/shm
tmpfs            tmpfs           910M   11M  900M    2% /run
tmpfs            tmpfs           910M     0  910M    0% /sys/fs/cgroup
/dev/sda2        xfs              50G   33M   50G    1% /home
/dev/sda1        xfs             2.0G  174M  1.9G    9% /boot
tmpfs            tmpfs           182M  8.0K  182M    1% /run/user/42
tmpfs            tmpfs           182M   40K  182M    1% /run/user/0
/dev/sr0         iso9660         4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
node4:dis-vol    fuse.glusterfs   40G  265M   40G    1% /test/dis
node4:stripe-vol fuse.glusterfs   40G  265M   40G    1% /test/stripe-vol
node4:rep-vol    fuse.glusterfs   20G  233M   20G    2% /test/rep-vol
node4:dis-stripe fuse.glusterfs   80G  130M   80G    1% /test/dis-stripe
[root@client /]# cp demo* /test/dis-stripe/

node服务器上查看

[root@node1 sdc1]# cd ../sdd1/
[root@node1 sdd1]# ll -h
总用量 80M
-rw-r--r--. 2 root root 20M 9  14 22:36 demo1.log
-rw-r--r--. 2 root root 20M 9  14 22:36 demo2.log
-rw-r--r--. 2 root root 20M 9  14 22:36 demo3.log
-rw-r--r--. 2 root root 20M 9  14 22:36 demo4.log
[root@node2 sdc1]# cd ../sdd1/
[root@node2 sdd1]# ll -h
总用量 80M
-rw-r--r--. 2 root root 20M 9  14 22:36 demo1.log
-rw-r--r--. 2 root root 20M 9  14 22:36 demo2.log
-rw-r--r--. 2 root root 20M 9  14 22:36 demo3.log
-rw-r--r--. 2 root root 20M 9  14 22:36 demo4.log
[root@node3 sdb1]# cd ../sdd1/
[root@node3 sdd1]# ll -h
总用量 20M
-rw-r--r--. 2 root root 20M 9  14 22:36 demo5.log
-rw-r--r--. 2 root root 40M 9  14 22:31 demo5.log
[root@node4 sdb1]# cd ../sdd1/
[root@node4 sdd1]# ll -h
总用量 20M
-rw-r--r--. 2 root root 20M 9  14 22:36 demo5.log

13. 分布式复制卷

[root@node3 sdd1]# gluster volume create dis-rep replica 2  node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node3 sdd1]# gluster volume list
dis-rep
dis-stripe
dis-vol
rep-vol
stripe-vol
[root@node3 sdd1]# gluster volume start dis-rep 

client服务器

[root@client /]# mkdir /test/dis-rep
[root@client /]# mount.glusterfs node4:dis-rep /test/dis-rep/
[root@client /]# df -Th
文件系统         类型            容量  已用  可用 已用% 挂载点
/dev/sda5        xfs              40G  5.1G   35G   13% /
devtmpfs         devtmpfs        895M     0  895M    0% /dev
tmpfs            tmpfs           910M     0  910M    0% /dev/shm
tmpfs            tmpfs           910M   11M  900M    2% /run
tmpfs            tmpfs           910M     0  910M    0% /sys/fs/cgroup
/dev/sda2        xfs              50G   33M   50G    1% /home
/dev/sda1        xfs             2.0G  174M  1.9G    9% /boot
tmpfs            tmpfs           182M  8.0K  182M    1% /run/user/42
tmpfs            tmpfs           182M   40K  182M    1% /run/user/0
/dev/sr0         iso9660         4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
node4:dis-vol    fuse.glusterfs   40G  265M   40G    1% /test/dis
node4:stripe-vol fuse.glusterfs   40G  265M   40G    1% /test/stripe-vol
node4:rep-vol    fuse.glusterfs   20G  233M   20G    2% /test/rep-vol
node4:dis-stripe fuse.glusterfs   80G  330M   80G    1% /test/dis-stripe
node4:dis-rep    fuse.glusterfs   40G   65M   40G    1% /test/dis-rep
[root@client /]# cp demo* /test/dis-rep/

各个node服务器

[root@node1 sdd1]# cd ../sde1/
[root@node1 sde1]# ll -h
总用量 160M
-rw-r--r--. 2 root root 40M 9  14 22:40 demo1.log
-rw-r--r--. 2 root root 40M 9  14 22:40 demo2.log
-rw-r--r--. 2 root root 40M 9  14 22:40 demo3.log
-rw-r--r--. 2 root root 40M 9  14 22:40 demo4.log
[root@node2 sdd1]# cd ../sde1/
[root@node2 sde1]# ll -h
总用量 160M
-rw-r--r--. 2 root root 40M 9  14 22:40 demo1.log
-rw-r--r--. 2 root root 40M 9  14 22:40 demo2.log
-rw-r--r--. 2 root root 40M 9  14 22:40 demo3.log
-rw-r--r--. 2 root root 40M 9  14 22:40 demo4.log
[root@node3 sdd1]# cd ../sde1/
[root@node3 sde1]# ll -h
总用量 40M
-rw-r--r--. 2 root root 40M 9  14 22:40 demo5.log
[root@node4 sdd1]# cd ../sde1/
[root@node4 sde1]# ll -h
总用量 40M
-rw-r--r--. 2 root root 40M 9  14 22:40 demo5.log

猜你喜欢

转载自blog.csdn.net/kimowinter/article/details/108568998