gcsfuse mount をエクスポートして、3 番目のクライアントがストレージ バケット内のファイルにアクセスできるようにします。

gcsfuse mount をエクスポートして、3 番目のクライアントがストレージ バケット内のファイルにアクセスできるようにします。

ストレージ バケットをローカル ディレクトリにマウントします。/share 次に、オブジェクト ストアのコンテンツが格納されたこのディレクトリを別のマシンで使用できるようにしてみます。目標は、この別のマシンが gcsfuse-client 自体を使用する必要がなく、nfs または同様のものに依存できるようにすることです。

gcsfuse ディレクトリを nfs で公開しようとしました/share。nfs 共有は機能しました。しかし、クラウド ストレージ バケットを nfs 共有にマウントすると、リモート マシン (nfs クライアント) はオブジェクト ストアからのファイルを認識しませんでした。

したがって、チェーンの両方の部分は互いに独立して動作します。

  • オブジェクト ストアをローカル ディレクトリにマウントできます。
  • NFS ごとにディレクトリを 2 番目のマシンにエクスポートできます。

しかし、オブジェクト ストアの内容を 2 番目のマシンに「パススルー」することはできません。

これらはすべて Kubernetes クラスター内で発生します。

方程式から NFS を除外するために、サイドカー パターンを使用して、/share同じポッド内の 2 番目のコンテナーに公開しました。結果は同じで、2 番目のコンテナーはオブジェクト ストアのコンテンツを参照しません。

(gcs)fuse ファイルシステムについてはあまり詳しくありませんが、人々はそれを「ユーザー空間」ファイルシステムと呼んでいます。それが、gcsfuse マウントの内容を 2 番目のマシンにパススルーできない理由でしょうか?

編集: オブジェクト ストレージをマウントするときに、複数の異なるオプションを試しました。以下がそのオプションです。

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. fuse config で config オプションが有効になっていない可能性がありますuser_allow_other。これを実行するには、ファイル で/etc/fuse.conf次の行がコメント解除されていることを確認してuser_allow_otherから、もう一度試してください。

  2. 上記の方法がうまくいかない場合は、以下をご覧ください。このUNIXの質問は、NFS 経由で FUSE をエクスポートする方法について説明しています。要約すると、ほとんどの Linux ディストリビューションでは、NFSv2 または NFSv3 経由で FUSE マウントされたファイルシステムをエクスポートできないため、NFSv4 を使用する必要があります。

関連情報