在这篇文章中,我们来了解一些用来检查你的系统分区的一些命令,这些命令将检查每个磁盘的分区情况和其它细节,例如总空间容量,已用完的空间和文件系统等。
像fdisk,sfdisk和cfdisk命令这样的常规分区工具,不仅可以显示分区信息,还可以修改。

<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 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被限制为仅显示已挂载的文件系统。
列出了所有的块存储设备,包括磁盘分区和光盘驱动器。细节包括所有分区/块总大小和挂载点。
它不会报告分区上的已使用和空闲磁盘空间。
$ 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这意味着没有插入光盘。
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中国”