在管理 Linux 系统时,管理员最常干的一件事情就是常看硬盘的占用空间,如果存在磁盘空间即将不足的情况,那么就需要尽快进行扩容操作。这里告诉大家一个小的经验,就是有时候虽然系统的磁盘空间还是足够的,但是却无法新建文件或者出现磁盘无法写入的情况,这个时候不要困惑或者意为服务器出现什么问题了,这种情况一多半都是因为 inode 节点用完导致的。
首先来介绍几个可以查看系统磁盘使用情况的命令:
1. df
df
这个命令可以用来在 Linux 系统中查看当前磁盘的挂载目录以及所使用的大小,是一个使用频度比较高的命令。这个命令一般会在安装系统的时候就自带的有,所以不用下载。下面的命令使用了 -Th
这两个选项,这两个选项是很多管理员的必备参数,分别是为了打印出当前挂载磁盘的文件系统类型以及大小的显示。
[root@VM-16-250-centos ~]$ df -Th
Filesystem Type Size Used Available Use% Mounted on
devtmpfs devtmpfs 395.1M 0 395.1M 0% /dev
tmpfs tmpfs 409.5M 24.0K 409.4M 0% /dev/shm
tmpfs tmpfs 409.5M 432.0K 409.0M 0% /run
tmpfs tmpfs 409.5M 0 409.5M 0% /sys/fs/cgroup
/dev/vda1 ext4 9.8G 6.1G 3.1G 66% /
/dev/vdb ext4 9.8G 36.2M 9.2G 0% /data
tmpfs tmpfs 81.9M 0 81.9M 0% /run/user/0
/dev/vdc ext4 9.8G 36.0M 9.2G 0% /zzz
/dev/vdd ext4 9.8G 36.0M 9.2G 0% /zzz
2. lsblk
这个命令的作用就是打印出当前系统中所有块设备的信息还有逻辑分区。并且还会显示那些块设备之间的依赖关系,但它并不会对 RAM 盘的信息进行打印。一般块设备包括闪存盘、硬盘还有 CD-ROM 等等。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 41.1M 0 rom
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
vdb 253:16 0 10G 0 disk /data
3. fdisk
这个命令是本文的重头戏,前两个命令都是查看系统磁盘空间或者块设备信息的,这个命令是用来查看当前系统分区表的信息的。一般对磁盘进行分区也会用到它。总结来说 fdisk
是 Linux 系统中一款强大的磁盘分区工具。
[root@VM-16-250-centos ~]$ fdisk -l
Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 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
Disklabel type: dos
Disk identifier: 0x89ee0607
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 20971486 20969439 10G 83 Linux
Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 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
fdisk -l
这个命令会输出系统中每块磁盘的分区大小,从上面的输出我们可以得到,/dev/vda
这块磁盘它的大小是 10 GiB。除此之外,fdisk
命令还有其它的功能就是它可以用来进行磁盘划分,可以划分为若干个分区,严格来说是四个分区,其实前三个为主分区,还可以在创建一个扩展分区,而扩展分区又可以划分很多的小分区。这个工具对于管理员来说真的是很方便了。
这里对 fdisk -l
命令的输出做一个详细的说明,主要看以下这块的内容:
这块表示的就是在当前 Linux 系统上,第一块硬盘的第一个分区。怎么区分它是第几块硬盘第几个分区呢?其实从上面命令的输出就可以看出来,在上面显示中,分别出现了 /dev/vda
跟 /dev/vdb
两个盘,这就代表是当前系统中所有的磁盘数,有两块,a 表示第一块,b 表示第二块。有了磁盘之后要对磁盘进行分区,大家看上面的截图,Device 列下的 /dev/vda1
这就表示第一个区,它用序号来表示区。第二列 Boot 是用来表示引导,第三列 Start 很好理解,就是这个分区是从磁盘的哪个扇区开始的,End 就表示从哪个扇区结束的。这时候再结合上面命令的输出,可以发现,/dev/vda 这个磁盘只有一个区,并且不可以在创建多余的分区了,因为从扇区的开始和结束看得出来,这个分区占了整个磁盘的大小。其实通过 Size 列也可以看出来,倒数第二列是 Id,Id 其实跟后面的 Type 表示用一个意思,只是 Id 看起来不那么好理解,所以 Type 算是对它的解释。一般在进行分区操作的时候,需要 Id 来确定当前分区的类型。
相信说到这里,大部分已经对 fdisk
有了大概的了解,但其实 fdisk
这个命令值得深掘的地方还有很多,后续文章会慢慢为大家介绍。