我想在 FreeBSD 11.1 上使用 GlusterFS 作为分布式文件存储。文档很差,所以我在网上遵循了一些操作指南。我可以创建 glusterfs 卷,但无法将其安装到其他客户端机器上。以下是我到目前为止所做的:
我有三台主机,都在同一个子网中。
10.0.0.21 Webserver
10.0.0.31 gluster1
10.0.0.32 gluster2
我在所有三个主机的 /etc/hosts 文件中添加了上述条目。
我使用以下命令修改了 gluster1 和 gluster2 上的 /etc/rc.conf:
glusterd_enable="YES"
在 gluster1 上我做了:
gluster peer probe gluster2
(成功)
gluster1 和 gluster2 均有以下硬盘:/dev/da1
它们被分区(BSD 标签)并作为 /datastore 安装在 gluster1 和 gluster2 上
“cat /etc/fstab” 在 gluster1 和 gluster2 上均给出:
# Device Mountpoint FStype Options Dump Pass#
/dev/da0a / ufs rw 1 1
/dev/da1a /datastore ufs rw 2 2
我创建了 gluster 卷 1:
gluster volume create volume1 replica 2 transport tcp gluster1:/datastore gluster2:/datastore force
(我知道裂脑风险,这是一个简单的测试场景)
我使用以下命令启动了volume1:
gluster volume start volume1
检查卷 1:
gluster volume info
返回:
Type: Replicate
Volume ID: a760c545-1cc9-47a4-bc9e-51f6180e4d7a
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster1:/datastore
Brick2: gluster2:/datastore
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
到目前为止,一切进展顺利,并且一切顺利。
现在我的麻烦开始在客户端/消费者机器(Web服务器)上安装和使用它
我在几个地方看到 glusterfs volume1 应该可以使用以下命令安装:
mount -t glusterfs gluster1:/volume1 /mnt
这让我简单地返回以下错误:
mount: gluster1:/volume1: Operation not supported by device
在我问“愚蠢”的问题之前,我通常会这样做,为此我搜索了很多次。尝试在客户端上安装 glusterfs(pkg install glusterfs),在客户端 /etc/rc.conf 中启用它,为 FUSE 添加内容,但我无法让它工作。我感到很恼火,因为我知道我在这里遗漏的一定是很小的事情!?
有人能解释一下我的问题吗?
编辑:我发现 NFS 似乎无法正常工作:volume1 的状态显示没有监听 TCP 端口
gluster volume status volume1
显示:
Status of volume: volume1
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick gluster1:/datastore N/A N/A N N/A
Brick gluster2:/datastore N/A N/A N N/A
Self-heal Daemon on localhost N/A N/A N 55181
Self-heal Daemon on gluster2 N/A N/A N 30318
Task Status of Volume volume1
------------------------------------------------------------------------------
There are no active volume tasks
因此,我使用以下命令启用了 NFS:
gluster volume set volume1 nfs.disable off
有警告说不再使用 GlusterFS NFS,而是使用 NFS-Ganesha。我在这次测试中忽略了这个警告。
现在我重新启动了音量:
gluster volume stop volume1
gluster volume start volume1
为了检查我做了什么:
gluster volume info
现在向我展示了:
Volume Name: volume1
Type: Replicate
Volume ID: a760c545-1cc9-47a4-bc9e-51f6180e4d7a
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster1:/datastore
Brick2: gluster2:/datastore
Options Reconfigured:
nfs.disable: off
transport.address-family: inet
因此,nfs.disable 已设置为关闭。NFS 现在应该处于打开状态,对吗?
但
gluster volume status volume1
仍然显示没有 NFS 正在运行:
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick gluster1:/datastore N/A N/A N N/A
Brick gluster2:/datastore N/A N/A N N/A
NFS Server on localhost N/A N/A N N/A
Self-heal Daemon on localhost N/A N/A N 99115
NFS Server on gluster2 N/A N/A N N/A
Self-heal Daemon on gluster2 N/A N/A N 37075
Task Status of Volume volume1
------------------------------------------------------------------------------
There are no active volume tasks
令人不安的是(除了 NFS 在线之外还有 N),两块砖似乎也不在线(在线表示为 N)?!??
所以我真的陷入困境,需要一些帮助。
答案1
最后它开始工作了:
/usr/local/sbin/mount_glusterfs gluster1:/volume1 /mnt
成功了……
客户端还需要安装net/glusterfs包,并在/boot/loader.conf中添加以下语句:
fuse_load="YES"
干杯
答案2
两年后,我终于弄清楚了如何使用 FSTAB 在 Freebsd 上自动挂载 glusterfs 卷:
gluster1:/volume1 /mnt/glusterfs fusefs rw,acl,传输=tcp,_netdev,mountprog=/usr/local/sbin/mount_glusterfs,late 0 0