最近,筆者在FreeBSD環境下,將/usr/fstab文件中的磁盤掛載參數rw改寫成noatime,為使設置生效,用reboot命令重啟服務器,服務器上的應用網絡課堂便出現不能訪問的故障。用Putty遠程SSH訪問也不能連接。網絡課程不能啟動了,這是一個重大事故,如果要重裝系統或者課堂數據丟失,那損失太大了。

圖1 磁盤文件系統

圖2 fstab顯示的分區掛載信息
1.到機房發現滿屏提示:“Apr 14 08:06:07 init:can’t exec getty ‘/usr/libexec/getty’ for port /dev/ttyv4: No such file or directory”,而且系統在不同接口登錄,均找不到文件/usr/libexec/getty。
2.在重啟服務器時,注意到系統有一條提示:“fstab: /etc/fstab:6:Inappropriate file type or format”,說 明fstab中第六行上有不當的文件類型或格式,應該是將“/usr”分區的rw類型改成了noatime類型,造成系統不能掛載/usr分區,也就造成網絡課堂不能正常啟動的故障。
服務器重啟時,最后系統提示“Cannot read termcap database; using dumb terminal sttings.”,系統進入單用戶模式。
3.因為剛將/etc/fstab中的/usr磁盤分區掛載參數由原來的rw改成了noatime就出現服務器不能啟動的現象,那只要將/etc/fstab中的/usr掛載參數改回rw就可以。
首先用“df -h ”命令讀取文件系統的磁盤使用情況,顯示有4個分區,/dev/mfid0p2 為“/”分區,“/dev/mfi0p6”為“/usr”分區(如圖 1)。
因為FreeBSD的fstab文件存儲在/etc目錄下,所以用“cat /etc/fstab”來修改磁盤掛載參數(如圖2),“/”分區的磁盤選項為“rw”可讀寫,“/usr”分區的選項為“noatime”。
從圖2中可以看出,只要將分區/dev/mfid0p6選項“noatime”修改回原來的“rw”,磁盤就能正常加載。可是當修改參數后,出現文件不能保存的問題,提示文件系統為只讀,修改失敗。
3. 既然文件為只讀屬性,用命令“ls -ol /etc/fstab”查看權限,顯示fstab的權限為“-rw-r--r--”,所有者root和wheel群組有讀寫權限。既然有讀寫權限,可為什么不能寫入、修改文件呢?

圖3 用mount查看磁盤分區掛載信息
考慮將文件fstab的屬性修改為0777,開放其所有權限,看一下能不能修改。輸入命令“chmod 0777/etc/fstab”,系 統 提 示“chmod: /etc/fstab: Readonly file system”,這說明fstab是只讀文件系統。
4.fstab文件用ls命令查看有讀寫權限,用chmod修改文件權限時卻提示“Read-only file system”,說明還有其他原因使其轉變為只讀屬性。
用mount命令來查看分區掛載信息(如圖 3),發現fstab所在的磁盤分區/dev/mfid0p2為只讀(readonly),原來在單用戶模式下,FreeBSD系統基于安全考慮,磁盤加載時的權限默認為只讀,只要修改加載磁盤時的讀寫屬性即可。
5.用命令“mount -o rw/dev/mfid0p2 /”將分區重新加載為“rw”讀寫屬性,再用命令“mount”查看根分區屬性,原來的“read-only”屬性改變為“journaled softupdates”了,說明文件fstab可以修改了。
用 命 令“cat /etc/fstab” 將“/usr”分區選項由原來的“notime”修改為“rw”,能正常保存退出。
6.修改了掛載磁盤文件系統信息后,用“reboot”重啟服務器,服務器能正常啟動,應用程序moodle網絡課堂功能正常。至此,FreeBSD環境下修改fstab掛載參數rw為noatime造成服務器不能正常啟動的問題已獲得解決。
1.配置修改生產服務器的關鍵重要的參數,一定要在實驗機器上驗證確認后,才能在生產服務器上進行修改,同時也提醒我們,Linux下能正常通過的配置在FreeBSD下不一定就正常。
2.本故障的起因是想優化moodle課堂而造成的,這也警告我們,要想提高moodle課堂的運行速度而做的各種優化設置,一定要在實驗機器上通過并得以驗證,才能在生產服務器應用。
3.FreeBSD系統在進入單用戶模式后,基于安全考慮,磁盤分區系統默認為只讀。