所有问题解决方案
我们都已亲身测试

如何从XenServer恢复误删的VPS数据【lvm格式】

经常有用户问到如何从xenserver的角度恢复误删除的虚拟机,citrix 技术支持并不提供这种数据恢复服务,但是并不是无法恢复,过程比较繁琐,我在这里整理下如何恢复误删的虚拟机数据。
注意:此教程不能完全保证恢复丢失的数据,且具备以下条件才可以进行,首先服务器的存储在丢失数据后,没有写入过任何数据,其次删除的数据距离恢复操作的时间不要太长,以免系统自动写入数据,导致数据被覆盖。

以下是恢复过程:

第一种方法:
前提是客户备份了VG,可以通过VG来还原数据。

这里我新建一个测试存储和测试vm

上图中我们看到SR对应的uuid为4ec639db-6c87-b775-73d1-b54e21b3a31a     
打开xenserver命令行输入“pvscan”找到该存储对应的VG和PV信息

默认VG的信息保存在目录:/etc/lvm/backup

cd /etc/lvm/backup
ls


这里为了测试,我先备份原来的VG信息,这里备份到/root目录下  

cp VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a /root

这个时候我们尝试去删除虚拟机并且删除磁盘文件
删除之后我们看到存储上已经没有对应起数据,因为我们之前已经备份过VG,所以我们直接通过命令来恢复VG信息     

vgcfgrestore VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a -f /root/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a

恢复完成后我们通过lvscan去检查是否恢复

lvscan |grep 4ec6


我们看到这里的VHD-306128a9-7138-4611-a2c6-b79823e1e58b已经恢复,但是这里看到该逻辑卷是inactive的,我们需要先激活

lvchange –ay /dev/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a/VHD-306128a9-7138-4611-a2c6-b79823e1e58b

激活以后这个时候还要注意的是这个vhd的属性是hidden,如果这个时候你执行sr-scan以后会发现这个逻辑卷又不见了,关于vhd的属性我们可以通过命令来查看

vhd-util read –n /dev/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a/VHD-306128a9-7138-4611-a2c6-b79823e1e58b –p


既然这样,我们必须将此属性改默认不隐藏,通过以下命令来完成  

vhd-util set -n /dev/ VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a/VHD-306128a9-7138-4611-a2c6-b79823e1e58b –f hidden –v 0

这个时候新建vm,将对应的磁盘挂载上去即可以恢复。   

第二种方法:
客户没有手动去备份VG的信息,客户在删除vm的同时xenserver上/etc/lvm/backup目录下的VG信息也对应跟着更新,所以这种情况下恢复就比较困难,但是也不是没有办法。     
先找到该VG对应的pv的信息     

pvscan


这里我们看到此VG对应的pv的信息为/dev/sdj,并输出到/tmp/1.txt文档中,可以下载下来,用任何文本编辑软件打开,例如:Notepas++,方便一会数据查找

dd if=/dev/sdj count=10000 |strings > /tmp/1.txt


在以上输出中我们能看到被删除的VHD的信息

注意:如果这里你的存储上有相当多的VHD的话就必须一个个的对了,DD出来的信息和现有VG信息对比,找出被删除VHD。

我这里上面的VHD很少,所以很容易发现,记录一下DD出来的信息。

打开/etc/lvm/backup目录下对应的vg的备份信息     

cat VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a |more  

我们看到正常VHD的信息在VG的备份信息中的为以下格式:

根据我们从PV中查到的vhd的信息,按照上述的格式插入到对应的VG信息中并保存退出

vi VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a

插入一下内容:

继续执行vgcfgrestore     

vgcfgrestore VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a –f VG_XenStorage-4ec639db-6c87-b775-73d1-b54e21b3a31a  

这个时候即可以恢复,回到第一种方法的激活逻辑卷,更改vhd属性hidden为0,新建VM,挂咋磁盘,即可以完成最终数据恢复!

赞(0)
未经允许不得转载:无忧解决网 » 如何从XenServer恢复误删的VPS数据【lvm格式】

登录

找回密码

注册