在服务器上装 CentOS 的时候,选择了让安装程序自动为磁盘进行分区,结果 2T 的硬盘只给 centos-root 分了 50 个 G。调研了一下,即使不重装系统也能重新进行分区,记录如下。

Environment:CentOS 7.6.1810

1. Procedure

首先对 centos-home 进行备份,并卸载分区:

$ tar cvf /tmp/home.tar /home # 备份home分区
$ fuser -km /home/ # 杀死正在使用home分区的进程
$ umount /home/ # 卸载home目录
$ lvremove /dev/mapper/centos-home # 卸载centos-home分区

接下来往 centos-root 上新增 500G 的空间(具体看物理机的磁盘大小),并扩展 centos-root 文件系统:

$ lvextend -L +500G /dev/mapper/centos-root # 追加空间到centos-root
$ xfs_growfs /dev/mapper/centos-root # 扩展centos-root

扩展完 centos-root 后,对 centos-home 进行重新分配以及挂载,最后将原来备份的数据进行恢复:

$ lvcreate -l +100%FREE -n /dev/mapper/centos-home # 将磁盘剩余空间全部分配给centos-home
$ mkfs.xfs /dev/mapper/centos-home # 创建文件系统
$ mount /dev/mapper/centos-home # 挂载centos-home
$ tar xvf /tmp/home.tar -C /home/ # 解压备份数据
$ cd /home/home/ && mv * ../ # 解压后多了一层home目录,需要额外处理

最后查看磁盘分区情况,已经重新分配完毕,可以正常使用了:

$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                  63G     0   63G    0% /dev
tmpfs                     63G   29M   63G    1% /dev/shm
tmpfs                     63G   20M   63G    1% /run
tmpfs                     63G     0   63G    0% /sys/fs/cgroup
/dev/mapper/centos-root  550G   56G  495G   11% /
/dev/sda2               1014M  210M  805M   21% /boot
/dev/sda1                200M   12M  189M    6% /boot/efi
tmpfs                     13G  8.0K   13G    1% /run/user/42
tmpfs                     13G     0   13G    0% /run/user/0
/dev/mapper/centos-home  1.3T  5.4G  1.3T    1% /home
tmpfs                     13G   20K   13G    1% /run/user/1000

2. References

linux 使用–根目录空间不足,追加空间到根目录下 - 拓荒者
4 lvcreate Command Examples on Linux - skytech