命令“pvs”表示未找到 PV 设备,但 LV 已映射并安装

命令“pvs”表示未找到 PV 设备,但 LV 已映射并安装

我的系统有问题(内部电源线有故障)。当我让系统备份并运行、重建阵列等时,我似乎遇到了一种情况,命令pvs(和vgslvs报告,No device found for PV <UUID>但逻辑卷位于所谓的丢失的物理卷可以成功挂载,因为它们的 DM 设备存在并映射到 中/dev/mapper

PV 设备是一个 md-raid RAID10 阵列,看起来不错,只是令人困惑的是它没有出现在输出中pvs

我认为这是一些内部表不同步的问题。如何正确映射事物(无需重新启动,我认为这可以修复它)?


更新:

重新启动并没有解决问题。我认为该问题是由于将“丢失”PV (/dev/md99) 配置为从 750b 磁盘 (/dev/sdk) 构建的 RAID10 far-2 阵列和 RAID0 阵列 (/dev/md90) 构建造成的来自 250GB 磁盘 (/dev/sdh) 和 500GB 磁盘 (/dev/sdl)。从输出看来,pvscan -vvvlvm2 签名在 /dev/sdh 上找到,但在 /dev/md99 上找不到。

    Asking lvmetad for VG f1bpcw-oavs-1SlJ-0Gxf-4YZI-AiMD-WGAErL (name unknown)
  Setting response to OK
  Setting response to OK
  Setting name to b
  Setting metadata/format to lvm2
    Metadata cache has no info for vgname: "b"
  Setting id to AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN
  Setting format to lvm2
  Setting device to 2160
  Setting dev_size to 1464383488
  Setting label_sector to 1
    Opened /dev/sdh RO O_DIRECT
  /dev/sdh: size is 488397168 sectors
    /dev/sdh: block size is 4096 bytes
    /dev/sdh: physical block size is 512 bytes
    Closed /dev/sdh
  /dev/sdh: size is 488397168 sectors
    Opened /dev/sdh RO O_DIRECT
    /dev/sdh: block size is 4096 bytes
    /dev/sdh: physical block size is 512 bytes
    Closed /dev/sdh
    /dev/sdh: Skipping md component device
  No device found for PV AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN.
    Allocated VG b at 0x7fdeb00419f0.
  Couldn't find device with uuid AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN.
    Freeing VG b at 0x7fdeb00419f0.

对 /dev/md99(应该是 PV)的唯一引用是在将其添加到设备缓存时。


更新2:

停止lvm2-lvmetad并重复确认pvscan问题是系统对使用哪些 PV 感到困惑,因为它找到了 2 个具有相同 UUID 的 PV

    Using /dev/sdh
    Opened /dev/sdh RO O_DIRECT
    /dev/sdh: block size is 4096 bytes
    /dev/sdh: physical block size is 512 bytes
  /dev/sdh: lvm2 label detected at sector 1
  Found duplicate PV AzKyTe5Ut4dxgqtxEc7V9vBkm5mOeMBN: using /dev/sdh not /dev/md99
    /dev/sdh: PV header extension version 1 found
  Incorrect metadata area header checksum on /dev/sdh at offset 4096
    Closed /dev/sdh
    Opened /dev/sdh RO O_DIRECT
    /dev/sdh: block size is 4096 bytes
    /dev/sdh: physical block size is 512 bytes
  Incorrect metadata area header checksum on /dev/sdh at offset 4096
    Closed /dev/sdh
    Opened /dev/sdh RO O_DIRECT
    /dev/sdh: block size is 4096 bytes
    /dev/sdh: physical block size is 512 bytes
    Closed /dev/sdh
  Incorrect metadata area header checksum on /dev/sdh at offset 4096
    Telling lvmetad to store PV /dev/sdh (AzKyTe-5Ut4-dxgq-txEc-7V9v-Bkm5-mOeMBN)
  Setting response to OK

由于此配置只是暂时的,我想我最好重新安排我的磁盘使用情况。

除非有人能告诉我如何显式覆盖视图设备的顺序pvscan

答案1

首先要检查的是您的filterglobal_filter中的选项/etc/lvm/lvm.conf。确保您没有过滤掉 PV 所在的设备。

缓存是用cache_dir同一个文件中的选项设置的;在我的 Debian 机器上,它默认为/run/lvm.缓存(如果有)应该位于该目录中。如果obtain_device_list_from_udev设置了,我相信不会使用缓存。

最后检查是否use_lvmetad已设置。如果是这样,您可能需要重新启动 LVM 元数据守护程序。

答案2

问题似乎是pvscan由于在 RAID 阵列的组件设备和 RAID 阵列本身上看到相同的 UUID 而变得混乱。我认为通过认识到该设备是直接组件通常可以避免这种情况。就我而言,我创建了一种情况,其中设备不直接是 RAID 设备的组件,而 RAID 设备应该是 PV。

我的解决方案是备份LV,强制阵列降级,然后重新配置磁盘,以免使用多级RAID。请注意,再次重新启动后,设备字母已更改。 500Gb = /dev/sdi,250Gb = /dev/sdj,750Gb = /dev/sdk

# mdadm /dev/md99 --fail --force /dev/md90
# mdadm /dev/md99 --remove failed
# mdadm --stop /dev/md90
# wipefs -a /dev/sdi /dev/sdj               # wipe components
# systemctl stop lvm2-lvmetad
# pvscan -vvv
# pvs
..... /dev/md99 is now correctly reported as the PV for VG b
# fdisk /dev/sdi
...... Create 2 partitions of equal size, i.e. 250Gb
# fdisk /dev/sdj
...... Create a single 250Gb patitiion
# mdadm /dev/md91 --create -lraid5 -n3 /dev/sdi1 /dev/sdj1 missing
# mdadm /dev/md92 --create -lraid1 -n2 /dev/sdi2 missing
# pvcreate /dev/md91 /dev/md92
# vgextend b /dev/md91 /dev/md92
# pvmove /dev/md99
# vgreduce b /dev/md99
# pvremove /dev/md99
# mdadm --stop /dev/md99
# wipefs -a /dev/sdk
# fdisk /dev/sdk
..... Create 3 250Gb partitions
# mdadm /dev/md91 --add /dev/sdk1
# mdadm /dev/md92 --add /dev/sdk2

故事的道德启示:

不要在文件系统中引入太多的间接级别!

答案3

作为 root,这些命令将修复它:

pvscan --cache
pvscan 

相关内容