第 3 章:磁碟與檔案系統管理
ls -li 觀察 root 家目錄內的檔案所佔用的 inode 號碼
ls -li
ls -li
total 8
53735697 -rw-------. 1 root root 1816 May 4 17:57 anaconda-ks.cfg
53745858 -rw-r--r--. 1 root root 1864 May 4 18:01 initial-setup-ks.cfg
df 列出檔案系統的整體磁碟使用
df
df [-ahikHTm] [目錄或檔名]選項與參數:
-a :列出所有的檔案系統,包括系統特有的 /proc 等檔案系統;
-k :以 KBytes 的容量顯示各檔案系統;
-m :以 MBytes 的容量顯示各檔案系統;
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-H :以 M=1000K 取代 M=1024K 的進位方式;
-T :連同該 partition 的 filesystem 名稱 (例如 xfs) 也列出;
-i :不用磁碟容量,而以 inode 的數量來顯示
#範例一:將系統內所有的 filesystem 列出來!
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root 10475520 3409408 7066112 33% /
devtmpfs 627700 0 627700 0% /dev
tmpfs 637568 80 637488 1% /dev/shm
tmpfs 637568 24684 612884 4% /run
tmpfs 637568 0 637568 0% /sys/fs/cgroup
/dev/mapper/centos-home 5232640 67720 5164920 2% /home
/dev/vda2 1038336 133704 904632 13% /boot
# 在 Linux 底下如果 df 沒有加任何選項,那麼預設會將系統內所有的
# (不含特殊記憶體內的檔案系統與 swap) 都以 1 Kbytes 的容量來列出來!
# 至於那個 /dev/shm 是與記憶體有關的掛載,先不要理他!
df example
#範例二:將容量結果以易讀的容量格式顯示出來
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.3G 6.8G 33% /
devtmpfs 613M 0 613M 0% /dev
tmpfs 623M 80K 623M 1% /dev/shm
tmpfs 623M 25M 599M 4% /run
tmpfs 623M 0 623M 0% /sys/fs/cgroup
/dev/mapper/centos-home 5.0G 67M 5.0G 2% /home
/dev/vda2 1014M 131M 884M 13% /boot
#範例三:將系統內的所有特殊檔案格式及名稱都列出來
df -aT
Filesystem Type 1K-blocks Used Available Use% Mounted on
rootfs rootfs 10475520 3409368 7066152 33% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devtmpfs devtmpfs 627700 0 627700 0% /dev
securityfs securityfs 0 0 0 - /sys/kernel/security
tmpfs tmpfs 637568 80 637488 1% /dev/shm
devpts devpts 0 0 0 - /dev/pts
tmpfs tmpfs 637568 24684 612884 4% /run
tmpfs tmpfs 637568 0 637568 0% /sys/fs/cgroup
.....(中間省略).....
/dev/mapper/centos-root xfs 10475520 3409368 7066152 33% /
selinuxfs selinuxfs 0 0 0 - /sys/fs/selinux
.....(中間省略).....
/dev/mapper/centos-home xfs 5232640 67720 5164920 2% /home
/dev/vda2 xfs 1038336 133704 904632 13% /boot
binfmt_misc binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
# 系統裡面其實還有很多特殊的檔案系統存在的。那些比較特殊的檔案系統幾乎
# 都是在記憶體當中,例如 /proc 這個掛載點。因此,這些特殊的檔案系統
# 都不會佔據磁碟空間喔! ^_^
# 範例四:將 /etc 底下的可用的磁碟容量以易讀的容量格式顯示
df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.3G 6.8G 33% /
# 這個範例比較有趣一點啦,在 df 後面加上目錄或者是檔案時, df
# 會自動的分析該目錄或檔案所在的 partition ,並將該 partition 的容量顯示出來,
# 所以,您就可以知道某個目錄底下還有多少容量可以使用了! ^_^範例五:將目前各個 partition 當中可用的 inode 數量列出
df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 10M 108K 9.9M 2% /
devtmpfs 154K 397 153K 1% /dev
tmpfs 156K 5 156K 1% /dev/shm
tmpfs 156K 497 156K 1% /run
tmpfs 156K 13 156K 1% /sys/fs/cgroup
# 這個範例則主要列出可用的 inode 剩餘量與總容量。分析一下與範例一的關係,
# 你可以清楚的發現到,通常 inode 的數量剩餘都比 block 還要多呢
du 評估檔案系統的磁碟使用量
du
du [-ahskm] 檔案或目錄名稱
選項與參數:
-a :列出所有的檔案與目錄容量,因為預設僅統計目錄底下的檔案量而已。
-h :以人們較易讀的容量格式 (G/M) 顯示;
-s :列出總量而已,而不列出每個各別的目錄佔用容量;
-S :不包括子目錄下的總計,與 -s 有點差別。
-k :以 KBytes 列出容量顯示;
-m :以 MBytes 列出容量顯示;範例一:列出目前目錄下的所有檔案容量
du
4 ./.cache/dconf <==每個目錄都會列出來
4 ./.cache/abrt
8 ./.cache
....(中間省略)....
0 ./test4
4 ./.ssh <==包括隱藏檔的目錄
76 . <==這個目錄(.)所佔用的總量
# 直接輸入 du 沒有加任何選項時,則 du 會分析『目前所在目錄』
# 的檔案與目錄所佔用的磁碟空間。但是,實際顯示時,僅會顯示目錄容量(不含檔案),
# 因此 . 目錄有很多檔案沒有被列出來,所以全部的目錄相加不會等於 . 的容量喔!
# 此外,輸出的數值資料為 1K 大小的容量單位。範例二:同範例一,但是將檔案的容量也列出來
du -a
4 ./.bash_logout <==有檔案的列表了
4 ./.bash_profile
4 ./.bashrc
....(中間省略)....
4 ./.ssh/known_hosts
4 ./.ssh
76 .
# 範例三:檢查根目錄底下每個目錄所佔用的容量
du -sm /*
0 /bin
99 /boot
....(中間省略)....
du: cannot access ‘/proc/17772/task/17772/fd/4’: No such file or directory
du: cannot access ‘/proc/17772/fdinfo/4’: No such file or directory
0 /proc <==不會佔用硬碟空間!
1 /root
25 /run
....(中間省略)....
3126 /usr <==系統初期最大就是他了啦!
117 /var
# 這是個很常被使用的功能~利用萬用字元 * 來代表每個目錄,如果想要檢查某個目錄下,
# 哪個次目錄佔用最大的容量,可以用這個方法找出來。值得注意的是,如果剛剛安裝好 Linux 時,
# 那麼整個系統容量最大的應該是 /usr 。而 /proc 雖然有列出容量,但是那個容量是在記憶體中,
# 不佔磁碟空間。至於 /proc 裡頭會列出一堆『No such file or directory』 的錯誤,
# 別擔心!因為是記憶體內的程序,程序執行結束就會消失,因此會有些目錄找不到,是正確的!