我的系统有问题(内部电源线有故障)。当我让系统备份并运行、重建阵列等时,我似乎遇到了一种情况,命令pvs
(和vgs
)lvs
报告,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 -vvv
lvm2 签名在 /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
首先要检查的是您的filter
和global_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