CentOS 7 根目录 LVM 扩容
November 8, 2024About 2 min
CentOS 7 根目录 LVM 扩容
CentOS 默认用 LVM 管理磁盘,根目录满了不一定要重装。下面四种场景对应实际工作里最常碰到的几种情况:磁盘后面还有未分配空间、/home 占着空间但根目录不够、加了块新盘、在现有盘上新开分区。四种最后都落到同样三步:把空间塞进卷组 → lvextend 扩逻辑卷 → xfs_growfs 让文件系统认账。
开始前先 lsblk 看清楚现在的分区和卷组布局,df -h 看根目录还剩多少,别对着错的设备名敲命令。
场景一:磁盘剩余空间扩到分区,再扩根目录
适用于 /dev/sda 上分区 2 后面还有没分配的空间。
# 查看磁盘情况
lsblk
# 将剩余可用空间分配到 /dev/sda2
parted /dev/sda resizepart 2 100%
# 刷新物理卷
pvresize /dev/sda2
# 查看 pv 的 Free 项是否显示了可用空间
pvdisplay
# 扩展逻辑卷
lvextend -l +100%FREE /dev/mapper/centos-root
# 使扩展生效
xfs_growfs /dev/mapper/centos-root
# 查看
df -h
场景二:把 /home 的空间挪给根目录
很多默认安装把大半空间分给了 /home,实际用不到。这里先卸载 /home、删掉它的逻辑卷,把腾出来的空间给 centos-root,再重新建一个小的 /home。
# 取消挂载 /home
umount /home
# 删除 home 逻辑卷
lvremove /dev/mapper/centos-home
# 把腾出的空间扩展到根目录
lvextend -L +150G /dev/mapper/centos-root
# 使扩展生效
xfs_growfs /dev/mapper/centos-root
# 重新创建 home
lvcreate -L 5G -n home centos
# 创建文件系统
mkfs.xfs /dev/mapper/centos-home
# 重新挂载
mount /dev/mapper/centos-home /home/
# 查看
df -h
卸载 /home 前确认没进程占用它(lsof /home),否则 umount 会报 busy。
场景三:新增一块磁盘扩容
加了块新盘(如 /dev/sdb),整盘做成物理卷加进卷组。
# 查看磁盘情况
lsblk
# 创建物理卷
pvcreate /dev/sdb
# 将磁盘扩展到卷组 centos
vgextend centos /dev/sdb
# 扩展逻辑卷
lvextend -l +100%FREE /dev/mapper/centos-root
# 使扩展生效
xfs_growfs /dev/mapper/centos-root
# 查看
df -h
场景四:在现有磁盘上新建分区扩容
盘上还有空间但没法直接 resizepart(比如分区表里中间空着),就新建一个分区再做成 PV。
# 新增分区 3(按 n,一路回车,最后 w 保存,q 退出)
fdisk /dev/sda
# 创建物理卷(/dev/sda3 来自上一步的新建分区)
pvcreate /dev/sda3
# 将磁盘加入卷组 centos
vgextend centos /dev/sda3
# 扩展逻辑卷
lvextend -l +100%FREE /dev/mapper/centos-root
# 使扩展生效
xfs_growfs /dev/mapper/centos-root
# 查看
df -h
fdisk 新建分区后内核可能没立刻识别,如果 pvcreate 找不到设备,跑一下 partprobe 或重启。XFS 用 xfs_growfs,如果根文件系统是 ext4 则换成 resize2fs。