Debian Lenny - SAN - LVM 失敗
我有一個 Lenny 伺服器,它的 SAN 連接配置為名為“datavg”的 VG 的唯一 PV。
昨天,我用 Debian 更新檔更新了盒子並重新啟動了它。
重新啟動後,它沒有啟動說它找不到/dev/mapper/datavg-datalv。
這就是我所做的:
在救援模式下啟動並在 /etc/fstab 中註釋了掛載
重新啟動到全使用者模式。(掛載點是 /data,只有 postgresql 無法啟動)
做了 vgdisplay、lvdisplay、pvdisplay 以找出卷組發生了什麼。(datavg 完全失去)
之後,我注意到 LUN 在 Linux 中是可見的,並且 LVM 分區也是可見的:
# ls -la /dev/mapper/mpath0* brw-rw---- 1 root disk 254, 6 2009-11-23 15:48 /dev/mapper/mpath0 brw-rw---- 1 root disk 254, 7 2009-11-23 15:48 /dev/mapper/mpath0-part1
然後,我嘗試了 pvscan 以了解它是否可以找到 PV。不幸的是,它沒有將分區檢測為 PV。
我在分區上執行 pvck,但沒有找到任何標籤:
# pvck /dev/mapper/mpath0-part1 Could not find LVM label on /dev/mapper/mpath0-part1
- 然後,我想知道 LUN 是否可能是空的,所以我做了前幾個 MB 的 dd。在此,我可以看到 LVM 標頭:
datavg { id = "removed-hwEK-Pt9k-Kw4F7e" seqno = 2 status = ["RESIZEABLE", "READ", "WRITE"] extent_size = 8192 max_lv = 0 max_pv = 0 physical_volumes { pv0 { id = "removed-AfF1-2hHn-TslAdx" device = "/dev/dm-7" status = ["ALLOCATABLE"] dev_size = 209712382 pe_start = 384 pe_count = 25599 } } logical_volumes { datalv { id = "removed-yUMd-RIHG-KWMP63" status = ["READ", "WRITE", "VISIBLE"] segment_count = 1 segment1 { start_extent = 0 extent_count = 5120 type = "striped" stripe_count = 1 # linear stripes = [ "pv0", 0 ] } } } }
請注意,這來自 pvck 找不到 LVM 標籤的分區!
- 我決定將新的 LVM 標籤寫入分區並從備份文件中恢復參數。
pvcreate --uuid removed-AfF1-2hHn-TslAdx --restorefile /etc/lvm/backup/datavg /dev/mapper/mpath0-part1
然後我執行了 vgcfgrestore -f /etc/lvm/backup/datavg datavg
之後,當我發出 pvscan 時出現。
使用 vgchange -ay datavg,我啟動了 VG 並且 LV 可用。
當我嘗試掛載 LV 時,它沒有找到任何文件系統。我嘗試了幾種方法進行恢復,但都沒有成功。
在製作了受影響的 LV 的 DD 後,我嘗試使用重新創建超級塊
mkfs.ext3 -S /dev/datavg/backupdatalv
- 但無法安裝此結果:
# mount /dev/datavg/backupdatalv /mnt/ mount: Stale NFS file handle
至少可以說,這可能首先發生的事實並不是很好,所以我想找出有關此故障的所有資訊。
我的問題:
更新檔和重啟後 LVM 標籤怎麼會消失?
為什麼在搶救 PV 後文件系統不存在?(pvcreate 命令是否丟棄了數據?)
LV 中的 ext3 文件系統是否仍然可以挽救?
我可以做些什麼來防止這個問題嗎?
在此先感謝,格。
我曾經遇到過類似的問題。在我們的例子中,有人創建了一個分區來保存 PV,但是當他們執行 pvcreate 命令時,他們忘記了指定分區,而是使用了整個設備。系統執行良好,直到重新啟動,此時 LVM 無法再找到 PV。
因此,在您的情況下,是否有人在創建時執行“pvcreate /dev/mapper/mpath0”而不是“pvcreate /dev/mapper/mpath0-part1”?如果是這樣,您需要從包含 PV 的磁碟中刪除分區表。
從 pvcreate(8) 手冊頁刪除分區表:
dd if=/dev/zero of=PhysicalVolume bs=512 count=1
如果設備上有分區表,核心中的 LVM 程式碼將無法辨識整個設備 PV。一旦我們刪除了分區表,PV 就被辨識出來了,我們可以再次訪問我們的數據。