我将存储桶安装到本地目录。/share
然后我尝试让此目录(现在已填充对象存储的内容)可供另一台机器使用。目标是,这台机器不必使用 gcsfuse-client 本身,而是可以依赖 nfs 或类似的东西。
我尝试使用 nfs 公开 gcsfuse 目录/share
。nfs-share 可以工作。但是当我将云存储桶安装到 nfs 共享中时,远程机器(nfs-client)从未看到对象存储中的文件。
因此,链的两个部分彼此独立地工作:
- 我可以将对象存储挂载到本地目录。
- 我可以通过 nfs 将目录导出到第二台机器。
但我无法将对象存储的内容“传递”到第二台机器。
所有这些都发生在 kubernetes 集群内部。
为了排除 nfs,我使用了 sidecar 模式,将暴露/share
给同一 pod 中的第二个容器。结果相同:第二个容器永远看不到对象存储的内容。
我对 (gcs)fuse 文件系统了解不多,但人们称其为“用户空间”文件系统。这就是我无法将 gcsfuse 挂载的内容传递到第二台机器的原因吗?
编辑:安装对象存储时,我尝试了多种不同的选项:它们在这里:
gcsfuse -o nonempty -o allow_other --implicit-dirs --gid 0 --uid 0 --file-mode 777 --dir-mode 777 video-storage-dev /share
gcsfuse -o nonempty -o allow_other video-storage-dev /share
答案1
该问题可能的解决方案:
您可能没有
user_allow_other
在 fuse 配置中启用配置选项。为此,请确保在文件中/etc/fuse.conf
,取消注释以下行:user_allow_other
,然后重试。如果上述方法不起作用,你可能需要看看这个unix问题,它解决了通过 NFS 导出 FUSE 的问题。简而言之,大多数 Linux 发行版不允许通过 NFSv2 或 NFSv3 导出 FUSE 挂载的 fs,因此您需要使用 NFSv4。