命令“pvs”表示未找到 PV 設備,但已映射並安裝了 LV
我的系統有問題(內部電源線故障)。當我讓系統備份並執行、陣列重建等時,我似乎遇到了這樣一種情況,即
pvs
命令(vgs
和lvs
)報告但假設失去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 -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 具有相同的 UUIDUsing /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
故事的道德啟示:
不要在文件系統中引入太多的間接層級!
首先要檢查的是您的
filter
和global_filter
選項/etc/lvm/lvm.conf
。確保您沒有過濾掉您的 PV 所在的設備。記憶體是用
cache_dir
同一個文件中的選項設置的;在我的 Debian 盒子上,它預設為/run/lvm
. 記憶體(如果有)應該在那個目錄中。如果obtain_device_list_from_udev
設置,我相信沒有使用記憶體。最後,檢查是否
use_lvmetad
已設置。如果是這樣,您可能需要重新啟動 LVM 元數據守護程序。