以下のシナリオでは、Windowsのアプリケーションは更新されたバージョンのファイルをインポートせずに以前のバージョンのファイルをインポートします。この場合、新しいバージョンを取得する方法には、(1)LinuxでSambaサービスを再起動するか(2)Remove-SmbMapping
WindowsでPowerShellコマンドを呼び出す2つの方法があります。
SMBサーバーがWindowsのときにこのような経験をしたかどうかはわかりませんが、おそらく覚えていないのでそうです。この問題がLinux上のファイルサーバーがSambaの場合にのみ発生する場合、問題の原因は何ですか?サンバサーバーエラー? Windowsのバグ?それともSMBプロトコル自体に問題があるのでしょうか?
- Samba(4.16.2)を使用してLinux PC上のディレクトリを共有します。
- Windows PCでは、このディレクトリのファイルを開き、ファイルを閉じます。
- Linux PC ではファイルを修正します。
- Windows PCでは、ファイルを再度開きます。
答え1
これは間違いではありません。これは「デザインの結果」です。
簡単に言えば、Sambaサーバーは専用ファイルサーバーとして機能するかどうかという2つのモードで動作できます。
専用ファイルサーバーの基本的な考え方は、実際のストレージが遅く、ほとんどのユーザーがとにかくsmbを介してファイルにアクセスするため、サーバーメモリにファイルをキャッシュするのが効率的であるということです。ファイルの変更はSMBをバイパスすることは期待されていません。もちろん、キャッシュは一定期間が経過すると期限切れになりますが、ユーザーは制御できません(いつ、どこで構成されているかわからないか、構成可能かどうかは不明です)。
これの鍵は「機会ロック」です。oplocks
smb.confと入力します。
公式文書(https://www.oreilly.com/openbook/samba/book/ch05_05.html)具体的に定義された:
Unixアプリケーション(viなど)とSMBクライアントから同じファイルにアクセスする場合は、oplockを無効にする必要があります。