如何在 OpenVZ 容器内挂载 glusterfs?

如何在 OpenVZ 容器内挂载 glusterfs?

glusterfs 使用 fuse 来挂载 glusterfsd 卷,它可以在任何无需虚拟化的硬件节点上正常工作。

但是,我现在尝试将设备安装在容器内

glusterfs --debug -f /etc/glusterfs/glusterfs.vol /storage

并得到以下错误:

fuse: failed to open /dev/fuse: Permission denied
[2009-06-20 18:36:29] D [fuse-bridge.c:2747:init] glusterfs-fuse: fuse_mount() failed with error Permission denied on mount point /storage

ls -al /dev/fuse 是

crw-rw-rw- 1 root fuse 10, 229 20. Jun 16:35 /dev/fuse

ls -al /storage 是

drwxr-xr-x   2 root root 4096 20. Jun 17:14 storage

该 HN 的内核已加载保险丝...uname 是

2.6.18-14-fza-amd64 #1 SMP Mon Jan 5 17:36:46 UTC 2009 x86_64 GNU/Linux

有什么建议吗?有人尝试过在 openvz 容器内安装 glusterfs 并让它启动并运行吗?

提前致谢。Marcus

答案1

好吧,我自己找到了解决方案(http://wiki.openvz.org/FUSE

我只需要通过在我的 HN 中执行以下操作来调整我的容器:

# vzctl set $VEID --devices c:10:229:rw --save
# vzctl exec $VEID mknod /dev/fuse c 10 229

...要完成,您需要设置这些

# vzctl set $VEID --capability sys_admin:on

从 OpenVZ 容器内部导出 glusterfs 卷。

答案2

在里面阿祖克基础设施我们也使用 OpenVZ 和 Glusterfs,但不给予 VPSsys_admin特权。

如果您不愿意sys_admin向安装 Gluster 的每个 VPS 授予特权 — — 大多数管理员可能都这样 — — 您可以稍微修改 GlusterFS 源代码,以便将其 xattrs 存储在非特权命名空间中:

find . -regex '.*/[^/]*\.[ch]' -exec sed -i 's/"trusted\./"user./g' {} + \
    && ./configure && make

我已经使用版本 1.4.0qa92 进行了测试,该版本我们在生产中使用它已经有半年多了。

答案3

另一种安全挂载的方法是将 GlusterFS 卷挂载到 HN 上,然后将目录绑定挂载到 VZ 容器中。这可以通过配置目录中的容器挂载脚本(vps.mount 或 $ctid.mount)来控制。

相关内容