
背景:
朋友跟我說他的centos7服務器開不開機了,上面運行著重要的業務,著急壞了,給了我發來信息尋求幫助。
自己已經嘗試通過xfs_repair修復,但是不起作用,依舊啟動不了。
【資料圖】
原因分析
從上圖片可知系統進入了dracut模式很明顯的報錯
/dev/mapper/centos-rootdoesnotexist
找不到root分區了,/dev/mapper 字符明確告訴我們系統分區是靠lvm管理的,通過以下分析我們找到了答案
/dev/mapper/看不到任何設備 lvs/vgs已經看不到任何的信息 vgscan也掃不到任何vg信息該問題就是lvm分區信息丟失導致系統無法正常掛載丟失
解決思路
既然是lvm分區的問題,那就著手如何對lvm的分區信息進行恢復
正常的lvm是對邏輯分區做備份的,備份文件位置/etc/lvm/backup一般的問題可以直接通過備份文件將分區恢復,直接執行命令 vgcfgrestore centos
但該機器恰恰是根分區損壞,備份文件也找不到
可以通過磁盤前幾個扇區找有用的信息
執行
1.第一步先做一個livecd,保證我們正常分析
2.分析磁盤扇區信息dd if=/dev/sdb3 bs=512 count=10 | hexdump -C
好在磁盤還保存有分區信息,說明還有救
3.編寫vg恢復配置文件
如下為一個/etc/lvm/backup/pool的配置實例:
# Generated by LVM2 version 2.02.42 (2008-10-26): Sat Sep 25 1730 2010contents = "Text Format Volume Group"version = 1description = "Created *after* executing "lvcreate --name block --size 300G pool""creation_host = "zhuweiR30" # LinuxzhuweiR30 2.6.28-storix #1 SMP Thu Dec 24 1702 CST 2009 i686creation_time = 1285407390 # Sat Sep 25 1730 2010pool {id = "0Lm9dz-sIeu-t2Ho-qIBR-lD2P-dcbK-K1U4zW"seqno = 2status = ["RESIZEABLE", "READ", "WRITE"]flags = []extent_size = 8192 # 4 Megabytesmax_lv = 0max_pv = 0physical_volumes {pv0 {id = "rewaTQ-vKaK-PzWs-H14L-a2Qz-hV62-CcIHqT"device = "/dev/sdb" # Hint onlystatus = ["ALLOCATABLE"]flags = []dev_size = 21484367872 # 10.0044 Terabytespe_start = 384pe_count = 2622603 # 10.0044 Terabytes}}logical_volumes {block {id = "ryg1Or-e1C3-ooKV-0XMM-jKSN-g0EM-dXky7G"status = ["READ", "WRITE", "VISIBLE"]flags = []segment_count = 1segment1 {start_extent = 0extent_count = 76800 # 300 Gigabytestype = "striped"stripe_count = 1 # linearstripes = ["pv0", 0]}}}}
根據信息編寫我們的配置文件
4.命令執行vgcfgrestore centos -f .conf
5.查看信息vgs/lvs信息恢復
6.重啟reboot重啟恢復正常
朋友送來愛心表示感謝。
編輯:黃飛
標簽: