Lvm

命令“pvs”表示未找到 PV 設備,但已映射並安裝了 LV

  • November 10, 2018

我的系統有問題(內部電源線故障)。當我讓系統備份並執行、陣列重建等時,我似乎遇到了這樣一種情況,即pvs命令(vgslvs)報告但假設失去No device found for PV <UUID>的物理卷上的邏輯卷可以成功掛載,因為它們的 DM 設備存在並映射在./dev/mapper

PV 設備是一個 md-raid RAID10 陣列,看起來很好,除了它沒有出現在pvs輸出中的混亂。

我認為這是一些內部表不同步的問題。如何正確映射事物(無需重新啟動,我認為會修復它)?


更新:

重新啟動並沒有解決問題。我認為問題是由於將“缺失”PV (/dev/md99) 配置為從 750b 磁碟 (/dev/sdk) 和 RAID0 陣列 (/dev/md90) 建構的 RAID10 far-2 陣列來自 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

   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查看設備的順序?

pvscan在 RAID 陣列的組件設備和 RAID 陣列本身上看到相同的 UUID 時,問題似乎變得混亂。我認為通常可以通過辨識設備是直接組件來避免這種情況。在我的例子中,我創建了一個設備不是 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

故事的道德啟示:

不要在文件系統中引入太多的間接層級!

首先要檢查的是您的filterglobal_filter選項/etc/lvm/lvm.conf。確保您沒有過濾掉您的 PV 所在的設備。

記憶體是用cache_dir同一個文件中的選項設置的;在我的 Debian 盒子上,它預設為/run/lvm. 記憶體(如果有)應該在那個目錄中。如果obtain_device_list_from_udev設置,我相信沒有使用記憶體。

最後,檢查是否use_lvmetad已設置。如果是這樣,您可能需要重新啟動 LVM 元數據守護程序。

引用自:https://unix.stackexchange.com/questions/203925