GFS 分布式文件系统

目录

一、GlusterFS 概述 

1.1、GlusterFS 简介 

1.2、GlusterFS 的特点 

1.3、GlusterFS 术语 

1.4、模块化堆栈式架构 

二、GlusterFS 的工作原理 

2.1、GlusterFS 的工作流程 

2.2、弹性 HASH 算法 

三、GlusterFS 的卷类型 

3.1、分布式卷 

3.2、复制卷 

3.3、分布式复制卷 

 四、部署 GlusterFS 群集

 4.1、部署群集环境

1)准备环境 

2)关闭防火墙和 Selinux

3)配置 hosts 文件 

4)安装软件

5)启动 GlusterFS 

6)添加节点 

7)查看群集状态 

4.2、创建卷 

1)创建分布式卷 

2)创建复制卷 

3)创建分布式复制卷 

4.3、部署 Gluster 客户端 

1)安装客户端软件 

2)创建挂载目录 

3)修改 hosts 文件 

4)挂载 Gluster 文件系统 

5)修改 fstab 配置文件 

4.4、测试 Gluster 文件系统 

1)测试分布式卷 

2)测试复制卷 

3)测试分布式复制卷 

4.5、其他维护命令 

1)查看 GlusterFS 卷 

2)停止/删除卷 

3)设置卷的访问控制 


在企业中,一些重要的数据一般存储在硬盘上,虽然硬盘本身的性能也在不断提高,但是无论硬盘的存取速度有多快,企业所追寻的首先是可靠性,然后才是效率。如果数据面临丢失的风险,再好的硬件也无法挽回企业的损失。加之近几年云计算的出现,对存储提出了 更高的要求。而分布式存储逐渐被人们所接受,它具有更好的性能、高扩展性以及可靠性。 大部分分布式解决方案都是通过元服务器存放目录结构等元数据,元数据服务器提供了整个分布式存储的索引工作。但是一旦元数据服务器损坏,整个分布式存储业将无法工作。本章介绍一款无元数据服务器的分布式存储解决方案 GlusterFS。


一、GlusterFS 概述 

1.1、GlusterFS 简介 

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

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

GlusterFS 的设计结构

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

1.2、GlusterFS 的特点 

  • 扩展性和高性能。GlusterFS 利用双重特性来提供高容量存储解决方案。
  1. Scale-Out 架构通过增加存储节点的方式来提高存储容量和性能(磁盘、计算和 I/O 资源都可以独立增加),支持 10GbE 和 InfiniBand 等高速网络互联。
  2. Gluster 弹性哈希(Elastic Hash)解决了 GlusterFS 对元数据服务器的依赖, GlusterFS 采用弹性哈希算法在存储池中定位数据,放弃了传统的通过元数据服务器定位数据。GlusterFS 中可以智能地定位任意数据分片(将数据分片存储在不同节点上),不需要查看索引或者向元数据服务器查询。这种设计机制实现了存储的横向扩展, 改善了单点故障及性能瓶颈,真正实现了并行化数据访问。 
  • 高可用性。GlusterFS 通过配置某些类型的存储卷,可以对文件进行自动复制(类似于 RAID1),即使某个节点出现故障,也不影响数据的访问。当数据出现不一致时, 自动修复功能能够把数据恢复到正确的状态,数据的修复是以增量的方式在后台执行, 不会占用太多系统资源。GlusterFS 可以支持所有的存储,因为它没有设计自己的私有数据文件格式,而是采用操作系统中标准的磁盘文件系统(如 EXT3、XFS 等)来存储文件,数据可以使用传统访问磁盘的方式被访问。 
  • 全局统一命名空间。全局统一命名空间将所有的存储资源聚集成一个单一的虚拟存储池,对用户和应用屏蔽了物理存储信息。存储资源(类似于 LVM)可以根据生产环境中的需要进行弹性扩展或收缩。在多节点场景中,全局统一命名空间还可以基于不 同节点做负载均衡,大大提高了存取效率。
  • 弹性卷管理。GlusterFS 通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分。逻辑存储池可以在线进行增加和移除,不会导致业务中断。逻辑卷可以根据需求在线增长和缩减,并可以在多个节点中实现负载均衡。文件系统配置也可以实时在线进行更改并应用,从而可以适应工作负载条件变化或在线性能调优。
  • 基于标准协议。Gluster 存储服务支持 NFS、CIFS、HTTP、FTP、SMB 及 Gluster 原生协议,完全与 POSIX 标准兼容。现有应用程序不需要做任何修改就可以对 Gluster 中的数据进行访问,也可以使用专用 API 进行访问(效率更高),这在公有云环境中部署 Gluster 时非常有用,Gluster 对云服务提供商专用 API 进行抽象,然后提供标准 POSIX 接口。

1.3、GlusterFS 术语 

  • Brick(存储块):指可信主机池中由主机提供的用于物理存储的专用分区,是 GlusterFS 中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。 存储目录的格式由服务器和目录的绝对路径构成,表示方法为 SERVER:EXPORT, 如 192.168.1.4:/ data/mydir/。
  • Volume(逻辑卷):一个逻辑卷是一组 Brick 的集合。卷是数据存储的逻辑设备,类似于 LVM 中的逻辑卷。大部分 Gluster 管理操作是在卷上进行的。 
  • FUSE(Filesystem inUserspace):是一个内核模块,允许用户创建自己的文件系统, 无须修改内核代码。
  • VFS:内核空间对用户空间提供的访问磁盘的接口。
  • Glusterd(后台管理进程):在存储群集中的每个节点上都要运行。

1.4、模块化堆栈式架构 

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

 GlusterFS 机构细化图

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

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

二、GlusterFS 的工作原理 

2.1、GlusterFS 的工作流程 

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

 

GlusterFS 数据访问流程

GlusterFS 的工作流程如下:

  1. 客户端或应用程序通过 GlusterFS 的挂载点访问数据;
  2. Linux 系统内核通过 VFS API 收到请求并处理;
  3. VFS 将数据递交给 FUSE 内核文件系统,并向系统注册一个实际的文件系统 FUSE, 而 FUSE 文件系统则是将数据通过/dev/fuse 设备文件递交给了 GlusterFS client 端。可以将 FUSE 文件系统理解为一个代理; 
  4. GlusterFS client 收到数据后,client 根据配置文件对数据进行处理。
  5. 经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFS Server, 并且将数据写入服务器存储设备。

2.2、弹性 HASH 算法 

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

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

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

HASH 分布图

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

通过 HASH 定位文件

三、GlusterFS 的卷类型 

GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、 条带复制卷和分布式条带复制卷,这七种卷可以满足不同应用对高性能、高可用的需求。 

带有条带的卷已不再使用,这里介绍分布式卷,复制卷、分布式复制卷

  • 分布式卷(Distribute volume):文件通过 HASH 算法分布到所有 Brick Server 上, 这种卷是 Glusterf 的基础;以文件为单位根据 HASH 算法散列到不同的 Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的 RAID 0, 不具有容错能力。
  • 复制卷(Replica volume):将文件同步到多个 Brick 上,使其具备多个文件副本, 属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。
  • 分布式复制卷(Distribute Replica volume):Brick Server 数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。 

下面介绍几种重要的卷类型。 

3.1、分布式卷 

分布式卷是 GlusterFS 的默认卷,在创建卷时,默认选项是创建分布式卷。在该模式下,并没有对文件进行分块处理,文件直接存储在某个 Server 节点上。直接使用本地文件系统进行文件存储,大部分 Linux 命令和工具可以继续正常使用。需要通过扩展文件属性保存 HASH 值,目前支持的底层文件系统有 EXT3、EXT4、ZFS、XFS 等。 

由于使用的是本地文件系统,所以存取效率并没有提高,反而会因为网络通信的原因而有所降低;另外支持超大型文件也会有一定的难度,因为分布式卷不会对文件进行分块处理。 虽然 EXT4 已经可以支持最大 16TB 的单个文件,但是本地存储设备的容量实在有限。如下图所示,File1 和 File2 存放在 Server1,而 File3 存放在 Server2,文件都是随机存储,一 个文件(如 File1)要么在 Server1 上,要么在 Server2 上,不能分块同时存放在 Server1 和 Server2 上。

 分布式卷原理

分布式卷具有如下特点:

  • 文件分布在不同的服务器,不具备冗余性。
  • 更容易且廉价地扩展卷的大小。
  • 存在单点故障会造成数据丢失。
  • 依赖底层的数据保护。 

创建分布式卷的命令如下所示:

# gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3 

Creation of dis -volume has been successful

Please start the volume to acces

上述命令创建了一个名为 dis-volume 的分布式卷,文件将根据 HASH 分布在 server1:/dir1、server2:/dir2 和 server3:/dir3 中。 

3.2、复制卷 

复制模式,也称为 AFR(AutoFile Replication),相当于 RAID1,即同一文件保存一份或多份副本,每个节点上保存相同的内容和目录结构。复制模式因为要保存副本,所以磁盘利用率较低。如果多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量。在配置复制卷时,复制数必须等于卷中 Brick 所包含的存储服务器数,复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。 

将数据文件分布到不同的 Brick节点,如下图所示。File1 同时存在 Server1 和 Server2, File2 也是如此,相当于 Server2 中的文件是 Server1 中文件的副本。

 复制卷原理

复制卷具有如下特点。

  • 卷中所有的服务器均保存一个完整的副本。
  • 卷的副本数量可由客户创建的时候决定。
  • 至少有两个块服务器或更多服务器。
  • 具备冗余性。 

创建复制卷的命令如下所示:

# gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2 

Creation of rep-volume has been successful

Please start the volume to acce

上述命令创建了一个名为 rep-volume 的复制卷,文件将同时存储两个副本,分别在 Server1:/dir1 和 Server2:/dir2 两个 Brick 中。 

3.3、分布式复制卷 

 分布式复制卷兼顾分布式卷和复制卷的功能,主要用于需要冗余的情况下。下图呈现了分布式复制卷原理。File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。 在存放 File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是 Server1 中的 exp1 目录和 Server2 中的 exp2 目录。在存放 File2 时,File2 根据复制卷的特性,也将存在两个相同的副本,分别是 Server3 中的 exp3 目录和 Server4 中的 exp4 目录。

 

 分布式复制卷原理

创建分布式复制卷的命令如下所示:

# gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2: /dir2 server3:/dir3 server4:/dir4 

Creation of dis-rep has been successful

Please start the volume to acce

上述命令创建了一个名为 dis-rep 的分布式复制卷,配置分布式复制卷时,卷中 Brick 所包含的存储服务器数必须是条带数的倍数(≥2 倍)。在上述命令中,Brick 的数量是 4 (Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),复制数为 2(replica 2)。

假如存在 8 台存储服务器,当复制副本为 2 时,按照服务器列表的顺序,服务器 1 和 2 作为一个复制, 服务器 3 和 4 作为一个复制, 服务器 5 和 6 作为一个复制, 服务器7 和 8 作为一个复制;当复制副本为 4 时,按照服务器列表的顺序,服务器 1/2/3/4 作 为一个复制, 服务器 5/6/7/8 作为一个复制。


 四、部署 GlusterFS 群集

 4.1、部署群集环境

本案例需要准备五台虚拟机,分别根据下表配置分区,关闭防火墙和 Selinux。

实验环境如下图所示:

 实验拓扑图

本实验中,服务器的相关信息如下:

操作系统系统 IP主机名挂载磁盘挂载目录
CentOS 7.6192.168.23.211node1

/dev/sdb

/dev/sdc

/dev/sdd

/dir

/rep

/dir-rep

CentOS 7.6192.168.23.212node2

/dev/sdb

/dev/sdc

/dev/sdd

/dir

/rep

/dir-rep

CentOS 7.6192.168.23.213node3

/dev/sdb

/dev/sdc

/dev/sdd

/dir

/rep

/dir-rep

CentOS 7.6192.168.23.214node4

/dev/sdb

/dev/sdc

/dev/sdd

/dir

/rep

/dir-rep

 服务器的相关信息(1)

卷名称卷类型Brick
dis-volume分布式卷node1(/dir),node2(/dir)
rep-volume复制卷node1(/rep),node2(/rep)

dis-rep

分布式复制卷node1(/dir-rep),node2(/dir-rep),node3(/dir-rep),node4(/dir-rep)

下面是部署群集的步骤。 

1)准备环境 

在所有节点上执行以下操作。

开启 4 台虚拟机,每台虚拟机添加 3 块 20G 磁盘,先使用 fdisk 命令创建分区,再使用 mkfs 命 令对分区进行格式化,创建相应的挂载目录,并将格式化的磁盘挂载到相应的目录中,最后修改/etc/fstab 配置文件,使其永久生效。此处在 node1 上面演示。 

 

[root@node1 ~]# fdisk /dev/sdb
[root@node1 ~]# fdisk /dev/sdc
[root@node1 ~]# fdisk /dev/sdd
[root@node1 ~]# mkfs.xfs /dev/sdb1
[root@node1 ~]# mkfs.xfs /dev/sdc1
[root@node1 ~]# mkfs.xfs /dev/sdd1
[root@node1 ~]# mkdir /dir
[root@node1 ~]# mkdir /rep
[root@node1 ~]# mkdir /dir-rep
[root@node1 ~]# mount /dev/sdb1 /dir
[root@node1 ~]# mount /dev/sdc1 /rep
[root@node1 ~]# mount /dev/sdd1 /dir-rep
[root@node1 ~]# vim /etc/fstab
......//省略部分内容
/dev/sdb1 /dir xfs defaults 0 0
/dev/sdc1 /rep xfs defaults 0 0
/dev/sdd1 /dir-rep xfs defaults 0 0

2)关闭防火墙和 Selinux

在所有节点上操作,此步骤略。

3)配置 hosts 文件 

在所有节点上操作 

在所有节点上修改/etc/hosts 文件,添加 4 个节点的解析。下面以 node1 为例进行操作演示。 

[root@node1 ~]# vim /etc/hosts
......//省略部分内容
192.168.23.211 node1
192.168.23.212 node2
192.168.23.213 node3
192.168.23.214 node4

4)安装软件

在所有节点上操作 

本实验采用官方 YUM 源安装所需要软件,具体安装方法如下。 

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

5)启动 GlusterFS 

在所有节点上执行以下操作,下面以 node1 为例进行操作

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

6)添加节点 

只在 node1 上执行以下操作,添加 node1~node4 节点。

[root@node1 ~]# gluster peer probe node1
peer probe: Probe on localhost not needed  //node1 也可以不添加
[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

7)查看群集状态 

通过以下命令在每个节点上查看群集状态,正常情况下每个节点的输出结果均为“State: Peer in Cluster(Connected)”。如果显示 Disconnected,请检查 hosts 文件配置。 

[root@node1 ~]# gluster peer status
Number of Peers: 3

Hostname: node2
Uuid: 05cfb0c5-34bb-4dc8-af7c-5d93c95f0e78
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: 86841098-2ed5-4a69-8cdb-dd21b8a60b2a
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: 7512d57a-db59-474f-81d2-a3d38f2f6b34
State: Peer in Cluster (Connected)

4.2、创建卷 

在部署 gluster 分布式文件系统时,要根据生产环境的需求,创建合适于公司业务的券, 以下是几种创建卷的方式。 

1)创建分布式卷 

创建分布式卷的命令如下: 

[root@node1 ~]# gluster volume create dis-volume node1:/dir node2:/dir force  //创建分布式卷
volume create: dis-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume info dis-volume  //查看刚刚创建的名为 dis-volume 的分布式卷
 
Volume Name: dis-volume
Type: Distribute
Volume ID: d48f8766-64ba-4860-b40f-38474b5427a2
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/dir
Brick2: node2:/dir
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start  dis-volume  //开启卷
volume start: dis-volume: success

上述命令中,没有指定类型,默认创建的是分布式卷。 

2)创建复制卷 

创建复制卷的命令如下: 

[root@node1 ~]# gluster volume create rep-volume replica 2 node1:/rep node2:/rep force
volume create: rep-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume info rep-volume
 
Volume Name: rep-volume
Type: Replicate
Volume ID: 5f19e53a-26a6-4fe0-bf32-27c55aa0a9a1
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/rep
Brick2: node2:/rep
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start  rep-volume
volume start: rep-volume: success

上述命令中,指定类型为 replica,数值为 2,而且后面跟了 2 个 Brick Server,所以创建的是复制卷。 

3)创建分布式复制卷 

 创建分布式复制卷的命令如下:

[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/dir-rep node2:/dir-rep node3:/dir-rep node4:/dir-rep force
volume create: dis-rep: success: please start the volume to access data
[root@node1 ~]# gluster volume info dis-rep
 
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 9aad736a-31bb-43d8-a1fe-4a90b5325410
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/dir-rep
Brick2: node2:/dir-rep
Brick3: node3:/dir-rep
Brick4: node4:/dir-rep
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
[root@node1 ~]# gluster volume start dis-rep
volume start: dis-rep: success

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

4.3、部署 Gluster 客户端 

在部署完分布式文件系统后,需要对挂载的服务器安装客户端软件,并创建挂载目录, 将分布式文件系统挂载到刚创建目录即可。最后将挂载命令添加自启 fstab 文件中,当服务器重启时,不需要手动挂载。 

1)安装客户端软件 

下面是安装客户端软件的命令。 

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

2)创建挂载目录 

 下面是创建挂载目录的命令。

[root@client ~]# mkdir /dir 
[root@client ~]# mkdir /rep
[root@client ~]# mkdir /dir-rep

3)修改 hosts 文件 

下面是修改 hosts 文件的命令。

[root@client ~]# vim /etc/hosts
......//省略部分内容
192.168.23.211 node1
192.168.23.212 node2
192.168.23.213 node3
192.168.23.214 node4

4)挂载 Gluster 文件系统 

下面是挂载 Gluster 文件系统的命令。

[root@client ~]# mount -t glusterfs node1:dis-volume /dir
[root@client ~]# mount -t glusterfs node1:rep-volume /rep
[root@client ~]# mount -t glusterfs node1:dis-rep /dir-rep
[root@client ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 979M     0  979M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M  9.5M  981M    1% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root   28G  1.9G   27G    7% /
/dev/sda1               1014M  139M  876M   14% /boot
tmpfs                    199M     0  199M    0% /run/user/0
node1:dis-volume          40G  475M   40G    2% /dir
node1:rep-volume          20G  238M   20G    2% /rep
node1:dis-rep          40G  475M   40G    2% /dir-rep

5)修改 fstab 配置文件 

下面是修改 fstab 配置文件的命令。

[root@client ~]# vim /etc/fstab 
......//省略部分内容
node1:/dis-volume /dir glusterfs defaults,_netdev 0 0
node1:/rep-volume /rep glusterfs defaults,_netdev 0 0
node1:/dis-rep /dir-rep glusterfs defaults,_netdev 0 0

4.4、测试 Gluster 文件系统 

1)测试分布式卷 

在客户端的 /dir 目录下创建文件 

[root@client ~]# cd /dir
[root@client dir]# touch {1..10}.txt
[root@client dir]# ls
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt

在 node1 和 node2 的 /dir 目录下查看

[root@node1 ~]# ls /dir
4.txt  8.txt  9.txt


[root@node2 ~]# ls /dir
10.txt  1.txt  2.txt  3.txt  5.txt  6.txt  7.txt

可以看到。文件被分布式存放在 node1 跟 node2 上面 

2)测试复制卷 

 在客户端的 /rep 目录下创建文件 

[root@client ~]# cd /rep
[root@client rep]# touch {11..20}.txt
[root@client rep]# ls
11.txt  12.txt  13.txt  14.txt  15.txt  16.txt  17.txt  18.txt  19.txt  20.txt

在 node1 和 node2 的 /rep 目录下查看  

[root@node1 ~]# ls /rep
11.txt  12.txt  13.txt  14.txt  15.txt  16.txt  17.txt  18.txt  19.txt  20.txt


[root@node2 ~]# ls /rep
11.txt  12.txt  13.txt  14.txt  15.txt  16.txt  17.txt  18.txt  19.txt  20.txt

3)测试分布式复制卷 

 在客户端的 /dir-rep 目录下创建文件 

[root@client ~]# cd /dir-rep
[root@client dir-rep]# touch {21..30}.txt
[root@client dir-rep]# ls
21.txt  22.txt  23.txt  24.txt  25.txt  26.txt  27.txt  28.txt  29.txt  30.txt

 在 node1、node2、node3、node4 的 /dir-rep 目录下查看 

[root@node1 ~]# ls /dir-rep/
23.txt  26.txt  27.txt  28.txt  29.txt


[root@node2 ~]# ls /dir-rep
23.txt  26.txt  27.txt  28.txt  29.txt


[root@node3 ~]# ls /dir-rep
21.txt  22.txt  24.txt  25.txt  30.txt


[root@node4 ~]# ls /dir-rep
21.txt  22.txt  24.txt  25.txt  30.txt

4.5、其他维护命令 

在完成以上所有操作后,需要跟据生产环境需要,后续可能对其分布式文件系统各项参数的调整和配置,比如下面所提到的查看 GlusterFS 的命令,停止、删除券及文件系统访问控制等等。 

1)查看 GlusterFS 卷 

下面是查看 GlusterFS 的命令。 

[root@node1 ~]# gluster volume list  //查看卷的列表
dis-rep
dis-volume
rep-volume
[root@node1 ~]# gluster volume info  //查看所有卷的信息
 
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 9aad736a-31bb-43d8-a1fe-4a90b5325410
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/dir-rep
Brick2: node2:/dir-rep
Brick3: node3:/dir-rep
Brick4: node4:/dir-rep
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
 
Volume Name: dis-volume
Type: Distribute
Volume ID: d48f8766-64ba-4860-b40f-38474b5427a2
Status: Started
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/dir
Brick2: node2:/dir
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
 
Volume Name: rep-volume
Type: Replicate
Volume ID: 5f19e53a-26a6-4fe0-bf32-27c55aa0a9a1
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/rep
Brick2: node2:/rep
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

[root@node1 ~]# gluster volume status  //查看卷的状态
Status of volume: dis-rep
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/dir-rep                        49154     0          Y       1938 
Brick node2:/dir-rep                        49154     0          Y       1814 
Brick node3:/dir-rep                        49152     0          Y       1744 
Brick node4:/dir-rep                        49152     0          Y       1742 
Self-heal Daemon on localhost               N/A       N/A        Y       1825 
Self-heal Daemon on node4                   N/A       N/A        Y       1689 
Self-heal Daemon on node2                   N/A       N/A        Y       1729 
Self-heal Daemon on node3                   N/A       N/A        Y       1692 
 
Task Status of Volume dis-rep
------------------------------------------------------------------------------
There are no active volume tasks
 
Status of volume: dis-volume
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick node1:/dir                            49152     0          Y       1773 
Brick node2:/dir                            49152     0          Y       1684 
 
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 node1:/rep                            49153     0          Y       1808 
Brick node2:/rep                            49153     0          Y       1712 
Self-heal Daemon on localhost               N/A       N/A        Y       1825 
Self-heal Daemon on node4                   N/A       N/A        Y       1689 
Self-heal Daemon on node3                   N/A       N/A        Y       1692 
Self-heal Daemon on node2                   N/A       N/A        Y       1729 
 
Task Status of Volume rep-volume
------------------------------------------------------------------------------
There are no active volume tasks

2)停止/删除卷 

下面是停止/删除卷的命令。 

[root@node1 ~]# gluster volume stop dis-volume  //停止一个卷
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: dis-volume: success
[root@node1 ~]# gluster volume delete dis-volume  //删除一个卷

3)设置卷的访问控制 

下面设置只允许 192.168.23.0 和 10.1.1.0 网段的客户端访问。

[root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.23.*,10.1.1.*
volume set: success


[root@node1 ~]# gluster volume info dis-rep
 
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 9aad736a-31bb-43d8-a1fe-4a90b5325410
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/dir-rep
Brick2: node2:/dir-rep
Brick3: node3:/dir-rep
Brick4: node4:/dir-rep
Options Reconfigured:
auth.allow: 192.168.23.*,10.1.1.*
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值