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)来控制。