lvm分區(qū)信息丟了還能這樣恢復(fù)?
背景:
朋友跟我說他的centos7服務(wù)器開不開機(jī)了,給了我一張圖片

他告訴運(yùn)維通過xfs_repair修復(fù)無效,依舊啟動(dòng)不了
原因分析
? ? ?從以上圖片可知系統(tǒng)進(jìn)入了dracut模式,很明顯的報(bào)錯(cuò)/dev/mapper/centos-root does not exist,找不到root分區(qū)了,/dev/mapper 字符明確告訴我們系統(tǒng)分區(qū)是靠lvm管理的,通過以下分析我們找到了答案



/dev/mapper/看不到任何設(shè)備 lvs/vgs已經(jīng)看不到任何的信息 vgscan也掃不到任何vg信息
該問題就是lvm分區(qū)信息丟失導(dǎo)致系統(tǒng)無法正常掛載丟失
解決思路
1.既然是lvm分區(qū)的問題,那就著手如何對lvm的分區(qū)信息進(jìn)行恢復(fù)
2.正常的lvm是對邏輯分區(qū)做備份的,備份文件位置/etc/lvm/backup 一般的問題可以直接通過備份文件將分區(qū)恢復(fù),直接執(zhí)行命令 vgcfgrestore centos
3.但該機(jī)器恰恰是根分區(qū)損壞,備份文件也找不到
4.通過磁盤前幾個(gè)扇區(qū)找有用的信息
執(zhí)行
1.第一步先做一個(gè)livecd,保證我們正常分析
2.分析磁盤扇區(qū)信息
dd if=/dev/sdb3 bs=512 count=10 | hexdump -C

? ? ? ? ? ?好在磁盤還保存有分區(qū)信息,說明還有救
3.編寫vg恢復(fù)配置文件
如下為一個(gè)/etc/lvm/backup/pool的配置實(shí)例(json文件可以拿出格式化):
# Generated by LVM2 version 2.02.42 (2008-10-26): Sat Sep 25 17:36:30 2010 contents = "Text Format Volume Group" version = 1 description = "Created *after* executing 'lvcreate --name block --size 300G pool'" creation_host = "zhuweiR30" ? ? # Linux zhuweiR30 2.6.28-storix #1 SMP Thu Dec 24 17:25:02 CST 2009 i686 creation_time = 1285407390 ? ? ?# Sat Sep 25 17:36:30 2010 pool { id = "0Lm9dz-sIeu-t2Ho-qIBR-lD2P-dcbK-K1U4zW" seqno = 2 status = ["RESIZEABLE", "READ", "WRITE"] flags = [] extent_size = 8192 ? ? ? ? ? ? ?# 4 Megabytes max_lv = 0 max_pv = 0 physical_volumes { pv0 { id = "rewaTQ-vKaK-PzWs-H14L-a2Qz-hV62-CcIHqT" device = "/dev/sdb" ? ? # Hint only status = ["ALLOCATABLE"] flags = [] dev_size = 21484367872 # 10.0044 Terabytes pe_start = 384 pe_count = 2622603 ? ? ?# 10.0044 Terabytes } } logical_volumes { block { id = "ryg1Or-e1C3-ooKV-0XMM-jKSN-g0EM-dXky7G" status = ["READ", "WRITE", "VISIBLE"] flags = [] segment_count = 1 segment1 { start_extent = 0 extent_count = 76800 ? ?# 300 Gigabytes type = "striped" stripe_count = 1 ? ? ? ?# linear stripes = [ "pv0", 0 ] } } } } ? ? ?
根據(jù)信息編寫我們的配置文件并保存
4.命令執(zhí)行
vgcfgrestore centos -f .conf
5.查看信息
vgs/lvs信息恢復(fù)
6.重啟
reboot重啟恢復(fù)正常