转载请联系:郭晋兵 guojb@cloudbin.cn

(本文采用关闭虚拟机的安全备份方法)

本文主要介绍基于ceph的云主机如何进行关机备份恢复。 备份前关闭虚拟机可以保持数据一致性。

一、备份前的准备

  1. 登录虚拟机,关闭应用
  2. 登录虚拟机,关闭要备份的虚拟机。Windows用关机按钮,Linux用#shutdown -r now命令
  3. 检查虚拟机状态是关机的
  • 从后台命令登录检查 
  • 断开要备份的云硬盘的映射关系
  • 记录云主机的UUID
  • 记录云硬盘的UUID

二、备份云主机系统盘

在本项目的环境中,虚拟机所有的硬盘都在ceph存储上,所以每块硬盘的备份方法一致。

  • 登录后台,查看ceph存储池

可以看到,我们要备份的硬盘分布在compute和volumes两个池中。

compute          11       241G      3.62         1584G       61956        //云主机系统盘池

  volumes          4        206G      3.10         1584G       52965      //云硬盘池

  • 通过云主机的UUID查找系统盘在compute中的位置。

 # rbd -p <pool> ls |grep <instance-ID>

比如OA云主机的UUID是c0c662a3-5c65-4795-b76f-6497778f70b0

找到云主机在ceph的中的位置后,通过rbd命令进行导出,导出时要指定目录和数据导出后的镜像名称,方便以后查找:

rbd export -p <pool> <instance-ID_disk> /<dir>/<file>

注意,导出前要检查可用空间,导出目录要选择在存储上,以免系统空间不够导致备份失败。

三、备份云硬盘

  1. 主机备份完毕后,开始备份云硬盘,云硬盘在备份时要先进行卸载;

参见第一节的卸载云硬盘方法。卸载后,检查如下:

    null
  • 通过云主机的UUID查找系统盘在volumes中的位置。

 # rbd -p <pool> ls |grep <instance-ID>

比如OA云主机的UUID是c0c662a3-5c65-4795-b76f-6497778f70b0

  • 找到云硬盘在ceph的中的位置后,通过rbd命令进行导出,导出时要指定目录和数据导出后的镜像名称,方便以后查找:

rbd export -p <pool> <instance-ID_disk> /<dir>/<file>

注意,导出前要检查可用空间,导出目录要选择在v5000存储上,以免系统空间不够导致备份失败。

四、备份虚拟机配置

  • 备份虚拟机的name、flavor、network等配置信息。可以从Horizon截图或者后台命令导出。

五、后续操作

  1. 完整性校验:

md5sum -c <file.md5sum>

  • 压缩备份的文件。因为备份文件是稀疏文件,有很大的压缩比, 可以转换为qcow2格式保存。

Qemu-img convert -O qcow2  input output

六、恢复虚拟机

  • 恢复虚拟机之前,要查看目前虚拟机的状态
    • 虚拟机正常启动。挂载云硬盘,启动虚拟机。
    • 虚拟机配置还在,可以开关机,但是数据损坏或者不需要保留。这种情况只需要恢复数据盘,做数据覆盖。直接跳到第六节。
    • 虚拟机配置损坏,不能开关机。这种情况需要按照备份的配置重新创建虚拟机和云硬盘,然后做数据覆盖。在后端为ceph的集群中,创建云主机和云硬盘,为了保证一致性,新创建的云主机和云硬盘的name、flavor、network等配置要尽量相同;
  • 解压做备份,验证md5

Qemu-img convert -O raw input output

md5sum -c <file.md5sum>

  • 在ceph中找到虚拟机系统盘和云硬盘相应的位置;

    rbd -p <poolname> ls |grep <instance-ID>

rbd -p <poolname> ls |grep <volume-ID>

  • 找到新创建的云主机和云硬盘对应的磁盘后,将其删除:

    rbd -p <poolname> rm <instance-ID/volume-ID>

  • 然后将迁移过来的云主机和云硬盘镜像,替换为已删除的新创建的云主机和云硬盘的磁盘名称将其导入:

   rbd import -p <pool name> <instance-ID/volume-ID> <(new)nstance-ID/volume-ID>

参考

  • https://docs.openstack.org/cinder/latest/admin/blockstorage-backup-disks.html

感谢Suo Guang Yu和Zhao Jie的支持。

2018.12.10


发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据