移除物理驱动器后移除 vg 和 lv

Dok*_*bua 33 linux lvm

我们在服务器中遇到磁盘故障并在从 LVM 中移除驱动器之前更换了它。

服务器有 4 个物理驱动器 (PV),每个驱动器都有自己的卷组 (VG)。每个 VG 有 2 个或更多逻辑卷 (LV)。现在 LVM 抱怨缺少驱动器。因此,我们有一个 VG (vg04),其中有两个 LV 已成为孤儿,而我们需要从系统中清除。

问题是每次我们运行任何 LVM 命令时,我们都会收到这些“读取失败”错误:

# lvscan
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error

# vgreduce vg04 --removemissing --force
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# vgchange -a n /dev/vg04
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# lvchange -a n /dev/vg04/vz
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found
  Skipping volume group vg04
Run Code Online (Sandbox Code Playgroud)

丢失的 VG 和 LV 并不重要,我们只想删除它们。

正如您所看到的,我们已经尝试了所有提出的建议,但到目前为止都没有成功。

'lvm dumpconfig' 的输出可以在http://pastebin.com/MHiBzrLJ查看

Dok*_*bua 50

解决方案是运行 dmsetup,在本例中为两个命令

dmsetup remove vg04-vz
dmsetup remove vg04-swap
Run Code Online (Sandbox Code Playgroud)

在执行此操作之前,我使用命令“dmsetup info”检查了两个 LV 的“打开计数”为零。

警告: dmsetup 可能会对您的磁盘造成严重破坏,因此将来使用此信息的任何人请务必阅读手册页。

  • 这就是诀窍。LVM 是一个如此有漏洞的抽象,这太糟糕了,但我想这已经足够了。 (3认同)

小智 9

删除 VMware 磁盘后,我遇到了类似的情况/dev/sdb

使用lsscsi以确定正在使用的设备(您可能需要安装的程序),然后运行lsscsi

# lsscsi
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb <== the removed physical disk
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc
Run Code Online (Sandbox Code Playgroud)

现在写删除文件

# echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/delete
Run Code Online (Sandbox Code Playgroud)

该设备立即消失。