nfsマウントを行うようになってからKubuntuがシャットダウンできなくなるようになってしまいました。
具体的にはシャットダウンシーケンスで以下のようなエラーをコンソールに吐いて止まってしまいます。
Network Manager: <info> Caught termination signal
Network Manager: <debug> [1217677603.026218] nm_print_open_socks(): Open Sockets List:
Network Manager: <debug> [1217677603.026369] nm_print_open_socks(): Open Sockets List:
Network Manager: <info> Deactivating device eth0.
[OK]
Network Manager: <WARN> nm_hal_deinit(): libhal shutdown failed - Connection is closed
Network Manager: <WARN> nm_dbus_init(): nm_dbus_init() could not get the system bus. Make sure the message bus daemon is running!
Network Manager: nm_dbus_signal_device_status_change: assertion `cb_data->data->dbus_connection' failed
Network Manager: nm_dbus_signal_device_status_change: assertion `cb_data->data->dbus_connection' failed
Network Manager: nm_dbus_signal_device_status_change: assertion `cb_data->data->dbus_connection' failed
* Sending all process the KILL signal... [OK]
こうなってしまうと電源ボタン長押しでしか電源を切ることが出来ず、面倒だし精神衛生上にもよろしくないので対処方法について調べてみた。
- nfsサーバ: Debian GNU/Linux 4.0r3 (etch)
- nfsクライアント: Kubuntu 8.04 (Hardy Heron) 日本語ローカライズド
特に問題なくシャットダウンできる
$ sudo umount /mnt/share/sdb
$ sudo umount /mnt/share
$ sudo umount /mnt/share2
問題なくシャットダウンできる
上記エラーが発生する
結果から言うと、nfsのマウントの順番に問題があったようです。
nfsサーバでは以下のようになっています。
マウントポイント | デバイスファイル |
/share | /dev/sda1 |
/share/sdb | /dev/sdb1 |
これを/etc/exportで/shareのみ公開し、クライアント側から/shareをマウントしても、異なるボリュームである/share/sdbの領域にはアクセスすることが出来ませんでした。このため、/etc/exportに/share及び/share/sdbを公開するように設定し、クライアント側から/shareをマウントした後に/share/sdbをマウントするように設定していました。
このときのクライアントの/etc/fstabは以下の通り(nfsマウント部のみ抜粋)。
# nfs mount
nfs-server:/share /mnt/share nfs rw,hard,intr,rsize=8192,wsize=8192 0 0
nfs-server:/share/sdb /mnt/share/sdb nfs rw,hard,intr,rsize=8192,wsize=8192 0 0
このような構成の場合、/mnt/shareをアンマウントするには/share/sdbが先にアンマウントされていないといけません。このため、このような順序で/etc/fstabに設定していると/mnt/shareをアンマウントしようとしたところで失敗し、結果としてアンマウントできないためにシャットダウン自体が失敗していると推測できます。
これを回避するには/share/sdbを/mnt/share/sdbにマウントするのではなく、/mnt/shareの配下以外にマウントするようにするようにします。
先に/share/sdbをマウントするためにはローカルにマウントポイントがないといけないので作成する。
$ mkdir /mnt/sdb
/etc/fstabを書き換える
# nfs mount
nfs-server:/share/sdb /mnt/sdb nfs rw,hard,intr,rsize=8192,wsize=8192 0 0
nfs-server:/share /mnt/share nfs rw,hard,intr,rsize=8192,wsize=8192 0 0
これでシャットダウンが正常に行われるようになりました。