文件系統是一個在計算機上幫你去管理數據怎麼去存儲和檢索的數據結構。文件系統也能夠被視做是磁盤上的物理(或擴展)分區。若是它沒有很好地被維護或按期監視,它可能在長期運行中出現各類各樣的錯誤或損壞。前端
這裏有幾個可能致使文件系統出問題的因素:系統崩潰、硬件或軟件故障、 有問題的驅動和程序、不正確的優化、大量的數據過載加上一些小故障。服務器
這其中的任何一個問題均可以致使 Linux 不能順利地掛載(或卸載)一個文件系統,從而致使系統故障。
另外,受損的文件系統運行在你的系統上可能致使操做系統中的組件或用戶應用程序的運行時錯誤,它可能會進一步擴大到服務器數據的丟失。爲避免文件系統錯誤或損壞,嵌入式物聯網等系統學習意義氣嗚嗚吧久零就易,你須要去持續關注它的健康情況。數據結構
在這篇文章中,咱們將介紹監視或維護一個 ext二、ext3 和 ext4 文件系統健康情況的工具。在這裏描述的全部工具都須要 root 用戶權限,所以,須要使用 sudo 命令去運行它們。工具
怎麼去查看 EXT2/EXT3/EXT4 文件系統信息學習
dumpe2fs 是一個命令行工具,用於去轉儲 ext2/ext3/ext4 文件系統信息,這意味着它能夠顯示設備上文件系統的超級塊和塊組信息。優化
在運行 dumpe2fs 以前,先去運行 df -hT 命令,確保知道文件系統的設備名。操作系統
$ sudo dumpe2fs /dev/sda10命令行
示例輸出:debug
你能夠經過 -b 選項來顯示文件系統中的任何保留塊,好比壞塊(無輸出說明沒有壞塊):調試
$ sudo dumpe2fs -b
檢查 EXT2/EXT3/EXT4 文件系統的錯誤
e2fsck 用於去檢查 ext2/ext3/ext4 文件系統的錯誤。fsck 能夠檢查而且可選地 修復 Linux 文件系統;它其實是底層 Linux 提供的一系列文件系統檢查器 (fsck.fstype,例如 fsck.ext三、fsck.sfx 等等) 的前端程序。
記住,在系統引導時,Linux 會爲 /etc/fstab 配置文件中被標爲「檢查」的分區自動運行 e2fsck/fsck。而在一個文件系統沒有被幹淨地卸載時,通常也會運行它。
注意:不要在已掛載的文件系統上運行 e2fsck 或 fsck,在你運行這些工具以前,首先要去卸載分區,以下所示。
$ sudo unmount /dev/sda10
$ sudo fsck /dev/sda10
此外,可使用 -V 開關去啓用詳細輸出,使用 -t 去指定文件系統類型,像這樣:
$ sudo fsck -Vt ext4 /dev/sda10
調優 EXT2/EXT3/EXT4 文件系統
咱們前面提到過,致使文件系統損壞的其中一個因素就是不正確的調優。你可使用 tune2fs 實用程序去改變 ext2/ext3/ext4 文件系統的可調優參數,像下面講的那樣。
去查看文件系統的超級塊,包括參數的當前值,使用 -l 選項,以下所示。
$ sudo tune2fs -l /dev/sda10
示例輸出:
接下來,使用 -c 標識,你能夠設置文件系統在掛載多少次後將進行 e2fsck 檢查。下面這個命令指示系統每掛載 4 次以後,去對 /dev/sda10 運行 e2fsck。
$ sudo tune2fs -c 4 /dev/sda10
tune2fs 1.42.13 (17-May-2015)
Setting maximal mount count to 4
你也可使用 -i 選項定義兩次文件系統檢查的時間間隔。下列的命令在兩次文件系統檢查之間設置了一個 2 天的時間間隔。
$ sudo tune2fs -i 2d /dev/sda10
tune2fs 1.42.13 (17-May-2015)
Setting interval between checks to 172800 seconds
如今,若是你運行下面的命令,你能夠看到對 /dev/sda10 已經設置了文件系統檢查的時間間隔。
$ sudo tune2fs -l /dev/sda10
示例輸出:
要改變缺省的日誌參數,可使用 -J 選項。這個選項也有子選項: size=journal-size (設置日誌的大小)、device=external-journal (指定日誌存儲的設備)和 location=journal-location (定義日誌的位置)。
注意,這裏一次僅能夠爲文件系統設置一個日誌大小或設備選項:
$ sudo tune2fs -J size=4MB /dev/sda10
最後,一樣重要的是,能夠去使用 -L 選項設置文件系統的卷標,以下所示。
$ sudo tune2fs -L "ROOT" /dev/sda10
調試 EXT2/EXT3/EXT4 文件系統
debugfs 是一個簡單的、交互式的、基於 ext2/ext3/ext4 文件系統的命令行調試器。它容許你去交互式地修改文件系統參數。輸入 ? 查看子命令或請求。
$ sudo debugfs /dev/sda10
缺省狀況下,文件系統將以只讀模式打開,使用 -w 標識去以讀寫模式打開它。使用 -c 選項以災難(catastrophic)模式打開它。
示例輸出:
要展現未使用空間的碎片,使用 freefrag 請求,像這樣:
debugfs: freefrag
示例輸出: