最近在三台服务器上安装了系统,安装的时候选择的是自动分区,创建了一个 LVM 卷组, 结果大部分空间都分给了 HOME , root 很小。 现在要求要将大部分空间重新分给 ROOT。 常用的文件系统如 ext4,xfs 都能很方便地在线调整大小的。 这里就简单记录一下如何调整分区大小的。
Table of Contents
- 制作一个 Linux LiveCD 启动盘
- 减小 HOME 分区大小
- 增大 ROOT 分区大小
- 重启系统
- 在线调整大小
制作一个 Linux LiveCD 启动盘
对系统的 root 分区和 home 分区进行调整大小,可以直接线上调整大小。但是文件系统是 XFS 格式的,不好在线减少空间,就选取了这一个比较稳妥的方法 - 离线调整大小。
下载一个 LiveCD 镜像,然后刻录到 U 盘上, 或者通过 grub2 引导镜像启动。
减小 HOME 分区大小
- 系统自动分区时创建了一个 LVM 卷组
/dev/centos
, 分为 swap
、home
、root
三个卷。 在 Live 系统中,挂载 home 和 root 卷到:
1 2 3
| $ sudo mkdir -p /mnt/{home,root} $ sudo mount /dev/centos/root /mnt/root $ sudo mount /dev/centos/home /mnt/home
|
- 默认分区格式为 XFS,无法减小大小。需要减小后重新格式化。减小之前做好数据备份。 还好
home
卷内容很少。-_-…
1 2
| $ sudo xfsdump -f /mnt/root/home/home.dump /mnt/home $ sudo umount /mnt/home
|
- 减小 home 卷大小
1 2
| $ sudo lvreduce -L 25G /dev/centos/home $ sudo mkfs.xfs -f /dev/centos/home
|
- 恢复 home 数据
1 2 3
| $ sudo mount /dev/centos/home /mnt/home $ sudo xfsrestore -f /mnt/root/home/home.dump /mnt/home $ sudo rm -f /mnt/root/home/home.dump
|
- 若是
ext4
分区,则要简单的多。
1 2 3 4
| $ sudo lvreduce -L 25G /dev/centos/home $ sudo resize2fs /dev/centos/home
$ sudo lvresize --resize --size 25G /dev/centos/home
|
增大 ROOT 分区大小
扩大 root 分区就比较简单了。
- LVM 调整大小。
1
| $ sudo lvextend -l +100%FREE /dev/centos/root
|
xfs
分区确认大小调整
1
| $ sudo xfs_growfs /dev/centos/root
|
ext4
分区确认大小调整
1
| $ sudo resize2fs /dev/centos/root
|
- 确认调整后的分区大小
1 2 3 4 5 6 7 8 9
| $ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931G 0 disk ├─sda1 8:1 0 200M 0 part /boot/efi ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 929.8G 0 part ├─centos-root 253:0 0 900.8G 0 lvm / ├─centos-swap 253:1 0 4G 0 lvm [SWAP] └─centos-home 253:2 0 25G 0 lvm /home
|
重启系统
调整好之后,就可以重启系统了。
在线调整大小
一般分区只能在线扩容,不能减少。鉴于 home 分区没有使用,可以不用重启系统到 Live 系统。 确保没有程序在使用 home 分区后, 备份 home 分区,然后可以按照上面的步骤进行调整大小了。 不过在线调整大小有风险,最好提前做好数据备份。
在这篇 回答中,提到了一种不重启减小 root 分区的方法,不过,如无必要,建议使用 Live 系统减小 root 分区容量。