サンバダンスを学んでいる間、この写真を見ました。この図のVFSモジュールが混乱しています。
予想されるシステムコールをCライブラリに直接渡すのではなく、SambaサーバーにこのVFSモジュールが必要なのはなぜですか?クライアント側では、カーネルがマウントされたファイルシステムについて知るためにcifs.koまたはsmbfsが必要であることを知っています。
たとえば、クライアントがファイルを読み取ろうとするときです。対応するプロトコルコマンドをネットワーク経由でサーバーに渡します。サーバーのイーサネットカードはそれを受信してアプリケーション層に送信します。これにより、アプリケーション層のCIFSプロトコルがこのコマンドを解釈してcライブラリに渡し、最終的にsys_read()システムコールが発生します。このプロセスでは、VFSは不要に見えます。
このモジュールは必須ですか?そうでない場合は、コンパイルされたことをどのように確認できますか?
ありがとう
再充填する:
この図はsmbdプロセスアーキテクチャを説明するためのものです。表現したいのは、smbdがマルチプロセス、シングルスレッドアーキテクチャを持っているということです。私はSamba 3.0をSametimeという他のCIFSサーバーと比較する記事でこれを見ました。
ベストアンサー1
/var/samba/share1/dir/file
4時間の答えがなかったので、推測を追加します。これは、物理パス(たとえば)を論理パス()に変換するレイヤーですshare1\dir\file
。必要なファイル名の変換、権限の確認などなので必須であり、選択肢ではありません。
プロトコル実装自体はすでに論理パスで実行されている可能性があり、VFSで見つかったすべての内容を単に行に追加できます。