本教程适用于以下操作系统版本

  • 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

在 Debian 12 上搭建三节点 GlusterFS 集群

执行以下 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 格式化完成后,将显示如下输出:

在 Debian 12 上搭建三节点 GlusterFS 集群

现在运行以下命令,创建一个新的目标挂载目录 /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

在 Debian 12 上搭建三节点 GlusterFS 集群

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

sudo apt update

在 Debian 12 上搭建三节点 GlusterFS 集群

然后执行以下 apt install 命令安装 glusterfs-server 软件包。

sudo apt install glusterfs-server

输入 y 以继续安装。

在 Debian 12 上搭建三节点 GlusterFS 集群

glusterfs-server 安装完成后,运行以下 systemctl 命令启动并启用 glusterd 服务。

sudo systemctl start glusterd
sudo systemctl enable glusterd

最后,验证 glusterd 服务,确保其已运行并已设置为开机自启。

sudo systemctl status glusterd

以下输出表明 glusterd 服务已运行并已启用。

在 Debian 12 上搭建三节点 GlusterFS 集群

初始化 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」。

在 Debian 12 上搭建三节点 GlusterFS 集群

现在切换到 server2 或 server3,运行以下 gluster 命令验证 GlusterFS 集群状态。

sudo gluster peer status

如果一切顺利,你的 GlusterFS 集群中将有两个对等节点可用。

在 Debian 12 上搭建三节点 GlusterFS 集群

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

在 Debian 12 上搭建三节点 GlusterFS 集群

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

在 Debian 12 上搭建三节点 GlusterFS 集群

最后,你也可以运行以下 gluster 命令,验证 GlusterFS 集群中可用的对等节点列表。

sudo gluster pool list

以下输出显示 GlusterFS 集群包含三台不同的服务器。

在 Debian 12 上搭建三节点 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 已启动。

在 Debian 12 上搭建三节点 GlusterFS 集群

现在运行以下命令,查看 GlusterFS 集群上可用的卷列表。

sudo gluster volume info

以下输出显示 volume1 已创建,类型为 Replicate,包含 3 台服务器,即 server1、server2 和 server3。

在 Debian 12 上搭建三节点 GlusterFS 集群

挂载 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 客户端机器。

在 Debian 12 上搭建三节点 GlusterFS 集群

接下来,执行以下命令创建一个新的目标挂载目录 /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 目录。

在 Debian 12 上搭建三节点 GlusterFS 集群

GlusterFS 卷挂载完成后,你将验证目标挂载目录的写入权限,并验证数据从客户端机器到 GlusterFS 集群各服务器的复制情况。

接下来,切换到 /mnt/data 目录,使用以下命令创建新文件。这将在该目录中创建多个文件,并确认该卷可写入。

cd /mnt/data
touch file{1..15}.md

使用以下 ls 命令查看可用文件列表。

ls -ah

在 Debian 12 上搭建三节点 GlusterFS 集群

现在切换到 GlusterFS 服务器 server1、server2 或 server3,运行以下 ls 命令查看可用文件列表。

ls /gluster/brick0

当复制功能正常工作时,你应该能在所有这些 GlusterFS 服务器上看到由 Debian 客户端机器创建的文件。

以下数据已复制到 server1。

在 Debian 12 上搭建三节点 GlusterFS 集群

以下数据已复制到 server2。

在 Debian 12 上搭建三节点 GlusterFS 集群

以下数据已复制到 server3。

在 Debian 12 上搭建三节点 GlusterFS 集群

配置 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 卷的自动挂载。