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