Linux命令-vgscan(扫描所有磁盘上的卷组并重建缓存)

快速参考vgscan 用于扫描系统中所有已发现的物理卷,查找完整的卷组并重建 LVM 缓存文件。它是系统迁移、磁盘更换和挂载故障排查场景中的关键命令


🔰 简介

vgscan 遍历所有已知的块设备(基于 /dev 下的设备列表和 LVM 缓存中的信息),读取每个设备上的 LVM 元数据,识别出完整的卷组(Volume Group),并将结果写入缓存文件(/etc/lvm/cache/.cache)。

核心功能

  • 扫描所有块设备发现卷组
  • 重建 LVM 卷组缓存
  • 创建缺失的 /dev/VG名/ 设备节点
  • 更新设备映射关系

典型使用场景

  • 系统迁移或磁盘更换后重建 LVM 缓存
  • 挂载故障排查——VG 未激活
  • 磁盘重新连接后让系统识别
  • 从备份恢复后重建设备映射

📖 语法

vgscan [选项]

不带选项时,扫描所有设备并输出发现的卷组信息。


⚙️ 选项

选项说明
-m, --mknodes/dev 下创建缺失的设备节点
--cache仅更新缓存,不扫描新设备
--ignorelockingfailure锁定失败时继续执行(救援模式)
-v, --verbose显示详细扫描过程
-d, --debug调试模式,输出更多诊断信息
-P, --partial即使卷组不完整(缺少 PV),也尝试处理

💡 示例

示例 1:基本扫描——发现卷组

系统启动后或磁盘重新连接后的标准操作。

# 扫描并发现卷组
$ vgscan
  Found volume group "ubuntu" using metadata type lvm2
  Found volume group "vg01" using metadata type lvm2
  Found volume group "vg_data" using metadata type lvm2

# 验证缓存已更新
$ vgs
  VG      #PV #LV #SN Attr   VSize   VFree
  ubuntu    1   2   0 wz--n- 238.00g     0
  vg01      2   3   0 wz--n- 300.00g 70.00g
  vg_data   1   1   0 wz--n- 500.00g 200.00g

# 检查缓存文件
$ ls -la /etc/lvm/cache/.cache
-rw------- 1 root root 4096 Jun 14 10:30 /etc/lvm/cache/.cache

示例 2:创建缺失的设备节点

磁盘更换或系统迁移后,/dev/VG名/ 目录可能不存在。

# 症状:卷组已识别但设备节点不存在
$ vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg01   2   3   0 wz--n- 300.00g 70.00g

$ ls /dev/vg01/
ls: cannot access '/dev/vg01/': No such file or directory

# 扫描并创建缺失的设备节点
$ vgscan --mknodes
  Found volume group "vg01" using metadata type lvm2
  Creating volume group device nodes for vg01

# 验证设备节点已创建
$ ls /dev/vg01/
data_lv  log_lv  backup_lv

# 逻辑卷现在可以正常挂载
$ mount /dev/vg01/data_lv /mnt/data

示例 3:仅更新缓存

已知设备状态未变,只需刷新缓存。

# 手动刷新缓存(不扫描新设备)
$ vgscan --cache
  Reading volume groups from cache.
  Found volume group "ubuntu" using metadata type lvm2
  Found volume group "vg01" using metadata type lvm2

# 配合激活使用
$ vgscan --cache -a y
# 更新缓存并激活所有找到的 VG

示例 4:救援模式——绕过锁定故障

系统异常重启后,LVM 锁文件可能残留,导致后续命令失败。

# 正常 vgscan 可能因锁文件被阻塞
$ vgscan
  /run/lock/lvm/V_ubuntu:aux: open failed: Permission denied
  Can't get lock for ubuntu

# 救援模式(确认没有其他 LVM 进程在运行后)
$ vgscan --ignorelockingfailure
  WARNING: Locking disabled. Be careful! This could corrupt metadata.
  Found volume group "ubuntu" using metadata type lvm2
  Found volume group "vg01" using metadata type lvm2

# 注意:救援模式绕过锁定保护,确保操作环境安全
$ ps aux | grep lvm
# 确认没有其他 LVM 进程在运行

# 操作完成后重启恢复正常锁定
$ reboot

示例 5:部分 VG 处理

当一个 VG 的 PV 丢失导致卷组不完整时。

# 场景:一块磁盘故障,VG 中缺少一个 PV
$ vgscan
  Couldn't find device with uuid XxYyZz-....
  Found volume group "vg01" using metadata type lvm2

# 使用部分模式
$ vgscan -P
  Couldn't find device with uuid XxYyZz-....
  Found volume group "vg01" using metadata type lvm2
  WARNING: Volume group "vg01" is missing a physical volume

# 查看缺失情况
$ vgs -o +pv_missing
  VG   #PV #LV #SN Attr   VSize   VFree Missing PV
  vg01   3   3   0 wz--n- 310.00g 10.00g /dev/sdd1

# 激活不完整的 VG(尽力使用可用 PV)
$ vgchange -a y --partial vg01

⚠️ 注意

缓存文件:LVM 使用 /etc/lvm/cache/.cache 缓存设备扫描结果。如果该文件损坏,vgs/lvs/pvs 等命令可能显示过期或错误的信息。通常删除缓存文件后重新 vgscan 即可解决:

rm -f /etc/lvm/cache/.cache
vgscan

--mknodes 的必要性:在 LiveCD 或救援环境中,/dev 通常是 tmpfs,重启后所有设备节点丢失。必须先运行 vgscan --mknodes 创建节点,后续的 mount 操作才能正常执行

锁定故障排查:如果 vgscan 因锁定问题卡住,首先检查是否有其他 LVM 进程在运行(ps aux | grep lvm)。如果确认无并发操作,可以安全地使用 --ignorelockingfailure。但注意这绕过了 LVM 的元数据保护机制,操作完成后应尽快重启恢复正常状态。

扫描性能:在拥有大量磁盘的系统中,vgscan 可能需要较长时间。可以通过配置 /etc/lvm/lvm.conf 中的 filter 选项限制扫描范围来加速:

filter = [ "a|^/dev/sd[a-z]$|", "r|.*|" ]

📚 相关命令

命令关系
pvscan扫描物理卷(更底层)
lvscan扫描并列出逻辑卷
vgs查看卷组列表
vgdisplay查看卷组详细信息
vgchange -a y激活卷组
dmsetup ls查看设备映射器状态

📝 总结

vgscan 是 LVM 卷组发现和缓存管理的核心命令。在系统迁移、磁盘更换和救援恢复三大场景中,vgscan --mknodes 是挂载 LVM 逻辑卷前的必须步骤。当遇到 “volume group not found” 或 “device not found” 错误时,先运行 vgscan 刷新缓存,往往能解决大部分问题。

💡 提示:使用 vgscan --helpman vgscan 获取最新文档。救援环境中记住三个步骤:vgscan --mknodesvgchange -a ymount

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RisunJan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值