GFS分布式文件系统

GFS分布式文件系统:

gfd glusterFS开源的分布式的文件系统。

存储服务器,客户端以及网络(NFS/samba)网关。

传统式老的分布式系统元服务器,元服务器保存存储节点的目录树信息。一旦元服务器故障,所有的存储节点全部失效。

现在GFS取消了元服务器机制,数据横向扩展能力更强。可靠性更强。存储效率也更高。

GFS的特点:

1、扩展性更强,高性能

2、高可用,可以自动对文件进行复制。多次复制。

确保数据总是可以访问。哪怕硬件故障也能正常访问

3、全局统一的命名空间。所有节点都在一个分支的管理之下。客户端访问分支节点即可。

4、弹性卷,类似LVM。不同硬盘上的不同分区,组成一个逻辑上的硬盘。

不同服务器上的不同的硬盘分区,组成一个卷。可以动态扩容。

5、基于标准协议,GFS存储服务支持,NFS FTPHTTP以及GFS协议。应用程序可以直接使用数据,不需要任何修改。

GFS的组件和术语:

1、BRICK(存储块),存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元。也是对外提供的存储目录。服务和目录的绝对路径组成server:dir

192.168.233.10:/opt/gfs

node1:/opt/gfs

2、volume逻辑卷一个逻辑卷就是一组brick的集合。类似于lvm,我们管理GFS,就是管理这些卷。

3、FUSE:GFS的内核模块,允许用户创建自己的文件系统。

4 VFS:内核空间对用户提供的访问磁盘的接口。虚拟端口。

5、服务端在每个存储节点上都要运行。glusterd(后台管理进程)

工作流程:

gfs的卷有哪些类型:

分布式卷,也是GFS的默认卷类型

条带卷(没了)

复制卷(镜像化)

分布式复制卷

分作式卷的特点:

文件数据通过HASH算法分布到设置的所有BRICK SERVER上。GFS时默认。属于raldu,没有容错机制。在分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上。坏了一个全坏。存取效率也没有提高。直接使用本地文件系统进行存储

复制卷:

类似于raid 1,文件会同步在多个brick server上。读性能上升,写性能稍差。

分布式复制卷:

两两复制,文件会在组内同步。不同的组之间数据未必同步。

部署 GlusterFS 分布式文件系统

先安装多个磁盘

编写脚本,自动化分区挂载

systemctl stop firewalld

setenforce 0

2.磁盘分区,并挂载

vim /opt/fdisk.sh

#!/bin/bash

DEVNAME=$(ls /dev/sd* | grep -o "sd[b-e]")

for i in $DEVNAME

do

echo -e "n\n\n\n\n\nw\n" | fdisk /dev/$i &> /dev/null

mkfs -t xfs /dev/${i}1 &> /dev/null

mkdir -p /data/${i}1

echo "/dev/{i}1 /data/{i}1 xfs defaults 0 0" >> /etc/fstab

done

mount -a &> /dev/null

chmod +x /opt/fdisk.sh

cd /opt/

./fdisk.sh

3.修改主机名,配置/etc/hosts文件

#以Node1节点为例:(所有节点皆需要进行进行映射添加)

hostnamectl set-hostname node1

su

echo "192.168.73.105 node1" >> /etc/hosts

echo "192.168.73.106 node2" >> /etc/hosts

echo "192.168.73.107 node3" >> /etc/hosts

echo "192.168.73.109 node4" >> /etc/hosts

安装、启动GlusterFS(所有node节点上操作)

#将gfsrepo 软件上传到/opt目录下

unzip gfsrepo.zip

cd /etc/yum.repos.d/

mkdir repo.bak

mv *.repo repo.bak

vim glfs.repo

[glfs]

name=glfs

baseurl=file:///opt/gfsrepo

gpgcheck=0

enabled=1

yum clean all && yum makecache

#yum -y install centos-release-gluster #如采用官方 YUM 源安装,可以直接指向互联网仓库

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

systemctl start glusterd.service

systemctl enable glusterd.service

systemctl status glusterd.service

添加节点到存储信任池中(在 node1 节点上操作)

#只要在一台Node节点上添加其它节点即可

gluster peer probe node1

gluster peer probe node2

gluster peer probe node3

gluster peer probe node4

#在每个Node节点上查看群集状态

gluster peer status

创建GFS卷

1.创建分布式卷

#创建分布式卷,没有指定类型,默认创建的是分布式卷

gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force

#查看卷列表

gluster volume list

#启动新建分布式卷

gluster volume start dis-volume

#查看创建分布式卷信息

gluster volume info dis-volume

2.创建条带卷

#指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷

gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force

gluster volume start stripe-volume

gluster volume info stripe-volume

3.创建复制卷

#指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷

gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force

gluster volume start rep-volume

gluster volume info rep-volume

4.创建分布式条带卷

#指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷

gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force

gluster volume start dis-stripe

gluster volume info dis-stripe

5.创建分布式复制卷

指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷

gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force

gluster volume start dis-rep

gluster volume info dis-rep

#查看当前所有卷的列表

gluster volume list

部署 Gluster 客户端

1.安装客户端软件

#将gfsrepo 软件上传到/opt目下

cd /etc/yum.repos.d/

mkdir repo.bak

mv *.repo repo.bak

vim glfs.repo

[glfs]

name=glfs

baseurl=file:///opt/gfsrepo

gpgcheck=0

enabled=1

yum clean all && yum makecache

yum -y install glusterfs glusterfs-fuse

2.创建挂载目录

mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}

ls /test

3.配置 /etc/hosts 文件

echo "192.168.73.105 node1" >> /etc/hosts

echo "192.168.73.106 node2" >> /etc/hosts

echo "192.168.73.107 node3" >> /etc/hosts

echo "192.168.73.109 node4" >> /etc/hosts

4.挂载 Gluster 文件系统

#临时挂载

mount.glusterfs node1:dis-volume /test/dis

mount.glusterfs node1:stripe-volume /test/stripe

mount.glusterfs node1:rep-volume /test/rep

mount.glusterfs node1:dis-stripe /test/dis_stripe

mount.glusterfs node1:dis-rep /test/dis_rep

df -Th

#永久挂载

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

GFS系统卷测试

(1)文件写入测试

1.卷中写入文件,客户端操作

cd /opt

dd if=/dev/zero of=/opt/demo1.log bs=1M count=40

dd if=/dev/zero of=/opt/demo2.log bs=1M count=40

dd if=/dev/zero of=/opt/demo3.log bs=1M count=40

dd if=/dev/zero of=/opt/demo4.log bs=1M count=40

dd if=/dev/zero of=/opt/demo5.log bs=1M count=40

ls -lh /opt

cp /opt/demo* /test/dis

cp /opt/demo* /test/stripe/

cp /opt/demo* /test/rep/

cp /opt/demo* /test/dis_stripe/

cp /opt/demo* /test/dis_rep/

(2)查看文件分布情况

ls -lh /data/sdb1

ls -lh /data/sdc1 ll -h /data/sdd1 ll -h /data/sde1

破坏性测试

#挂起 node2 节点或者关闭glusterd服务来模拟故障

[root@node2 ~]# systemctl stop glusterd.service

#在客户端上查看文件是否正常

#分布式卷数据查看

[root@localhost test]# ll /test/dis/ #在客户机上发现少了demo5.log文件,这个是在node2上的

总用量 163840

-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo1.log

-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo2.log

-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo3.log

-rw-r--r-- 1 root root 41943040 12月 18 14:50 demo4.log

#条带卷

[root@localhost test]# cd /test/stripe/ #无法访问,条带卷不具备冗余性

[root@localhost stripe]# ll

总用量 0

#分布式条带卷

[root@localhost test]# ll /test/dis_stripe/ #无法访问,分布条带卷不具备冗余性

总用量 40960

-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo5.log

#分布式复制卷

[root@localhost test]# ll /test/dis_rep/ #可以访问,分布式复制卷具备冗余性

总用量 204800

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo1.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo2.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo3.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo4.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo5.log

#挂起 node2 和 node4 节点,在客户端上查看文件是否正常

#测试复制卷是否正常

[root@localhost rep]# ls -l /test/rep/ #在客户机上测试正常 数据有

总用量 204800

-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo1.log

-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo2.log

-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo3.log

-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo4.log

-rw-r--r-- 1 root root 41943040 12月 18 14:51 demo5.log

#测试分布式条卷是否正常

[root@localhost dis_stripe]# ll /test/dis_stripe/ #在客户机上测试没有数据

总用量 0

#测试分布式复制卷是否正常

[root@localhost dis_rep]# ll /test/dis_rep/ #在客户机上测试正常 有数据

总用量 204800

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo1.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo2.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo3.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo4.log

-rw-r--r-- 1 root root 41943040 12月 18 14:52 demo5.log

其他的维护命令:

1.查看GlusterFS卷

gluster volume list

2.查看所有卷的信息

gluster volume info

3.查看所有卷的状态

gluster volume status

4.停止一个卷

gluster volume stop dis-stripe

5.删除一个卷,注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功

gluster volume delete dis-stripe

6.设置卷的访问控制

#仅拒绝

gluster volume set dis-rep auth.deny 192.168.73.11

#仅允许

gluster volume set dis-rep auth.allow 192.168.73.* #设置192.168.80.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)

相关推荐
晚安苏州10 小时前
WPF DataTemplate 数据模板
wpf
甜甜不吃芥末1 天前
WPF依赖属性详解
wpf
Hat_man_1 天前
WPF制作图片闪烁的自定义控件
wpf
晚安苏州3 天前
WPF Binding 绑定
wpf·wpf binding·wpf 绑定
wangnaisheng3 天前
【WPF】RenderTargetBitmap的使用
wpf
dotent·3 天前
WPF 完美解决改变指示灯的颜色
wpf
orangapple5 天前
WPF 用Vlc.DotNet.Wpf实现视频播放、停止、暂停功能
wpf·音视频
ysdysyn5 天前
wpf mvvm 数据绑定数据(按钮文字表头都可以),根据长度进行换行,并把换行的文字居中
c#·wpf·mvvm
orangapple5 天前
WPF 使用LibVLCSharp.WPF实现视频播放、停止、暂停功能
wpf
晚安苏州5 天前
WPF ControlTemplate 控件模板
wpf