Linux檔案系統df、du、fsck命令講解

九派Linux發表於2020-08-21

Linux環境下幾種常用的檔案系統有ext3ext4xfs,centos7.0開始預設檔案系統是xfs,centos6是ext4,centos5是ext3。

  • ext3:
    ext3和ext4的最大區別在於,ext3在fsck時需要耗費大量時間(檔案越多,時間越長),而ext4在fsck時用的時間會少非常多。

  • ext4:
    ext4是第四代擴充套件檔案系統(英語:Fourth EXtended filesystem,縮寫為ext4)是linux系統下的日誌檔案系統,是ext3檔案系統的後繼版本
    ext4的檔案系統容量達到1EB,而檔案容量則達到16TB,這是一個非常大的數字了。對一般的桌上型電腦和伺服器而言,這可能並不重要,但對於大型磁碟陣列的使用者而言,這就非常重要了。
    ext3目前只支援32000個子目錄,而ext4取消了這一限制,理論上支援無限數量的子目錄。

  • xfs:
    xfs是一種非常優秀的日誌檔案系統,它是SGI公司設計的。xfs被稱為業界最先進的、最具可升級性的檔案系統技術。
    xfs是一個64位檔案系統,最大支援8EB減1位元組的單個檔案系統,實際部署時取決於宿主作業系統的最大塊限制。對於一個32位Linux系統,檔案和檔案系統的大小會被限制在16TB。

xfs在很多方面確實做的比ext4好,ext4受限制於磁碟結構和相容問題,可擴充套件性和scalability確實不如xfs,另外xfs經過很多年發展,各種鎖的細化做的也比較好!

Linux檔案系統是Linux系統相當重要的一部分,首先我們來了解一下Linux的檔案系統目錄結構構成。

  • /usr/bin/bin:存放所有使用者可以執行的命令
  • user/sbin/sbin:存放只有root使用者可以執行的命令
  • /home:使用者預設的家目錄或者又可以稱作宿主目錄
  • /proc:虛擬檔案系統
  • /dev:存放社保檔案
  • /lib:存放系統程式執行所需的共享庫
  • /tmp:存放臨時檔案
  • /etc:系統配置檔案
  • /var:包含經常發生變動的檔案、比如日誌檔案、計劃任務等
  • /usr:存放所有命令、庫、手冊等
  • /mnt:臨時檔案系統的安裝點
  • /boot:核心檔案及程式

一、檢視檔案系統硬碟使用情況:df

df 命令,用於檢視Linux系統中各檔案系統的硬碟使用情況,包括檔案系統所在硬碟分割槽的總容量、已使用的容量、剩餘容量等。

df 命令的基本格式為:

$ df [選項] [目錄或檔名]

df命令常用選項及作用如下:

選項 作用
-a 顯示所有檔案系統資訊,包括系統特有的 /proc、/sysfs 等檔案系統;
-m 以 MB 為單位顯示容量;
-k 以 KB 為單位顯示容量,預設以 KB 為單位;
-h 使用我們習慣的 KB、MB 或 GB 等單位自行顯示容量;
-T 顯示該分割槽的檔案系統名稱;
-i 不用硬碟容量顯示,而是以含有 inode 的數量來顯示。

比如執行命令:

$ df -h

image

執行命令之後,列印出來的結果個列資訊含義是:

  • Filesystem:表示該檔案系統位於哪個分割槽,因此該列顯示的是裝置名稱;
  • Size:此列表示檔案系統的總大小;
  • Used:表示用掉的硬碟空間大小;
  • Avail:表示剩餘的硬碟空間大小;
  • Use%:硬碟空間使用率。如果使用率高達 90% 以上,就需要額外注意,因為容量不足,會嚴重影響系統的正常執行;
  • Mounted on:檔案系統的掛載點,也就是硬碟掛載的目錄位置

我們再執行以下這條命令:

$ df -h /etc

image

這條命令,df 命令後新增了目錄名,在這種情況下,df 命令會自動分析該目錄所在的分割槽,並將所在分割槽的有關資訊顯示出來。由此,我們就可以知道,該目錄下還可以使用多少容量。

二、統計目錄或檔案所佔磁碟空間大小:du

du是統計目錄或檔案所佔磁碟空間大小的命令。du 命令的格式如下:

$du [選項] [目錄或檔名]

選項:

  • -a:顯示每個子檔案的磁碟佔用量。預設只統計子目錄的磁碟佔用量
  • -h:使用習慣單位顯示磁碟佔用量,如 KB、MB 或 GB 等;
  • -s:統計總磁碟佔用量,而不列出子目錄和子檔案的磁碟佔用量

執行:$du -sh /etc

image

三、檢測和修復檔案系統:fsck

計算機難免會由於某些系統因素或人為誤操作(突然斷電)出現系統異常,這種情況下非常容易造成檔案系統的崩潰,嚴重時甚至會造成硬體損壞。這也是我們一直在強調的“伺服器一定要先關閉服務再進行重啟”的原因所在。

那麼,如果真出現了檔案系統損壞的情況,有辦法修復嗎?可以的,對於一些小問題,使用 fsck 命令就可以很好地解決。

fsck 命令用於檢查檔案系統並嘗試修復出現的錯誤。該命令的基本格式如下:

$ fsck [選項] 分割槽裝置檔名

選項 功能
-a 自動修復檔案系統,沒有任何提示資訊。
-r 採取互動的修復模式,在修改檔案前會進行詢問,讓使用者得以確認並決定處理方式。
-A(大寫) 按照 /etc/fstab 配置檔案的內容,檢查檔案內羅列的全部檔案系統。
-t 檔案系統型別 指定要檢查的檔案系統型別。
-C(大寫) 顯示檢查分割槽的進度條。
-f 強制檢測,一般 fsck 命令如果沒有發現分割槽有問題,則是不會檢測的。如果強制檢測,那麼不管是否發現問題,都會檢測。
-y 自動修復,和 -a 作用一致,不過有些檔案系統只支援 -y。

此命令通常只有身為 root 使用者且檔案系統出現問題時才會使用,否則,在正常狀況下使用 fsck 命令,很可能損壞系統。另外,如果你懷疑已經格式化成功的硬碟有問題,也可以使用此命令來進行檢查。

使用 fsck 檢查並修復檔案系統是存在風險的,特別是當硬碟錯誤非常嚴重的時候,因此,當一個受損檔案系統中包含了非常有價值的資料時,務必首先進行備份!

需要注意的是,在使用 fsck 命令修改某檔案系統時,這個檔案系統對應的磁碟分割槽一定要處於解除安裝狀態,磁碟分割槽在掛載狀態下進行修復是非常不安全的,資料可能會遭到破壞,也有可能會損壞磁碟。

image

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章