IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 如何搭建GFS分布式文件系统 -> 正文阅读

[系统运维]如何搭建GFS分布式文件系统

什么是文件系统

文件系统的组成部分

  • 文件系统接口
  • 对对像管理的软件集合
  • 对象及属性

文件系统作用

  • 文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统,也就是为了能让用户建立、存入、读取、修改、转存文件,控制文件的存取

文件系统的使用

跟之前的NFS系统一样,需要挂在到挂载点才可以被访问

分布式文件系统GFS

GFS简介

  • 他是开源分布式文件系统
  • 无元数据服务器

GFS组成

  • 存储服务器
  • 客户端
  • NFS或者Samba存储网关组成

GFS的特点

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

GFS专业术语

  • brick :存储服务器:实际存储用户数据的服务器
  • volume :本地文件系统的“分区”
  • FUSE : 用户空间的文件系统(类比EXT4),“这是一个伪文件系统”,用户想要读写一个本地文件,会借助ext4,如果是远端的GFS,就需要借助FUSE(伪文件系统)
  • FUSE(用户空间的文件系统):伪文件系统 用户端的交互模块
  • VFS(虚拟端口):内核态的虚拟文件系统,用户是先提交请求交给VFS 然后VFS交给FUSE 再交给GFS客户端,最后由客户端交给远端的存储
  • glusterd(服务) :是运行在存储节点的进程

GFS模块化和堆栈式架构

模块化:

  • 类似 linux 编译安装,很多功能都可以做定制的,通常都是通过软件开发的方式封装为模块
  • GFS内也是把功能封装为一个个模块
    通过加载/调用/启用的方式就可以对应的功能

堆栈式架构设计:

  • 通过对模块不同功能的组合来实现复杂功能

GFS工作流程

客户端在本地发出读写请求,然后交由VFS 的API接受请求,接受请求后会交给FUSE(内核伪文件系统),
FUSE可以模拟操作系统,所以可以对文件系统进行转存,转存的设备位置为:/dev/fuse(用于传输的设备-虚拟设备文件)---->>交给GFS客户端,client 会根据配置文件对数据进行处理,然后再通过TCP/ib/rdma 网络发送到GFS服务端,并且将数据写到服务器存储设备上

  • TCP/IP :网络协议

  • InfiniBand :网络协议,与TCP/IP相比,TCP/IP具有转发丢失数据包的特性,基于此通讯协议可能导致通讯变慢,而IB使用基于信任的、流控制的机制来确保连接完整性,数据包丢失几率小。

  • RDMA: 负责数据传输,有一种数据传输协议,功能:为了解决传输中客户端与服务器端数据处理的延迟

  • POSIX : 可移植操作系统接口,主要解决不同操作系统间的移植性

分布式如何在后端存储中定位文件

  • 使用弹性HASH算法来解决数据定位、索引、寻址的功能,通过HASH算法对数据可以得到一个值,每个数据对应了0-2的32次方的一个值

分布式的优点

  • 当数据量越来越大的时候,相对每个存储节点的数据量是相等的
  • 如果考虑到单点故障问题,当数据存储在某存储节点,对此GFS是会有备份机制的卷,默认3备份,所以GFS本身的机制会对数据产生冗余,以此解决单点故障

卷的分类

基本卷

  • distribute volume:分布式卷
    文件通过 HASH 算法分布到所有 Brick Server 上, 这种卷是 Glusterfs 的基础;以文件为单位根据 HASH 算法散列到不同的 Brick,只是扩大了磁盘空间,不具备冗余
  • stripe volume:条带卷
    类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高。不具备冗余
  • replica volume:复制卷
    将文件同步到多个 Brick 上,使其具备多个文件副本, 属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得 到很大提升,但写性能下降。具备冗余

复合卷

  • distribute stripe volume:分布式条带卷
    Brick Server 数量是条带数(数据块分布 的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。
  • distribute replica volume:分布式复制卷
    Brick Server 数量是镜像数(数据副本 数量)的倍数,兼具分布式卷和复制卷的特点
  • stripe replica volume:条带复制卷
    类似 RAID 10,同时具有条带卷和复制卷的 特点
  • distribute stripe replicavolume:分布式条带复制卷
    三种基本卷的复合卷,通常 用于类 Map Reduce 应用

部署GFS集群

  • 实验环境
Node1节点:node1/192.168.1.5	  磁盘:/dev/sdb1			挂载点:/data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1

Node2节点:node2/192.168.1.101	  磁盘:/dev/sdb1			挂载点:/data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1

Node3节点:node3/192.168.1.102	  磁盘:/dev/sdb1			挂载点:/data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1

Node4节点:node4/192.168.1.103		  磁盘:/dev/sdb1			挂载点:/data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1

客户端节点:192.168.1.110
  • 将准备的硬盘格式化并挂载,编写一个脚本来执行
vim /opt/fdisk.sh
#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
do
   echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
   mkfs.xfs /dev/${VAR}"1" &> /dev/null
   mkdir -p /data/${VAR}"1" &> /dev/null
   echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null

chmod +x /opt/fdisk.sh
cd /opt/
./fdisk.sh
  • 修改主机名并添加到映射
echo "192.168.1.5 node1" >> /etc/hosts
echo "192.168.1.101 node2" >> /etc/hosts
echo "192.168.1.102 node3" >> /etc/hosts
echo "192.168.1.103 node4" >> /etc/hosts
echo "192.168.1.110 node5" >> /etc/hosts
  • 在所有节点上安装GFS
    将gfsrepo 软件上传到/opt目录下,然后解压

然后搭建一个yum源

vim /etc/yum.repos.d/glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
[root@node1 opt]# yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: glfs
Cleaning up list of fastest mirrors
Other repos take up 1.0 G of disk space (use --verbose for details)
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
glfs                                                                                                                                                           | 2.9 kB  00:00:00     
(1/3): glfs/filelists_db                                                                                                                                       |  62 kB  00:00:00     
(2/3): glfs/other_db                                                                                                                                           |  46 kB  00:00:00     
(3/3): glfs/primary_db                                                                                                                                         |  92 kB  00:00:00     
元数据缓存已建立
[root@node1 opt]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识                                                                                    源名称                                                                                  状态
glfs                                                                                      glfs                                                                                    115
repolist: 115

  • 然后安装gfs依赖并运行
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service 
systemctl enable glusterd.service
systemctl status glusterd.service

注:提示依赖包版本不一样可以用rpm -e --nodeps 加报错的依赖包删除依赖,然后再执行yum,直至成功安装为止

  • 然后同步时间
[root@node1 opt]# ntpdate ntp.aliyun.com
14 Aug 00:47:17 ntpdate[19902]: adjust time server 203.107.6.88 offset 0.000251 sec

  • 然后添加节点到存储信任池,只需要在一台节点上做
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
  • 查看节点上查看群集状态
[root@node1 opt]# gluster peer status
Number of Peers: 3

Hostname: node3
Uuid: 39f9fb11-eeaf-452a-867e-a778c715f247
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: 6b1e2f99-9191-4756-8ea2-cb2a1ec98868
State: Peer in Cluster (Connected)

Hostname: node2
Uuid: 56f55fd4-4c9e-4a51-94a8-6e31044efa09
State: Peer in Cluster (Connected)

创建卷

根据计划创建以下几个卷

卷名称 				卷类型				Brick
dis-volume			分布式卷			node1(/data/sdb1)、node2(/data/sdb1)
stripe-volume		条带卷			    node1(/data/sdc1)、node2(/data/sdc1)
rep-volume			复制卷			    node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe			分布式条带卷		node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep				分布式复制卷		node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)

创建分布式卷

  • 创建分布式卷,没有指定类型,默认创建的是分布式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
  • 查看卷列表
[root@node1 opt]# gluster volume list
dis-volume					//代表分布式卷

  • 启动新建分布式卷
[root@node1 opt]# gluster volume start dis-volume
volume start: dis-volume: success

  • 查看创建分布式卷信息
[root@node1 opt]# gluster volume info dis-volume
 
Volume Name: dis-volume
Type: Distribute
Volume ID: 49a9d03b-8d59-4bdf-8f3f-0079902e484d
Status: Started
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

创建条带卷

  • 指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷
[root@node1 opt]# gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-volume: success: please start the volume to access data

  • 启动条带卷
[root@node1 opt]# gluster volume start stripe-volume
volume start: stripe-volume: success

  • 查看条带卷信息
[root@node1 opt]# gluster volume info stripe-volume
 
Volume Name: stripe-volume
Type: Stripe
Volume ID: f0a5c752-fce9-4191-a25a-489a9a8d41b6
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

创建复制卷

  • 指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
[root@node1 opt]# gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-volume: success: please start the volume to access data

  • 启动复制卷
[root@node1 opt]# gluster volume start rep-volume
volume start: rep-volume: success

  • 查看复制卷信息
[root@node1 opt]# gluster volume info rep-volume
 
Volume Name: rep-volume
Type: Replicate
Volume ID: dcad45e5-9083-4ac4-a63b-e93f0028cecb
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/data/sdb1
Brick2: node4:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

创建分布式条带卷

  • 指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷
[root@node1 opt]# 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@node1 opt]# gluster volume start dis-stripe
volume start: dis-stripe: success

  • 查看分布式条带卷信息
[root@node1 opt]# gluster volume info dis-stripe
 
Volume Name: dis-stripe
Type: Distributed-Stripe
Volume ID: 82345486-2286-4d5d-a0fd-cbeb42c5df6b
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdd1
Brick2: node2:/data/sdd1
Brick3: node3:/data/sdd1
Brick4: node4:/data/sdd1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

创建分布式复制卷

  • 指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷
[root@node1 opt]# 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@node1 opt]# gluster volume start dis-rep
volume start: dis-rep: success

  • 查看分布式复制卷信息
[root@node1 opt]# gluster volume info dis-rep
 
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 571a1468-cb91-40e6-9e58-460b3eb1a3bc
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sde1
Brick2: node2:/data/sde1
Brick3: node3:/data/sde1
Brick4: node4:/data/sde1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

  • 查看总共启动的卷
[root@node1 opt]# gluster volume list
dis-rep
dis-stripe
dis-volume
rep-volume
stripe-volume

部署GFS的客户端

  • 先将GFS包解压并建立yum源
[root@node5 opt]# unzip gfsrepo.zip 
[root@node5 opt]# cd /etc/yum.repos.d/
[root@node5 yum.repos.d]# mkdir repo.bak
[root@node5 yum.repos.d]# mv *.repo repo.bak
[root@node5 yum.repos.d]# vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1

  • 清除yum源在重建yum源
[root@node5 yum.repos.d]# yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: glfs
Cleaning up list of fastest mirrors
Other repos take up 1.1 G of disk space (use --verbose for details)
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
glfs                                                                                                                                                           | 2.9 kB  00:00:00     
(1/3): glfs/filelists_db                                                                                                                                       |  62 kB  00:00:00     
(2/3): glfs/other_db                                                                                                                                           |  46 kB  00:00:00     
(3/3): glfs/primary_db                                                                                                                                         |  92 kB  00:00:00     
元数据缓存已建立
[root@node5 yum.repos.d]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识                                                                                    源名称                                                                                  状态
glfs                                                                                      glfs                                                                                    115
repolist: 115
  • 安装依赖
[root@node5 yum.repos.d]# yum -y install glusterfs glusterfs-fuse

  • 创建卷的挂载目录
[root@node5 yum.repos.d]# mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
[root@node5 yum.repos.d]# ls /test/
dis  dis_rep  dis_stripe  rep  stripe

  • 配置地址映射
echo "192.168.1.5 node1" >> /etc/hosts
echo "192.168.1.101 node2" >> /etc/hosts
echo "192.168.1.102 node3" >> /etc/hosts
echo "192.168.1.103 node4" >> /etc/hosts
echo "192.168.1.110 node5" >> /etc/hosts
  • 挂载gluster文件系统
[root@node5 yum.repos.d]# mount.glusterfs node1:dis-volume /test/dis
[root@node5 yum.repos.d]# mount.glusterfs node1:stripe-volume /test/stripe
[root@node5 yum.repos.d]# mount.glusterfs node1:rep-volume /test/rep
[root@node5 yum.repos.d]# mount.glusterfs node1:dis-stripe /test/dis_stripe
[root@node5 yum.repos.d]# mount.glusterfs node1:dis-rep /test/dis_rep

  • 查看挂载情况
[root@node5 yum.repos.d]# df -h
df: "/data/sdb1": 传输端点尚未连接
df: "/data/sdd1": 传输端点尚未连接
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda3             16G  6.5G  9.6G   41% /
devtmpfs             895M     0  895M    0% /dev
tmpfs                910M     0  910M    0% /dev/shm
tmpfs                910M   11M  900M    2% /run
tmpfs                910M     0  910M    0% /sys/fs/cgroup
/dev/sda1           1014M  174M  841M   18% /boot
tmpfs                182M  8.0K  182M    1% /run/user/42
tmpfs                182M   40K  182M    1% /run/user/0
/dev/sr0             4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdc1            5.0G   33M  5.0G    1% /data/sdc1
/dev/sde1            5.0G   33M  5.0G    1% /data/sde1
node1:dis-volume      25G   65M   25G    1% /test/dis
node1:stripe-volume   10G   65M   10G    1% /test/stripe
node1:rep-volume     5.0G   33M  5.0G    1% /test/rep
node1:dis-stripe      20G  130M   20G    1% /test/dis_stripe
node1:dis-rep         10G   65M   10G    1% /test/dis_rep

  • 并设置成永久挂载
[root@node5 yum.repos.d]# 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_stripe		glusterfs		defaults,_netdev		0 0
node1:dis-rep			/test/dis_rep			glusterfs		defaults,_netdev		0 0
[root@node5 yum.repos.d]# mount -a

测试gluster文件系统

  • 在卷中写入文件,在客户端中操作,创建了五个文件
[root@node5 yum.repos.d]# cd /opt/
[root@node5 opt]# dd if=/dev/zero of=/opt/demo1.log bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.0352689 秒,595 MB/[root@node5 opt]# dd if=/dev/zero of=/opt/demo2.log bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.0630754 秒,332 MB/[root@node5 opt]# dd if=/dev/zero of=/opt/demo3.log bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.0650207 秒,323 MB/[root@node5 opt]# dd if=/dev/zero of=/opt/demo4.log bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.0635848 秒,330 MB/[root@node5 opt]# dd if=/dev/zero of=/opt/demo5.log bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB)已复制,0.0632193 秒,332 MB/[root@node5 opt]# ll -h /opt/
总用量 150M
-rw-r--r--   1 root  root   20M 813 23:17 demo1.log
-rw-r--r--   1 root  root   20M 813 23:17 demo2.log
-rw-r--r--   1 root  root   20M 813 23:17 demo3.log
-rw-r--r--   1 root  root   20M 813 23:17 demo4.log
-rw-r--r--   1 root  root   20M 813 23:17 demo5.log

  • 将创建的文件全部放入挂载的目录中
[root@node5 opt]# cp demo* /test/dis
[root@node5 opt]# cp demo* /test/stripe/
[root@node5 opt]# cp demo* /test/rep/
[root@node5 opt]# cp demo* /test/dis_stripe/
[root@node5 opt]# cp demo* /test/dis_rep/

  • 查看分布式文件分布,文件被随机分到所有Brick Server 上
[root@node1 opt]# ls -lh /data/sdb1/
总用量 40M
-rw-r--r--. 2 root root 20M 814 01:21 demo1.log
-rw-r--r--. 2 root root 20M 814 01:21 demo3.log
[root@node2 opt]# ll -h /data/sdb1/
总用量 60M
-rw-r--r-- 2 root root 20M 813 23:21 demo2.log
-rw-r--r-- 2 root root 20M 813 23:21 demo4.log
-rw-r--r-- 2 root root 20M 813 23:21 demo5.log

  • 查看条带卷文件分布,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上
[root@node1 opt]# ls -lh /data/sdc1/
总用量 50M
-rw-r--r--. 2 root root 10M 814 01:21 demo1.log
-rw-r--r--. 2 root root 10M 814 01:21 demo2.log
-rw-r--r--. 2 root root 10M 814 01:21 demo3.log
-rw-r--r--. 2 root root 10M 814 01:21 demo4.log
-rw-r--r--. 2 root root 10M 814 01:21 demo5.log
[root@node2 opt]# ll -h /data/sdc1
总用量 50M
-rw-r--r-- 2 root root 10M 813 23:21 demo1.log
-rw-r--r-- 2 root root 10M 813 23:21 demo2.log
-rw-r--r-- 2 root root 10M 813 23:21 demo3.log
-rw-r--r-- 2 root root 10M 813 23:21 demo4.log
-rw-r--r-- 2 root root 10M 813 23:21 demo5.log

  • 查看复制卷分布,文件同步到多个 Brick 上,使其具备多个文件副本
[root@node3 opt]# ll -h /data/sdb1/
总用量 100M
-rw-r--r--. 2 root root 20M 813 23:21 demo1.log
-rw-r--r--. 2 root root 20M 813 23:21 demo2.log
-rw-r--r--. 2 root root 20M 813 23:21 demo3.log
-rw-r--r--. 2 root root 20M 813 23:21 demo4.log
-rw-r--r--. 2 root root 20M 813 23:21 demo5.log
[root@node4 opt]# ll -h /data/sdb1/
总用量 100M
-rw-r--r--. 2 root root 20M 813 23:21 demo1.log
-rw-r--r--. 2 root root 20M 813 23:21 demo2.log
-rw-r--r--. 2 root root 20M 813 23:21 demo3.log
-rw-r--r--. 2 root root 20M 813 23:21 demo4.log
-rw-r--r--. 2 root root 20M 813 23:21 demo5.log

  • 查看分布式条带卷分布,有分布式卷和条带卷的特性,分块并随机分到多个 Brick上
[root@node1 opt]# ll -h /data/sdd1/
总用量 40M
-rw-r--r--. 2 root root 10M 814 01:21 demo1.log
-rw-r--r--. 2 root root 10M 814 01:21 demo2.log
-rw-r--r--. 2 root root 10M 814 01:21 demo3.log
-rw-r--r--. 2 root root 10M 814 01:21 demo4.log
[root@node2 opt]# ll -h /data/sdd1
总用量 40M
-rw-r--r-- 2 root root 10M 813 23:21 demo1.log
-rw-r--r-- 2 root root 10M 813 23:21 demo2.log
-rw-r--r-- 2 root root 10M 813 23:21 demo3.log
-rw-r--r-- 2 root root 10M 813 23:21 demo4.log
[root@node3 opt]# ll -h /data/sdd1
总用量 10M
-rw-r--r--. 2 root root 10M 813 23:21 demo5.log
[root@node4 opt]# ll -h /data/sdd1
总用量 10M
-rw-r--r--. 2 root root 10M 813 23:21 demo5.log

  • 查看分布式复制卷,有分布式卷和复制卷特性
[root@node1 opt]# ll -h /data/sde1
总用量 80M
-rw-r--r--. 2 root root 20M 814 01:21 demo1.log
-rw-r--r--. 2 root root 20M 814 01:21 demo2.log
-rw-r--r--. 2 root root 20M 814 01:21 demo3.log
-rw-r--r--. 2 root root 20M 814 01:21 demo4.log
[root@node2 opt]# ll -h /data/sde1
总用量 80M
-rw-r--r-- 2 root root 20M 813 23:21 demo1.log
-rw-r--r-- 2 root root 20M 813 23:21 demo2.log
-rw-r--r-- 2 root root 20M 813 23:21 demo3.log
-rw-r--r-- 2 root root 20M 813 23:21 demo4.log
[root@node3 opt]#  ll -h /data/sde1
总用量 20M
-rw-r--r--. 2 root root 20M 813 23:21 demo5.log
[root@node4 opt]# ll -h /data/sde1
总用量 20M
-rw-r--r--. 2 root root 20M 813 23:21 demo5.log

破坏测试

  • 关闭node2节点来模拟故障,在客户端中查看分布式文件
[root@node2 opt]# systemctl stop glusterd.service 
[root@node5 test]# cd dis
[root@node5 dis]# ls
demo1.log  demo3.log		//node2中的分布的文件不显示
	
  • 查看条带卷
[root@node5 dis]# cd ../stripe/
[root@node5 stripe]# ll
ls: 正在读取目录.: 传输端点尚未连接
总用量 0			//无法访问,条带卷不具备冗余性

  • 查看复制卷
[root@node5 test]# cd rep/
[root@node5 rep]# ll			//文件能正常查看
总用量 102400
-rw-r--r-- 1 root root 20971520 813 23:21 demo1.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo2.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo3.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo4.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo5.log

  • 查看分布式条带卷
[root@node5 dis_stripe]# ll			//只能看到3跟4上的文件
总用量 20480
-rw-r--r-- 1 root root 20971520 813 23:21 demo5.log

  • 查看分布式复制卷
[root@node5 dis_rep]# ll		//可以访问,分布式复制卷具备冗余性
总用量 102400
-rw-r--r-- 1 root root 20971520 813 23:21 demo1.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo2.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo3.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo4.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo5.log

  • 挂起2跟4节点,然后在客户端上查看复制卷
[root@node5 dis_rep]# cd ../rep/
[root@node5 rep]# ll		//数据都能看到
总用量 102400
-rw-r--r-- 1 root root 20971520 813 23:21 demo1.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo2.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo3.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo4.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo5.log

  • 查看分布式条带是否正常
[root@node5 rep]# cd ../dis_stripe/
[root@node5 dis_stripe]# ll				//看不到数据
ls: 正在读取目录.: 传输端点尚未连接
总用量 0

  • 查看分布式复制卷是否正常
[root@node5 dis_rep]# ll			//数据正常访问
总用量 102400
-rw-r--r-- 1 root root 20971520 813 23:21 demo1.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo2.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo3.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo4.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo5.log

其他维护命令

  • 查看GlusterFS卷

[root@node1 opt]# gluster volume list
dis-rep
dis-stripe
dis-volume
rep-volume
stripe-volume
  • 查看所有卷的信息
[root@node1 opt]# gluster volume info
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 571a1468-cb91-40e6-9e58-460b3eb1a3bc
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sde1
Brick2: node2:/data/sde1
Brick3: node3:/data/sde1
Brick4: node4:/data/sde1
Options Reconfigured:
nfs.disable: on
transport.address-family: inet
 
Volume Name: dis-stripe
Type: Distributed-Stripe
Volume ID: 82345486-2286-4d5d-a0fd-cbeb42c5df6b
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdd1
Brick2: node2:/data/sdd1
Brick3: node3:/data/sdd1
Brick4: node4:/data/sdd1
Options Reconfigured:
nfs.disable: on
transport.address-family: inet
 
Volume Name: dis-volume
Type: Distribute
Volume ID: 49a9d03b-8d59-4bdf-8f3f-0079902e484d
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
nfs.disable: on
transport.address-family: inet
 
Volume Name: rep-volume
Type: Replicate
Volume ID: dcad45e5-9083-4ac4-a63b-e93f0028cecb
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/data/sdb1
Brick2: node4:/data/sdb1
Options Reconfigured:
nfs.disable: on
transport.address-family: inet
 
Volume Name: stripe-volume
Type: Stripe
Volume ID: f0a5c752-fce9-4191-a25a-489a9a8d41b6
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Options Reconfigured:
nfs.disable: on
transport.address-family: inet
  • 查看所有卷的状态
[root@node1 opt]# gluster volume status
Status of volume: dis-rep
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/data/sde1                      49155     0          Y       20324
Brick node2:/data/sde1                      49152     0          Y       16938
Brick node3:/data/sde1                      49154     0          Y       9984 
Brick node4:/data/sde1                      49152     0          Y       7793 
Self-heal Daemon on localhost               N/A       N/A        Y       21321
Self-heal Daemon on node2                   N/A       N/A        Y       16926
Self-heal Daemon on node3                   N/A       N/A        Y       10692
Self-heal Daemon on node4                   N/A       N/A        Y       7783 
 
Task Status of Volume dis-rep
------------------------------------------------------------------------------
There are no active volume tasks
 
Status of volume: dis-stripe
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/data/sdd1                      49154     0          Y       20258
Brick node2:/data/sdd1                      49153     0          Y       16945
Brick node3:/data/sdd1                      49153     0          Y       9932 
Brick node4:/data/sdd1                      49153     0          Y       7801 
 
Task Status of Volume dis-stripe
------------------------------------------------------------------------------
There are no active volume tasks
 
Status of volume: dis-volume
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/data/sdb1                      49152     0          Y       19999
Brick node2:/data/sdb1                      49154     0          Y       16953
 
Task Status of Volume dis-volume
------------------------------------------------------------------------------
There are no active volume tasks
 
Status of volume: rep-volume
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node3:/data/sdb1                      49152     0          Y       9844 
Brick node4:/data/sdb1                      49154     0          Y       7808 
Self-heal Daemon on localhost               N/A       N/A        Y       21321
Self-heal Daemon on node3                   N/A       N/A        Y       10692
Self-heal Daemon on node4                   N/A       N/A        Y       7783 
Self-heal Daemon on node2                   N/A       N/A        Y       16926
 
Task Status of Volume rep-volume
------------------------------------------------------------------------------
There are no active volume tasks
 
Status of volume: stripe-volume
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/data/sdc1                      49153     0          Y       20102
Brick node2:/data/sdc1                      49155     0          Y       16962
 
Task Status of Volume stripe-volume
------------------------------------------------------------------------------
There are no active volume tasks

  • 停止一个卷,或开启一个卷
[root@node1 opt]# gluster volume stop dis-stripe 
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: dis-stripe: success
[root@node5 dis_stripe]# ll
ls: 无法打开目录.: 传输端点尚未连接
[root@node1 opt]# gluster volume start dis-stripe 
volume start: dis-stripe: success
[root@node5 dis_stripe]# ll
总用量 102400
-rw-r--r-- 1 root root 20971520 813 23:21 demo1.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo2.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo3.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo4.log
-rw-r--r-- 1 root root 20971520 813 23:21 demo5.log

  • 删除一个卷,删除之前需要先停止,且没有一个节点处于宕机,不然不能执行
[root@node1 opt]# gluster volume delete dis-stripe
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: dis-stripe: failed: Volume dis-stripe has been started.Volume needs to be stopped before deletion.
[root@node1 opt]# gluster volume stop dis-stripe 
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: dis-stripe: success
[root@node1 opt]# gluster volume delete dis-stripe
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: dis-stripe: success

  • 设置卷的访问控制
    仅拒绝
[root@node5 dis_stripe]# cd ..		//此时客户端不能在目录中操作了
-bash: cd: ..: 传输端点尚未连接

仅允许

gluster volume set dis-rep auth.allow 192.168.1.*	  //设置192.168.226.0网段的所有IP地址都能访问dis-rep卷
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:33:10  更:2021-08-14 14:33:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 19:30:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码