1. 前言

以UEFI模式安装CentOS 7时,默认会划出几个分区:

  • /boot:xfs
  • /boot/efi:vfat
  • /:lvm+xfs
  • /home:lvm+xfs
  • /swap:lvm+swap

其中前两个分区大小固定,只用于存放用于启动系统的相关内核文件,后三个分区默认使用lvm逻辑卷。

lvm是内核块设备和物理设备之间的一个抽象层,可以将多块物理磁盘组合起来形成一个存储池,也支持不停机的情况下动态调整逻辑卷大小。

笔者自用的VPS和开发机一般都直接使用root账号,root账户文件、默认软件安装位置、docker镜像等也存储在根分区下,因为根分区空间告急,于是尝试了下删除无用逻辑卷并扩容根分区,调整后的结果如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
➜  ~ lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0              11:0    1  1024M  0 rom
sda               8:0    0   512G  0 disk
├─sda2            8:2    0     1G  0 part /boot
├─sda3            8:3    0 510.8G  0 part
│ └─centos-root 253:0    0 510.8G  0 lvm  /
└─sda1            8:1    0   200M  0 part /boot/efi
➜  ~ df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  7.9G     0  7.9G   0% /dev
tmpfs                   tmpfs     7.9G     0  7.9G   0% /dev/shm
tmpfs                   tmpfs     7.9G  8.5M  7.9G   1% /run
tmpfs                   tmpfs     7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       511G   12G  499G   3% /
tmpfs                   tmpfs     7.9G  4.0K  7.9G   1% /tmp
/dev/sda2               xfs      1014M  125M  889M  13% /boot
/dev/sda1               vfat      200M   12M  189M   6% /boot/efi
tmpfs                   tmpfs     1.6G     0  1.6G   0% /run/user/0
➜  ~ cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Jun 24 22:51:30 2019
#
# 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
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=3e56effb-dcb3-4af5-ba4f-fb4ecda29738 /boot                   xfs     defaults        0 0
UUID=36E8-0DB4          /boot/efi               vfat    umask=0077,shortname=winnt 0 0

2. 操作步骤

2.1 home分区卸载与备份

笔者的home目录中无数据,因此跳过备份,如果有相关程序使用home目录,也需要先关闭。

执行以下命令卸载/home分区

1
umount /home

2.2 swap分区关闭与卸载

这里直接关闭掉swap分区,后续有需要时使用swap文件代替。

1
2
swapoff -a
umount /swap

2.3 /etc/fstab 修改

/etc/fstab 文件中保存着开机时相关分区的挂载配置,编辑该文件,删除掉home目录与swap分区的挂载配置。

2.4 lvm删除与扩容

使用lvs命令获取逻辑卷信息

1
2
3
4
5
➜  ~ lvs
  LV   VG     Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <100.0g
  home centos -wi-ao---- <400.0g
  swap centos -wi-ao---- <10.8g

删除home与swap逻辑卷

1
2
lvremove /dev/mapper/centos-home
lvremove /dev/mapper/centos-swap

根分区逻辑卷扩容,分配所有空闲空间

1
lvresize -l +100%FREE /dev/mapper/centos-root

2.5 xfs扩容

lvm卷扩容后还需要执行xfs扩容,才能使用新分配的空间

1
xfs_growfs /dev/mapper/centos-root

2.6 配置同步

1
dracut --regenerate-all --force