1. 程式人生 > >十四、df命令、du命令、磁盤分區

十四、df命令、du命令、磁盤分區

設備 容易出錯 識別 type 單位 out 方法 cgroup 註意

十四、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命令、磁盤分區