磁盘分区信息的获取是对磁盘分区维护的重要环节,如何快速获取有效的信息非常重要。本小节将介绍磁盘分区的命名规则和磁盘分区信息的获取这两部分内容。
对于CentOS中的硬盘类型,常见的主要有SCSI和IDE两种,其中SCSI类硬盘的命名格式为/dev/sdx,而IDE类硬盘的命名格式为/dev/hdx(其中,x表示硬盘的块数,如第1块为a,则第2块为b)。这两类硬盘中,SCSI类硬盘使用较为广泛。
对于不同类型的硬盘,其所支持的分区数量有所不同,磁盘分区可以有多个,但它们之间的分区号不能相同,而且每个分区的名称都与该分区的(磁盘)位置有关(如/dev/sda1表示第一块磁盘的第一个分区)。另外,磁盘设备(包括U盘、光盘等外设)在系统中都被视为文件系统,并被映射到/dev/目录下,不同类型的设备被映射后的名称也存在差异。
系统磁盘类型和分区的命名规则如表4-1所示。
表4-1 系统磁盘类型和分区的命名规则
如果磁盘的分区编号等于或超过5(如/dev/sda5、/dev/sda6等),就说明这块磁盘一定存在逻辑分区,如/dev/sda5表示第一块SCSI类磁盘上的第一个逻辑分区,而/dev/sda6则表示第二个逻辑分区。
另外,如果系统上安装了XEN、KVM等虚拟机,那么这些虚拟机的磁盘分区在命名上也有所不同。XEN类虚拟机的磁盘命名采用/dev/xvdb的方式,而KVM类虚拟机的磁盘命名采用/dev/vdb的方式。对于CD/DVD光盘来说,它的命名方式是/dev/srN(N表示整数)。
对于系统磁盘空间信息的获取是对系统空间维护的必要过程,只有获取到相关的信息,才能够对系统空间进行维护。获取的信息类型需要根据实际的需要和相关的命令来决定,因此明确要获取的信息和所需执行的命令非常重要,这也是运维工作需要掌握的基本技能。
系统的磁盘起码要有根分区(/)、/boot分区和/swap分区3个分区。其中,根分区是一个特殊的分区,它是系统根目录所在的区,用于存储系统正常运行所需的数据;/boot分区用于存储引导系统启动时所需的数据;swap分区是磁盘上一个用于暂存数据的虚拟内存区,所存储的数据是从物理内存中调出来的不常用数据,在系统需要时调出来。
对于系统中的SCSI类磁盘,默认第一块磁盘命名为/dev/sda,并以数字为分区的编号。对于系统中的这类磁盘,可以在/dev/目录下找到。系统这类磁盘的块数、磁盘分区及相关的信息等都可以使用ls或ll命令来查看,以下命令可以查看分区的情况:
[root@centos-s8 ~]# ll /dev/sd* brw-rw---- 1 root disk 8, 0 Dec 27 13:51 /dev/sda brw-rw---- 1 root disk 8, 1 Dec 27 13:51 /dev/sda1 brw-rw---- 1 root disk 8, 2 Dec 27 13:51 /dev/sda2 brw-rw---- 1 root disk 8, 16 Dec 27 13:51 /dev/sdb
当然,若要获取某个磁盘更为详细的信息,则可以执行fdisk命令,如使用fdisk命令获取磁盘/dev/sda的信息:
[root@centos-s8 ~]# fdisk -l /dev/sda Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 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: 0x5d0b20c8 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 2099199 2097152 1G 83 Linux /dev/sda2 2099200 31457279 29358080 14G 8e Linux LVM
在磁盘空间的日常维护中,要获取磁盘的使用情况,使用df命令即可,可以快速获取到分区使用情况的概要信息,以下命令中带有-h表示以GB为单位输出(不够GB的以MB为单位):
[root@centos-s8 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 956M 0 956M 0% /dev tmpfs 975M 0 975M 0% /dev/shm tmpfs 975M 8.6M 967M 1% /run tmpfs 975M 0 975M 0% /sys/fs/cgroup /dev/mapper/cs-root 13G 1.5G 11G 12% / /dev/sda1 1014M 176M 839M 18% /boot tmpfs 195M 0 195M 0% /run/user/0
要定位哪个目录使用多大的磁盘空间或该目录数据的大小,可以使用du命令来查找计算。比如,想要知道/etc/目录下存放数据的大小,可以执行以下命令来统计:
[root@centos-s8 ~]# du -sh /etc/ 22M /etc/
要是想知道/etc/目录下各个文件的大小,可以执行以下命令:
[root@centos-s8 ~]# du -sh /etc/* …… 8.0K /etc/X11 4.0K /etc/xattr.conf 0 /etc/xdg 0 /etc/xinetd.d 0 /etc/yum 0 /etc/yum.conf 36K /etc/yum.repos.d
du命令在查找是哪个文件占用磁盘方面还是比较有效的,可以直接定位到具体的文件且能够统计文件的大小,这对运维工作有很大的帮助。
系统启动时,磁盘分区上的文件系统是以挂载的方式加载到系统上的,这些需要被挂载的文件系统都被记录在/etc/fstab文件中,也就是说该文件记录着需要挂载的文件系统及其他相关的信息,比如分区名称、挂载点、分区的文件系统类型等。以下是/etc/fstab文件中的配置信息:
# /etc/fstab # Created by anaconda on Thu Dec 10 13:33:14 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/cs-root / xfs defaults 0 0 UUID=3412db20-7904-4974-a773-35cdf0e31d22 /boot xfs defaults 0 0 /dev/mapper/cs-swap none swap defaults 0 0
当然,要获取某个磁盘更为详细的信息时可以执行fdisk命令,如使用该fdisk命令来获取磁盘/dev/sda的信息。
在额外添加磁盘分区时常使用/etc/fstab文件配置自动挂载文件系统,但在配置的过程中需要注意参数格式的问题,在挂载一个分区时配置参数的顺序组成是文件系统的路径、挂载点、文件系统类型、设置文件系统的值(如只读、读写等)、和不备份(0表示不备份)、系统启动时不检查(0表示不检查)这几个部分,但实际上这些参数并不是全都用上,有时只是用其中一些必要的参数而已。
/etc/fstab文件是在系统启动中就被初始化,而/etc/rc.local文件是在系统启动结束后被执行。这两个文件在一定范围内能够实现相同的作用,但根据这两个文件执行的顺序,建议在挂载文件系统时使用/etc/fstab文件来实现,而在配置启动服务进程时使用/etc/rc.local文件。
当然,系统要挂载的文件系统不止这些,关于其他被挂载的文件系统,要查看时可以使用mount命令,包括手动挂载的文件系统在内。
[root@centos-s8 ~]# mount …… systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=35,pgrp=1, timeout=0,minproto=5,maxproto=5,direct,pipe_ino=24012) debugfs on /sys/kernel/debug type debugfs (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M) mqueue on /dev/mqueue type mqueue (rw,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) /dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=199620k,mode=700)
另外,卸载文件系统时可以使用umount命令,执行该命令卸载文件系统时指定挂载点就可以,比如要卸载/mnt/的挂载点,可以执行以下命令:
[root@centos-s8 ~]# umount /mnt/
对于CenOS-S 8系统,在安装并创建分区时已经自动创建了LVM的文件系统。对于LVM来说,包括物理卷、卷组及逻辑卷三部分,这些信息都可以执行相关的命令来获取。比如,要获取卷的名称、路径及相关的信息等,可以使用pvscan、vgscan和lvscan命令对系统中的卷进行扫描并输出信息。
获取系统中物理卷的相关信息:
[root@centos-s8 ~]# pvscan
PV /dev/sda2 VG cs lvm2 [<14.00 GiB / 0 free]
Total: 1 [<14.00 GiB] / in use: 1 [<14.00 GiB] / in no VG: 0 [0 ]
从输出的信息可以看出,系统只有一个物理卷(/dev/sda2),该卷小于14GB。其实,通过分区的名称可以看出,/dev/sda2分区是系统的根分区,因为/dev/sda1是系统启动的引导分区,所以接下来的分区就是根分区。
要想获取系统卷组的信息,可以执行以下vgscan命令:
[root@centos-s8 ~]# vgscan Found volume group "cs" using metadata type lvm2
从输出的信息来看,系统只有一个卷组。
最后查看逻辑卷的信息,可执行lvscan命令:
[root@centos-s8 ~]# lvscan ACTIVE '/dev/cs/swap' [1.50 GiB] inherit ACTIVE '/dev/cs/root' [<12.50 GiB] inherit
其中的逻辑卷/dev/cs/swap是系统的交换分区(或称虚拟内存),它并不是必须存在的,不过对于物理内存比较小的情况,建议保留该分区。另外,该分区的大小与物理内存存在一定的关系,因此在划分该分区时,建议先了解物理内存的大小,再设置该交换分区的值。