[samba-jp:20243] NFSマウントしたところをSambaで共有して使うと非常に遅くなりました。

kondo nobuaki3.kondo @ toshiba.co.jp
2008年 7月 4日 (金) 12:52:40 JST


近藤です。

いつも困ったときに質問ばかりですみません。
先月巨大なストレージのSANを導入し、NFSマウントしてSambaで
使おうと予定していたのですが、NFSマウントした部分での
アクセスで(実用に耐えられないほど)遅くなる現象がでました。

先週からインターネットや本MLの過去ログで解決事例を探し、
インターネットで一応散見できたものの、解決したようなところが
見つかりませんでした。すみませんが何か対策があれば教えてください。
ちなみに、SANがつながったサーバとば別のサーバをNFSサーバ
としてやってみても状態は同じでした。

そこで質問です。
<質問1>
NFSマウントしたところをSambaで共有し、使おうとすると
非常に遅くなり、posix locking=Noにすることで
フォルダ移動や選択などは改善しました。

posix lockingのオプションのヘルプを見ると
You should never need to disable this parameter.
と書いてあります。
この設定はしない方がいいみたいですが、これによる悪い影響があるでしょうか?

<質問2>
いろいろ調べて対処していますが、posix locking=Noにしても
いまだに、読み書きは非常に遅いです。
NFSクライアントの/var/log/messagesに
statd: server localhost not responding, timed out
lockd: cannot monitor SANSERVERのIP
lockd: failed to monitor SANSERVERのIP
と出てきます。

NFSクライアントでnfsとnfslockを起動してみると、
rpc.statd[18709]: Can't notify SANSERVERのIP, giving up.
kernel: lockd: server SERVER001のIP not responding, timed out
kernel: lockd: server SERVER001のIP not responding, timed out
になりました。
Samba共有で、NFSマウント先への書き込みも早くする(実用に
耐えられるレベル)にはどうしたらよいでしょう?

よろしくお願いします。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<構成>
以下のような感じです。
[SAN]-[SANSERVER]---(Network)---[SERVER001]
            |
         [クライアントPC]

SANSERVER(NFS Server)
  Redhat5(kernel-2.6.18-8.1.15.el5)

SERVER001(NFS Client)
  RedHat5(kernel-2.6.18-92.1.1.el5)
  samba-3.0.28-1.el5_2.1
  openldap-2.3.27-8.el5_1.3

SANSERVERとSERVER001間は同セグメントでギガビットイーサネットです。
クライアントPC(WinXP)の方は、サーバとは別セグメントで100Mbpsです。
SANSERVER−SAN間はファイバーチャネルです。

SANSERVER側の/etc/exportsのオプションは、rw,no_root_squash,syncです。
SERVER001側でのNFSマウントは、以下のようにしました。
mount -t nfs -o nosuid,rsize=8192,wsize=8192 SANSERVERのIP:マウント元 マウント先
※rsize=16384,wsize=16384でも症状は同じ。

<調査、実施した内容>
SERVER001のローカルディスクに2GBのファイルを書き込み、
SERVER001にsshしてローカルディスクからNFSマウントしたところへ
cpしたら、5分弱でコピー完了しました。(9.3Mbps程度出ました)
NFSだけでみると十分実用的なスピードです。

Sambaの共有としてクライアントPCからSERVER001のNFSマウントしたところに
40KBのファイルをコピーするのに1分40秒かかりました。(0.4Kbps程度)
Windowsのエクスプローラではなく、smbclientでputするとタイムアウトが
起こりました。

表示される内容は、
Call timed out: server did not respond after 20000 milliseconds listing

/var/log/messagesをみていたら、
kernel: lockd: cannot monitor SANSERVERのIP
というのが出ていたので、lock関係のオプションを1つ1つ確認していったところ、
posix locking = No
とすることで少し改善されました。
・smbclientで40kbのファイルをputするときにCall timed outは起きなくなった。
・エクスプローラでのファイル選択、フォルダ移動、コピー、削除が早くなった。

しかしまだ問題があります。
エクスプローラでの操作で、書き込み、ファイルの貼り付け、読み込み、
プロパティ表示がかなり遅いです。
/var/log/messagesに
portmap: server localhost not responding, timed out
というメッセージが出ていたので、SERVER001(NFSクライアント)で
portmapを起動したところ、
portmap: server localhost not responding, timed out
は出なくなったものの、
statd: server localhost not responding, timed out
lockd: cannot monitor SANSERVERのIP
lockd: failed to monitor SANSERVERのIP
と出てきます。しかし、時間がたつと書き込みも完了します。

SERVER001(NFSクライアント)でnfsとnfslockを起動してみると、
rpc.statd[18709]: Can't notify SANSERVERのIP, giving up.
kernel: lockd: server SERVER001のIP not responding, timed out
kernel: lockd: server SERVER001のIP not responding, timed out
となりました。書き込み速度は変わらず遅いです。
遅いといってもユーザ側から見た速度で、tcpdumpしてみていると
SANSERVERの方にはパケットは時々来ている程度で、やはり
応答待ちな感じがします。

</etc/samba/smb.confの内容>
[global]
        workgroup = WORKGROUP
        server string = Samba Server
        passdb backend = ldapsam:ldap://127.0.0.1:389
        ldap admin dn = cn=Manager,dc=test,dc=co,dc=jp
        ldap group suffix = ou=Groups
        ldap passwd sync = Yes
        ldap suffix = dc=test,dc=co,dc=jp
        ldap ssl = no
        ldap user suffix = ou=Users
        utmp = Yes
        posix locking = No

[n.kondo]
        comment = Home Directory
        path = /home/admin/n.kondo
        valid users = kondo, n.kondo
        force user = n.kondo
        force group = admin
        read only = No
        browseable = No

過去ログからはNFSではなくDFS使った方がいいようなことが
書かれてました。こちらではドメイン構成を取っておらず、
共有フォルダ毎にアクセス権をつける方法をしているのですが、
SANSERVERとSERVER001で共有フォルダを1対1に対応させて
さらにアクセス権も1対1に対応させるというのが少々煩雑な
気がするのと、SANSERVERは、複数のSambaサーバ(NFSクライ
アント)からアクセスさせる予定なので、NFS以外にSambaと
LDAPなどを改めてSANSERVERで走らせるのもどうかと思ってます。
できればNFSでやりたいので、DFSは最終手段と思ってます。 




samba-jp メーリングリストの案内