十四、df命令、du命令、磁盤分區
監控磁盤的使用率至關重要,在日常監控工作中必須要做。
一、df命令
df(disk filesystem)命令:用於查看已掛載磁盤的總容量、使用容量、剩余容量等,可以不加任何選項,默認以KB為單位顯示。示例命令:
# df
文件系統 1K-塊 已用 可用 已用% 掛載點
/dev/sda3 16561152 1030204 15530948 7% /
devtmpfs 923696 0 923696 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 8748 924776 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 201380 115220 86160 58% /boot
tmpfs 186708 0 186708 0% /run/user/0
上例中,/、/boot是在安裝系統時劃分出來的。/dev、/dev/shm為內存分區,默認大小為內存大小的二分之一,若我們把文件存到這個分區下,相當於存到了內存中,好處是讀寫非常快,壞處是系統重啟時文件就會丟失。後面的/run、/sys/fs/cgroup等分區都是tmpfs,跟/dev/shm類似,為臨時文件系統,不要碰它們。
常用選項:-i、-h,-k,-m。為了簡明的看到磁盤分區,在下面示例中將把tmpfs相關的分區全部過濾掉。
-i:表示查看iNodes的使用狀況,如已使用100%,即使磁盤空間有富余,也會提示磁盤空間已滿。
示例命令:
# df -i |grep -v tmpfs //grep -v的作用是過濾掉包含tmpfs字符串的行
文件系統 Inode 已用(I) 可用(I) 已用(I)% 掛載點
/dev/sda3 8285696 26507 8259189 1% /
/dev/sda1 102400 328 102072 1% /boot
-h:表示使用合適的單位顯示,例如GB。示例命令:
# df -h |grep -v tmpfs
文件系統 容量 已用 可用 已用% 掛載點
/dev/sda3 16G 1006M 15G 7% /
/dev/sda1 197M 113M 85M 58% /boot
-k、-m:分別表示以KB和MB為單位顯示。示例命令:
# df -k |grep -v tmpfs
文件系統 1K-塊 已用 可用 已用% 掛載點
/dev/sda3 16561152 1029940 15531212 7% /
/dev/sda1 201380 115220 86160 58% /boot
# df -m |grep -v tmpfs
文件系統 1M-塊 已用 可用 已用% 掛載點
/dev/sda3 16173 1006 15168 7% /
/dev/sda1 197 113 85 58% /boot
註釋:
第1列:分區名字
第2列:該分區的總容量
第3列:使用容量
第4列:剩余容量
第5列:使用容量的百分比(若這個數值達到90%以上,就應該關註了。因為磁盤分區滿了,會引起系統崩潰。)
第6列:掛載點
單位:b(byte)(字節)1024b=1KB;1024KB=1MB;1024MB=1GB;1024GB=1TB
df命令無法查看swap分區,用free命令可以查看。示例:
# free
Mem: 1867048 129252 1566048 8748 171748 1554688
Swap: 4194300 0 4194300
二、du命令
du(disk useage)命令:用來查看某個目錄或文件所占空間的大小。
格式:du [-abckmsh] [文件或者目錄名]
常用參數:
-a:表示全部文件和目錄的大小都列出來。若後面不加任何選項和參數。則只會列出目錄(包含子目錄)的大小。若du命令不指定單位的話,默認顯示單位為KB。
示例命令:
# du /tmp/test
0 /tmp/test
# du -a /tmp/test
0 /tmp/test/1.txt
0 /tmp/test
-b:表示列出的值以B為單位輸出。
-k:表示以KB為單位輸出,這和默認不加任何選項的輸出值是一樣的。
-m:表示以MB為單位輸出。
-h:表示系統自動調節單位。例如,文件大小就幾千字節,就以KB為單位顯示;若文件大到千兆字節,就以GB為單位顯示。若文件小於4KB,當使用-k選項時,也會顯示4KB。同理,使用-m選項時,也會有類似問題。示例命令:
# du -b /etc/passwd
921 /etc/passwd
# du -m /etc/passwd
1 /etc/passwd
# du -k /etc/passwd
4 /etc/passwd
# du -h /etc/passwd
4.0K /etc/passwd
-c:表示最後加總。不常用,示例命令:
# du -c /tmp/test
0 /tmp/test
0 總用量
-s:表示只列出總和。常用選項,示例命令:
# du -s /tmp/test
0 /tmp/test
常用的用法:du -sh filename
三、磁盤分區
1.增加虛擬磁盤
添加虛擬磁盤步驟:
(1)在當前虛擬機選項卡點鼠標右鍵,選擇“設置”。
(2)此時彈出虛擬機設置對話框。在左側選中“磁盤”,然後點擊右下方的“添加”按鈕,此時會彈出“添加硬件向導”對話框,點擊下一步。
(3)“選擇磁盤類型”這裏保持默認不用更改任何指標,點擊下一步。
(4)“選擇磁盤”對話框裏也保持默認,點擊下一步。
(5)“指定磁盤容量”需要修改,設定“最大磁盤大小”為5GB,然後選擇“將虛擬磁盤存儲為單個文件”單選按鈕,如圖。
(6)繼續點擊下一步,然後點完成,最終完成添加新的虛擬磁盤。雖然磁盤已經添加,但系統暫時還不能被識別,需要重啟一下系統才可以。
2.fdisk命令
fdisk:Linux下硬盤的分區工具,非常實用的命令。但是fdisk只能劃分小於2TB的分區。
該命令的格式為fdisk [-l] [設備名稱]。其選項只有-l。
選項-l後面不加設備名稱,會直接列出系統中所有的磁盤設備以及分區表;加上設備名稱,則會列出該設備的分區表。示例命令:
# fdisk -l
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤 /dev/sda:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x000cd828
設備 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 8800255 4194304 82 Linux swap / Solaris
/dev/sda3 8800256 41943039 16571392 83 Linux
# fdisk -l /dev/sdb
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
上例中可以看到新增的磁盤/dev/sdb的信息。
fdisk命令若不加-l選項,則會進入另一個模式,在該模式下,可以對磁盤進行分區操作,示例命令:
# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
Device does not contain a recognized partition table
使用磁盤標識符 0xba415b70 創建新的 DOS 磁盤標簽。
命令(輸入 m 獲取幫助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
常用命令:
p:表示打印當前磁盤分區情況。示例命令:
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0xba415b70
設備 Boot Start End Blocks Id System
//說明:由於還未對/dev/sdb進行分區,所以並沒有顯示任何分區信息,可以對/dev/sda進行演示,不過千萬不要真的去劃分分區,那樣你的操作系統就被破壞了。
n:表示建立一個新的分區。
w:表示保存。
q:表示退出。
d:表示刪除一個分區。
分區操作:
建立一個分區
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
使命n命令新家分區,會提示選擇e(擴展分區)還是p(主分區),我選擇p,繼續:
Select (default p): p
分區號 (1-4,默認 1):1
分區數,選擇1,也可以2或者3,最多4,回車:
起始 扇區 (2048-10485759,默認為 2048):
起始扇區,提示你起始扇區從哪裏開始,默認是2048,可寫2048也可直接回車(也可以寫大於2048的數字,不過這樣就會浪費空間)然後輸入最後一個扇區的數值,即需要給這個分區劃分多大空間,寫+1000M,既方便又不容易出錯,再用p命令查看,得知多出一個分區,如下:
起始 扇區 (2048-10485759,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-10485759,默認為 10485759):+1000M
分區 1 已設置為 Linux 類型,大小設為 1000 MiB
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0xba415b70
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 2050047 1024000 83 Linux
按照上面的步驟操作,一直創建主分區到4。再查看,如下:
命令(輸入 m 獲取幫助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分區號 (2-4,默認 2):
起始 扇區 (2050048-10485759,默認為 2050048):
將使用默認值 2050048
Last 扇區, +扇區 or +size{K,M,G} (2050048-10485759,默認為 10485759):+1000M
分區 2 已設置為 Linux 類型,大小設為 1000 MiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分區號 (3,4,默認 3):
起始 扇區 (4098048-10485759,默認為 4098048):
將使用默認值 4098048
Last 扇區, +扇區 or +size{K,M,G} (4098048-10485759,默認為 10485759):+1000M
分區 3 已設置為 Linux 類型,大小設為 1000 MiB
命令(輸入 m 獲取幫助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已選擇分區 4
起始 扇區 (6146048-10485759,默認為 6146048):
將使用默認值 6146048
Last 扇區, +扇區 or +size{K,M,G} (6146048-10485759,默認為 10485759):+1000M
分區 4 已設置為 Linux 類型,大小設為 1000 MiB
命令(輸入 m 獲取幫助):n
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.
創建4個主分區後,再想創建新分區時則會出問題,因為在Linux系統中最多只能創建4個主分區。若想多創建幾個分區,方法就是,在創建第4個分區時選擇擴展分區。先刪除第4個分區,再新建分區,如下:
命令(輸入 m 獲取幫助):d
分區號 (1-4,默認 4):
分區 4 已刪除
命令(輸入 m 獲取幫助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已選擇分區 4
起始 扇區 (6146048-10485759,默認為 6146048):
將使用默認值 6146048
Last 扇區, +扇區 or +size{K,M,G} (6146048-10485759,默認為 10485759):+2000M
分區 4 已設置為 Extended 類型,大小設為 2 GiB
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0xba415b70
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 2050047 1024000 83 Linux
/dev/sdb2 2050048 4098047 1024000 83 Linux
/dev/sdb3 4098048 6146047 1024000 83 Linux
/dev/sdb4 6146048 10242047 2048000 5 Extended
擴展分區在最後一列顯示為Extended,接下來繼續新建分區,如下:
命令(輸入 m 獲取幫助):n
All primary partitions are in use
添加邏輯分區 5
起始 扇區 (6148096-10242047,默認為 6148096):
將使用默認值 6148096
Last 扇區, +扇區 or +size{K,M,G} (6148096-10242047,默認為 10242047):+500M
分區 5 已設置為 Linux 類型,大小設為 500 MiB
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0xba415b70
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 2050047 1024000 83 Linux
/dev/sdb2 2050048 4098047 1024000 83 Linux
/dev/sdb3 4098048 6146047 1024000 83 Linux
/dev/sdb4 6146048 10242047 2048000 5 Extended
/dev/sdb5 6148096 7172095 512000 83 Linux
此時再分區就和之前不一樣了,你不再需要選擇是主分區還是擴展分區,而是直接定義分區大小。值得註意的是,當創建完前面3個主分區後,理應把剩余的磁盤空間全部劃分給第四個擴展分區,不然剩余的空間就會浪費(上面的示例並沒有完全劃分給擴展分區)。因為創建完擴展分區後,再劃分新的分區時,是在已經劃分的擴展分區裏來分的。
上例中,/dev/sdb4為擴展分區,這個分區不可以格式化,可以把它看成一個空殼子,能使用過的分區為/dev/sdb5,它的/dev/sdb4的子分區,這個子分區稱為邏輯分區。如果你發現分區不合理,想刪除用d命令即可。若刪除擴展分區4,則會刪除整個擴展分區sdb4,也包含裏面的邏輯分區5。
分區操作完以後,按Ctrl+C退出(未保存的退出)。這樣剛做的分區便全部取消,再重新分區,如下:
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): e
分區號 (1-4,默認 1):
起始 扇區 (2048-10485759,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-10485759,默認為 10485759):
將使用默認值 10485759
分區 1 已設置為 Extended 類型,大小設為 5 GiB
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x3cb18b4e
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 10485759 5241856 5 Extended
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
由上可知,若把第一個分區定義為擴展分區,並且把全部空間都劃分給擴展分區,那再繼續分區時,會提示你選擇分區類型為主分區(primary partition)還是邏輯分區(logical partition)。用l表示邏輯分區,邏輯分區的id是從5開始的,因為前4個id為主分區或者擴展分區。既然這裏把所有磁盤空間都劃分給了擴展分區,若你在這裏選擇p,則會報錯。因為沒有足夠的空間劃分給主分區了,那接下來就劃分邏輯分區,如下:
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 5
起始 扇區 (4096-10485759,默認為 4096):
將使用默認值 4096
Last 扇區, +扇區 or +size{K,M,G} (4096-10485759,默認為 10485759):+1000M
分區 5 已設置為 Linux 類型,大小設為 1000 MiB
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x3cb18b4e
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 10485759 5241856 5 Extended
/dev/sdb5 4096 2052095 1024000 83 Linux
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): l
添加邏輯分區 6
起始 扇區 (2054144-10485759,默認為 2054144):
將使用默認值 2054144
Last 扇區, +扇區 or +size{K,M,G} (2054144-10485759,默認為 10485759):+1000M
分區 6 已設置為 Linux 類型,大小設為 1000 MiB
命令(輸入 m 獲取幫助):p
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x3cb18b4e
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 10485759 5241856 5 Extended
/dev/sdb5 4096 2052095 1024000 83 Linux
/dev/sdb6 2054144 4102143 1024000 83 Linux
分區完成後,輸入w命令保存我們的配置,如下:
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
再使用fdisk -l /dev/sdb查看分區情況,如下:
# fdisk -l /dev/sdb
磁盤 /dev/sdb:5368 MB, 5368709120 字節,10485760 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x3cb18b4e
設備 Boot Start End Blocks Id System
/dev/sdb1 2048 10485759 5241856 5 Extended
/dev/sdb5 4096 2052095 1024000 83 Linux
/dev/sdb6 2054144 4102143 1024000 83 Linux
溫馨提示:不要隨意分區,一不留神就會把服務器上的數據全部給分沒了。所以,在執行分區操作的時候,一定要非常的細心!!!
十四、df命令、du命令、磁盤分區