导出 gcsfuse mount,以便第三个客户端可以访问存储桶中的文件

导出 gcsfuse mount,以便第三个客户端可以访问存储桶中的文件

我将存储桶安装到本地目录。/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

该问题可能的解决方案:

  1. 您可能没有user_allow_other在 fuse 配置中启用配置选项。为此,请确保在文件中/etc/fuse.conf,取消注释以下行:user_allow_other,然后重试。

  2. 如果上述方法不起作用,你可能需要看看这个unix问题,它解决了通过 NFS 导出 FUSE 的问题。简而言之,大多数 Linux 发行版不允许通过 NFSv2 或 NFSv3 导出 FUSE 挂载的 fs,因此您需要使用 NFSv4。

相关内容