lvextend 是什么
lvextend 给 LVM 逻辑卷追加空间:从它所属卷组(VG)的空闲物理扩展(PE)里划出一部分给逻辑卷(LV),-r 参数顺带把文件系统扩到新容量(ext4 调用 resize2fs,XFS 调用 xfs_growfs)。它是服务器扩容最常用的一条命令,但有个硬前提:卷组里必须有剩余空间。VG 用尽时要先 vgextend 把新盘或分区加进卷组,或者当云盘已经扩容而 PV 没跟上时先执行 pvresize,再回头扩 LV。
基本信息
| 适用平台 | Linux(lvm2 套件,主流发行版默认安装) |
|---|---|
| 命令语法 | lvextend -L +大小|-l +PE数或百分比 [-r] /dev/卷组/逻辑卷 |
| 常用选项 | -L 按容量(支持 +50G 相对写法) -l 按 PE 数或百分比(+100%FREE) -r 同步扩文件系统 -f 跳过确认询问 |
| 前置检查 | vgs 看卷组剩余 VFree、lvs 看当前 LV 大小、df -h 看文件系统用量 |
| 权限说明 | 需要 root |
典型使用场景
- 云盘扩容后:云控制台把盘扩到 200G,接着在系统里把 LV 与文件系统一起撑大
- 卷组有余量:某业务卷写入增长快,直接从 VG 剩余空间补 50G
- 新盘入池:vgextend 把新盘加入卷组,再按需分配给多个逻辑卷
- 在线扩容:业务不中断地执行 lvextend -r,把数据卷从 100G 扩到 150G
- 吃满剩余:用 -l +100%FREE 把卷组最后的空间全部分给指定 LV
常用示例
常用示例
vgs # 先看卷组剩余空间 VFree
lvs /dev/vg0/data # 当前 LV 大小与属性
lvextend -L +50G /dev/vg0/data # 只扩 LV,不动文件系统
lvextend -r -L +50G /dev/vg0/data # 推荐:同时扩文件系统
lvextend -l +100%FREE /dev/vg0/data # 用掉卷组全部剩余空间
vgextend vg0 /dev/sdc1 # 卷组不够时先把新盘加进去
pvresize /dev/sdb # 云盘已扩容但 PV 未跟上时先扩 PV
df -h /data # 最后核对文件系统可用空间扩容命令分工
| 命令 | 作用 | 所处层级 |
|---|---|---|
| pvresize | 把物理卷扩到设备实际大小 | 物理卷层,云盘扩容后的第一步 |
| vgextend | 把新物理卷加入卷组 | 卷组层,增加可用池子 |
| lvextend | 从卷组分配空间给逻辑卷 | 逻辑卷层,本条命令 |
| resize2fs / xfs_growfs | 把文件系统扩到逻辑卷大小 | 文件系统层,-r 会自动调用 |
顺序永远自上而下失败、自下而上成功:先让底层设备变大(分区、PV、云盘),再 lvextend,最后扩文件系统。顺序反了会报文件系统已达上限而无从下手。
XFS 只能增长不能缩小,ext4 虽然支持 resize2fs 缩小但风险明显更高。生产环境不要使用 lvreduce 回收空间,容量规划宁可留富余。