[cat rc.local]
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
service netfs restart
service プロセスで走るnetfsを chkconfig netfs off としておき、rc.localで起動するわけである。
たぶん、うまくいく場合が多いが、なんだかこれだと、chkconfig netfs offしてあっても、起動してしてしまうので、混乱の元となったり、第一スマートじゃない。
ということで、今回は、netfsの起動順位を下げる工夫をしてみた。
以下はその手順。
# cd /etc/init.d
# vi netfs
#!/bin/bash
#
# netfs Mount network filesystems.
#
# Authors: Bill Nottingham <notting@redhat.com>
# AJ Lewis <alewis@redhat.com>
# Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#
# chkconfig: 345 25 75
# description: Mounts and unmounts all Network File System (NFS), \
# CIFS (Lan Manager/Windows), and NCP (NetWare) mount points.
### BEGIN INIT INFO
# Provides: $remote_fs
# Short-Description: Mount and unmount network filesystems.
# Description: Mount and unmount network filesystems.
### END INIT INFO
[ -f /etc/sysconfig/network ] || exit 0
. /etc/init.d/functions
. /etc/sysconfig/network
__source_netdevs_fstab
__source_netdevs_mtab
fstabに書いてもCIFSが自動マウントしない問題
通常、NFSマウントなどの記述は、/etc/fstabに書いておけば、自動マウントされる・・・のだが、良く知らないと、netfsを起動していなかったり、netfsそのものが起動しないために、自動マウントしない。
このような場合、netfsを起動するようにservice登録しておく
これで再起動すれば、通常であれば、問題なく自動マウントされる。
その反対で、アンマウントしたければ、このプロセスをstopすれば、自動マウントされているNFSは、アンマウントされる。
ここまでは、通常のお話である。
しかし、今回遭遇したのは、近頃のSSD を採用したVPSなどでたまに見かけるようになったI/Fの準備より速くにnetfsを起動してしまうと、数十秒間待たされた挙句に、自動マウントに失敗してしまうというもの。
対応方法としては、起動プロセスが全て終わった後に、起動される、/etc/rc.d/rc.localの最後に、netfsを起草するための記述を追加しても良い。
通常のrc.localはほとんどなにもしていないが、全ての起動プロセスである、rc3.dなどが終了した最後に1回呼び出されるので、通常時のnetfsの起動順番よりも、遅くすることが出来る。
[cat rc.local] #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local service netfs restart
service プロセスで走るnetfsを chkconfig netfs off としておき、rc.localで起動するわけである。
たぶん、うまくいく場合が多いが、なんだかこれだと、chkconfig netfs offしてあっても、起動してしてしまうので、混乱の元となったり、第一スマートじゃない。
ということで、今回は、netfsの起動順位を下げる工夫をしてみた。
以下はその手順。
# cd /etc/init.d # vi netfs #!/bin/bash # # netfs Mount network filesystems. # # Authors: Bill Nottingham <notting@redhat.com> # AJ Lewis <alewis@redhat.com> # Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org> # # chkconfig: 345 25 75 # description: Mounts and unmounts all Network File System (NFS), \ # CIFS (Lan Manager/Windows), and NCP (NetWare) mount points. ### BEGIN INIT INFO # Provides: $remote_fs # Short-Description: Mount and unmount network filesystems. # Description: Mount and unmount network filesystems. ### END INIT INFO [ -f /etc/sysconfig/network ] || exit 0 . /etc/init.d/functions . /etc/sysconfig/network __source_netdevs_fstab __source_netdevs_mtab
上記の # chkconfig: 345 25 75 の意味は、run level 3,4,5の場合にプロセス起動順位が25番目で終了順位が、75番と言う意味である。
この起動プロセス順位だと、上手くいかないが、rc.localではうまくいっている場合には、この順位そのものを変えてしまえば良い。
これで、netfsの起動順位は、99とすることが出来るが、変更を反映するためには、chkconfigに再登録する。
こでで、順位が変わる。
runlevel 3の場合なら、/etc/rc.d/rc3.d/の内容を確認すると、S99netfsに変わっているのがわかる。
この状態で起動すれば、rc.localが走る手前の最終段階で起動されるので、これで、たいていの場合、問題なく自動マウントされるようになるハズ。
IPv6経由でNFSやCIFSをマウントしたいような場合、今のところ有効な対策となった。