十四、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)此时弹出虚拟机设置对话框。在左侧选中“磁盘”,然后点击右下方的“添加”按钮,此时会弹出“添加硬件向导”对话框,点击下一步。

十四、df命令、du命令、磁盘分区_df命令_02

(3)“选择磁盘类型”这里保持默认不用更改任何指标,点击下一步。

(4)“选择磁盘”对话框里也保持默认,点击下一步。

(5)“指定磁盘容量”需要修改,设定“最大磁盘大小”为5GB,然后选择“将虚拟磁盘存储为单个文件”单选按钮,如图。

十四、df命令、du命令、磁盘分区_df命令_04

(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

温馨提示:不要随意分区,一不留神就会把服务器上的数据全部给分没了。所以,在执行分区操作的时候,一定要非常的细心!!!