lvm卷创建删除扩容坏盘移出卷组操作
lvm卷创建删除扩容坏盘移出卷组操作
查看lv信息常用命令:
1 | # 查看pv是否有数据 |
注意事项:
- 常见扩容命令用法
1
2
3
4
5
6# 创建时只创建2G
lvcreate -L 2G -n lv_test vg_test
# 在原来的基础上+2G
lvextend -L +2G /dev/mapper/vg_test-lv_test
# 扩容到5G
lvextend -L 5G /dev/mapper/vg_test-lv_test
详情如下:
创建
1 | # 创建lvm逻辑卷 |
扩容lvm卷组
1 | # 扩容lvm卷组过程 |
删除lvm卷
1 | # 删除lvm卷 |
坏盘移出卷组
写在前面:
注意事项(下方坏盘移除出现的部分问题看此处):
- 坏盘sdb修复完成拔出机器后 重启服务器 会发现系统中对应的盘符发生了改变
- 卸载磁盘的时候一定要选对如果选错了:会导致
lvm损坏—-即会导致下方报错 - 此时会报错
1
2WARNING: Couldn't find device with uuid BVuqOy-xI9e-HTSv-zyhI-bRrv-OuQ9-GDWf5h.
WARNING: VG vg_test is missing PV BVuqOy-xI9e-HTSv-zyhI-bRrv-OuQ9-GDWf5h (last written to /dev/sdc). - 修复方法如下
传送门 博主另外一篇文章 多块磁盘配置lvm卷 不含vg卷的某块磁盘损坏解决 存在一个bug每次需要重新激活vg卷vgchange -ay vg_mf但已经是比较优秀的解决方法了 - 千万不能执行
vgreduce --removemissing --force否则数据会永久丢失
坏盘移出修复操作(成功但注意上方注意事项问题)
既然 /dev/sdb 已经损坏,你的目标是将数据迁移到 /dev/sdc 并将坏盘移出卷组。
根据你提供的 pvs 信息:
/dev/sdb (坏盘): 已用约 2G,空闲 0。
/dev/sdc (好盘): 已用约 2G,空闲 2.99G。
好消息是:好盘 sdc 的空闲空间(2.99G)足以容纳坏盘 sdb 上的数据(约 2G),因此可以直接进行无损迁移。
请按照以下步骤操作:
迁移之前一定要看lvm逻辑卷中有没有足够的pe即看pv卷有没有剩下足够的pe没分配的
如果没有剩余pe空间 则需要新创建一块pv加入vg卷组 再对坏盘进行迁移
1 | 一、先卸载挂载点 |
详情:
磁盘标识
执行迁移pvmove
迁移完成后会变成0(pvs -o pv_name,vg_name,pv_size,pv_used,pv_free)
后续操作截图
扩展 只删除lv卷其他pv vg都没动的情况下恢复lvm卷操作
✅ 正确的恢复方法(适用于未来)
如果在未来不慎删除了逻辑卷(LV),****最关键的一步是立即停止任何写入操作,然后利用 LVM 的元数据备份进行恢复。
**LVM 会自动在 **/etc/lvm/archive/ 目录下备份卷组(VG)的元数据历史。lvremove 操作也会生成一条备份记录。
恢复步骤:
立即停止写入 发现误删后,不要再执行任何
lvcreate、pvmove、vgreduce等命令,防止元数据被覆盖。查找删除前的元数据备份 使用
vgcfgrestore --list命令查看指定卷组的历史备份。1
vgcfgrestore --list vg_test
**你会看到类似下面的输出,其中会记录每次操作(如 **
lvcreate,lvremove)前后的备份文件。1
2
3
4File: /etc/lvm/archive/vg_test_00005-123456789.vg
VG name: vg_test
Description: Created *before* executing 'lvremove /dev/vg_test/lv_test'
Backup Time: Thu Apr 9 10:00:00 2026**你需要找到在 **
lvremove之前 的那一个备份文件。使用备份文件恢复卷组 使用找到的备份文件来恢复整个卷组的元数据。这会将
lv_test的配置信息重新写回系统。1
2
3# 建议先使用 --test 参数进行模拟,确认无误后再正式执行
vgcfgrestore -f /etc/lvm/archive/vg_test_00005-123456789.vg --test vg_test
vgcfgrestore -f /etc/lvm/archive/vg_test_00005-123456789.vg vg_test激活逻辑卷并挂载 恢复元数据后,激活卷组和逻辑卷,然后尝试挂载。
1
2vgchange -ay vg_test
mount /dev/vg_test/lv_test /mnt
请注意:此方法成功的前提是,在执行 lvremove 后,没有进行任何新的 LVM 操作(尤其是创建新的 LV)来覆盖旧的元数据和数据块。
💡 经验总结
- 操作前备份:在执行任何危险的 LVM 操作(如
lvremove,vgreduce)前,手动备份元数据:vgcfgbackup vg_name。 - 数据备份是根本:LVM 的元数据备份只能恢复卷的结构,不能替代真正的数据备份。重要数据一定要有异地或离线备份。
- 谨慎操作:
lvremove是一个破坏性很强的命令,执行前务必三思,确认数据已备份或不再需要。











