原因
建立好LVM後,将LVM當做一個裝置,又建立了一個分區,将LVM上的分區格式化後使用。
在重新開機後系統隻能找到LVM找不到LVM上的分區。
解決方案
使用testdisk 來找回分區。
testdisk /dev/mapper/data-data`
找到儲存分區後,執行partprobe 來掃描分區(重新開機就會又不見了)
partprobe /dev/mapper/data-data
建議
後續使用磁盤直接分區,不使用邏輯卷,在雲伺服器上單磁盤使用LVM 無任何優勢,而且管理也麻煩。
LVM丢失的恢複
起因
LVM 上分區data-data1 重新開機後消失,在找回分區時應該使用testdisk /dev/mapper/data-data
但是誤操作testdisk /dev/vdb , 而且掃描到了一個分區(可以看到磁盤上資料),并将分區/dev/vdb1 ❶資訊寫入磁盤。操作完成後發現有誤,使用
testdisk /dev/mapper/data-data
來找回data-data1 測試并挂載到/mnt 下可以看到資料。為了驗證問題 重新開機ECS,結果發現 /dev/mapper/data-data 和/dev/mapper/data-data1 都消失了。
思考
機器内原本沒有vdb1隻有vdb ,将vdb 制成pv,而掃描vdb 發現的分區實際上是 data-data1
将data-data1 分區寫入到vdb 後多了vdb1,這導緻重新開機後LVM 找不到vdb ,進而報錯。
而由于vdb 上檔案系統也不是直接在vdb 上建立的,是以vdb1 也不能挂載(superblock 錯誤)
如果執行fsck vdb1 ,也許可以解決這個問題❷
解決
LVM建立成功後,都會在/etc/lvm/backup 下備份配置資訊
在這個case中 備份名為/etc/lvm/backup/data
less /etc/lvm/backup/data #檢視pv0 的配置

記錄下pv0 的 id
執行下面指令恢複
pvcreate /dev/sdb -u qdJSB3-pjMo-KI5z-PzkU-zmHb-Gyol-2Tc60v --restorefile /etc/lvm/backup/data
-u 後面的“qdJSB3-pjMo-KI5z-PzkU-zmHb-Gyol-2Tc60v”是pv0 id
執行這個指令後報錯:
Device /dev/vdb excluded by a filter.
翻閱相關的文檔,都是說是已經有了分區表導緻無法識别或者lvm.conf 中設定了filter 導緻的。
但是翻看配置檔案,發現并未啟用global filter ,判斷是我操作出錯多了vdb1導緻的,使用fidisk 删除vdb1
重新執行pvcreate
然後恢複vg 、激活vg
vgcfgrestore data
vgchange -ay data-data
激活後
/dev/mapper/data-data 回來了,但是缺少分區 data-data1
使用testdisk 找回分區
testdisk /dev/mapper/data-data
fsck -y /dev/mapper/data-data1 #前面寫入vdb1 導緻分區有錯誤需要fsck
❶ vdb上找到的分區是vdb 上的lvm 的分區,直接寫入分區到vdb 是錯誤的,分區仍然無法識别
❷ fsck /dev/vdb1 也許能解決這個vdb1 不能使用的問題但是未做測試。