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