抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

GlusterFS 是一个分布式文件系统,可以通过GlusterFS NFS-Ganesha 服务提供 NFS 访问。它支持横向扩展和高可用性。本文将搭建 GlusterFS 集群,用于向 K8s 集群提供 NFS 文件存储服务。

一、安装服务端

在每台服务器执行命令安装

1
2
3
sudo apt install glusterfs-server -y
sudo systemctl start glusterd
sudo systemctl enable glusterd

二、配置集群

选择一台作为主节点,本文我选择 192.168.100.100 作为主节点,执行以下命令添加其他两台服务器

1
2
3
4
5
sudo gluster peer probe 192.168.100.101
sudo gluster peer probe 192.168.100.102

# 查看状态
sudo gluster peer status

三、创建存储卷

1. 在每台服务器上创建目录

1
2
3
# 目录可自行替换成你需要保存的位置
export GDIR=/home/$USER/gdir
mkdir -p $GDIR

2. 在主节点上创建存储卷

1
2
3
4
5
sudo gluster volume create myvolume replica 3 192.168.100.100:$GDIR 192.168.100.101:$GDIR 192.168.100.102:$GDIR force
# 看到提示说明成功
# volume create: myvolume: success: please start the volume to access data

# 也可用 replica 2 但服务器要4台,因为须倍数,可用实现空间的扩容

3. 启动存储卷

1
2
sudo gluster volume start myvolume
# volume start: myvolume: success

4. 检查存储卷状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ sudo gluster volume info

Volume Name: myvolume
Type: Replicate
Volume ID: 90d6cc72-86f3-4cbe-a013-662f339babd8
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: 192.168.100.100:/root/data
Brick2: 192.168.100.101:/root/data
Brick3: 192.168.100.102:/root/data
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

四、挂载卷

1. 挂载目录

1
2
3
mkdir ./nas_dir
mount -t glusterfs 192.168.100.100:/myvolume ./nas_dir
# 此处ip可替换为集群任意一个ip

2. 创建测试文件

1
echo "hello" > ./nas_dir/test.txt

3. 查看文件

在任意服务器上执行命令,应该都能看到 hello 内容。

1
cat $GDIR/test.txt

需要注意的是,不要直接操作 $GDIR 目录,需要通过挂载去操作。

4. 取消挂载

1
umount ./nas_dir

五、NFS挂载

1. 安装 nfs-ganesha

gluster 已逐渐废弃 NFS 支持,因此借助 nfs-ganesha 来实现

1
sudo apt-get install nfs-ganesha nfs-ganesha-gluster -y

2. 配置端点

1
sudo nano /etc/ganesha/ganesha.conf

并在末尾插入配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
EXPORT_DEFAULTS {
Access_Type = RW;
}
EXPORT
{
Export_Id = 1 ;
Path = "/";
Pseudo = "/";
Disable_ACL = True;
Protocols = "3","4";
Access_Type = RW;
Squash = No_root_squash;
Sectype = "sys";
Transports = "UDP","TCP";
FSAL {
Name = "GLUSTER";
Hostname = "192.168.100.100"; # 对应GLUSTER的ip
Volume = "myvolume"; # 对应GLUSTER的volume名
}
}
LOG {
Default_Log_Leve1 = WARN;
}

3. 启动并设置开机自启

需注意,若已经启动了其他nfs服务端,会占用2049等端口,导致nfs-ganesha启动失败,需要先停止其他nfs服务端

1
2
3
4
5
systemctl start nfs-ganesha
systemctl enable nfs-ganesha

# 查看日志
tail -f /var/log/ganesha/ganesha.log

4. 挂载 NFS

服务器需要有 NFS 客户端,若 Ubuntu 可执行 sudo apt-get install nfs-common -y 安装,如 CentOS 或 Fedora 可执行 sudo yum install nfs-utils -y 安装。

1
2
mkdir ./nfs_dir
mount -t nfs 192.168.100.100:/ ./nfs_dir

评论