[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:20778] device is busy, after disconnection from NFS client



きどです。

NFS クライアントが umount したはずのマウント・ポイントをサーバ側で 
umount できないという現象で悩んでいます。例えば次のような状況です。

    server$ mount -t iso9660 /dev/cdrom /cdrom
    
    client$ mount -t nfs server:/cdrom /mnt # 正常に mount される
    client$ umount /mnt                     # 何もしないで umount
    
    server$ umount /cdrom
    umount: /cdrom: device is busy          # umount できない

この後、server で rpc.mountd を kill しようが何をしようが、shutdown す
るまで umount /cdrom できなくなります。cdrom に限らず、他のデバイスで
も同じです。

最初に気づいたのは server/client とも plamo-3.3 の組合せででしたが、他
の組合わせを試したところ、以下のようになりました。

    server                client
    plamo-3.2 (or 3.3)    plamo-3.0           発生
    plamo-3.0             plamo-3.2 (or 3.3)  発生せず

3.0 と 3.3 (or 3.2) の違いはつぎのように、
    3.0           $ /usr/sbin/rpc.mountd --version
                  Universal NFS Server 2.2beta47
    3.3 (or 3.2)  $ /usr/sbin/rpc.mountd --version
                  kmountd nfs-utils 1.0.3
NFS デーモンが kernel mode か user space かの差であるようです。
が、その先の解決法を見つけることができません、

とにかく、plamo デフォルトの nfs-utils-1.0.3、util-linux-2.11a を、
それぞれ nfs-utils-1.0.6、util-linux-2.11z に上げてみましたが、改善さ
れません。

原因・解決法にお心当たりの方、アドバイスをお願いいたします。
なお、環境は以下のとおりです。

plamo-3.3
kernel: 2.4.22

- /usr/src/linux/.config の関連項目
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_ROOT_NFS is not set
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_NFSD_TCP=y
CONFIG_SUNRPC=m
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y

- ps ax の関連項目
193 ?        S      0:00 /usr/sbin/rpc.portmap
203 ?        S      0:00 /usr/sbin/rpc.mountd
205 ?        SW     0:00 [nfsd]
206 ?        SW     0:00 [lockd]
208 ?        SW     0:00 [rpciod]

- lsmod の関連項目
Module          Size  Used by    Tainted: P  
nfsd           66480   1 (autoclean)
lockd          47312   1 (autoclean) [nfsd]
sunrpc         60700   1 (autoclean) [nfsd lockd]

- NFS サーバの起動スクリプト (rc.inet2 から抜粋:デフォルトのまま)
# # Start the various SUN RPC servers.
if [ -f ${NET}/rpc.portmap ]; then
  # Start the NFS server daemons.
  if [ -f ${NET}/rpc.mountd ]; then
    echo -n " mountd"
    ${NET}/rpc.mountd
  fi
  if [ -f ${NET}/rpc.nfsd ]; then
    echo -n " nfsd"
    ${NET}/rpc.nfsd
  fi
  exportfs -av
fi

-- 
きど
KIDO Hideyuki <rp9h-kd@asahi-net.or.jp>

Follow-Ups
[plamo:20780] Re: device is busy, after disconnection from NFSclient, HIGUCHI Chihiro

[検索ページ] [メール一覧]
Plamo ML 公開システム