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