磁碟是Linux系統中非常重要的資源,如何對其進行有效管理直接影響到整個系統的效能問題。下面我就來介紹下磁碟管理的三大命令:df、du和fdisk。
一、df
df命令可以擷取硬碟被佔用了多少空間,目前還剩下多少空間等資訊,它也可以顯示所有檔案系統對i節點和磁碟塊的使用方式。
df使用的參數:
- -a :列出所有的檔案系統,包括系統持有的/proc等檔案系統;
- -k :以KBytes的容量顯示各檔案系統;
- -m :以MBytes的容量顯示各檔案系統;
- -h :以人們交易讀的GBytes、MBytes、KBytes等格式自行顯示。
- -H :以 M = 1000K取代 M = 1024K的進位方式;
- -T :顯示檔案系統類型;
- -i :不用硬碟容量,而以inode的數量來顯示;
# df [-akmhHTi] [目錄或檔案名稱]
範例:
1、列出各檔案系統的字盤空間使用方式
# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/hda1 5952252 3012332 2632680 54% //dev/shm 192836 0 192836 0% /dev/shm/dev/hda5 9492644 221604 8781060 3% /home# 特別注意,在 Linux (FC4) 底下,如果 df 沒有加任何參數,# 那麼預設會將系統內所有的 (不含特殊記憶體內的檔案系統與 swap) 都以 Kbytes# 的容量來列出來!至於那個 /dev/shm 是與記憶體有關的掛載,先不要理他!
我來解釋下上面資料的各個意思:
- Filesystem :代表該檔案系統是在哪個partition,列出其名稱;
- 1K-blocks :該分區所包含的資料區塊,預設代為是位元組。
- Used :所使用的硬碟空間;
- Available :所剩餘的硬碟空間;
- Use% :磁碟的使用率,如果使用率高達90%以上,最好需要注意下了,免得容量不足造成系統問題;
- Mounted on :磁碟掛載的目錄所在地,也就是掛載點;
在這裡需要注意下,Used列和Available列之和並不等於1K-blocks,這是因為預設的每個分區都留了少量空間供系統管理員使用的緣故。即使遇到普通使用者空間已滿的情況,管理員仍能登入和留有解決問題所需的工作空間。清單中Use%列表示普通使用者空間使用的百分比,若這一數字達到100%,分區仍然留有系統管理員使用的空間。
2、將容量結果以易讀的容量格式顯示出來
# df -hFilesystem Size Used Avail Use% Mounted on/dev/hda1 5.7G 2.9G 2.6G 54% //dev/shm 189M 0 189M 0% /dev/shm/dev/hda5 9.1G 217M 8.4G 3% /home# 不同於範例一,這裡會以 G/M 等容量格式顯示出來,比較容易看啦!
3、將系統內所有的特殊檔案格式及名稱都羅列出來
# df -aTFilesystem Type 1K-blocks Used Available Use% Mounted on/dev/hda1 ext3 5952252 3012332 2632680 54% //dev/proc proc 0 0 0 - /proc/dev/sys sysfs 0 0 0 - /sys/dev/devpts devpts 0 0 0 - /dev/pts/dev/shm tmpfs 192836 0 192836 0% /dev/shm/dev/hda5 ext3 9492644 221604 8781060 3% /homenone binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc# 看到了吧!系統裡面其實還有很多的特殊檔案系統在跑得!# 不過,那些比較特殊的檔案系統幾乎都是在記憶體當中,例如 /proc 這個掛載點。# 因此,這些特殊的檔案系統都不會佔據硬碟空間。
4、將/etc下可用的磁碟容量以易讀的容量格式顯示
# df -h /etcFilesystem Size Used Avail Use% Mounted on/dev/hda1 5.7G 2.9G 2.6G 54% /# 這個範例比較有趣一點啦,在 df 後面加上目錄或者是檔案時, df# 會自動的分析該目錄或檔案所在的 partition ,並將該 partition 的容量顯示出來,# 所以,您就可以知道某個目錄底下還有多少容量可以使用了。
5、將目前各個partition當中可用的inode數量列出
# df -ihFilesystem Inodes IUsed IFree IUse% Mounted on/dev/hda1 1.5M 141K 1.4M 10% //dev/shm 48K 1 48K 1% /dev/shm/dev/hda5 2.4M 67 2.4M 1% /home
二、du
du的英文原義為“disk usage”,含義為顯示磁碟空間的使用方式,統計目錄(或檔案)所佔磁碟空間的大小。該命令的功能是逐級進入指定目錄的每一個子目錄並顯示該目錄佔用檔案系統資料區塊(1024位元組)的情況。若沒有給出指定目錄,則對目前的目錄進行統計。
du使用的參數:
- -s :不顯示各個目錄明細,只顯示當前查詢目錄容量總數;
- -a :列出所有的檔案與目錄容量;
- -h :以人們較易讀的容量格式顯示;
- -k :以KBytes列出容量顯示;
- -m :以MBytes列出容量顯示;
- -b :以位元組為單位列出磁碟空間使用方式(系統預設以k位元組為單位);
# du [-ashkmb] [檔案或目錄名稱]
範例:
1、列出目前的目錄下的檔案容量
# du16 ./.gnome216 ./.ssh.......中間省略........292 .# 直接輸入 du 沒有加任何參數時,則 du 會分析『目前所在目錄』# 的檔案與目錄所佔用的硬碟空間。但是,實際顯示時,僅會顯示目錄容量,
2、列出目前的目錄下所有檔案容量,並以人容易閱讀的方式顯示容量
# du -ah4.0K ./sh/shell1.sh4.0K ./sh/redirect.sh8.0K ./sh/rc.firewall.sh52K ./sh/cn.zone.......中間省略........
192K .
# -a的選項會詳細到每個檔案的容量
3、只顯示目前的目錄的總容量
# du -sh192K .
4、檢查根目錄底下每個目錄所佔用的容量
# du -sm /*7 /bin14 /boot.......中間省略........385 /proc.......中間省略........1 /tmp2944 /usr79 /var# 這是個很常被使用的功能囉~利用萬用字元 * 來代表每個目錄,# 所以,如果想要檢查某個目錄下,那個次目錄佔用最大的容量,就可以用這個方法找出來# 值得注意的是,如果您剛剛安裝好 Linux 時,那麼整個系統容量最大的應該是 /usr# 那個目錄,而 /proc 雖然有列出容量,但是那個容量是在記憶體中,不佔硬碟空間。