GFS分布式文件系统

2.1 GlusterFS 概述

1.GlusterFS 简介

GlusterFS 是一个开源的分布式文件系统,同时也是 Scale-Out 存储解决方案 Gluster的核心,在存储数据方面具有强大的横向扩展能力,通过扩展不同的节点可以支持数 PB 级别的存储容量。GlusterFS 借助 TCP/P 或 InfiniBand RDMA 网络将分散的存储资源汇聚在一起,统一提供存储服务,并使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间以及无元的设计,可为各种不同的数据负载提供优异的性能。

GlusterFS 主要由存储服务器(Brick Server)、客户端及 NFS/Samba 存储网关(可选,根据需要选择使用)组成,如图2.1所示。

GlusterFS 架构中最大的设计特点是没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率非常高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃。而 GlusterFS分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性及存储效率。GlusterFS 支持TCP/IP 和 InfiniBandRDMA 高速网络互联,客户端可通过原生 GlusterFS 协议访问数据,其他没有运行 GlusterFS 客户端的终端可利用NFS/CIFS标准协议通过存储网关访问数据。

2.GlusterFs 的特点

1. 高扩展性

  • 分布式架构:GlusterFS采用分布式文件系统架构,通过简单地添加更多服务器(节点)来扩展存储容量和性能,满足不断增长的数据存储需求。
  • 弹性卷组管理:支持灵活的卷管理策略,如分布式卷、条带卷、复制卷等,可以根据具体应用场景进行选择和配置。

2. 高可用性

  • 数据副本和冗余机制:通过数据副本和冗余机制来保证数据的可靠性和完整性。当某个节点发生故障时,其他节点可以自动接管故障节点的数据存储任务,确保数据的可用性和可靠性。
  • 自我修复能力:GlusterFS具有自我修复能力,一旦检测到节点故障,它会从其它节点中自动恢复数据,确保数据的可靠性和一致性。

3. 高性能

  • 分布式存储:通过将数据分散到多个节点进行存储和处理,可以显著提高数据访问的速度和并发处理能力。
  • 弹性哈希算法:使用弹性哈希算法来平衡数据在各个节点之间的分布,确保数据在系统中的均匀分布,从而提高系统的整体性能。

4. 易于管理

  • 集中式的元数据管理(部分版本):GlusterFS采用集中式的元数据服务器来管理文件的元数据信息,使得文件元数据的检索和管理更加高效。同时,还支持自定义的元数据字段,方便用户根据需要进行扩展。
  • 简单易用的管理工具:提供简单易用的管理工具,方便管理员进行配置和管理,降低了运营成本。

5. 灵活性

  • 支持多种存储类型:GlusterFS支持多种存储类型,包括文件存储、对象存储等,可以根据具体需求进行选择和配置。
  • 多协议支持:基于标准协议(如GFS、HTTP、NFS等),可以与多种客户端和应用程序无缝集成。

6. 适用于多种应用场景

  • 大数据处理:在大数据处理领域,GlusterFS分布式存储可以作为数据湖的基础设施,为数据仓库、数据分析、机器学习等应用提供可靠、高效的数据支撑。
  • 云计算:在云计算环境中,GlusterFS可以作为虚拟机镜像存储的解决方案,为云平台提供稳定、可靠、可扩展的存储服务。
  • 物联网:在物联网领域,GlusterFS分布式存储可以用于连接海量的传感器、摄像头和其他设备,收集、存储和处理大量的实时数据。

3.GlusterFS术语

1. Brick

  • 定义:Brick是GlusterFS中的基本存储单元,由可信存储池中服务器上对外提供的存储目录构成。它是GlusterFS存储数据的最小单位,可以看作是一个物理存储分区或目录。
  • 特点:存储目录的格式由服务器和目录的绝对路径构成,表示方法为SERVER:EXPORT,例如192.168.1.4:/data/mydir/。

2. Volume

  • 定义:Volume是Brick的逻辑组合,是数据存储的逻辑设备,类似于LVM中的逻辑卷。大部分GlusterFS的管理操作都是在卷上进行的。
  • 特点:通过组合多个Brick,可以创建不同类型的卷来满足不同的存储需求,如分布式卷、复制卷、分布式复制卷等。

3. FUSE

  • 定义:FUSE(Filesystem in Userspace)是一个内核模块,允许用户创建自己的文件系统而无需修改内核代码。
  • 作用:在GlusterFS中,FUSE提供了一个用户空间的接口,使得GlusterFS可以作为一个文件系统被挂载和使用。

4. VFS

  • 定义:VFS(Virtual File System)是内核空间对用户空间提供的访问磁盘的接口。
  • 作用:VFS在GlusterFS中起到了桥梁的作用,将用户空间的请求传递给FUSE和GlusterFS client端进行处理。

5. Glusterd

  • 定义:Glusterd是GlusterFS的后台管理进程,运行在每个GlusterFS节点上。
  • 作用:Glusterd负责节点的管理、卷的创建和管理、文件系统的配置等任务。

6. Xlator

  • 定义:Xlator(或称为Translator)是GlusterFS模块的代名词,是GlusterFS架构中的一个重要组件。
  • 作用:Xlator负责处理GlusterFS中的各种操作,如数据读写、文件管理等。通过组合不同的Xlator,可以实现不同的存储功能和性能优化。

7. Metadata

  • 定义:Metadata是关于数据的数据,用于描述文件、目录等的相关信息。
  • 作用:在GlusterFS中,Metadata用于存储文件的属性、权限、链接数等信息,以便快速检索和管理文件。

8. 卷类型

GlusterFS支持多种卷类型,以满足不同应用对高性能、高可用性的需求。常见的卷类型包括:

  • 分布式卷(Distribute Volume):文件直接存储在某个Server节点上,不进行分块处理。
  • 复制卷(Replica Volume):将文件同步到多个Brick上,具备多个文件副本,提高容错能力。
  • 分布式复制卷(Distribute Replica Volume):结合分布式卷和复制卷的特点,既具备分布式存储的扩展性,又具备数据副本的容错能力。
  • 条带卷(Stripe Volume):类似于RAID0,文件被分为数据块并以轮询的方式分布到多个Brick上,提高大文件存储的读取效率。
  • 分布式条带卷(Distribute Stripe Volume)、条带复制卷(Stripe Replica Volume)、分布式条带复制卷(Distribute Stripe Replica Volume):这些卷类型结合了上述卷的特点,以满足更复杂的存储需求。

4.模块化堆栈式架构

图 2.2 是 GlusterFS 机构细化图。GlusterFS采用模块化、堆栈式的架构,可以根据需求配置定制化的应用环境,如大文件存储、海量小文件存储、云存储、多传输协议应用等。通过对模块进行各种组合,即可实现复杂的功能。例如 Replicate 模块可实现 RAID1,Stripe模块可实现 RAID0,通过两者的组合可实现 RAID10 和 RAID01,同时获得更高的性能及可靠性。

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

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

2.2 GlusterFs 的工作原理

1.GlusterFs 的工作流程

图 2.3 是 GlusterFS 数据访问的一个概要图。

GlusterFs的工作流程如下:

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

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

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

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

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

2.弹性 HASH 算法

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

  • 保证数据平均分布在每个 Brick 中。
  • 解决了对元数据服务器的依赖,进而解决了单点故障及访问瓶颈。

现在假设创建了一个包含四个 Brick 节点的 GlusterFS卷,在服务端的 Brick 挂载目录会给四个 Brick 平均分配 232的区间的范围空间,GlusterFShash 分布区间是保存在目录上而不是根据机器去分布区间。如图 2.4所示,Brick*表示一个目录。分布区间保存在每个Brick 挂载点目录的扩展属性上。

在卷中创建四个文件,分别是 test-file1、test-file2、test-file3、test-file4。在访问文件时,通过快速Hash函数计算出对应的HASH值(232范围的数值),然后根据计算出来的HASH值所对应的子空间散列到服务器的 Brick 上,如图 2.5 所示。

2.3 实验部分

卷类型

卷名称 

卷类型

空间大小

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:准备环境(以node1为例,其他节点步骤相同,请自行配置)

按照表中所示,为node节点添加相应数量和大小的磁盘,并重启系统

(1)为所有节点的新磁盘分区
[root@bogon ~]# hostnamectl set-hostname node1
[root@bogon ~]# bash
[root@node1 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
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
[root@node1 ~]# fdisk /dev/sdb
[root@node1 ~]# fdisk /dev/sdc
[root@node1 ~]# fdisk /dev/sdd
[root@node1 ~]# fdisk /dev/sde
[root@node1 ~]# fdisk /dev/sdf
(2)为每个节点的每个磁盘格式化 
[root@node1 ~]# mkfs -t ext4 /dev/sdb1
[root@node1 ~]# mkfs -t ext4 /dev/sdc1
[root@node1 ~]# mkfs -t ext4 /dev/sdd1
[root@node1 ~]# mkfs -t ext4 /dev/sde1
[root@node1 ~]# mkfs -t ext4 /dev/sdf1
(3)创建挂载点 
[root@node1 ~]# mkdir /b3
[root@node1 ~]# mkdir /c4
[root@node1 ~]# mkdir /d5
[root@node1 ~]# mkdir /e6
[root@node1 ~]# mkdir /f7
(4)挂载磁盘 
[root@node1 ~]# mount /dev/sdb1 /b3
[root@node1 ~]# mount /dev/sdc1 /c4
[root@node1 ~]# mount /dev/sdd1 /d5
[root@node1 ~]# mount /dev/sde1 /e6
[root@node1~]# mount /dev/sde1 /f7
(5)修改fstab文件,使挂载永久生效 
[root@node1 ~]# vim /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Tue May 28 01:54:11 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=0b39f183-9655-4171-8e0b-c2348e39aee2 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/cdrom  /media/cdrom iso9660 defaults 0 0

/dev/sdb1  /b3    ext4   defaults 0   0
/dev/sdc1  /c4    ext4   defaults 0   0
/dev/sdd1  /d5    ext4   defaults 0   0
/dev/sde1  /e6    ext4   defaults 0   0
/dev/sdf1  /f7    ext4   defaults 0   0
[root@node1 ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  456M     0  456M    0% /dev
tmpfs                   tmpfs     470M     0  470M    0% /dev/shm
tmpfs                   tmpfs     470M  6.7M  464M    2% /run
tmpfs                   tmpfs     470M     0  470M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        45G  1.8G   44G    4% /
/dev/sda2               xfs      1014M  178M  837M   18% /boot
/dev/sr0                iso9660   4.5G  4.5G     0  100% /media/cdrom
tmpfs                   tmpfs      94M     0   94M    0% /run/user/0
/dev/sdb1               ext4      3.9G   24K  3.7G    1% /b3
/dev/sdc1               ext4      5.8G   24K  5.5G    1% /c4
/dev/sdd1               ext4      2.9G   24K  2.8G    1% /d5
/dev/sde1               ext4      4.8G   24K  4.6G    1% /e6
/dev/sdf1               ext4      6.8G   24K  6.4G    1% /f7
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 
(6)配置yum仓库 
yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

[root@node1 yum.repos.d]# yum install centos-release-gluster


[root@node1 yum.repos.d]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=storage-gluster-9 error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
Loading mirror speeds from cached hostfile
源标识                                  源名称                                                         状态
base/7/x86_64                           CentOS-7 - Base - mirrors.aliyun.com                           0
centos-gluster9/7/x86_64                CentOS-7 - Gluster 9                                           0
epel/x86_64                             Extra Packages for Enterprise Linux 7 - x86_64                 0
extras/7/x86_64                         CentOS-7 - Extras - mirrors.aliyun.com                         0
updates/7/x86_64                        CentOS-7 - Updates - mirrors.aliyun.com                        0
repolist: 0
 [root@node5 yum.repos.d]# vim /etc/yum.repos.d/CentOS-Gluster-9.repo
 [root@node5 yum.repos.d]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                | 3.6 kB  00:00:00     
centos-gluster9                                                                     | 3.0 kB  00:00:00     
epel                                                                                | 4.3 kB  00:00:00     
extras                                                                              | 2.9 kB  00:00:00     
updates                                                                             | 2.9 kB  00:00:00     
centos-gluster9/7/x86_64/primary_db                                                 |  89 kB  00:00:00     
源标识                                 源名称                                                        状态
base/7/x86_64                          CentOS-7 - Base - mirrors.aliyun.com                          10,072
centos-gluster9/7/x86_64               CentOS-7 - Gluster 9                                             181
epel/x86_64                            Extra Packages for Enterprise Linux 7 - x86_64                13,791
extras/7/x86_64                        CentOS-7 - Extras - mirrors.aliyun.com                           526
updates/7/x86_64                       CentOS-7 - Updates - mirrors.aliyun.com                        6,173
repolist: 30,743

注意

可用软件包为0去修改/etc/yum.repos.d/CentOS-Gluster-9.repo

把这句话注释

mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=storage-gluster-9

添加一句

baseurl=阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区$contentdir/$releasever/storage/$basearch/gluster-9/

 2:在所有节点上安装gfs

[root@@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

3:在所有节点上启动GFS 

[root@@node1 ~]# systemctl start glusterd.service 
[root@@node1 ~]# systemctl enable glusterd.service 

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

[root@node1 ~]# gluster peer  probe node1
peer probe: Probe on localhost not needed
[root@node1 ~]# gluster peer  probe node2
peer probe: success
[root@node1 ~]# gluster peer  probe node3
peer probe: success
[root@node1 ~]# gluster peer  probe node4
peer probe: success
[root@node1 ~]# gluster peer  probe node5
peer probe: success
[root@node1 ~]# gluster peer  probe node6
peer probe: success

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

[root@localhost ~]# gluster peer  status
Number of Peers: 5

Hostname: node2
Uuid: 7976ea1f-4a8f-42b7-8073-70cf55ff6497
State: Peer in Cluster (Connected)

Hostname: node5
Uuid: 13157cc0-03a3-4161-a11f-5d15302050f5
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: a3482a01-c1fb-4022-8216-668c4e31d96f
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: e24bb7f1-aadb-4861-9cf2-091876f2ba24
State: Peer in Cluster (Connected)

Hostname: node6
Uuid: bbf89b40-d4ca-43ce-bc7f-20c1d0b1ea1e
State: Peer in Cluster (Connected)

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

[root@localhost ~]# gluster volume create dist-volume node1:/e6 node2:/e6 force
[root@localhost ~]# gluster volume info dist-volume
 
Volume Name: dist-volume
Type: Distribute
Volume ID: 40946bd8-cc79-406a-be3c-5c03dd2a207e
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/e6
Brick2: node2:/e6
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

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

7:创建复制卷 

[root@localhost ~]# gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force
[root@localhost ~]# gluster volume info rep-volume
 
Volume Name: rep-volume
Type: Replicate
Volume ID: b5d1afda-ab03-47a7-82b9-2786648a9b3a
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/d5
Brick2: node4:/d5
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

[root@localhost ~]# gluster volume start rep-volume

8:分散卷 

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

[root@localhost ~]# gluster volume info disp-volume

[root@localhost ~]# gluster volume start disp-volume

9:创建分布式复制卷

[root@localhost ~]# gluster volume create dist-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
[root@localhost ~]# gluster volume info dist-rep
 
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 197055f7-37d8-419f-bb22-9f05c7e1a032
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/c4
Brick2: node2:/c4
Brick3: node3:/c4
Brick4: node4:/c4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@localhost ~]# gluster volume start dist-rep

10:分布式分散卷

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

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
文件系统             容量  已用  可用 已用% 挂载点
文件系统                    1K-块    已用      可用 已用% 挂载点
devtmpfs                  1918628       0   1918628    0% /dev
tmpfs                     1930632       0   1930632    0% /dev/shm
tmpfs                     1930632   20224   1910408    2% /run
tmpfs                     1930632       0   1930632    0% /sys/fs/cgroup
/dev/mapper/centos-root 203316228 6181216 197135012    4% /
/dev/loop0                4600876 4600876         0  100% /media/cdrom
/dev/sda2                 2086912  153676   1933236    8% /boot
tmpfs                      386128       0    386128    0% /run/user/0
node1:dist-volume         12121216  172504  11408120    2% /test/dist
node1:rep-volume          5028480   71844   4728444    2% /test/rep
node1:dis-rep             8123776  116168   7636752    2% /test/dis_and_rep
node1:disp-volume     6059552   81176   5691736    2% /test/disp
node1:dis-disp        28370912  416992  26704304    2% /test/dis_and_disp

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

 

 

 

  • 20
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值