[samba-jp:22177] xlsxを開く場合の挙動とkernel oplocksについて
森川武
t.morikawa137 @ gmail.com
2013年 11月 12日 (火) 11:14:59 JST
お世話になっております。
森川です。
先月は多大なる無礼な投稿をしてしまい申し訳ありませんでした。
今後はそういったことがないように十分に調査・検証をした上で質問をするように心がけます。
現在、共有フォルダ上のxlsxを開く場合の挙動について調査をしています。
その挙動というのは、誰も開いていないのに、「ほかのユーザ〜」というメッセージが表示されてしまい
読み取り専用となってしまう挙動です。
【環境】
samba:3.6.5
OS:CentOS6.2
---smb.conf---
kernel oplocks = yes
oplocks = yes
この挙動は何もsambaに限った話ではなく、WindowsServerや、またはローカルでも発生することは
分かっております。そして、ネットワーク、PCスペック、Windowsエクスプローラの設定等でも
頻度が変わってくることも調査済みです。
検証では、ネットワーク、PCスペックに問題はなく、エクスプローラではプレビューウィンドウをオフにして
行っております。
そういったことを把握した上である条件の場合に読み取り専用になる現象が発生する
頻度が高いということが分かりました。
まず、xlsxファイルのオーナとそのファイルを開くユーザが異なる場合に発生頻度が高いということが
分かりました。そのため、発生頻度の高いファイルをコピーして使用すると頻度が低くなります。
(コピーすると、オーナがコピーを行ったユーザになるため)
当方の環境では、ファイルのオーナによるアクセス権限は持たせず、全てaclによるアクセス制限としています。
そのため、ファイル作成者=アクセスできる
ということにはならず、あくまでaclで許可されている場合のみとしています。
(aclのアクセスチェックアルゴリズムを元に、ACL_GROUPエントリと一致した場合のみ許可)
そういったことから、オーナとファイルを開くユーザを一致させるために
smb.confの設定でforce userやfouce groupなどを使用することはできません。
簡単な回避方法としては、上記のようにコピーしてから編集ですとか、xlsxをxlsにする方法があるのですが
やはり、使い勝手が悪いです。sambaの設定でどうにかならないかと調査し、試したこととしては
・xlsxファイルをoplockさせない(veto oplock filesに指定)
・SMB2をやめる。
などを試しましたが、改善されず。
念のためにWeb検索で多数出てくる、レジストリの設定、Windows Updateなども試しましたが改善されずでした。
しかし、smb.confのあるオプションを無効にすると改善することが分かりました。
それは、kernel oplocksです。
このオプションはカーネルが対応していれば自動的に有効になるため、さわる必要がないとsmb.confのマニュアルには
記載されているため無効にするのが非常に怖いところなのですが、どう影響が出るのかがいまいち理解ができません。
smb.confの記載を抜粋
カーネル oplocks のサポートにより、 smbd(8) が oplock を行ったファイルに対して、 ローカルな UNIX プロセスや
NFS 経由でのアクセスがあった際に、 Sambaが oplocks を破棄することが可能となる。
これにより、 SMB/CIFS と NFS やローカルファイルアクセスとの間の完全な一貫性が
確保される (これは非常に素晴らしいことである :-)。
この記載を見ると、
smbdがoplockを行ったファイルをviなどで開く場合もしくはNFS経由でアクセスされる場合にoplockを破棄することで
多重に開かれても問題ないようにするというように私は読み取りました。
私の環境では、共有フォルダ上のファイルにはWindowsもしくはMacからSMBにてアクセスする以外はファイルを開くようなことは
ありません。ほかのやることとすれば、cp、mv、rm、chownをするぐらいです。NFSも使用していません。
過去の質問の中に、kernel oplocksを無効にした場合の影響について質問している方がいらっしゃいましたが
その回答としては、やはりNFSを含めた言い方となっていました。
単純にエクスプローラやfinderからファイルを開くだけの使用方法であれば、kernel oplocksを無効にしても
問題はないのでしょうか?
ご教授お願い致します。
samba-jp メーリングリストの案内