LVM 扩容操作记录
这篇文章记录在 Linux 中给已有 LVM 逻辑卷扩容的基本流程。场景是先在虚拟化平台上追加一块新硬盘,再把它并入现有卷组,最终扩展到业务逻辑卷和文件系统。
适用场景
这种做法适用于下面这类常见场景:
- 业务目录空间不足,但现有卷组仍然可以继续扩展
- 虚拟机已经在平台层面新增了磁盘
- 希望把新空间直接并入现有逻辑卷,而不是新挂一个单独目录
第一步:在虚拟化平台添加硬盘
先在 VMware vSphere、Proxmox、Hyper-V 等平台中,为目标虚拟机添加一块新的 SCSI 硬盘,例如 100GB。
建议同时确认两点:
- 控制器类型使用 SCSI。
- 新磁盘已经真正挂载到目标虚拟机。
第二步:在 Linux 中识别新硬盘
登录系统后,先确认操作系统已经识别到新磁盘。
sudo lsblk示例输出如下:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 98.5G 0 part
├─datavg-db2data_lv 253:0 0 88.5G 0 lvm /db2data
└─datavg-other_lv 253:1 0 10G 0 lvm /other
sdn 8:16 0 100G 0 disk
sr0 11:0 1 1024M 0 rom在这个例子里,新盘是 /dev/sdn。实际操作时请以自己的设备名为准。
如果 lsblk 没有立刻显示新盘,可以先扫描 SCSI 总线:
# 重新扫描SCSI主机总线(host# 请根据您的系统调整,通常是host0)
echo "- - -" | sudo tee /sys/class/scsi_host/host0/scan
# 如果不行,可以尝试扫描所有主机
for host in /sys/class/scsi_host/host*/scan; do echo "- - -" | sudo tee $host; done重新扫描后,再执行一次 lsblk 确认磁盘已经出现。
第三步:创建物理卷
假设新盘识别为 /dev/sdn,可以直接在整块磁盘上创建物理卷,不再额外分区:
sudo pvcreate /dev/sdn执行成功后,LVM 元数据会直接写入这块磁盘。
第四步:扩展卷组
把新建好的物理卷并入现有卷组。文中的卷组名示例是 datavg:
sudo vgextend datavg /dev/sdn如果不确定卷组名称,可以先用 vgdisplay 查看。执行完成后,再用 vgdisplay datavg 确认 Free PE / Size 是否已经增加。
第五步:扩展逻辑卷
接下来把卷组里新增出来的空间分配给业务逻辑卷。
sudo lvextend -l +100%FREE /dev/mapper/datavg-datalv如果不想一次性吃满全部空闲空间,也可以把 +100%FREE 改成具体大小,例如 -L +50G。
第六步:扩展文件系统
逻辑卷扩容完成后,文件系统本身也要同步扩展,否则业务目录看不到新增空间。
# 扩展文件系统以使用新的空间(假设是XFS,挂载在 /db2data)
sudo xfs_growfs /db2data
# 如果是 ext4,命令如下:
sudo resize2fs /dev/mapper/datavg-datalv这里要特别注意文件系统类型:
- 如果是
XFS,对挂载点执行xfs_growfs - 如果是
ext4,对逻辑卷执行resize2fs
验证结果
扩容完成后,建议至少检查下面几项:
lsblk确认新盘、卷组和逻辑卷关系正常df -h确认挂载点容量已经增长lvdisplay或lvs确认逻辑卷大小已经更新- 业务目录读写正常,没有因为扩容引入挂载异常
小结
整个流程其实可以概括成四步:
- 加盘
pvcreatevgextendlvextend+ 文件系统扩容
只要新盘识别没问题,卷组和逻辑卷名称确认正确,LVM 扩容本身并不复杂。最容易出错的地方通常是把设备名写错,或者扩了 LV 但忘记扩文件系统。