本页目录
- 先决条件
- 准备磁盘与分区
- 配置 FQDN
- 安装 GlusterFS
- 初始化 GlusterFS 集群
- 创建 GlusterFS 卷
- 将 GlusterFS 卷挂载到客户端
- 总结
GlusterFS(即 Gluster File System)是由 RedHat 开发的免费开源分布式文件系统。GlusterFS 是一个可扩展的文件系统,由多台服务器组合成一个统一的实体文件系统,允许用户连接并挂载 GlusterFS 卷。
GlusterFS 是一个现代文件系统,能够处理 PB 级数据。同时,它易于安装和维护,也易于扩展文件系统。
在本指南中,我们将带您完成在 AlmaLinux 9 服务器上安装 GlusterFS 集群的过程。您将使用 GlusterFS 在 AlmaLinux 9 服务器上搭建高可用的文件系统存储。
先决条件
在继续之前,请确保您具备以下条件:
- 两台或更多 AlmaLinux 9 服务器 —— 本演示使用两台 AlmaLinux 服务器:srv1(IP 地址 192.168.10.41)和 srv2(IP 地址 192.168.10.42)。
- 具有 root 管理员权限的非 root 用户。
- GlusterFS 将使用一块新磁盘。
准备磁盘与分区
建议为创建 GlusterFS 集群使用独立的磁盘。这样,您的数据将始终保持安全。接下来的演示使用两台不同的服务器,每台服务器都额外挂载了磁盘 /dev/sdb。
在本节中,您将为 /dev/sdb 磁盘创建一个供 GlusterFS 使用的新分区。
执行以下命令以查看系统上可用磁盘的列表。在本例中,我们有两块磁盘 /dev/sda 和 /dev/sdb,其中 /dev/sdb 磁盘将供 GlusterFS 使用。
sudo fdisk -l

输入以下命令以在 /dev/sdb 磁盘上创建新分区。
sudo fdisk /dev/sdb
- 输入 n 以创建新分区。
- 选择分区类型 p(主分区)。
- 对于分区编号,输入 1 以创建一个分区。
- 对于分区的起始和结束扇区,保持默认并按 ENTER。
- 最后,输入 w 以保存更改。
新的分区 /dev/sdb1 将被创建。

现在运行以下命令将 /dev/sdb1 分区格式化为 ext4 文件系统。
sudo mkfs.ext4 /dev/sdb1

之后,运行以下命令创建一个新目录,该目录将用作 /dev/sdb1 的目标挂载目录。
# Run this on srv1
sudo mkdir -p /data/vol1
# Run this on srv2
sudo mkdir -p /data/vol2
接下来,运行以下命令将 /dev/sdb1 挂载到 /data/vol1 目录,然后查看已挂载的文件系统列表以及新目录 /data/vol1/brick0。
# Run this on srv1
sudo mount /dev/sdb1 /data/vol1
sudo df -h
sudo mkdir -p /data/vol1/brick0

在 srv2 服务器上重复类似的命令:
# Run this on srv2
sudo mount /dev/sdb1 /data/vol2
sudo df -h
sudo mkdir -p /data/vol2/brick0

配置 FQDN
在本节中,您将为每台用于创建 GlusterFS 集群的 AlmaLinux 服务器设置 fqdn(完全限定域名),
运行以下命令为每台服务器设置 fqdn。在本例中,srv1 的 fqdn 为 srv1.hwdomain.lan,srv2 服务器的 fqdn 为 srv2.hwdomain.lan。
sudo hostnamectl set-hostname srv1.hwdomain.lan
sudo hostnamectl set-hostname srv2.hwdomain.lan
使用以下 nano 编辑器命令打开 /etc/hosts 文件。
sudo nano /etc/hosts
插入以下配置,并确保根据您的情况修改每个 IP 地址的信息。
192.168.10.41 srv1.hwdomain.lan srv1 192.168.10.42 srv2.hwdomain.lan srv2
完成后保存并退出文件。
接下来,运行以下命令以验证每台服务器上的 fqdn,并确保 fqdn 指向正确的 IP 地址。
sudo hostname -f
ping -c3 srv1.hwdomain.lan
ping -c3 srv2.hwdomain.lan

安装 GlusterFS
现在您将为所有 AlmaLinux 服务器安装 GlusterFS 软件包,然后还需要将 GlusterFS 服务添加到 firewalld。对于基于 RHEL 的发行版,GlusterFS 软件包可在 CentOS SIG(Special Interest Group,特别兴趣小组)仓库中获取。
首先,运行以下 dnf 命令将 GlusterFS 仓库添加到您的服务器。出现提示时输入 y 并按 ENTER 确认。
sudo dnf install centos-release-gluster9

现在运行以下命令以验证系统上的仓库列表。如果成功,您应该能看到已添加的 GlusterFS 仓库。
sudo dnf repolist

接下来,运行以下 dnf 命令为每台服务器安装 GlusterFS 软件包。出现提示时,输入 y 确认并按 ENTER。
sudo dnf install glusterfs glusterfs-libs glusterfs-server

此外,再次输入 y 以添加 GlusterFS 仓库的 GPG 密钥。

GlusterFS 安装完成后,运行以下 systemctl 命令以启动并设置 glusterfsd 服务开机自启。
sudo systemctl enable glusterfsd.service
sudo systemctl start glusterfsd.service
然后验证 glusterfsd 服务,确保服务正在运行。
sudo systemctl status glusterfsd.service
如果 glusterfsd 正在运行,您应该会看到 active (running) 的输出。

现在运行以下 firewall-cmd 命令以添加 GlusterFS 端口,并重新加载 firewalld 使更改生效。
sudo firewall-cmd --add-service=glusterfs --permanent
sudo firewall-cmd --reload
使用以下命令验证 firewalld 上可用的服务列表。如果成功,您应该能在 firewalld 服务列表中看到 glusterfs 服务。
sudo firewall-cmd --list-all

初始化 GlusterFS 集群
在 GlusterFS 服务已运行且 firewalld 已配置完成后,接下来您将初始化 GlusterFS 集群。
在 srv1 上,运行以下 gluster 命令以初始化 GlusterFS 集群。请务必将 srv2.hwdomain.lan 替换为您第二台服务器的 fqdn。
sudo gluster peer probe srv2.hwdomain.lan
如果初始化成功,您应该会看到 " peer probe success " 的消息。
现在运行以下命令以查看 GlusterFS 集群状态。您应该会看到当前 GlusterFS 集群包含成员 srv2.hwdomain.lan 服务器。
sudo gluster peer status

最后,切换到 srv2.hwdomain.lan 服务器并运行以下 gluster 命令以查看 GlusterFS 集群状态。
sudo gluster peer status
如果安装成功,您应该会看到 GlusterFS 集群的成员为 srv1.hwdomain.lan 服务器。

至此,您已完成 GlusterFS 集群的安装。在下一步中,您将创建供客户端挂载的 GlusterFS 卷。
创建 GlusterFS 卷
在接下来的小节中,您将创建 GLusterFS 卷,它会在 GlusterFS 集群内的服务器之间自动复制您的数据。
运行以下命令以创建一个新的 GlusterFS 卷 testvol。输入 y 并按 ENTER 确认。
sudo gluster volume create testvol replica 2 srv1.hwdomain.lan:/data/vol1/brick0 srv2.hwdomain.lan:/data/vol2/brick0

testvol 卷创建完成后,运行以下命令启动 testvol 卷。
sudo gluster volume start testvol
现在使用以下命令验证 GlusterFS 卷状态。您应该会看到 testvol 卷包含两台 GLusterFS 服务器 srv1.hwdomain.lan 和 srv2.hwdomain.lan。
sudo gluster volume status

最后,您也可以使用以下命令获取 GlusterFS 卷的详细信息。
sudo gluster volume info

将 GlusterFS 卷挂载到客户端
创建好 GlusterFS 卷后,下一步是将该卷挂载到客户端机器。为此,您必须在客户端机器上安装 GlusterFS 客户端软件包。
在您的客户端机器上,使用以下 dnf 命令添加 GlusterFS 仓库。
sudo dnf install centos-release-gluster9
现在执行以下 dnf 命令以安装 glusterfs-client 软件包。
sudo dnf install glusterfs-client
安装好 glusterfs-client 后,您就可以挂载 GlusterFS 卷了。
使用以下命令创建一个名为 backup 的新目录。它将用作 GlusterFS 卷的目标挂载目录。
sudo mkdir -p /backup
现在运行以下命令,从服务器 srv1.hwdomain.lan 挂载 GlusterFS 卷 testvol。
sudo mount.glusterfs srv1.hwdomain.lan:/testvol /backup
通过以下 df 命令验证系统上已挂载的文件系统列表。
sudo df -h
您应该会看到来自 GlusterFS 服务器 srv1.hwdomain.lan 的卷 testvol 已挂载到目标目录 /backup。

接下来,进入 /backup 目录并创建新的测试文件,以确认读写权限。同时,您创建的新文件会自动复制到 GlusterFS 集群。
cd /backup
touch file{1..5}.md
ls

在 srv1 服务器上,运行以下命令以查看 /data/vol1/brick0 目录下可用的文件列表。
ls /data/vol1/brick0
如果数据已复制,您应该会看到先前创建的新文件。
对于 srv2 服务器,运行如下 ls 命令。如果复制成功,您应该会看到新文件同样存在于 srv2 服务器上。
ls /data/vol2/brick0

总结
干得漂亮!您已成功在 AlmaLinux 机器上安装 GlusterFS,并使用两台服务器创建了 GlusterFS 集群。您还学习了如何通过命令行创建分区、创建并管理 GlusterFS 卷,以及在客户端机器上挂载 GlusterFS 卷。
现在您可以开始在 GlusterFS 集群上存储文件,您的数据将自动复制到多台服务器。