天天看點

Linux下掌控磁盤分區的九大神器Linux下掌控磁盤分區的九大神器

在這篇文章中,我們來了解一些用來檢查你的系統分區的一些指令,這些指令将檢查每個磁盤的分區情況和其它細節,例如總空間容量,已用完的空間和檔案系統等。

像fdisk,sfdisk和cfdisk指令這樣的正常分區工具,不僅可以顯示分區資訊,還可以修改。

Linux下掌控磁盤分區的九大神器Linux下掌控磁盤分區的九大神器

<a target="_blank"></a>

fdisk是檢查磁盤上分區的最常用指令,fdisk指令可以顯示分區和細節,如檔案系統類型,但是它并不報告每個分區的位元組大小。

$ sudo fdisk -l

disk /dev/sda: 500.1 gb, 500107862016 bytes

255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors

units = sectors of 1 * 512 = 512 bytes

sector size (logical/physical): 512 bytes / 512 bytes

i/o size (minimum/optimal): 512 bytes / 512 bytes

disk identifier: 0x30093008

device boot start end blocks id system

/dev/sda1 * 63 146801969 73400953+ 7 hpfs/ntfs/exfat

/dev/sda2 146802031 976771071 414984520+ f w95 ext'd (lba)

/dev/sda5 146802033 351614654 102406311 7 hpfs/ntfs/exfat

/dev/sda6 351614718 556427339 102406311 83 linux

/dev/sda7 556429312 560427007 1998848 82 linux swap / solaris

/dev/sda8 560429056 976771071 208171008 83 linux

disk /dev/sdb: 4048 mb, 4048551936 bytes

54 heads, 9 sectors/track, 16270 cylinders, total 7907328 sectors

disk identifier: 0x0001135d

/dev/sdb1 * 2048 7907327 3952640 b w95 fat32

每個裝置都單獨顯示其詳細資訊:容量大小,扇區數,裝置id及其包含的每個分區。

sfdisk是另一種跟fdisk用途相似的實用工具,但具有更多的功能。它能夠以mb為機關顯示每個分區的大小。

$ sudo sfdisk -l -um

disk /dev/sda: 60801 cylinders, 255 heads, 63 sectors/track

warning: extended partition does not start at a cylinder boundary.

dos and linux will interpret the contents differently.

units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0

device boot start end mib #blocks id system

/dev/sda1 * 0+ 71680- 71681- 73400953+ 7 hpfs/ntfs/exfat

/dev/sda2 71680+ 476938 405259- 414984520+ f w95 ext'd (lba)

/dev/sda3 0 - 0 0 0 empty

/dev/sda4 0 - 0 0 0 empty

/dev/sda5 71680+ 171686- 100007- 102406311 7 hpfs/ntfs/exfat

/dev/sda6 171686+ 271693- 100007- 102406311 83 linux

/dev/sda7 271694 273645 1952 1998848 82 linux swap / solaris

/dev/sda8 273647 476938 203292 208171008 83 linux

disk /dev/sdb: 1020 cylinders, 125 heads, 62 sectors/track

warning: the partition table looks like it was made

for c/h/s=*/54/9 (instead of 1020/125/62).

for this listing i'll assume that geometry.

/dev/sdb1 * 1 3860 3860 3952640 b w95 fat32

start: (c,h,s) expected (4,11,6) found (0,32,33)

end: (c,h,s) expected (1023,53,9) found (492,53,9)

/dev/sdb2 0 - 0 0 0 empty

/dev/sdb3 0 - 0 0 0 empty

/dev/sdb4 0 - 0 0 0 empty

cfdisk是一個基于ncurses(提供字元終端處理庫,包括面闆和菜單)的帶有互動式使用者界面的linux分區編輯器,它可以用來列出現有分區以及建立或修改這些分區。

下面是一個如何使用cfdisk來列出分區的例子。

Linux下掌控磁盤分區的九大神器Linux下掌控磁盤分區的九大神器

linux cfdisk disk partitions

cfdisk一次隻能列出一個分區,是以如果你需要看某一磁盤的細節,可以把該磁盤的裝置名作為cfdisk的參數。

$ sudo cfdisk /dev/sdb

parted是另一個指令行實用程式,可以列出分區;如果需要的話,也可進行修改。

下面是一個例子,列出了詳細的分區資訊。

$ sudo parted -l

model: ata st3500418as (scsi)

disk /dev/sda: 500gb

sector size (logical/physical): 512b/512b

partition table: msdos

number start end size type file system flags

1 32.3kb 75.2gb 75.2gb primary ntfs boot

2 75.2gb 500gb 425gb extended lba

5 75.2gb 180gb 105gb logical ntfs

6 180gb 285gb 105gb logical ext4

7 285gb 287gb 2047mb logical linux-swap(v1)

8 287gb 500gb 213gb logical ext4

model: sony storage media (scsi)

disk /dev/sdb: 4049mb

number start end size type file system flags

1 1049kb 4049mb 4048mb primary fat32 boot

df是不是一個分區工具,但它列印出挂裝檔案系統的細節,df可以列出甚至不是真實的磁盤分區的檔案系統。

這裡是個簡單的例子:

$ df -h

filesystem size used avail use% mounted on

/dev/sda6 97g 43g 49g 48% /

none 4.0k 0 4.0k 0% /sys/fs/cgroup

udev 3.9g 8.0k 3.9g 1% /dev

tmpfs 799m 1.7m 797m 1% /run

none 5.0m 0 5.0m 0% /run/lock

none 3.9g 12m 3.9g 1% /run/shm

none 100m 20k 100m 1% /run/user

/dev/sda8 196g 154g 33g 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1

/dev/sda5 98g 37g 62g 38% /media/4668484a68483b47

隻有以 /dev 開始的檔案系統才是實際的裝置或分區。

可以使用grep指令來篩選出實際的硬碟分區或檔案系統。

$ df -h | grep ^/dev

要隻顯示真正的磁盤分區與分區類型,可以這樣使用df:

$ df -h --output=source,fstype,size,used,avail,pcent,target -x tmpfs -x devtmpfs

filesystem type size used avail use% mounted on

/dev/sda6 ext4 97g 43g 49g 48% /

/dev/sda8 ext4 196g 154g 33g 83% /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1

/dev/sda5 fuseblk 98g 37g 62g 38% /media/4668484a68483b47

請注意,df隻顯示已挂載的檔案系統或分區,并不是所有。

它是用python寫的df的改進版本,以易讀的方式列印出所有磁盤分區。

$ pydf

filesystem size used avail use% mounted on

/dev/sda6 96g 43g 48g 44.7 [####.....] /

/dev/sda8 195g 153g 32g 78.4 [#######..] /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1

/dev/sda5 98g 36g 61g 37.1 [###......] /media/4668484a68483b47

另外,pydf被限制為僅顯示已挂載的檔案系統。

列出了所有的塊儲存設備,包括磁盤分區和CD光牒驅動器。細節包括所有分區/塊總大小和挂載點。

它不會報告分區上的已使用和空閑磁盤空間。

$ lsblk

name maj:min rm size ro type mountpoint

sda 8:0 0 465.8g 0 disk

├─sda1 8:1 0 70g 0 part

├─sda2 8:2 0 1k 0 part

├─sda5 8:5 0 97.7g 0 part /media/4668484a68483b47

├─sda6 8:6 0 97.7g 0 part /

├─sda7 8:7 0 1.9g 0 part [swap]

└─sda8 8:8 0 198.5g 0 part /media/13f35f59-f023-4d98-b06f-9dfaebefd6c1

sdb 8:16 1 3.8g 0 disk

└─sdb1 8:17 1 3.8g 0 part

sr0 11:0 1 1024m 0 rom

如果沒有挂載點,這就意味着檔案系統未安裝,而對于cd/dvd這意味着沒有插入CD光牒。

lsblk能夠顯示每個裝置的更多資訊,如标簽和型号,更多請檢視資訊手冊。

顯示塊裝置(分區和存儲媒體)屬性,例如uuid和檔案系統類型,不報告分區空間。

$ sudo blkid

/dev/sda1: uuid="5e38be8b38be6227" type="ntfs"

/dev/sda5: uuid="4668484a68483b47" type="ntfs"

/dev/sda6: uuid="6fa5a72a-ba26-4588-a103-74bb6b33a763" type="ext4"

/dev/sda7: uuid="94443023-34a1-4428-8f65-2fb02e571dae" type="swap"

/dev/sda8: uuid="13f35f59-f023-4d98-b06f-9dfaebefd6c1" type="ext4"

/dev/sdb1: uuid="08d1-8024" type="vfat"

hwinfo是一個通用的硬體資訊的工具,可以用來列印出磁盤和分區表,但是輸出不再像上面的指令那樣列印每個分區的詳細資訊。

$ hwinfo --block --short

disk:

/dev/sda st3500418as

/dev/sdb sony storage media

partition:

/dev/sda1 partition

/dev/sda2 partition

/dev/sda5 partition

/dev/sda6 partition

/dev/sda7 partition

/dev/sda8 partition

/dev/sdb1 partition

cdrom:

/dev/sr0 sony dvd rw dru-190a

parted的輸出可以得到簡潔而完整的不同分區的概述、其上的檔案系統以及總空間。pydf和df它們一樣,隻是被限制為隻顯示已挂載檔案系統。

fdisk和sfdisk顯示完整大量的資訊,需要花些時間來解釋。cfdisk是一個互動式分區工具,每次顯示一個單一的裝置。

來嘗試下這些指令吧,别忘了在下面評論喲!

原文釋出時間:2014-07-13

本文來自雲栖合作夥伴“linux中國”

繼續閱讀