xenserver里面的vps数据被误删除了,但是vps的数据很重要,这个时候就需要恢复vps的数据了。如果您的xenserver服务器的存储格式是ext的,那么可以使用linux系统恢复文件工具:extundelete ,下面我们来介绍一下这款工具的使用。
注意:extundelete工具无法直接在需要恢复数据的分区或者硬盘上面进行恢复数据,因此需要额外一块硬盘,来进行数据恢复,该硬盘的大小不能小于需要恢复数据的vps硬盘大小。
(一)部署extundelete所需要的环境,需要安装make,gcc等,在xenserver服务器里面执行以下命令即可:
yum --enablerepo=base --disablerepo=citrix install gcc-c++ make openssl openssl-devel -y
(二)安装extundelete工具。
下载extundelete。
wget http://os.xensystem.net/XenSystem/download/extundelete-0.2.4.tar.bz2
解压下载的安装包。
tar -jxvf extundelete-0.2.4.tar.bz2
切换到解压之后的extundelete安装目录。
cd extundelete-0.2.4
安装extundelete。
./configure --prefix=/usr/local/extundelete
make && make install
验证是否安装成功。
cd /usr/local/extundelete/bin
./extundelete -v
出现一下提示就表示安装成功了。
extundelete version 0.2.4
libext2fs version 1.41.12
Processor is little endian.
(三)设置相关的环境变量。
echo "PATH=/usr/local/extundelete/bin:$PATH" >> /etc/profile
echo "export PATH" >> /etc/profile
source /etc/profile
(四)将xenserver服务器里面存储进行反挂载(VPS需要全部关机),以便于恢复文件,查看存储的挂载目录,可以使用df -hal查看的。
umount /var/run/sr-mount/1a5dfcb1-2d79-539e-b793-21b60b51c81a
(五)使用extundelete查看被删除的文件,被删除的文件是可以通过inode值去查看的,一般一个分区挂载到一个目录时,这个值为2,因此我们查看分区inodel值为2的部分。
格式为:extundelete 存储的路径 –inodel 2
extundelete /dev/mapper/XSLocalEXT--1a5dfcb1--2d79--539e--b793--21b60b51c81a-1a5dfcb1--2d79--539e--b793--21b60b51c81a --inode 2
发现一些带Deleted的就是删除的文件,这些文件名都是vdi的uuid,如果能够知道被删除的vps的vdi的uuid就可以直接恢复,如果不知道,那么只能一文件,一个文件去尝试了。
(六)切换到新硬盘挂载的目录,文件恢复的时候,会自动恢复到当前目录下面的RECOVERED_FILES目录里面,我们这里是指定文件恢复。
注意:一定要将文件恢复到新的硬盘里面,并且硬盘的大小不能小于恢复文件的大小。
格式为:extundelete –restore-file 文件名 存储的路径 –指定文件名恢复
格式为:extundelete –restore-all 存储的路径 –恢复存储上面所有删除的文件
格式为:extundelete –restore-all –after “时间戳” 存储的路径 –恢复指定时间戳以后的文件
extundelete --restore-file d84fa733-e189-45a0-b855-338b774162dd.vhd /dev/mapper/XSLocalEXT--1a5dfcb1--2d79--539e--b793--21b60b51c81a-1a5dfcb1--2d79--539e--b793--21b60b51c81a
出现Successfully 代表文件恢复成功了。
(七)将刚才反挂载的xenserver存储挂载回去。
mount /dev/mapper/XSLocalEXT--1a5dfcb1--2d79--539e--b793--21b60b51c81a-1a5dfcb1--2d79--539e--b793--21b60b51c81a /var/run/sr-mount/1a5dfcb1-2d79-539e-b793-21b60b51c81a
(八)创建一台和需要恢复的vps一样系统的vps,然后查看新的创建vps的vdi,并且让恢复的vhd文件替换掉新建立的vps的vhd文件。
注意(重要):在恢复的vhd文件替换掉新建立vps的vhd文件之后,不能再次新建立vps和扫描存储,否则恢复的vhd文件会被删除。
1.查询一下新建立的vps的vdi的uuid,可以看到uuid为:73172c37-4d25-4ae9-a6db-bc10ffed0652
xe vdi-list name-label=1
2.切换到存储的目录,会看到有一个和vdi的uuid一样的vhd文件,这个就是vps的硬盘文件,把他删除了或者重命名。
3.将恢复的vhd文件,复制到存储的目录中,并且命名为新创建vps的vhd文件。
cp /huifu/RECOVERED_FILES/fdc3614b-ee44-479f-a56f-d1d4d8dbe20a.vhd /var/run/sr-mount/1a5dfcb1-2d79-539e-b793-21b60b51c81a/73172c37-4d25-4ae9-a6db-bc10ffed0652.vhd
(九)将新建立的vps开机,就可以看到新建立vps的里面硬盘文件就是需要恢复的vps的数据。这个时候,将里面的数据进行打包,然后进行导出等等备份操作就可以了。
注意:数据备份完毕之后,才可以进行创建vps,存储的扫描等操作,否则会直接删除VHD文件的。