在LVM中恢復已刪除的邏輯卷

夢共裡醉發表於2021-10-04
本文介紹如何恢復已刪除的邏輯卷,如要執行恢復將使用vgcfgrestore 。

在執行任何邏輯卷管理相關任務時,如果意外的刪除了邏輯卷,則可以使用它的資料還原功能來恢復邏輯卷。在下面的步驟中,將演示如何通過刪除卷組中的任何一個邏輯卷,並恢復已刪除的邏輯卷。

系統環境

8

現有的檔案系統

在開始本文之前已經建立了一個邏輯卷,裡面並存放了一些檔案。

[root@localhost ~]# pvs
  PV             VG      Fmt  Attr PSize   PFree 
  /dev/nvme0n1p2 cl      lvm2 a--  <19.00g <2.00g
  /dev/sda       vg_data lvm2 a--  <20.00g     0 
  /dev/sdb       vg_data lvm2 a--  <20.00g     0 
[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  cl        1   2   0 wz--n- <19.00g <2.00g
  vg_data   2   1   0 wz--n-  39.99g     0 
[root@localhost ~]# lvs
  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    cl      -wi-ao---- 15.00g                                                    
  swap    cl      -wi-ao----  2.00g                                                    
  lv_data vg_data -wi-ao---- 39.99g               
[root@localhost ~]# df -h /data
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data   40G  318M   40G   1% /data

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
/data目錄中的檔案如下:
在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷

意外刪除邏輯卷

為了演示起見,請刪除邏輯卷lv_data。

[root@localhost ~]# umount /data 
[root@localhost ~]# lvremove -v /dev/vg_data/lv_data 
Do you really want to remove active logical volume vg_data/lv_data? [y/n]: y
    Accepted input: [y]
    Removing vg_data-lv_data (253:2)
    Archiving volume group "vg_data" metadata (seqno 2).
    Releasing logical volume "lv_data"
    Creating volume group backup "/etc/lvm/backup/vg_data" (seqno 3).
  Logical volume "lv_data" successfully removed

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
使用 lvs 列印並確認我們已經刪除了邏輯卷lv_data:
在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
由於lv_data卷已刪除,可以看到卷組vg_data的剩餘空間是40G。

[root@localhost ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  cl        1   2   0 wz--n- <19.00g <2.00g
  vg_data   2   0   0 wz--n-  39.99g 39.99g
開始恢復邏輯卷

現在,讓我們看看如何還原已刪除的邏輯卷。每當我們執行與LVM相關的任何任務(時,所有內容都將被記錄在 /etc/lvm/archive.下。並使用 vgcfgbackup命令備份卷組配置並將其儲存在 /etc/lvm/backup下。

[root@localhost ~]# ll /etc/lvm/backup/
total 8
-rw-------. 1 root root 1746 Mar  9 16:27 cl
-rw-------. 1 root root 1147 Apr  8 10:20 vg_data
[root@localhost ~]# ll /etc/lvm/archive/
total 24
-rw-------. 1 root root 1740 Dec 29  2019 cl_00000-1531402016.vg
-rw-------. 1 root root 1740 Mar  9 16:27 cl_00001-790744555.vg
-rw-------. 1 root root 1747 Mar  9 16:27 cl_00002-1369752011.vg
-rw-------. 1 root root 1150 Apr  8 09:52 vg_data_00000-919482485.vg
-rw-------. 1 root root 1155 Apr  8 09:54 vg_data_00001-1289102393.vg
-rw-------. 1 root root 1763 Apr  8 10:20 vg_data_00002-1932879749.vg

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
在上面刪除邏輯卷的步驟中,使用 lvremove -v /dev/vg_data/lv_data 命令時,可以看到輸出的詳細資訊,有archiving和create backup。
在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
下面列出並檢查有多少個卷組後設資料備份可用:

[root@localhost ~]# vgcfgrestore --list vg_data
   
  File:		/etc/lvm/archive/vg_data_00000-919482485.vg
  Couldn't find device with uuid l5rSrt-SRfc-KQNw-Tm29-gx4D-ihBw-Xzum3L.
  Couldn't find device with uuid v6wYGZ-0dGA-8ecB-kec8-r2zv-gCJi-gulSAD.
  VG name:    	vg_data
  Description:	Created *before* executing 'vgcreate vg_data /dev/sda /dev/sdb'
  Backup Time:	Thu Apr  8 09:52:49 2021
   
  File:		/etc/lvm/archive/vg_data_00001-1289102393.vg
  VG name:    	vg_data
  Description:	Created *before* executing 'lvcreate -l 100%FREE -n lv_data vg_data'
  Backup Time:	Thu Apr  8 09:54:45 2021
   
  File:		/etc/lvm/archive/vg_data_00002-1932879749.vg
  VG name:    	vg_data
  Description:	Created *before* executing 'lvremove -v /dev/vg_data/lv_data'
  Backup Time:	Thu Apr  8 10:20:53 2021
  File:		/etc/lvm/backup/vg_data
  VG name:    	vg_data
  Description:	Created *after* executing 'lvremove -v /dev/vg_data/lv_data'
  Backup Time:	Thu Apr  8 10:20:53 2021

--list選項列出與VG有關的後設資料備份和存檔檔案。
我們要恢復的事刪除卷組之前的存檔,所以選擇下面圈出來的 /etc/lvm/archive/vg_data_00002-1932879749.vg檔案。
在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
在恢復之前,使用 --test選項來試執行一下:

[root@localhost ~]# vgcfgrestore vg_data -f /etc/lvm/archive/vg_data_00002-1932879749.vg --test
  TEST MODE: Metadata will NOT be updated and volumes will not be (de)activated.
  Restored volume group vg_data.

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
試執行沒問題之後,去掉 --test選項,然後再執行一次:

[root@localhost ~]# vgcfgrestore vg_data -f /etc/lvm/archive/vg_data_00002-1932879749.vg
  Restored volume group vg_data.

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
可看到成功恢復卷組 vg_data

-f選項讀取由vgcfgbackup建立的後設資料檔案。

使用 lvs檢視lv_data邏輯卷是否已恢復,並且使用 lvscan檢視邏輯卷是否啟用:

[root@localhost ~]# lvs
  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    cl      -wi-ao---- 15.00g                                                    
  swap    cl      -wi-ao----  2.00g                                                    
  lv_data vg_data -wi------- 39.99g                                                    
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/cl/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/cl/root' [15.00 GiB] inherit
  inactive          '/dev/vg_data/lv_data' [39.99 GiB] inherit

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
可看到lv_data已恢復,但是狀態是未啟用。下一步就啟用邏輯卷。

啟用邏輯卷

使用 lvchange命令將邏輯卷啟用:

[root@localhost ~]# lvchange -ay /dev/vg_data/lv_data
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/cl/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/cl/root' [15.00 GiB] inherit
  ACTIVE            '/dev/vg_data/lv_data' [39.99 GiB] inherit
[root@localhost ~]# lvs
  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root    cl      -wi-ao---- 15.00g                                                    
  swap    cl      -wi-ao----  2.00g                                                    
  lv_data vg_data -wi-a----- 39.99g

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
上圖可以看到"/dev/vg_data/lv_data"邏輯卷已啟用。

掛載並檢驗

掛載檔案系統:

[root@localhost ~]# mount /dev/vg_data/lv_data /data/
[root@localhost ~]# df -h /data
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_data-lv_data   40G  318M   40G   1% /data

在LVM中恢復已刪除的邏輯卷在LVM中恢復已刪除的邏輯卷
可以看到檔案都已經存在了。

總結

本文已經成功地從卷組的後設資料中恢復被刪除的邏輯卷。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2794744/,如需轉載,請註明出處,否則將追究法律責任。

相關文章