如果对 LVM 做过逻辑卷体系的命令,LVM 会将变化前组的元数据归档在 /etc/lvm/archive/ 目录下,最后一次改变后的组的元数据备份存放在 /etc/lvm/backup/groupname 文件中。这些信息可以使用 vgcfgrestore -l groupname 来查看。

案例1:找回删除的 LV

# umount /mnt/lv1    <--- 卸载 LV
# lvremove /dev/vgdemo/lv1   <--- 删除 LV
# vgcfgrestore -l vgdemo   <--- 查看元数据变化记录

  File:        /etc/lvm/archive/vgdemo_00010-1892020829.vg
  VG name:        vgdemo
  Description:    Created *before* executing 'lvremove /dev/vgdemo/lv1'
  Backup Time:    Wed Aug  7 14:14:26 2019

   
  File:        /etc/lvm/backup/vgdemo
  VG name:        vgdemo
  Description:    Created *after* executing 'lvremove /dev/vgdemo/lv1'
  Backup Time:    Wed Aug  7 14:14:26 2019
  
# vgcfgrestore -f /etc/lvm/archive/vgdemo_00010-1892020829.vg vgdemo    <--- 还原删除的 LV
# lvchange -an /dev/vgdemo/lv1; lvchange -ay /dev/vgdemo/lv1    <--- 对 LV 做一个重新激活以保证 everything is updated.

案例2:恢复违规缩小损坏的 LV

# umount /mnt/lv1    <--- 卸载 LV
# lvresize -L 60M /dev/vgdemo/lv1    <--- 违规缩小 LV
# mount /dev/vgdemo/lv1 /mnt/lv1    <--- 尝试挂载时失败:wrong fs type, bad option, bad superblock
# vgcfgrestore -l vgdemo   <--- 查看元数据变化记录

  File:        /etc/lvm/archive/vgdemo_00011-102582637.vg
  VG name:        vgdemo
  Description:    Created *before* executing 'lvresize -L 60M /dev/vgdemo/lv1'
  Backup Time:    Wed Aug  7 14:21:27 2019

   
  File:        /etc/lvm/backup/vgdemo
  VG name:        vgdemo
  Description:    Created *after* executing 'lvresize -L 60M /dev/vgdemo/lv1'
  Backup Time:    Wed Aug  7 14:21:27 2019

# vgcfgrestore -f /etc/lvm/archive/vgdemo_00011-102582637.vg vgdemo    <--- 还原损坏的 LV
# lvchange -an /dev/vgdemo/lv1; lvchange -ay /dev/vgdemo/lv1    <--- 对 LV 做一个重新激活以保证 everything is updated.
# mount /dev/vgdemo/lv1 /mnt/lv1/    <--- 再次挂载将成功,且里面的文件没有损坏。

注意:不是所有的操作都可以revert,归档文件只记录逻辑卷体系的命令,备份的只是元数据。例如使用dd命令将LV填0的动作就是不记录的。revert到dd之前的状态也无济于事。

-- By 许望(RHCA、OCM、VCP)
最后修改:2020 年 01 月 02 日 08 : 34 PM
如果觉得我的文章对你有用,请随意赞赏