Google
 

音樂分享 - 「君がいるから」by 江口一聲

2007年4月25日 星期三

samba error: oplock

朋友的samba 出現這些錯誤訊息

[2007/04/22 07:16:18, 1] smbd/service.c:make_connection_snum(642)
sft02 (192.168.1.152) connect to service XP_Batch initially as user nobody (uid=65534, gid=65534) (pid 20322)
[2007/04/22 07:16:18, 0] smbd/reply.c:reply_lockingX(4675)
reply_lockingX: Error : oplock break from client for fnum = 6093 and no oplock granted on this file (FreeStyle0212.bat).

[2007/04/23 22:01:13, 0] smbd/oplock.c:oplock_break(847)
oplock_break: receive_smb timed out after 30 seconds.
oplock_break failed for file index.mbd (dev = 301, inode = 4104858, file_id = 1).
[2007/04/23 22:01:13, 0] smbd/oplock.c:oplock_break(919)
oplock_break: client failure in oplock break in file index.mbd

然後我在網路上找到這一篇
http://lists.debian.or.jp/debian-users/200202/msg00138.html

[debian-users:31775] Re: SAMBA EXCEL File Error



  たかはしもとのぶです。

> "call_nt_transact_ioctl: Currently not implemented"
>
>というメッセージが引用されてますが、"ioctl" というと
>カーネルに関係してそうですね。 2.4 系カーネルのための
>機能とか ?

無視してください。メッセージのとおりで、NT側から送られたリクエストの一
部をSambaが実装していないだけです。

>> oplock_break: receive_smb timed out after 30 seconds.
>> oplock_break failed for file wada-pc/data/庶務/作業員名簿/作業員名簿.xls
>> (dev= 903, inode = 376134).
>
>"oplock break" ってなんだろう ? Operation Lock ?
>たぶん File Lock とは違うよね。あと念のために、同時に
>複数の人が開こうとしたとか、そういうことではないんですよね ?

oplock は、Windows 用語ですので、詳細はそっちを参照してください。簡単
に説明すると、オープンしたサーバ上のファイルをクライアント側でキャッシュ
する技術です。

今回の件に関して言うと、

oplock = no (這是解決的關鍵)

にすれば、パフォーマンスは多少落ちますが、このエラーはでなくなる筈です。

>あと念のために、同時に
>複数の人が開こうとしたとか、そういうことではないんですよね ?

多分、これでしょう。同時に複数箇所から書き込みオープンされると、原理的
にクライアント側でファイルのキャッシュはできないので。

-----
TAKAHASHI, Motonobu (たかはしもとのぶ) monyo@home.monyo.com
Samba Team - http://samba.org/ Samba-JP - http://www.samba.gr.jp/
JWNTUG - http://www.jwntug.or.jp/ Analog-JP - http://www.jp.analog.cx/
MCSE(NT40,W2K), SCNA, CCNA, Turbo-CI

最後去 面 smb.conf

fake oplocks (S)

Oplocks are the way that SMB clients get permission from a server to locally cache file operations. If a server grants an oplock (opportunistic lock) then the client is free to assume that it is the only one accessing the file and it will aggressively cache file data. With some oplock types the client may even cache file open/close operations. This can give enormous performance benefits.

When you set fake oplocks = yes(在 smb.conf 裏加上這個就搞定了), smbd(8) will always grant oplock requests no matter how many clients are using the file.

It is generally much better to use the real oplocks support rather than this parameter.

If you enable this option on all read-only shares or shares that you know will only be accessed from one client at a time such as physically read-only media like CDROMs, you will see a big performance improvement on many operations. If you enable this option on shares where multiple clients may be accessing the files read-write at the same time you can get data corruption. Use this option carefully!

Default: fake oplocks = no

沒有留言: