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
|
3. 启动存储卷
1 2
| sudo gluster volume start myvolume
|
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
|
2. 创建测试文件
1
| echo "hello" > ./nas_dir/test.txt
|
3. 查看文件
在任意服务器上执行命令,应该都能看到 hello
内容。
需要注意的是,不要直接操作 $GDIR
目录,需要通过挂载去操作。
4. 取消挂载
五、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
|