记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

vps的数据很重要,被误删除了,客户一定要找回,通过数据公司,费用高耗时长,并且会影响vps的正常运行。这个时候,我们可以通过linux系统的文件恢复工具来恢复:extundelete

该工具的原理是通过 Inode 值去恢复文件,下面开始详细介绍这款工具的使用。



恢复数据前期准备:
1:需要准备额外的一块硬盘,并且这个硬盘的空间要足够用,用于把恢复的数据保存在这块硬盘上面。
2:在恢复数据的时候,所有的vps都需要关机处理,不然无法进行恢复的。


开始操作:
(一)部署extundelete所需的环境,使用命令yum进行安装make,C++等组件。
  1. yum --enablerepo=base --disablerepo=citrix install gcc-c++ make openssl openssl-devel -y
复制代码

(二)下载extundelete工具,并且进行安装。
  1. wget http://os.xensystem.net/XenSystem/download/extundelete-0.2.4.tar.bz2
复制代码
         解压工具包,并且进行安装。
  1. tar -jxvf extundelete-0.2.4.tar.bz2
  2. cd extundelete-0.2.4
  3. ./configure --prefix=/usr/local/extundelete
  4. make && make install
复制代码
        验证是否安装成功。
  1. cd /usr/local/extundelete/bin
  2. ./extundelete -v
复制代码
       出现一下代码表示安装成功。
  1. ---------------------
  2. extundelete version 0.2.4
  3. libext2fs version 1.41.12
  4. Processor is little endian.
  5. ---------------------
复制代码


(三)设置环境变量。
  1. echo "PATH=/usr/local/extundelete/bin:$PATH" >> /etc/profile
  2. echo "export PATH" >> /etc/profile
  3. source /etc/profile
复制代码

(四)使用新的硬盘创建一个分区,并且格式化之后,挂载到一个目录,可以使用xenserver系统的home目录进行挂载。
        创建一个新的分区,可以使用命令gdisk 进行分区,这里就不详细操作了,分区的大小不能小于需要恢复数据的大小。
        格式化分区,并且挂载到home目录。           
  1. mkfs.ext3 /dev/sda4
  2. mount /dev/sda4 /home
复制代码
(五)在所有的vps关机之后,将xenserver的存储进行反挂载。
        查看xenserver存储的挂载目录,记录存储的路径,以及挂载的目录,这个很重要,恢复挂载的时候,需要使用到的。           
  1. df -hal
复制代码

          将存储进行反挂载。         
  1. umount /dev/mapper/XSLocalEXT--89012026--8c0a--e51e--744b--c1536b7d2075-89012026--8c0a--e51e--744b--c1536b7d2075
复制代码



(六)开始进行数据恢复操作,切换到新硬盘挂载的目录home,使用工具extundelete查看删除的文件,并且进行恢复。
           切换到home目录。         
  1. cd /home
复制代码
         使用命令查看存储删除的vps文件,检查需要一段时间,存储越大需要的时间越长,检查完毕之后就可以看被删除的文件,文件后面带“Deleted”, 就表示是已经删除了的文件。
          格式为:extundelete   存储设备 --inode 2
  1. extundelete /dev/mapper/XSLocalEXT--89012026--8c0a--e51e--744b--c1536b7d2075-89012026--8c0a--e51e--744b--c1536b7d2075 --inode 2
复制代码


          如果这里出现多个被删除的文件,并且您也不知道那个文件是客户的vps的虚拟硬盘,那么只能是全部恢复了,如果之前有记录了vps的硬盘vdi的uuid,那么可以根据uuid来恢复,恢复文件需要一定时间。
          注意:恢复的时候,默认被删文件会恢复到当前目录下的RECOVERED_FILES目录中,因此需要查看当前目录是否是挂载了新硬盘的home目录。
          命令格式如下:extundelete --restore-file  文件名  存储设备
  1. extundelete --restore-file d497f387-d779-4672-b600-d6da522127df.vhd  /dev/mapper/XSLocalEXT--89012026--8c0a--e51e--744b--c1536b7d2075-89012026--8c0a--e51e--744b--c1536b7d2075
复制代码
         恢复全部文件可以使用命令。         
  1. extundelete --restore-all /dev/mapper/XSLocalEXT--89012026--8c0a--e51e--744b--c1536b7d2075-89012026--8c0a--e51e--744b--c1536b7d2075
复制代码
        出现Successfully restored file 表示文件恢复成功。


(七) 切换到RECOVERED_FILES目录中,并且查看恢复文件。
  1. cd RECOVERED_FILES/
复制代码


(八)将存储的目录进行挂载,并且恢复的文件复制到存储中。
           挂载存储目录,需要将恢复数据的时候,反挂载的存储进行挂载。
  1. mount /dev/mapper/XSLocalEXT--89012026--8c0a--e51e--744b--c1536b7d2075-89012026--8c0a--e51e--744b--c1536b7d2075 /var/run/sr-mount/89012026-8c0a-e51e-744b-c1536b7d2075
复制代码
(九)新建立一个vps,推荐使用完整模式复制,该vps要和需要恢复数据的vps系统一样,复制完毕之后,vps要处于关机的状态。
          注意:建立vps之后,不能再次对存储进行操作,比如扫描,删除vps,删除vdi等等操作。
          修改新建立的vps的硬盘名称,以便于查询到该硬盘的vdi的uuid。
         

          查询该硬盘的VDI的uuid。         
  1. xe vdi-list name-label=1
复制代码
         
          切换到存储的目录,并且显示文件,看到和vdi的uuid对应的vhd文件
  1. cd /var/run/sr-mount/89012026-8c0a-e51e-744b-c1536b7d2075/
复制代码
         
          删除新新建立vps的硬盘对应的vhd,此步骤非常重要,不能删除错误了,vhd的名称和vps的硬盘vdi的uuid是一样的。
         

(十)复制恢复的数据到存储里面,复制之后的名称,要和删除vhd名称一样。
  1. cp /home/d497f387-d779-4672-b600-d6da522127df.vhd /var/run/sr-mount/216a0461-ebfc-4c9a-92ea-6a374c7e9630.vhd
复制代码
           

(十一)启动vps,就可以在vps里面看到恢复的vhd数据了,这个时候就可以将vps的数据进行复制到其他的地方,保存到云盘等,数据保留之后,重新扫描一下存储,然后就可以进行其他的操作了。

转载请标明出处【xenserver恢复vps数据(ext格式的存储数据恢复)】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论