返回顶部
首页 > 资讯 > 精选 >OpenStack虚拟机快照和增量备份怎么实现
  • 486
分享到

OpenStack虚拟机快照和增量备份怎么实现

2023-06-29 20:06:47 486人浏览 八月长安
摘要

这篇“OpenStack虚拟机快照和增量备份怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenStack虚拟机快

这篇“OpenStack虚拟机快照和增量备份怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenStack虚拟机快照和增量备份怎么实现”文章吧。

1 快照的概念

一般对快照的理解就是能够将系统还原到某个瞬间,这就是快照的作用。
快照针对要保存的数据分为内存快照和磁盘快照,内存快照就是保存当前内存的数据,磁盘快照就是保存硬盘的数据。
快照针对保存方式又分为内部快照和外部快照。
内部快照:是指快照信息和虚拟机存在同一个qcow2镜像中,使用单个的 qcow2 的文件来保存快照和快照之后的改动。这种快照是 libvirt 的默认行为,现在的支持很完善(创建、回滚和删除),但是只能针对 qcow2 格式的磁盘镜像文件,而且其过程较慢等。
外部快照:是指做快照时原虚拟机的disk将变为readonly的模板镜像,然后会新建一个qcow2文件来记录与原模板镜像的差异数据,外部快照的结果是形成一个qcow2文件链:original <- snap1 <- snap2 <- snap3

2 主流libvirt快照实现介绍

2.1 libvirt的内部快照操作

以下是利用libvirt的virsh工具来创建一些内置快照:
创建虚拟机快照:

virsh snapshot-create-as --name test001 --description 'abc' instance-00000001

列出虚拟机的快照:

virsh snapshot-list instance-00000001

查看某个快照信息:

virsh snapshot-dumpxml instance-00000001 test001

回滚到某个快照:

virsh snapshot-revert instance-00000001 test001

删除某个快照:

virsh snapshot-delete instance-00000001 test001

其实这些其实现的本质是在镜像内做一些标记,内存状态数据则保存到某一个磁盘镜像文件内,使用以下命令可以看到在该镜像做的标记:

qemu-img info /var/lib/nova/instances/87985777-f83D-4fff-9723-025c2b889895/disk

2.2 libvirt的外部快照操作

可以使用 “--memspec” 和 “--diskspec” 参数来给内存和磁盘外部快照。这时候,在获取内存状态之前需要 Pause 虚机,就会产生服务的 downtime。
比如:virsh snapshot-create-as instance-00000001 livesnap2 --memspec /home/livesnap2mem,snapshot=external --diskspec vda,snapshot=external
virsh snapshot-dumpxml instance-00000001 livesnap2可以看到具体外置存放位置信息
但是libvirt现在还不支持回滚和删除外置快照,如下
virsh snapshot-revert instance-00000001 livesnap2
error: unsupported configuration: revert to external snapshot not supported yet

3 OpenStack原生虚拟机快照和备份

OpenStack中对虚拟机的快照其实是生成一个完整的镜像,保存在glance服务中,并且可以利用这个快照镜像生成新的虚拟机,与原本的虚拟机并没有什么关系。而比较主流的快照实现应该是有快照链的,且包含内存快照和磁盘快照。
OpenStack中的备份其实跟快照没啥区别,调用的都是同一个生成镜像的接口,更多的备份是cinder对磁盘的备份,没有对整个虚拟机进行备份的接口。

4 使用ceph实现OpenStack虚拟机快照功能

(1)首先是配置OpenStack的存储环境是Ceph存储,因为我们要借助ceph的一些特性来实现快照


(2)从上面我们可以知道做快照,主要是对磁盘做快照和对内存数据进行保存,如果是ceph环境,那么OpenStack虚拟机的根磁盘和磁盘在ceph下就是一个块设备,比如根磁盘一般就是保存在vms池中,其路径是vms/<instance_id>_disk,而磁盘一般就是保存在volumes池中,其路径是volumes/volume-<volume_id>;对于块设备,ceph可以使用rbd命令来对块设备做快照,比如我们对虚拟机根磁盘做快照:

rbd snap create vms/<instance_id>_disk@<snapshot_name>

snapshot_name是快照名
回滚时则执行:

rbd snap rollback vms/<instance_id>_disk@<snapshot_name>

这其实可以理解为是块设备的内部快照方式

(3)对于内存数据,我们可以使用libvirt的save接口将内存状态数据保存到一个文件中,为了保存到块设备中,我们可以这样做:
<1>新建一个块设备(这里假设在snapshots池中创建1G大小的名为test的块设备):

rbd create --size 1024 snapshos/test

<2>将块设备map到物理主机中

rbd map snapshos/test/dev/rbd0

可以看到会输出一个磁盘设备符,使用lsblk命令则能看到该设备

<3>格式化该设备并挂载到某个目录下

mkfs.xfs /dev/rbd0mkdir test_dirmount /dev/rbd0 test_dir

然后我们就可以向save接口传入test_dir目录下的一个文件名,其会将内存状态数据保存到该文件中,接着umount掉该块设备:

umount -f /dev/rbd0rbd unmap /dev/rbd0

这样内存数据也一样保存到块设备中了,要使用时再挂载该块设备访问即可,回滚内存对应的是向libvirt的restore接口传入该内存数据文件

注意点:
(1)libvirt的save接口调用保存完内存状态数据后,虚拟机会关闭,这时可以执行restore接口虚拟机回滚回去
(2)回滚虚拟机时,先将该虚拟机的vm_state状态置为ACTIVE,否则回滚会不成功

5 使用ceph实现OpenStack虚拟机增量备份功能

这里说两个备份名词,全量备份和增量备份。
全量备份:保存的是整个虚拟机的完整的数据
增量备份:保存的只是跟上一次相比有改动的数据
需要先做一次全量备份后,后续才能做增量备份

5.1 创建备份

这里以虚拟机的根磁盘 vms/<instance_id>_disk为例子做增量备份的操作演示:
(1)做一次全量备份
先对该块设备做一次快照:

rbd snap create vms/<instance_id>_disk@time1

然后导出差异数据:

rbd export-diff vms/<instance_id>_disk@time1 time1_diff_file

(2)再做一次增量备份
先对该块设备做一次快照:

rbd snap create vms/<instance_id>_disk@time2

导出time1到time2之间这段时间该磁盘的差异数据:

rbd export-diff vms/<instance_id>_disk@time2 --from-snap vms/<instance_id>_disk@time1 time2_diff_file

5.2 恢复备份

(1)如果该磁盘还存在,则直接用rbd snap rollback回滚就可以了,比如要回滚到time1这个时间点:

rbd snap rollback vms/<instance_id>_disk@time1

(2)该磁盘已经被删掉了,要恢复该磁盘到time2的时间点:
<1>创建一个块设备(大小跟删除的那块一样大小,这里以1G为例子)

rbd create --size 1024 vms/restore_disk

<2>导入差异数据,注意这里的导入顺序,先恢复到time1,再恢复到time2

rbd import-diff time1_diff_file vms/restore_diskrbd import-diff time2_diff_file vms/restore_disk

这时这块块设备就恢复回time2的状态了

友情经验点:
(1)上面的操作都是自己创建一个块设备然后进行回滚,那怎么把这块给到OpenStack的虚拟机使用呢?在OpenStack中添加一个磁盘是先调用api.cinder.volume_create接口创建一个卷,然后调用api.nova.instance_volume_attach将该卷连接到虚拟机中,其实我们只要将它创建的块设备替换成我们的就可以了,比如它生成的是volumes/volume-123,我们自己回滚好的是volumes/restore_disk,则先删掉它的块设备,然后重命名我们的块设备:

rbd rm volumes/volume-123rbd rename volumes/restore_disk volumes/volume-123

(2)同理,如果我们要从备份文件中恢复到一个新的虚拟机,那么就先创建一个虚拟机,然后将它的根磁盘替换为我们恢复过数据的根磁盘,然后接着是替换硬盘,这样我们便从备份文件中恢复到一个新的虚拟机了

以上就是关于“OpenStack虚拟机快照和增量备份怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: OpenStack虚拟机快照和增量备份怎么实现

本文链接: https://lsjlt.com/news/326329.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • OpenStack虚拟机快照和增量备份怎么实现
    这篇“OpenStack虚拟机快照和增量备份怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenStack虚拟机快...
    99+
    2023-06-29
  • OpenStack虚拟机快照和增量备份实现方法
    目录1 快照的概念2 主流libvirt快照实现介绍2.1 libvirt的内部快照操作2.2 libvirt的外部快照操作3 OpenStack原生虚拟机快照和备份4 使用ceph...
    99+
    2024-04-02
  • AmazonAurora是否支持数据库的快照备份和增量备份
    Amazon Aurora支持数据库的快照备份和增量备份,这些备份选项可帮助您保护数据并提供灾难恢复能力。 快照备份:Amazon...
    99+
    2024-04-02
  • mysql中怎么实现物理备份和增量备份
    本篇文章为大家展示了mysql中怎么实现物理备份和增量备份,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 物理备份:    &nbs...
    99+
    2024-04-02
  • SVN仓库的全量备份和增量备份怎么实现
    这篇文章主要介绍“SVN仓库的全量备份和增量备份怎么实现”,在日常操作中,相信很多人在SVN仓库的全量备份和增量备份怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SVN仓库的全量备份和增量备份怎么实现...
    99+
    2023-06-04
  • mysql增量备份怎么实现
    MySQL增量备份可以通过以下几种方法实现: 使用MySQL的二进制日志(Binary Log):MySQL的二进制日志记录了数...
    99+
    2024-04-09
    mysql
  • Mysql中怎么实现增量备份
    这期内容当中小编将会给大家带来有关Mysql中怎么实现增量备份,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。脚本描述每7天备份一次所有数据,每天备份binlog,也就是增...
    99+
    2024-04-02
  • Python中怎么实现增量备份
    这期内容当中小编将会给大家带来有关Python中怎么实现增量备份,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python增量备份代码示例:#!/usr/bin/python  #-*...
    99+
    2023-06-17
  • 虚拟机下CentOS如何实现快照和克隆功能
    这篇文章给大家分享的是有关虚拟机下CentOS如何实现快照和克隆功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、快照的使用打开快照管理器,开始:拍摄快照,快照拍摄完成。快照的恢复:选择转到某个快照即可,快照...
    99+
    2023-06-10
  • 如何实现mysql 全量和增量备份
    下面一起来了解下如何实现mysql 全量和增量备份,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何实现mysql 全量和增量备份这篇短内容是你想要的。mysql 全量备份:vim /root...
    99+
    2024-04-02
  • 怎么实现oracle的exp增量备份
    这篇文章主要讲解了“怎么实现oracle的exp增量备份”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么实现oracle的exp增量备份”吧!oracle...
    99+
    2024-04-02
  • mysqldump如何实现全量和增量备份脚本
    这篇文章将为大家详细讲解有关mysqldump如何实现全量和增量备份脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 #!/bin/bash ...
    99+
    2024-04-02
  • 虚拟主机数据库怎么备份
    要备份虚拟主机数据库,可以按照以下步骤进行操作:1. 登录到虚拟主机的控制面板,例如cPanel或Plesk。2. 找到数据库管理工...
    99+
    2023-08-22
    虚拟主机 数据库
  • 虚拟主机mysql数据库怎么备份和还原
    虚拟主机mysql数据库备份和还原的方法:1、虚拟主机mysql数据库可以直接拷贝数据库文件进行备份,但容易出现问题,使用MySQL...
    99+
    2023-02-14
    虚拟主机mysql 虚拟主机
  • mysql怎么增量备份和恢复数据
    这篇文章主要介绍“mysql怎么增量备份和恢复数据”,在日常操作中,相信很多人在mysql怎么增量备份和恢复数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql怎么增...
    99+
    2024-04-02
  • Percona XtraBackup怎样实现全备及增量备份与恢复
    Percona XtraBackup怎样实现全备及增量备份与恢复,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 p...
    99+
    2024-04-02
  • SQLServer 中怎么实现快速备份
    这篇文章给大家介绍SQLServer 中怎么实现快速备份,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  1、硬盘来备份 磁带来存档   备份到硬盘比备份到磁带要快得多,大多数经验丰富...
    99+
    2024-04-02
  • 怎么将网站自动备份到虚拟主机
    要将网站自动备份到虚拟主机,您可以采取以下步骤:1. 确保您有虚拟主机的登录凭据和备份目的地(例如FTP服务器)的凭据。2. 编写一...
    99+
    2023-09-12
    虚拟主机
  • 网站虚拟主机租用怎么备份数据
    网站虚拟主机租用备份数据的方法:1、手动备份数据,主要是备份网站的程序文件及数据库;2、使用主机面板自带备份功能,备份完成后会产生g...
    99+
    2023-02-08
    网站虚拟主机租用 网站虚拟主机 虚拟主机
  • 阿里云服务器还原快照实现数据备份和恢复
    本文将介绍如何在阿里云服务器上使用快照功能进行数据备份和恢复,以及如何快速还原快照以确保数据安全。 1. 什么是快照?快照是阿里云服务器提供的一项数据备份功能,它可以帮助用户在服务器发生故障或数据丢失时快速恢复数据。通过创建快照,用户可以将...
    99+
    2024-01-16
    阿里 快照 数据备份
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作