1.GFS分布式文件系统

一:Glusterfs概述

1.1Glusterfs简介

GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。

1.2Glusterfs特点

1:扩展性和高性能

          GlusterFS利用双重特性来提供几TB至数PB的高扩展存储解决方案。Scale-Out架构允许通过简单地增加资源来提高存储容量和性能,磁盘、计算和I/O资源都可以独立增加,支持10GbE和InfiniBand等高速网络互联。Gluster弹性哈希(ElasticHash)解除了GlusterFS对元数据服务器的需求,消除了单点故障和性能瓶颈,真正实现了并行化数据访问。

  

2:高可用性

          GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。自我修复功能能够把数据恢复到正确的状态,而且修复是以增量的方式在后台执行,几乎不会产生性能负载。GlusterFS没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、ZFS)来存储文件,因此数据可以使用各种标准工具进行复制和访问。

3:弹性卷管理

         数据储存在逻辑卷中,逻辑卷可以从虚拟化的物理存储池进行独立逻辑划分而得到。存储服务器可以在线进行增加和移除,不会导致应用中断。逻辑卷可以在所有配置服务器中增长和缩减,可以在不同服务器迁移进行容量均衡,或者增加和移除系统,这些操作都可在线进行。文件系统配置更改也可以实时在线进行并应用,从而可以适应工作负载条件变化或在线性能调优。

4:全局统一命名空间

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

5:Infiniband RDMA

无限宽带技术,是一种高性能计算和数据中心网络技术。它提供了一种低延迟、高带宽和可靠性的连接方式,用于连接服务器、存储设备和其他计算资源。InfiniBand 能够绕过操作系统内核,创建应用程序间通信的直接通道,为应用程序提供延迟极低的消息传输服务。

1.3术语介绍

GlusterFS:是一个开源的分布式文件系统。

Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如'SERVER:EXPORT'

Client:挂载了GFS卷的设备

FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。Node:一个拥有若干brick的设备

Volume:一组bricks的逻辑集合

Metadata:元数据,关于数据的数据,用于描述文件、目录等的信息。

VFS:内核空间对用户空间提供的访问磁盘的接口

POSIX:指可移植操作系统接口

二.GFS的工作原理

2.1GFS的工作流程

(1)客户端或应用程序通过GFS的挂载点访问数据

(2)Linux系统内核通过VFS API收到请求并处理

(3)VFS将数据递交给FUSE内核文件系统,并向系统注册一个实际的文件系统FUSE,而FUSE文件系统则是将数据通过/dev/Fuse设备文件递交给了GFS的client端。可以将FUSE文件系统理解为一个代理。

(4)GFS client收到数据后,client根据配置文件对数据进行处理

(5)经过GFS client处理后,通过网络将数据传递至远端的GFS Server,并且将数据写入服务器存储设备

2.2弹性HASH算法

GlusterFS目前使用Davies-Meyer算法计算文件名hash值,获得一个32位整数。Davies-Meyer算法具有非常好的hash分布性,计算效率很高,假设逻辑卷中的存储单元Brick有N个,则32位整数空间被平均划分为N个连续子空间,每个空间分别映射到一个存储单元Brick,计算得到的32位hash值就会被投射到一个存储单元Brick。

三.GlusterFS的卷类型

3.1卷的类型

1:基本卷

(1)distribute volume:分布式卷

文件通过hash算法分布到所有brick server上,这种卷是glusterfs的基础和最大特点;实只是扩大的磁盘空间,如果有一个磁盘坏了,对应的数据也丢失,文件级RAID 0,不具有容错能力。

(2)stripe volume:条带卷

类似RAID0,文件分成数据块以Round Robin方式分布到brick server上,并发粒度是数据块,支持超大文件,大文件性能高;

条带卷,在6的版本以后不在支持

(3)replica volume:复制卷

文件同步复制到多个brick上,文件级RAID 1,具有容错能力,写性能下降,读性能提升

(4)分散卷

是基于ErasureCodes(纠错码)的一种新类型的Volume(3.6版本正式发布该特性),类似于RAID5/6----分散卷基于纠错码。存储大文件时,性能尤为突出

通过配置Redundancy(冗余)级别提高可靠性,在保证较高的可靠性同时,可以提升物理存储空间的利用率

2:复合卷

(5)distribute stripe volume:分布式条带卷

brickserver数量是条带数的倍数,兼具distribute和stripe卷的特点;

(6)distribute replica volume:分布式复制卷

brickserver数量是镜像数的倍数,兼具distribute和replica卷的特点,可以在2个或多个节点之间复制数据。

(7)stripe replica volume:条带复制卷

类似RAID 10。同时具有条带卷和复制卷的特点

(8)distribute stripe replicavolume:分布式条带复制卷

三种基本卷的复合卷。通常用于类Map Reduce应用

(9)分布式分散卷

分布式分散卷在分散的子卷上分发文件。

分布式分散卷等效于分布式复制卷,但是使用分散子卷而不是复制子卷

结合distibuted和dispersed的优点,HA+LB+可扩容,HA+LB+可扩容

实验:

卷类型:

卷名称 

卷类型

空间大小

Brick

dis-volume

分布式卷

12G

node1(/e6)、node2(/e6)

rep-volume

复制卷

5G

node3(/d5)、node4(/d5)

stripe-volume

分散卷

10G

node1(/b3)、node2(/b3)、node3(/b3)、node4(/b3)

dis-rep

分布式复制卷

8G

node1(/c4)、node2(/c4)、node3(/c4)、node4(/c4)

dis-stripe

分布式分散卷

12G

node1(/f7)、node2(/f7)、node3(/f7)、node4(/f7)

设备列表:

操作系统

系统IP

主机名

挂载磁盘

挂载目录

Centos 7.9

192.168.10.101

node1

/dev/sdb(3G)

/dev/sdc(4G)

/dev/sdd(5G)

/dev/sde(6G)

/dev/sdf(7G)

/b3

/c4

/d5

/e6

/f7

Centos 7.9

192.168.10.102

node2

/dev/sdb(3G)

/dev/sdc(4G)

/dev/sdd(5G)

/dev/sde(6G)

/dev/sdf(7G)

/b3

/c4

/d5

/e6

/f7

Centos 7.9

192.168.10.103

node3

/dev/sdb(3G)

/dev/sdc(4G)

/dev/sdd(5G)

/dev/sde(6G)

/dev/sdf(7G)

/b3

/c4

/d5

/e6

/f7

Centos 7.9

192.168.10.104

node4

/dev/sdb(3G)

/dev/sdc(4G)

/dev/sdd(5G)

/dev/sde(6G)

/dev/sdf(7G)

/b3

/c4

/d5

/e6

/f7

Centos 7.9

192.168.10.105

node5

/dev/sdb(3G)

/dev/sdc(4G)

/dev/sdd(5G)

/dev/sde(6G)

/dev/sdf(7G)

/b3

/c4

/d5

/e6

/f7

Centos 7.9

192.168.10.106

node6

/dev/sdb(3G)

/dev/sdc(4G)

/dev/sdd(5G)

/dev/sde(6G)

/dev/sdf(7G)

/b3

/c4

/d5

/e6

/f7

Centos 7.9

192.168.10.107

client

备注:在glusterfs 6.1版本之后,不在支持stripe ,分布式条带卷不多说,在官方的安装文档卷的介绍中已经把条带卷移除了,因为这个卷的可用性太差,只要一个brick挂掉,整个就挂掉,客户端就不能访问,显然不符合生产环境。

一:部署集群环境

1.准备环境(六台相同)

(1)添加磁盘

  1. 六个虚拟机,各添加五块硬盘。
  2. 101、102、103、104、105、106:3,4,5,6,7G
  3. 开启同步,在xshell中重启六台,reboot
  4. fidsk -l

vi /tec/host

192.168.10.101 node1

192.168.10.102 node2

192.168.10.103 node3

192.168.10.106 node6

(2)为所有节点的新磁盘分区

fdisk /dev/sdb

fdisk /dev/sdc

fdisk /dev/sdd

fdisk /dev/sde

fdisk /dev/sdf

(3)为每个节点的每个磁盘格式化

mkfs -t xfs /dev/sdb1

mkfs -t xfs /dev/sdc1

mkfs -t xfs /dev/sdd1

mkfs -t xfs /dev/sde1

mkfs -t xfs /dev/sdf1

(4)挂载磁盘

mkdir /b3

mkdir /c4

mkdir /d5

mkdir /e6

mkdir /f7

(5)挂载磁盘

mount /dev/sdb1 /b3

mount /dev/sdc1 /c4

mount /dev/sdd1 /d5

mount /dev/sde1 /e6

mount /dev/sdf1 /f7

(6)修改fstab文件,使挂载永久生效

vi /etc/fstab

/dev/sdb1       /b3     xfs     defaults  0 0

/dev/sdc1       /c4     xfs     defaults  0 0

/dev/sdd1       /d5     xfs     defaults  0 0

/dev/sde1       /e6     xfs     defaults  0 0

/dev/sde1       /f7     xfs     defaults  0 0

(7)在所有节点上关闭防火墙和selinux

systemctl stop firewalld

setenforce 0

(8)在所有节点上修改hosts文件

vi /etc/hosts

192.168.10.101  node1

192.168.10.102  node2

192.168.10.103  node3

192.168.10.104  node4

192.168.10.105  node5

192.168.10.106  node6

EOF

2:在所有节点上安装gfs

dnf -y install glusterfs glusterfs-server glusterfs-fuse

注释:

glusterfs:gluster客户端主程序

glusterfs-server:gluster服务端主程序

glusterfs-fuse:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。

glusterfs-rdma:为gluster提供远程直接内存访问,支持不通过双方的OS进行直接内存访问。

3:在所有节点上启动GFS

systemctl start glusterd.service

systemctl enable glusterd.service

4:添加节点(只在node1节点上)

gluster peer probe node1

gluster peer probe node2

gluster peer probe node3

gluster peer probe node4

gluster peer probe node5

gluster peer probe node6

5:在每个节点上查看状态

gluster peer status

备注:

重置GlusterFS集群(所有节点)

systemctl stop glusterd.service

rm -rf /var/lib/glusterd/*

systemctl start glusterd.service

二.创建卷

1:创建分布式卷(在node1上)

注释:默认创建的就是分布式卷

gluster volume create dist-volume node1:/e6 node2:/e6 force

gluster volume info dist-volume

gluster volume start dist-volume

2:创建复制卷

注释:复制卷要求复制的数量和Brick Server的数量(node的数量)相同

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

gluster volume info rep-volume

gluster volume start rep-volume

3:分散卷

gluster volume create disp-volume disperse 3 redundancy 1 node1:/b3 node2:/b3 node3:/b3 force

gluster volume info disp-volume

gluster volume start disp-volume

备注:

用三个分区创建分散卷,允许一个分区失效

分散卷中每三个brick允许有一个失效(3*1或6*2)

是基于ErasureCodes(纠错码)的一种新类型的Volume(3.6版本正式发布该特性),类似于RAID5/6。通过配置Redundancy(冗余)级别提高可靠性,在保证较高的可靠性同时,可以提升物理存储空间的利用率。redundancy 必须大于0,并且bricks的总数必须大于2 *redundancy 。 这意味着dispersed卷必须至少包含3个bricks。类似raid5/raid6,防止单点故障(HA),提升IO性能(LB)。

disperse 3 redundancy 1:需要3个brick

disperse 4 redundancy 1:需要4个brick

每个分散卷至少3个brick,冗余级别最小为1(一个brick失效)

在创建Dispersed volume时,如若redundancy值设置为0,则Dispersed volume等同于分布式卷,若redundancy设置为#Bricks/2,则Dispersed volume等同于复制卷,因此,在创建Dispersed volume时,redundancy值的设定应遵循以下公式: 0< redundancy<#Bricks /2

(disperse-data)+redundancy=disperse

1)3 bricks,创建Dispersed Type为1*(2+1),存储磁盘空间利用率66.7%;

2)10bricks,创建Dispersed Type为2*(4+1)的卷,存储磁盘空间利用率为80%。

备注:

原来的条带卷,在6的版本以后不在支持

gluster volume create strip-volume stripe 2 node1:/d5 node2:/d5 force

4:创建分布式复制卷

注释:分布式复制卷要求Brick Server的数量必须是复制数的倍数(两倍或更高的倍数)

gluster volume create dist-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force

gluster volume info dist-rep

gluster volume start dist-rep

5:分布式分散卷

gluster volume create dist-disp disperse 3 redundancy 1 node1:/f7 node2:/f7 node3:/f7 node4:/f7 node5:/f7 node6:/f7 force

gluster volume start dist-disp

备注:分布式分散卷需要用六个节点,每三个节点做一个分散卷,两组分散卷做成复制卷

三:部署GFS客户端

1:安装客户端软件

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# systemctl disable firewalld

[root@localhost ~]# yum -y install glusterfs glusterfs-fuse

注释:上面两个包centos7系统已经默认安装过了

2:创建挂载目录

[root@localhost ~]# mkdir -p /test/{dist,rep,disp,dist_and_rep,dist_and_disp}

[root@localhost ~]# ls /test

3:修改hosts文件

[root@localhost ~]# cat <<EOF> /etc/hosts

192.168.10.101  node1

192.168.10.102  node2

192.168.10.103  node3

192.168.10.104  node4

192.168.10.105  node5

192.168.10.106  node6

EOF

4:挂载Gluster文件系统

[root@localhost ~]# mount -t glusterfs node1:dist-volume /test/dist

[root@localhost ~]# mount -t glusterfs node1:rep-volume /test/rep

[root@localhost ~]# mount -t glusterfs node1:disp-volume /test/disp

[root@localhost ~]# mount -t glusterfs node1:dist-rep /test/dist_and_rep

[root@localhost ~]# mount -t glusterfs node1:dist-disp /test/dist_and_disp

[root@localhost ~]# df -h

5:修改fstab配置文件

[root@localhost ~]# vi /etc/fstab

在末尾添加:

node1:dist-volume     /test/dist             glusterfs  defaules,_netdev  0 0

node1:rep-volume     /test/rep             glusterfs  defaules,_netdev  0 0

node1:dist-rep        /test/dist_and_rep     glusterfs  defaules,_netdev  0 0

node1:disp-volume     /test/disp             glusterfs  defaules,_netdev  0 0

node1:disp-rep        /test/disp_and_rep     glusterfs  defaules,_netdev  0 0

四:在客户端测试Gluster文件系统

1:在卷中写入文件

(1)创建测试文件

dd if=/dev/zero of=/root/demo1.log bs=1M count=43

dd if=/dev/zero of=/root/demo2.log bs=1M count=43

dd if=/dev/zero of=/root/demo3.log bs=1M count=43

dd if=/dev/zero of=/root/demo4.log bs=1M count=43

dd if=/dev/zero of=/root/demo5.log bs=1M count=43

(2)卷中写入文件

[root@localhost ~]# cp demo* /test/dist/

[root@localhost ~]# cp demo* /test/rep/

[root@localhost ~]# cp demo* /test/dist_and_rep/

2:查看文件分布

(1)在node1和node2中查看分布式卷文件分布

node1:

[root@localhost ~]# ll -h /e6

总用量 173M

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo1.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo2.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo3.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo4.log

node2:

[root@localhost ~]# ll -h /e6

总用量 44M

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo5.log

(3)在node3和node4中查看复制卷文件分布

node3:

[root@localhost ~]# ll -h /d5

总用量 216M

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo1.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo2.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo3.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo4.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo5.log

node4:

[root@localhost ~]# ll -h /d5

总用量 216M

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo1.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo2.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo3.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo4.log

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo5.log

(5)在node1、node2、node3、node4中查看分布式复制卷文件分布

node1:

[root@localhost ~]# ll -h /c4

总用量 173M

-rw-r--r--. 2 root root 43M 4月  17 22:06 demo1.log

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo2.log

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo3.log

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo4.log

node2:

[root@localhost ~]# ll -h /c4

总用量 173M

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo1.log

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo2.log

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo3.log

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo4.log

node3:

[root@localhost ~]# ll -h /c4

总用量 44M

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo5.log

node4:

[root@localhost ~]# ll -h /c4

总用量 44M

-rw-r--r--. 2 root root 43M 4月  17 22:07 demo5.log

五:破坏性测试

(1)挂起node2节点,在客户端上测试各个文件是否可以正常使用

(2)再挂起node4,在客户端继续测试各个文件的读取

六:其他维护命令

1:查看GFS卷

[root@localhost ~]# gluster volume list

dist-rep

dist-disp

dist-volume

rep-volume

disp-volume

[root@localhost ~]# gluster volume info

[root@localhost ~]# gluster volume status

2:停止删除卷

[root@localhost ~]# gluster volume stop dist-volume

Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y

volume stop: dis-stripe: success

[root@localhost ~]# gluster volume delete dist

Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y

volume delete: dis-stripe: failed: Some of the peers are down

3:设置卷的访问控制

[root@localhost ~]# gl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值