SERVER:~ # pvs
Found duplicate PV Wb0b2UTCKtpUtSki0k2NnIB24qNj4CEP: using /dev/mapper/36005076304ffc2500000000000004903 not /dev/mapper/36005076304ffc2990000000000004903
PV VG Fmt Attr PSize PFree
/dev/mapper/36005076304ffc2500000000000004903 application lvm2 a-- 50.00g 35.00g
/dev/sda4 system lvm2 a-- 133.24g 100.39g
SERVER:~ #
作業系統是 SLES 11 SP3。
問題:這會是一個問題嗎?如果是,如何解決重複的PV訊息? :) 磁碟來自 SAN/多路徑。
答案1
根據我個人的經驗,「重複 PV」通常是由於系統對特定 SAN LUN 具有多路徑訪問,但 LVM 尚未配置為過濾各個路徑的區塊設備。設備映射器名稱甚至看起來像 WWNN/WWPN(儘管我沒有足夠的 SLES 經驗,不知道這是否可能是其他名稱)。但不確定為什麼 PV 本身會由 DM 設備提供服務。
在 RHEL 中,我會查看/dev/disk/by-path
這些是否為相同的 LUN。
這會是一個問題嗎?
如果您應該進行多路徑設置,這可能是一個問題。例如,如果底層設備應該是,/dev/mapper/mpathf
但 LVM/dev/sdf
首先找到並決定啟動它,那麼您對儲存的存取並不像您所指定的那樣冗餘。例如,如果路徑/dev/sdf
沿著 VG,其所有 LV 都可能無法存取。
如果是,如何解決重複的PV訊息?
使用 LVM,每個 PV 都有一個“LVM header”,它告訴您該 PV 的 UUID、它所在的 VG 的名稱以及同一 VG 中所有其他 PV 的 UUID(這就是它如何判斷是否存在缺少PV)。所有這些錯誤都意味著它發現了另一個具有相同 UUID 的 PV。
因此,造成這種情況的原因並不單一,因此很難根據您提供的資訊提出解決方案。
它聲音就像你lvm.conf
只需要設定過濾器來忽略各個路徑(如前所述),但你必須做更多的研究來確認這一點,因為這幾乎是一個WAG(瘋狂的猜測)。
以 lvm 過濾器為例:
filter = [ "r/block/", "r/disk/", "r/sd.*/", "a/.*/" ]
上述過濾器會跳過(“刪除”)名稱中帶有“區塊”或“磁碟”字樣的任何裝置。它還刪除任何以“sd”開頭的設備(例如sdf
,,sdg
等),最後“允許”所有其他設備(“ .*
”)。
不過,您可能不想走那麼遠(因為您使用的/dev/sda4
是根 VG)。我只會刪除用於各個路徑的特定區塊設備。
但再次確認一下。也可能是一百萬個其他的事情(SAN 管理員克隆了一個LUN 並將其呈現給您的系統,由於某種原因,UUID 之間不太可能發生隨機衝突、宇宙射線、運氣不佳等) 。
更新:
我還應該提到,每次更新/etc/lvm/lvm.conf
(RHEL 路徑)時,您都應該重建您擁有的任何 initramfs。看起來您正在使用這些作為根 VG 外部的存儲(這是最佳實踐),但每次修改該文件時,您都應該確保內核在啟動時看到與此後相同的文件,以便獲得一致的結果。