LVM是通過將物理的磁盤或磁盤分區創建成物理卷(PV),多個物理卷添加創建為一個卷組(VG),然後在卷組的基礎上創建邏輯卷(LVM),進而在邏輯卷上去創建文件系統,這種在硬盤或分區和文件系統之下的磁盤管理機制大大提高了對磁盤管理的靈活性,也是當前企業Linux環境下實現對磁盤分區管理的方式。
但在實際應用管理中,常常因為誤操作,系統斷電等原因造成卷組丟失,邏輯卷無法掛載等異常的故障,本文將通過在企業運維實踐中邏輯卷故障處理過程給大家分享因為斷電原因造成卷組丟失的恢復方法。
問題現象
系統重啟後,發現LVM中的一個VG丟失,導致Coremail的郵件系統無法運行。具體現象截圖如下。
原因分析
1、一般LVM的VG丟失都是由於突然斷電或者更換了操作系統等原因引起。嘗試執行vgscan命令掃描卷組,無果。嘗試通過vgcfgrestore –f /etc/lvm/backup/data data 命令恢復VG卷組,提示以下錯誤。
Cannot restore Volume Group data with 1 PVs marked as missing.
Restore failed.
2、查看/etc/lvm/backup/data文件中PV0的ID號,與pvdisplay /dev/emcpowera命令中顯示的UUID號不一致,初步判斷是因為系統重啟後,/dev/emcpowera的UUID號發生變化了。導致VG無法找到對應的物理卷。
解決方法
為了防止數據丟失或破壞,首先對/dev/emcpowera設備的數據進行備份。如下所示。
[root@MCBL043 backup]# dd if=/dev/emcpowera of=/data/01/emcpowera.img
209715200+0 records in
209715200+0 records out
107374182400 bytes (107 GB) copied, 455.871 s, 236 MB/s
執行以下命令重新修正/dev/emcpowera的UUID號。
[root@MCBL043 backup]# pvcreate -u blfaxf-3CER-4r4l-MS32-v0aN-s3Ta-DH08ZV(此內容為/etc/lvm/backup/data/文件中PV的ID號) /dev/emcpowera --restorefile /etc/lvm/backup/data
Physical volume "/dev/emcpowera" successfully created
恢復卷組信息。
[root@MCBL043 backup]# vgcfgrestore -f /etc/lvm/backup/data data
Restored volume group data
執行PVS,VGS查看卷組和物理卷信息,發現卷組信息已經找回。
[root@MCBL043 backup]# vgs
Found duplicate PV i8eJ0wjj9aCnINA3PuXs40eHn71KYGA9: using /dev/sde not /dev/sdai
Found duplicate PV PEm5MuUjFCt3RNI246UUcd3FrjDfuPJE: using /dev/sdak not /dev/sdq
Found duplicate PV zo1d35HeUV4frKw88HX0F34ynK2EYsXv: using /dev/sdal not /dev/sdr
Found duplicate PV UdYII1L3cG3lhIiemcoUY8nTf19jxRcv: using /dev/sdam not /dev/sds
Found duplicate PV Gy9jrkkhgRt0vgP4psvMOapl79Ui4f1Q: using /dev/sdan not /dev/sdt
Found duplicate PV w8LuGV0ML9mFDYneAGCR1iV5LdJyg8bo: using /dev/sdao not /dev/sdu
VG #PV #LV #SN Attr VSize VFree
data 1 0 0 wz--n- 100.00g 100.00g
data00b1 1 1 0 wz--n- 1024.00g 0
data01b1 1 1 0 wz--n- 1024.00g 0
data02b1 1 1 0 wz--n- 1024.00g 0
data03b1 1 1 0 wz--n- 1024.00g 0
data04b1 1 1 0 wz--n- 1024.00g 0
data05b1 1 1 0 wz--n- 1024.00g 0
homeb1 1 1 0 wz--n- 200.00g 0
indexb1 1 1 0 wz--n- 200.00g 0
searchb1 1 1 0 wz--n- 1024.00g 0
vg_mcbl043 1 2 0 wz--n- 557.66g 0
[root@MCBL043 backup]# lvs
Found duplicate PV i8eJ0wjj9aCnINA3PuXs40eHn71KYGA9: using /dev/sde not /dev/sdai
Found duplicate PV PEm5MuUjFCt3RNI246UUcd3FrjDfuPJE: using /dev/sdak not /dev/sdq
Found duplicate PV zo1d35HeUV4frKw88HX0F34ynK2EYsXv: using /dev/sdal not /dev/sdr
Found duplicate PV UdYII1L3cG3lhIiemcoUY8nTf19jxRcv: using /dev/sdam not /dev/sds
Found duplicate PV Gy9jrkkhgRt0vgP4psvMOapl79Ui4f1Q: using /dev/sdan not /dev/sdt
Found duplicate PV w8LuGV0ML9mFDYneAGCR1iV5LdJyg8bo: using /dev/sdao not /dev/sdu
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home data -wi------- 100.00g
sata data00b1 -wi-ao---- 1024.00g
sata data01b1 -wi-ao---- 1024.00g
sata data02b1 -wi-ao---- 1024.00g
sata data03b1 -wi-ao---- 1024.00g
sata data04b1 -wi-ao---- 1024.00g
sata data05b1 -wi-ao---- 1024.00g
home homeb1 -wi-ao---- 200.00g
ssd indexb1 -wi-ao---- 200.00g
sata searchb1 -wi-ao---- 1024.00g
LogVol00 vg_mcbl043 -wi-ao---- 16.00g
LogVol01 vg_mcbl043 -wi-ao---- 541.66g
執行lvchange命令,重新激活LV邏輯卷。
[root@MCBL043 backup]# lvchange -ay /dev/data/home
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home data -wi-a----- 100.00g
sata data00b1 -wi-ao---- 1024.00g
sata data01b1 -wi-ao---- 1024.00g
sata data02b1 -wi-ao---- 1024.00g
sata data03b1 -wi-ao---- 1024.00g
sata data04b1 -wi-ao---- 1024.00g
sata data05b1 -wi-ao---- 1024.00g
home homeb1 -wi-ao---- 200.00g
ssd indexb1 -wi-ao---- 200.00g
sata searchb1 -wi-ao---- 1024.00g
LogVol00 vg_mcbl043 -wi-ao---- 16.00g
LogVol01 vg_mcbl043 -wi-ao---- 541.66g
重新掛載使用。
[root@MCBL043 backup]# mount /dev/mapper/data-home /mnt
[root@MCBL043 backup]# cd /mnt
[root@MCBL043 mnt]# ls
coremail lost+found
[root@MCBL043 mnt]# cd coremail/
[root@MCBL043 coremail]# ls
api client_body_temp del.txt gateway java lib64 logs oracle proxy_temp scgi_temp sso uwsgi_temp web
bin conf fastcgi_temp install lib libexec mysql oradiag_coremail sbin sophos-av ud1_coremail.tar.gz var
[root@MCBL043 coremail]# pwd
/mnt/coremail
至此,故障解除。