文章目录
- 一、 GlusterFS 概述
- 1.1 GlusterFS 简介
- 与传统分布式相比的优点
- 1.2 GlusterFS 的特点
- 扩展性和高性能
- 高可用性
- 全局统一命名空间
- 弹性卷管理
- 基于标准协议
- 1.3 GlusterFS 术语
- 1.4 模块化堆栈式架构
- 二、 GlusterFS 工作原理
- 2.1 GlusterFS 工作流程
- 2.2 弹性 HASH 算法
- 2.3 GlusterFS 的卷类型
- 2.3.1 分布式卷
- 2.3.2 条带卷
- 2.3.3 复制卷
- 2.3.4 分布式条带卷
- 2.3.5 分布式复制卷
- 三、 部署 GlusterFS 群集
- 实验目的
- 实验环境
- 实验参数
- 实验过程
- 1. 环境准备
- 2. 修改主机名,做hosts文件解析
- 3. 编辑脚本进行磁盘分区,并挂载
- 4. 配置yum本地源,安装环境包
- 5. 同步时间,添加到存储信任池
- 6. 分布式卷的建立与查看
- 7. 客户机的环境搭建,并挂载分布式卷
- 8. 创建测试性文件
- 9. 分布式卷的文件存储测试
- 10. 条带卷的创建与测试
- 11. 复制卷的创建与测试
- 12. 分布式条带卷的创建与测试
- 13. 分布式复制卷
一、 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 的工作流程如下:
- 客户端或应用程序通过 GlusterFS 的挂载点访问数据。
- Linux 系统内核通过 VFSAPI 收到请求并处理。
- VFS将数据递交给FUSE内核文件系统,并向系统注册一个实际的文件系统FUSE, 而 FUSE 文件系统则是将数据通过/dev/fuse 设备文件递交给了 GlusterFS client 端。可以 将 FUSE 文件系统理解为一个代理。
- GlusterFS client 收到数据后,client 根据配置文件对数据进行处理。
- 经过 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