在服务器运维中,会遇到磁盘空间不足的问题。如果系统使用了 LVM(Logical Volume Manager) 来管理磁盘,就可以很方便地对逻辑卷进行扩容,而不需要重装系统。
1. 查看磁盘使用情况
首先,使用 lsblk
查看磁盘分区布局:
bash
lsblk
输出示例:
bash
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 400G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 249G 0 part
├─centos-root 253:0 0 197G 0 lvm /
├─centos-swap 253:1 0 32G 0 lvm
└─centos-home 253:2 0 20G 0 lvm /home
可以看到:
-
磁盘总大小是 400G;
-
已经分区使用了 250G(vda1 + vda2);
-
还剩下大约 150G 空闲未分配空间。
再确认卷组信息:
bash
vgdisplay
输出关键部分:
bash
VG Name centos
VG Size <249.00 GiB
Alloc PE / Size 63743 / <249.00 GiB
Free PE / Size 0 / 0
说明卷组 centos 当前已经用满,没有空余 PE。
2. 新建分区
使用 fdisk
在 /dev/vda
上创建一个新分区:
bash
fdisk /dev/vda
在交互界面依次输入:
bash
n # 新建分区
p # 主分区
3 # 分区号(已有 vda1,vda2,这里用 vda3)
回车 # 默认起始扇区
回车 # 默认结束扇区,使用剩余所有空间
t # 修改分区类型
3 # 选择 vda3
8e # 设置为 Linux LVM
w # 保存退出
让内核重新加载分区表:
bash
partprobe
这时可以看到新分区 /dev/vda3
。
3. 创建物理卷并加入卷组
创建物理卷(PV):
bash
pvcreate /dev/vda3
扩展卷组 centos:
bash
vgextend centos /dev/vda3
验证:
bash
vgdisplay centos
此时应该能看到 Free PE / Size
大约为 150G。
4. 扩展逻辑卷
查看逻辑卷路径:
bash
lvdisplay
假设根分区逻辑卷是 /dev/centos/root
,执行:
bash
lvextend -l +100%FREE /dev/centos/root
这条命令会将卷组中所有空余空间都分配给根分区。
5. 扩展文件系统
如果根分区文件系统是 XFS(CentOS 7/8 默认):
bash
xfs_growfs /
如果是 ext4 文件系统:
bash
resize2fs /dev/centos/root
6. 验证扩容结果
bash
df -h
输出中可以看到 /
的容量已经增加,大约多了 150G。
总结
通过以上步骤,我们顺利地将磁盘剩余的 150G 空间扩展到 LVM 根分区,整个过程无需重启系统。
LVM 的优势就在于此:能够在业务不中断的情况下灵活扩展存储空间。