最近,筆者在FreeBSD環(huán)境下,將/usr/fstab文件中的磁盤掛載參數(shù)rw改寫成noatime,為使設(shè)置生效,用reboot命令重啟服務器,服務器上的應用網(wǎng)絡(luò)課堂便出現(xiàn)不能訪問的故障。用Putty遠程SSH訪問也不能連接。網(wǎng)絡(luò)課程不能啟動了,這是一個重大事故,如果要重裝系統(tǒng)或者課堂數(shù)據(jù)丟失,那損失太大了。
圖1 磁盤文件系統(tǒng)
圖2 fstab顯示的分區(qū)掛載信息
1.到機房發(fā)現(xiàn)滿屏提示:“Apr 14 08:06:07 init:can’t exec getty ‘/usr/libexec/getty’ for port /dev/ttyv4: No such file or directory”,而且系統(tǒng)在不同接口登錄,均找不到文件/usr/libexec/getty。
2.在重啟服務器時,注意到系統(tǒng)有一條提示:“fstab: /etc/fstab:6:Inappropriate file type or format”,說 明fstab中第六行上有不當?shù)奈募愋突蚋袷剑瑧撌菍ⅰ?usr”分區(qū)的rw類型改成了noatime類型,造成系統(tǒng)不能掛載/usr分區(qū),也就造成網(wǎng)絡(luò)課堂不能正常啟動的故障。
服務器重啟時,最后系統(tǒng)提示“Cannot read termcap database; using dumb terminal sttings.”,系統(tǒng)進入單用戶模式。
3.因為剛將/etc/fstab中的/usr磁盤分區(qū)掛載參數(shù)由原來的rw改成了noatime就出現(xiàn)服務器不能啟動的現(xiàn)象,那只要將/etc/fstab中的/usr掛載參數(shù)改回rw就可以。
首先用“df -h ”命令讀取文件系統(tǒng)的磁盤使用情況,顯示有4個分區(qū),/dev/mfid0p2 為“/”分區(qū),“/dev/mfi0p6”為“/usr”分區(qū)(如圖 1)。
因為FreeBSD的fstab文件存儲在/etc目錄下,所以用“cat /etc/fstab”來修改磁盤掛載參數(shù)(如圖2),“/”分區(qū)的磁盤選項為“rw”可讀寫,“/usr”分區(qū)的選項為“noatime”。
從圖2中可以看出,只要將分區(qū)/dev/mfid0p6選項“noatime”修改回原來的“rw”,磁盤就能正常加載。可是當修改參數(shù)后,出現(xiàn)文件不能保存的問題,提示文件系統(tǒng)為只讀,修改失敗。
3. 既然文件為只讀屬性,用命令“l(fā)s -ol /etc/fstab”查看權(quán)限,顯示fstab的權(quán)限為“-rw-r--r--”,所有者root和wheel群組有讀寫權(quán)限。既然有讀寫權(quán)限,可為什么不能寫入、修改文件呢?
圖3 用mount查看磁盤分區(qū)掛載信息
考慮將文件fstab的屬性修改為0777,開放其所有權(quán)限,看一下能不能修改。輸入命令“chmod 0777/etc/fstab”,系 統(tǒng) 提 示“chmod: /etc/fstab: Readonly file system”,這說明fstab是只讀文件系統(tǒng)。
4.fstab文件用ls命令查看有讀寫權(quán)限,用chmod修改文件權(quán)限時卻提示“Read-only file system”,說明還有其他原因使其轉(zhuǎn)變?yōu)橹蛔x屬性。
用mount命令來查看分區(qū)掛載信息(如圖 3),發(fā)現(xiàn)fstab所在的磁盤分區(qū)/dev/mfid0p2為只讀(readonly),原來在單用戶模式下,F(xiàn)reeBSD系統(tǒng)基于安全考慮,磁盤加載時的權(quán)限默認為只讀,只要修改加載磁盤時的讀寫屬性即可。
5.用命令“mount -o rw/dev/mfid0p2 /”將分區(qū)重新加載為“rw”讀寫屬性,再用命令“mount”查看根分區(qū)屬性,原來的“read-only”屬性改變?yōu)椤癹ournaled softupdates”了,說明文件fstab可以修改了。
用 命 令“cat /etc/fstab” 將“/usr”分區(qū)選項由原來的“notime”修改為“rw”,能正常保存退出。
6.修改了掛載磁盤文件系統(tǒng)信息后,用“reboot”重啟服務器,服務器能正常啟動,應用程序moodle網(wǎng)絡(luò)課堂功能正常。至此,F(xiàn)reeBSD環(huán)境下修改fstab掛載參數(shù)rw為noatime造成服務器不能正常啟動的問題已獲得解決。
1.配置修改生產(chǎn)服務器的關(guān)鍵重要的參數(shù),一定要在實驗機器上驗證確認后,才能在生產(chǎn)服務器上進行修改,同時也提醒我們,Linux下能正常通過的配置在FreeBSD下不一定就正常。
2.本故障的起因是想優(yōu)化moodle課堂而造成的,這也警告我們,要想提高moodle課堂的運行速度而做的各種優(yōu)化設(shè)置,一定要在實驗機器上通過并得以驗證,才能在生產(chǎn)服務器應用。
3.FreeBSD系統(tǒng)在進入單用戶模式后,基于安全考慮,磁盤分區(qū)系統(tǒng)默認為只讀。