fstabに書いてもCIFSが自動マウントしない問題

通常、NFSマウントなどの記述は、/etc/fstabに書いておけば、自動マウントされる・・・のだが、良く知らないと、netfsを起動していなかったり、netfsそのものが起動しないために、自動マウントしない。
このような場合、netfsを起動するようにservice登録しておく

# chkconfig nstfs on

これで再起動すれば、通常であれば、問題なく自動マウントされる。
その反対で、アンマウントしたければ、このプロセスをstopすれば、自動マウントされているNFSは、アンマウントされる。

# service netfs stop

ここまでは、通常のお話である。

しかし、今回遭遇したのは、近頃の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ではうまくいっている場合には、この順位そのものを変えてしまえば良い。

# chkconfig: 345 25 75 を以下のように変更する。
# chkconfig: 345 99 75

これで、netfsの起動順位は、99とすることが出来るが、変更を反映するためには、chkconfigに再登録する。

# chkconfig --del netfs
# chkconfig --add netfs
# chkconfig netfs on

こでで、順位が変わる。
runlevel 3の場合なら、/etc/rc.d/rc3.d/の内容を確認すると、S99netfsに変わっているのがわかる。

lrwxrwxrwx 1 root root 15 7月 18 13:30 2017 S99netfs -> ../init.d/netfs

この状態で起動すれば、rc.localが走る手前の最終段階で起動されるので、これで、たいていの場合、問題なく自動マウントされるようになるハズ。

IPv6経由でNFSやCIFSをマウントしたいような場合、今のところ有効な対策となった。