本教程适用于以下操作系统版本
- Debian 12 (Bookworm)
- Debian 8 (Jessie)
- Debian 7 (Wheezy)
- Debian 6 (Squeeze)
- Debian 5 (Lenny)
本页内容
- 准备工作
- 使用 Parted 进行磁盘分区
- 安装 GlusterFS 服务端
- 初始化 GlusterFS 集群
- 创建 GlusterFS 卷
- 挂载 GlusterFS 卷
- 配置 GlusterFS 卷自动挂载
- 总结
GlusterFS(即 Gluster File System)是由 RedHat 开发的自由开源分布式文件系统。GlusterFS 是一种可扩展的文件系统,由多台服务器组合成统一的实体文件系统,允许用户连接并挂载 GlusterFS 卷。
GlusterFS 是一种现代化文件系统,能够处理 PB 级数据。此外,它易于安装和维护,也便于进行横向扩展。
在下文中,我将带你完成在 Debian 12 服务器上安装 GlusterFS 的过程。我们将使用多台 Debian 服务器,借助 GlusterFS 创建一个高可用、带副本的存储系统。你还将学习如何将 GlusterFS 挂载到 Debian 客户端机器,并通过 /etc/fstab 文件配置 GlusterFS 卷的自动挂载。
准备工作
在继续本指南之前,请确认你已具备以下条件:
- 多台 Debian 12 服务器——本示例使用 3 台 Debian 服务器来创建 GlusterFS 集群。
- 具有管理员权限的非 root 用户。
- 一台 Debian 客户端机器。
使用 Parted 进行磁盘分区
在开始之前,你需要在每台服务器上创建一个供 GlusterFS 使用的新分区。本示例中,你将使用 Parted 分区管理器从 /dev/sdb 磁盘创建一个分区。
使用以下 apt 命令在 Debian 服务器上安装 parted。
sudo apt install parted -y

执行以下 parted 命令,开始对 /dev/sdb 磁盘进行分区。
sudo parted /dev/sdb
执行 parted 命令后,你将进入 parted 交互环境。
运行以下命令,为 /dev/sdb 磁盘创建新的 msdos 分区表。
mklabel msdos
现在运行以下命令,创建一个格式为 ext4、大小为 5 GB 的新主分区 /dev/sdb1。
mkpart primary ext4 1MB 5369MB
分区创建完成后,输入 quit 退出 Parted。
接下来,运行以下命令将 /dev/sdb1 分区格式化为 ext4。
sudo mkfs -t ext4 /dev/sdb1
/dev/sdb1 格式化完成后,将显示如下输出:

现在运行以下命令,创建一个新的目标挂载目录 /gluster,然后将 /dev/sdb1 分区挂载到 /gluster 目录。
mkdir -p /gluster
sudo mount /dev/sdb1 /gluster
最后,创建一个新目录 /gluster/brick0,它将作为每台 GlusterFS 服务器的数据目录。
sudo mkdir -p /gluster/brick0
安装 GlusterFS 服务端
在每台服务器上完成磁盘分区后,你需要添加 GlusterFS 软件仓库,并在每台服务器上安装 glusterfs-server 软件包。
执行以下命令,添加 GlusterFS 软件仓库的 GPG 密钥。
curl https://download.gluster.org/pub/gluster/glusterfs/11/rsa.pub | gpg --dearmor > /usr/share/keyrings/glusterfs-archive-keyring.gpg
然后,运行以下命令将 GlusterFS 软件仓库添加到你的 Debian 服务器。
DEBID=$(grep 'VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '"')
DEBVER=$(grep 'VERSION=' /etc/os-release | grep -Eo '[a-z]+')
DEBARCH=$(dpkg --print-architecture)
echo "deb [signed-by=/usr/share/keyrings/glusterfs-archive-keyring.gpg] https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/${DEBID}/${DEBARCH}/apt ${DEBVER} main" | sudo tee /etc/apt/sources.list.d/gluster.list

添加 GlusterFS 软件仓库和 GPG 密钥后,执行以下 apt 命令更新并刷新你的 Debian 软件包索引。
sudo apt update

然后执行以下 apt install 命令安装 glusterfs-server 软件包。
sudo apt install glusterfs-server
输入 y 以继续安装。

glusterfs-server 安装完成后,运行以下 systemctl 命令启动并启用 glusterd 服务。
sudo systemctl start glusterd
sudo systemctl enable glusterd
最后,验证 glusterd 服务,确保其已运行并已设置为开机自启。
sudo systemctl status glusterd
以下输出表明 glusterd 服务已运行并已启用。

初始化 GlusterFS 集群
glusterfs-server 软件包安装完成后,下一步是初始化 GlusterFS 集群。本示例中,你将先从 server1 初始化 GlusterFS 集群,然后将 server2 和 server3 都加入集群。
在 server1 的终端上,执行以下 gluster 命令,以 server2(IP 地址 192.168.10.21)和 server3(IP 地址 192.168.10.22)为成员初始化 GlusterFS 集群。
sudo gluster peer probe 192.168.10.21
sudo gluster peer probe 192.168.10.22
如果初始化成功,将显示输出信息「peer probe: success」。

现在切换到 server2 或 server3,运行以下 gluster 命令验证 GlusterFS 集群状态。
sudo gluster peer status
如果一切顺利,你的 GlusterFS 集群中将有两个对等节点可用。

在 server2 上——你应该能看到 server1 和 server3。

在 server3 上,你应该能看到 server1 和 server2。

最后,你也可以运行以下 gluster 命令,验证 GlusterFS 集群中可用的对等节点列表。
sudo gluster pool list
以下输出显示 GlusterFS 集群包含三台不同的服务器。

创建 GlusterFS 卷
至此,你已初始化 GlusterFS 集群。要让 GlusterFS 对客户端可用,你必须在 GlusterFS 集群上创建卷。
执行以下命令,创建一个名为 volume1 的新卷,包含 3 个副本,分别为 server1、server2 和 server3。
sudo gluster volume create volume1 replica 3 192.168.10.20:/gluster/brick0 192.168.10.21:/gluster/brick0 192.168.10.22:/gluster/brick0
volume1 卷创建完成后,使用以下 gluster 命令启动它。
sudo gluster volume start volume1
输出「volume start: volume1: success」表示 volume1 已启动。

现在运行以下命令,查看 GlusterFS 集群上可用的卷列表。
sudo gluster volume info
以下输出显示 volume1 已创建,类型为 Replicate,包含 3 台服务器,即 server1、server2 和 server3。

挂载 GlusterFS 卷
在下文中,你将把已创建的 GlusterFS 卷 volume1 挂载到一台 Debian 客户端机器。为此,你需要在 Debian 客户端机器上添加 GlusterFS 软件仓库并安装 glusterfs-client 软件包。
将 GlusterFS 软件仓库的 GPG 密钥下载到你的 Debian 客户端机器。
curl https://download.gluster.org/pub/gluster/glusterfs/11/rsa.pub | gpg --dearmor > /usr/share/keyrings/glusterfs-archive-keyring.gpg
在客户端上执行以下命令,添加 GlusterFS 软件仓库。
DEBID=$(grep 'VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '"')
DEBVER=$(grep 'VERSION=' /etc/os-release | grep -Eo '[a-z]+')
DEBARCH=$(dpkg --print-architecture)
echo "deb [signed-by=/usr/share/keyrings/glusterfs-archive-keyring.gpg] https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/${DEBID}/${DEBARCH}/apt ${DEBVER} main" | sudo tee /etc/apt/sources.list.d/gluster.list
现在刷新 Debian 客户端软件仓库,并通过以下 apt 命令安装 glusterfs-client 软件包。
sudo apt update
sudo apt install glusterfs-client
输入 y 以继续安装。glusterfs-client 安装完成后,你现在可以将 GlusterFS 卷挂载到 Debian 客户端机器。

接下来,执行以下命令创建一个新的目标挂载目录 /mnt/data。
mkdir -p /mnt/data
然后,运行以下命令将 volume1 挂载到 /mnt/data 目录。你可以将 GlusterFS 服务器 IP 地址替换为 server1、server2 或 server3 的地址。
sudo mount.glusterfs 192.168.10.20:/volume1 /mnt/data
volume1 挂载完成后,使用以下命令进行验证。
sudo df -h
如果一切顺利,你应该能看到 volume1 已挂载到 /mnt/data 目录。

GlusterFS 卷挂载完成后,你将验证目标挂载目录的写入权限,并验证数据从客户端机器到 GlusterFS 集群各服务器的复制情况。
接下来,切换到 /mnt/data 目录,使用以下命令创建新文件。这将在该目录中创建多个文件,并确认该卷可写入。
cd /mnt/data
touch file{1..15}.md
使用以下 ls 命令查看可用文件列表。
ls -ah

现在切换到 GlusterFS 服务器 server1、server2 或 server3,运行以下 ls 命令查看可用文件列表。
ls /gluster/brick0
当复制功能正常工作时,你应该能在所有这些 GlusterFS 服务器上看到由 Debian 客户端机器创建的文件。
以下数据已复制到 server1。

以下数据已复制到 server2。

以下数据已复制到 server3。

配置 GlusterFS 卷自动挂载
在下文中,你将学习如何通过 /etc/fstab 文件配置 GlusterFS 卷的自动挂载。这样可以在系统启动时自动挂载 GlusterFS 卷。
使用以下 nano 编辑器命令打开 /etc/fstab 文件。
sudo nano /etc/fstab
插入以下配置,将 volume1 挂载到目标目录 /mnt/data。
192.168.10.20:/volume1 /mnt/data glusterfs defaults,_netdev 0 0
完成后保存并退出文件。
现在运行以下命令重新加载 systemd 管理器并验证 /etc/fstab 配置。若没有任何输出信息,则表明你的 /etc/fstab 配置正确。
sudo systemctl daemon-reload
sudo mount -a
总结
干得漂亮!你已成功在 Debian 12 服务器上安装 GlusterFS,并创建了包含 3 台服务器的 GlusterFS 集群。你还将 GlusterFS 卷创建并挂载到了 Debian 客户端机器,并通过 /etc/fstab 文件配置了 GlusterFS 卷的自动挂载。