ファイルのロックが外れなくなる

提供:Samba-JP
2006年8月21日 (月) 07:11時点におけるRibbon (トーク | 投稿記録)による版 (新規追加)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動検索に移動
KB番号 J0069
最終更新日 2002/09/12
作成者 たかはしもとのぶ
最終更新者

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 2.2 系列
  • Samba 2.0 系列

現象

oplock を有効にしている環境で、頻繁に Samba 共有上の特定ファイルの排他ロックによるオープンとクローズを繰り返すような処理を行なうと、ロックが外れなくなる現象が発生する場合があります。 この時、smbd のログには、以下のように「no responce received to oplock break request」という出力が行なわれています。

[2002/09/03 13:37:57, 0] smbd/oplock.c:request_oplock_break(1244)
  request_oplock_break: no response received to oplock break request
to pid 7225 on port 1132 for dev = 3005, inode = 1927503

原因

smb.conf(5) のマニュアル中に記載のある、以下のパラメータに関連した事象が原因だと思われます。

oplock break wait time (G) これは Windows 9x と NT 双方のバグに対応するために追加されたチューニングオプションである。クライアントが oplock を解除させるような SMB を発行した時に、 Samba のクライアントに対する応答が早過ぎると、クライアントは誤動作してしまい、解除要求に応答しない。
(以下省略)

対処策

oplock (opportunity lock / 機会的ロック) の利用が必須ではない場合は、該当の共有で

oplocks = no

という設定を行なって、oplock を無効にすることで、この問題の発生を確実に抑止できます。ただし、oplock が無効になるため、パフォーマンスが低下する、ファイルのロックを行なうことができないといった問題が発生します。

ロックが必要な場合は、oplock break timeout パラメータの値を 50 程度に大きめにすることにより、Samba の応答を遅延させ、事象の発生を抑止することができます。

この技術情報は samba-jp:13382, samba-jp:4176? からの一連のスレッドの議論を元に作成されています。