如何在Linux上實現文件系統的自動檢查和修復?

Linux文件系統有可能在各類各樣的狀況下受到損壞,好比系統崩潰、忽然斷電、磁盤斷開,或者文件節點 (i-node)不當心被覆蓋等等,所以須要按期檢查文件系統,而說到檢查和修復Linux文件系統,fsck是一款實用的工具。本文將介紹圖和藉助 fask工具實現文件系統自動檢查的方法。node

AD:ide

【51CTO精選譯文】日常Linux管理方面最重要的任務之一就是,檢查文件系統的完整性。Linux文件系統有可能在各類各樣的狀況下受到損 壞,好比系統崩潰、忽然斷電、磁盤斷開,或者文件節點(i-node)不當心被覆蓋等等。所以,按期檢查文件系統的完整性是個好主意,以便儘可能減少文件系 統受到損壞的風險。而說到檢查和修復Linux文件系統,fsck是一款實用的工具。工具

我在本教程中將介紹如何藉助fsck工具,實現文件系統的自動檢查。spa

系統一啓動,就觸發文件系統自動檢查機制命令行

若是你但願系統一啓動,就自動觸發fsck,那麼有一些方法能夠設置在啓動過程當中實現無人值守的fschk,這些方法具體取決於特定的Linux發行版。orm

在Debian、Ubuntu或Linux Mint上,編輯/etc/default/rcS,以下所示。xml

  1. $ sudo vi /etc/default/rcS 

# 啓動過程當中,自動修復出現不一致性的文件系統blog

  1. FSCKFIX=yes 

在CentOS上,使用下列內容,編輯/etc/sysconfig/autofsck(要是它沒有,就建立)。教程

  1. $ sudo vi /etc/sysconfig/autofsck 
  2. AUTOFSCK_DEF_CHECK=yes 

強制按期檢查文件系統ci

若是文件系統很龐大,你能夠強制按期檢查文件系統,而不是每次系統啓動時檢查文件系統。爲了實現這個操做,先要藉助tune2fs命令,找到文件系統配置。下面這個命令行顯示了文件系統相關參數的當前值。請注意:/dev/sda1是文件系統超級塊所在的分區。

  1. $ sudo tune2fs -l /dev/sda1 

從tune2fs的輸出結果中,咱們不只能夠看到文件系統的狀態(乾淨與否),還能夠看到與文件系統檢查有關的一些參數。"Maximum mount count"(最大掛載次數)這個參數是指文件系統檢查被觸發後的掛載次數。"Check interval"(檢查時間間隔)這個參數顯示了兩次文件系統檢查之間的最長時間。在大多數Linux發行版上,這些參數並非默認狀況下被設置的,這 意味着並不進行任何按期的文件系統檢查。

若是想強制每隔30次掛載就檢查文件系統,請運行下面這個命令。

  1. $ sudo tune2fs -c 30 /dev/sda1 

 -c max-mount-counts
              Adjust the number of mounts after which the filesystem will be checked by e2fsck(8).  If max-mount-counts is 0 or -1, the number of times  the  filesystem  is  mounted  will be disregarded by e2fsck(8) and the kernel. Staggering the mount-counts at which filesystems are forcibly checked will avoid all filesystems being checked at one time when using journaled filesystems.You should strongly consider the consequences of disabling mount-count-dependent checking entirely.  Bad disk drives, cables, memory, and kernel bugs could all corrupt a filesystem without marking the filesystem dirty or in error.  If you are using journaling on your filesystem, your filesystem will never be marked dirty, so it  will  not normally be checked.  A filesystem error detected by the kernel will still force an fsck on the next reboot, but it may already be too late to prevent data loss at  that point.
              See also the -i option for time-dependent checking.

若是想強制每隔3個月就檢查文件系統,請使用下面這個命令。

  1. $ sudo tune2fs -i 3m /dev/sda1                                              -i  interval-between-checks[d|m|w]

如今確認剛添加上去的文件系統檢查條件已正確設置。

  1. $ sudo tune2fs -l /dev/sda1 
  2. . . . 
  3. Last mount time:          n/a 
  4. Last write time:           Fri Mar 14 22:29:24 2014 
  5. Mount count:             20 
  6. Maximum mount count:   30 
  7. Last checked:             Mon Mar  3 20:55:08 2014 
  8. Check interval:           7776000 (3 months) 
  9. Next check after:          Sun Jun  1 21:55:08 2014 

強制下一次系統重啓時,進行一次性的文件系統檢查

若是你想在下一次系統重啓時觸發一次性的文件系統檢查,可使用這個命令。

  1. $ sudo touch /forcefsck 

一旦你在相似上面的頂層目錄(/)中建立了一個名爲forcefsck的空文件,它就會在你下一次重啓時,強制進行文件系統檢查。系統成功啓動後,/forcefsck則會自動被清除。

相關文章
相關標籤/搜索