什么是GlusterFS共享存储和卷类型

时间:2020-02-23 14:40:42  来源:igfitidea点击:

我们将学习Linux中的Gluster File System:

  • 什么是GlusterFS?

  • GlusterFS支持的卷类型

  • 使用RHEL/CentOS 8安装和配置GlusterFS分布式卷

  • 使用RHEL/CentOS 8安装和配置GlusterFS复制卷

  • 使用RHEL/CentOS 8安装和配置GlusterFS分布式复制卷

什么是GlusterFS

  • Gluster是一个分布式的横向扩展文件系统,可以根据存储消耗需求快速配置其他存储。

  • 它结合了自动故障转移作为主要功能。所有这些都是在没有集中式元数据服务器的情况下完成的。

  • GlusterFS软件可以作为几个Linux发行版的预编译软件包提供,但是与大多数自由和开源软件(FOSS)项目一样,我们始终可以下载源代码,自行编译和构建它。

  • GlusterFS网络文件系统是"无元数据"分布式文件系统,这意味着它没有用于处理文件位置数据的专用元数据服务器。相反,它使用确定性哈希技术来发现文件位置

  • GlusterFS导出完全兼容POSIX的文件系统,这基本上意味着我们可以从Unix和类似Unix的操作系统(例如Linux)上装载,读取和写入GlusterFS。

  • 我们可以使用传统的NFS,Windows客户端的SMB/CIFS或者本地GlusterFS客户端访问GlusterFS存储

  • GlusterFS是一个用户空间文件系统,这意味着它不是在Linux内核中运行,而是使用FUSE模块。

GlusterFS卷的类型

可以在GlusterFS中存储数据的几种方法。
这些概念与RAID中的概念相似。
根据配置选项的不同,文件可以存储在Gluster卷中,具有或者不具有冗余级别。

分布式卷

  • 默认情况下,如果未指定分发类型,则GlusterFS将创建一个分布式卷。

  • 其中文件分布在卷中的各个块之间。因此,文件可以无冗余地存储在卷中的任何块上。

  • 这样的存储卷的目的是容易且廉价地缩放卷大小。

  • 但是,这也意味着砖块故障将导致数据完全丢失,并且必须依靠基础硬件来进行数据丢失保护。

复制卷

  • 在复制的卷设置中,文件跨卷中的所有砖块复制。因此,我们克服了分布式卷中面临的数据丢失问题

  • 此处,数据的精确副本将保留在所有模块上。

  • 卷中的副本数可以由客户端在创建卷时决定。

  • 这至少需要两个砖块才能创建具有两个副本的卷,或者至少需要三个砖块才能创建具有三个副本的卷

  • 这种卷的一个主要优点是,即使一个砖块发生故障,仍然可以从其复制的砖块访问数据。

分布式复制卷

  • 此配置中的文件跨复制的砖集存储。

  • 其中块数必须是副本数的倍数。

  • 同样,我们指定砖的顺序也很重要,因为相邻的砖成为彼此的复制品。

  • 这是用于高可用性文件存储的配置。

  • 因此,如果有八个砖块且副本数为2,则前两个砖块成为彼此的副本,然后成为接下来的两个砖块,依此类推。该体积表示为4x2.

  • 同样,如果有八个砖块且副本数为4,则四个砖块将成为彼此的副本,我们将此体积表示为2x4体积。

条带化卷和分布式条带化卷

从GlusterFS 6.0版开始,不建议使用条带功能。

条带化xlator,提供了跨块对数据进行条带化的功能。
此功能用于创建和支持大于单个砖块的文件,还可以通过将IO块分布在砖块和物理磁盘之间来提供更大的文件IO利用率。

碎片xlator现在提供了此功能

要启用剥离或者分片现有卷,我们可以启用features.shard,例如从我的CentOS 8节点启用对replicated_volume的剥离

以下是我的CentOS 8节点上的卷列表:

[root@glusterfs-1 ~]# gluster volume list
dis_rep_vol
replicated_volume

在复制的卷上启用剥离或者分片

[root@glusterfs-1 ~]# gluster volume set replicated_volume features.shard enable
volume set: success

启动卷(如果尚未启动)

[root@glusterfs-1 ~]# gluster volume start replicated_volume

检查突出显示的音量信息

[root@glusterfs-1 ~]# gluster volume info replicated_volume
Volume Name: replicated_volume
Type: Replicate
Volume ID: a9740dad-0102-4131-8a08-74f3b2ec6103
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: glusterfs-1:/bricks/brick1/rep_vol
Brick2: glusterfs-2:/bricks/brick2/rep_vol
Brick3: glusterfs-3:/bricks/brick3/rep_vol
Options Reconfigured:
features.shard: enable
performance.client-io-threads: off
nfs.disable: on
storage.fips-mode-rchecksum: on
transport.address-family: inet

Gluster文件系统术语

与DFS结合使用了几个概念和术语:

peer

  • 可信池是在GlusterFS群集中运行的服务器网络。
    每个服务器称为对等体。

  • peer命令用于管理受信任的服务器池(TSP)。

Brick

  • Brick是GlusterFS的基本存储单位。
    它被导出到受信任的池中的服务器。

  • 卷是砖的逻辑集合。

  • 在DFS中,其本地存储资源对DFS的整体存储容量有贡献的物理服务器/系统通常被称为"砖"。

  • 客户端或者主机访问集体存储在砖块上的文件系统资源,而无需知道他们正在访问一个或者多个砖块上的数据。

元数据

  • 指数据(或者文件)的所有其他特征,但实际数据本身除外。

  • 这可以包括文件大小,文件许可权,时间戳,文件名以及可用于描述文件的其他属性。

容错能力

  • 这是DFS可能提供或者可能不提供的特征或者功能。

  • 如果发生故障,它允许透明且持续地访问DFS的共享资源。

复写

  • 复制是将一个文件系统的内容复制到另一位置的过程。

  • 它用于确保一致性和容错性,并用于改善对数据的可访问性。

  • 复制可以通过以下两种方式之一进行:同步或者异步。

  • 同步复制会稍微放慢速度,因为它要求其中一台服务器上发生的某些文件操作(读取,写入等)需要在其他服务器上同时/完全执行才能被视为成功。

  • 另一方面,异步复制更适合用于慢速连接,因为文件系统操作可以在服务器上发生,并被认为是成功的,而设置中的其他服务器稍后会追赶。

其中可以使用GlusterFS?

GlusterFS本质上是分布式的,并且有很大的不同。
我们可以其中使用GlusterFS解决方案的一些解决方案

  • Kubernetes容器化

  • Proxmox群集:对于具有冗余要求的预算较低的虚拟环境,Gluster可能是一个很好的选择。

在两节点Gluster设置中,两个节点彼此同步,当一个节点不可用时,另一节点将接管。

  • 创建群集的Raspberry Pi,以创建高度可用的分布式文件系统。

  • 我们还可以将GlusterFS用作hadoop的分布式文件系统