平常Linux管理方面最重要的任務(wù)之一就是,檢查文件系統(tǒng)的完整性。Linux文件系統(tǒng)有可能在各種各樣的情況下受到損壞,比如系統(tǒng)崩潰、突然斷電、磁盤斷開,或者文件節(jié)點(i-node)不小心被覆蓋等等。因此,定期檢查文件系統(tǒng)的完整性是個好主意,以便盡量減小文件系統(tǒng)受到損壞的風(fēng)險。而說到檢查和修復(fù)Linux文件系統(tǒng),fsck是一款實用的工具。
我在本教程中將介紹如何借助fsck工具,實現(xiàn)文件系統(tǒng)的自動檢查。
系統(tǒng)一啟動,就觸發(fā)文件系統(tǒng)自動檢查機(jī)制
如果你希望系統(tǒng)一啟動,就自動觸發(fā)fsck,那么有一些方法可以設(shè)置在啟動過程中實現(xiàn)無人值守的fschk,這些方法具體取決于特定的Linux發(fā)行版。
在Debian、Ubuntu或Linux Mint上,編輯/etc/default/rcS,如下所示。
- $ sudo vi /etc/default/rcS
# 啟動過程中,自動修復(fù)出現(xiàn)不一致性的文件系統(tǒng)
- FSCKFIX=yes
在CentOS上,使用下列內(nèi)容,編輯/etc/sysconfig/autofsck(要是它沒有,就創(chuàng)建)。
- $ sudo vi /etc/sysconfig/autofsck
- AUTOFSCK_DEF_CHECK=yes
強(qiáng)制定期檢查文件系統(tǒng)
如果文件系統(tǒng)很龐大,你可以強(qiáng)制定期檢查文件系統(tǒng),而不是每次系統(tǒng)啟動時檢查文件系統(tǒng)。為了實現(xiàn)這個操作,先要借助tune2fs命令,找到文件系統(tǒng)配置。下面這個命令行顯示了文件系統(tǒng)相關(guān)參數(shù)的當(dāng)前值。請注意:/dev/sda1是文件系統(tǒng)超級塊所在的分區(qū)。
- $ sudo tune2fs -l /dev/sda1
從tune2fs的輸出結(jié)果中,我們不僅可以看到文件系統(tǒng)的狀態(tài)(干凈與否),還可以看到與文件系統(tǒng)檢查有關(guān)的一些參數(shù)。"Maximum mount count"(最大掛載次數(shù))這個參數(shù)是指文件系統(tǒng)檢查被觸發(fā)后的掛載次數(shù)。"Check interval"(檢查時間間隔)這個參數(shù)顯示了兩次文件系統(tǒng)檢查之間的最長時間。在大多數(shù)Linux發(fā)行版上,這些參數(shù)并不是默認(rèn)情況下被設(shè)置的,這意味著并不進(jìn)行任何定期的文件系統(tǒng)檢查。
如果想強(qiáng)制每隔30次掛載就檢查文件系統(tǒng),請運(yùn)行下面這個命令。
- $ sudo tune2fs -c 30 /dev/sda1
如果想強(qiáng)制每隔3個月就檢查文件系統(tǒng),請使用下面這個命令。
- $ sudo tune2fs -i 3m /dev/sda1
現(xiàn)在確認(rèn)剛添加上去的文件系統(tǒng)檢查條件已正確設(shè)置。
- $ sudo tune2fs -l /dev/sda1
- . . .
- Last mount time: n/a
- Last write time: Fri Mar 14 22:29:24 2014
- Mount count: 20
- Maximum mount count: 30
- Last checked: Mon Mar 3 20:55:08 2014
- Check interval: 7776000 (3 months)
- Next check after: Sun Jun 1 21:55:08 2014
強(qiáng)制下一次系統(tǒng)重啟時,進(jìn)行一次性的文件系統(tǒng)檢查
如果你想在下一次系統(tǒng)重啟時觸發(fā)一次性的文件系統(tǒng)檢查,可以使用這個命令。
- $ sudo touch /forcefsck
一旦你在類似上面的頂層目錄(/)中創(chuàng)建了一個名為forcefsck的空文件,它就會在你下一次重啟時,強(qiáng)制進(jìn)行文件系統(tǒng)檢查。系統(tǒng)成功啟動后,/forcefsck則會自動被清除。