有關(guān)自動掛載nfs的討論
在前面的文章中,我們曾了解過有關(guān)于自動掛載nfs的內(nèi)容。但是筆者在最近又發(fā)現(xiàn)了一些問題,所以這里我們來總結(jié)一下,分享給大家。網(wǎng)絡(luò)部調(diào)整我服務(wù)器的位置,所以把我的服務(wù)器停機了,結(jié)果服務(wù)器恢復(fù)的時候,發(fā)現(xiàn)nfs并沒有自動的mount上。那么這到底是什么問題呢?首先發(fā)現(xiàn)手動掛載nfs是正常的,說明portmap服務(wù)是好的,使用/etc/init.d/netfs status查看狀態(tài),也能看到需要掛載的路徑,而且執(zhí)行/etc/init.d/netfs start看到nfs路徑是可以被掛載的。由此說明netfs服務(wù)也是正常的。
緊接著查看了一下/etc/rc.d/rc3.d下面的啟動腳本,如下
- S10network
- S12syslog
- S13irqbalance
- S13iscsi
- S13portmap
- S22messagebus
- S25netfs
- S28autofs
由此看到,netfs服務(wù)是在portmap的后面啟動,同樣也是在network的后面啟動的,所以應(yīng)該不會是服務(wù)啟動順序的問題。
緊接著又想到了另外一個問題:并不是所有服務(wù)器都不能自動掛載nfs,有些機器是可以的。有一點這里需要說一下,公司的nfs服務(wù)器的ip地址和我服務(wù)器的ip不在一個網(wǎng)段,服務(wù)器是10網(wǎng)段,nfs是192網(wǎng)段的。所以必須在啟動服務(wù)器的時候添加路由。
在此,使用了兩種方式自動添加路由
1,使用rc.local文件
2,使用static-routes文件
問題就是使用第一種方式的時候不能自動掛載,但使用第二種方式的時候就可以自動掛載。后來把使用第一種方式的都改成第二種方式,問題迎刃而解,服務(wù)器重啟后可以自動掛載nfs了。
總結(jié):
按照linux啟動的順序,rc.local里面的內(nèi)容是在linux所有服務(wù)都啟動完畢,最后才被執(zhí)行的,也就是說,這里面的內(nèi)容是在netfs之后才被執(zhí)行的,那也就是說在netfs啟動的時候,服務(wù)器上的靜態(tài)路由是沒有被添加的,所以netfs掛載不能成功。
static-routes文件又是什么呢,這個是network腳本執(zhí)行時調(diào)用的一個文件,這個文件的放置在/etc/sysconfig目錄下,在network腳本中的位置是:
- 151 # Add non interface-specific static-routes.
- 152 if [ -f /etc/sysconfig/static-routes ]; then
- 153 grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
- 154 /sbin/route add -$args
- 155 done
- 156 fi
從這段腳本可以看到,這個就是添加靜態(tài)路由的方法,static-routes的寫法是
any net 192.168.0.0/16 gw 網(wǎng)關(guān)ip
這樣的話,在啟動network腳本的時候路由就自動添加上了,又因為network是在netfs前面啟動的,自然在自動掛載nfs的時候就正常了。
這樣看來,如果需要添加靜態(tài)路由,使用static-routes文件要比使用rc.local好,而且當(dāng)改變了網(wǎng)絡(luò)配置,需要重啟network腳本的時候,相應(yīng)的靜態(tài)路由是可以自動添加上的,但這時如果使用rc.local的話,在重啟network服務(wù)的時候,原本添加好的靜態(tài)路由就消失了。