返回顶部
首页 > 资讯 > 服务器 >OpenStack虚拟机快照和增量备份实现方法
  • 515
分享到

OpenStack虚拟机快照和增量备份实现方法

2024-04-02 19:04:59 515人浏览 安东尼
摘要

目录1 快照的概念2 主流libvirt快照实现介绍2.1 libvirt的内部快照操作2.2 libvirt的外部快照操作3 OpenStack原生虚拟机快照和备份4 使用ceph

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/rbd0
mkdir test_dir
mount /dev/rbd0 test_dir

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

umount -f /dev/rbd0
rbd 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_disk
rbd 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-123
rbd rename volumes/restore_disk volumes/volume-123

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

到此这篇关于OpenStack虚拟机快照和增量备份实现的文章就介绍到这了,更多相关OpenStack快照和增量备份内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

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

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

猜你喜欢
  • OpenStack虚拟机快照和增量备份实现方法
    目录1 快照的概念2 主流libvirt快照实现介绍2.1 libvirt的内部快照操作2.2 libvirt的外部快照操作3 OpenStack原生虚拟机快照和备份4 使用ceph...
    99+
    2024-04-02
  • OpenStack虚拟机快照和增量备份怎么实现
    这篇“OpenStack虚拟机快照和增量备份怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“OpenStack虚拟机快...
    99+
    2023-06-29
  • AmazonAurora是否支持数据库的快照备份和增量备份
    Amazon Aurora支持数据库的快照备份和增量备份,这些备份选项可帮助您保护数据并提供灾难恢复能力。 快照备份:Amazon...
    99+
    2024-04-02
  • mysql全量备份和增量备份方法
    文章目录 一、mysql全量备份1、修改 /etc/my.cnf文件添加如下内容2、测试任务脚本3、添加执行脚本4、天假定时任务 二、mysql增量备份1、修改 /etc/my.cnf文件...
    99+
    2023-10-11
    mysql 数据库
  • 虚拟机下CentOS如何实现快照和克隆功能
    这篇文章给大家分享的是有关虚拟机下CentOS如何实现快照和克隆功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、快照的使用打开快照管理器,开始:拍摄快照,快照拍摄完成。快照的恢复:选择转到某个快照即可,快照...
    99+
    2023-06-10
  • 如何实现mysql 全量和增量备份
    下面一起来了解下如何实现mysql 全量和增量备份,相信大家看完肯定会受益匪浅,文字在精不在多,希望如何实现mysql 全量和增量备份这篇短内容是你想要的。mysql 全量备份:vim /root...
    99+
    2024-04-02
  • SVN仓库的全量备份和增量备份怎么实现
    这篇文章主要介绍“SVN仓库的全量备份和增量备份怎么实现”,在日常操作中,相信很多人在SVN仓库的全量备份和增量备份怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SVN仓库的全量备份和增量备份怎么实现...
    99+
    2023-06-04
  • mysql中怎么实现物理备份和增量备份
    本篇文章为大家展示了mysql中怎么实现物理备份和增量备份,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 物理备份:    &nbs...
    99+
    2024-04-02
  • linux实现对上传文件的定时备份、增量备份的方法
    介绍 如果你们使用的是类似阿里云的OSS存储服务,那么可以使用服务提供的定时备份,这样可以不用考虑在服务器上做文件备份。 实际上想实现基础的备份还是非常简单的,我们平常使用tar、unzip等命令打包文件,在这个基础...
    99+
    2022-06-03
    linux 上传文件备份 linux 上传文件定时备份 linux上传文件增量备份
  • 数据库云主机快照备份的方法是什么
    数据库云主机快照备份的方法可以有以下几种:1. 冷备份:停止数据库服务,然后将数据库文件拷贝到备份存储中。这种方法简单易行,但会导致...
    99+
    2023-08-18
    云主机 数据库
  • mysqldump如何实现全量和增量备份脚本
    这篇文章将为大家详细讲解有关mysqldump如何实现全量和增量备份脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 #!/bin/bash ...
    99+
    2024-04-02
  • 虚拟主机备份程序和数据的方法是什么
    虚拟主机备份程序是用于备份虚拟主机上的数据和配置的软件工具。下面是备份虚拟主机的一般方法:1. 手动备份:手动下载网站文件、数据库备...
    99+
    2023-08-08
    虚拟主机
  • 虚拟主机mysql备份恢复的方法是什么
    虚拟主机上的MySQL备份恢复的方法如下:1. 使用phpMyAdmin进行备份和恢复:phpMyAdmin是一个基于Web的MyS...
    99+
    2023-08-08
    虚拟主机
  • mysql全量备份和快速恢复的方法整理
    一个简单的mysql全量备份脚本,备份最近15天的数据。 备份 #每天备份mysql数据库(保存最近15天的数据脚本) DATE=$(date +%Y%m%d) /home/cuixiaohuan/lamp/mys...
    99+
    2022-05-23
    mysql 全量备份 快速恢复
  • 阿里云服务器还原快照实现数据备份和恢复
    本文将介绍如何在阿里云服务器上使用快照功能进行数据备份和恢复,以及如何快速还原快照以确保数据安全。 1. 什么是快照?快照是阿里云服务器提供的一项数据备份功能,它可以帮助用户在服务器发生故障或数据丢失时快速恢复数据。通过创建快照,用户可以将...
    99+
    2024-01-16
    阿里 快照 数据备份
  • Linux平台下如何实现RMAN 全备和增量备份shell脚本
    这篇文章主要介绍了Linux平台下如何实现RMAN 全备和增量备份shell脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全备脚本以&n...
    99+
    2024-04-02
  • 阿里云服务器的快照与镜像实现数据备份和恢复
    本文将介绍阿里云服务器上的快照与镜像功能,解释它们的作用和用途,并给出一些实际的应用场景。 1. 快照(Snapshot)快照是阿里云服务器上的一种数据备份方式,它可以快速地创建一个文件系统的镜像,用于记录服务器上某个时间点的数据状态。快照...
    99+
    2024-01-14
    阿里 快照 镜像
  • IIS中实现备份和还原的方法
    小编给大家分享一下IIS中实现备份和还原的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!备份 IIS 配置若要备份 IIS&nb...
    99+
    2023-06-14
  • 轻量应用服务器和虚拟主机连接方法
    轻量应用服务器和虚拟主机是使用服务器进行轻量级应用程序的两种常见连接方法。以下是它们的简要介绍: Spring Boot项目中的轻量应用服务器(LB):这是一个基于spring Boot框架的轻量应用服务器,它使用SSH密钥和Sprin...
    99+
    2023-10-26
    虚拟主机 服务器 方法
  • 轻量应用服务器和虚拟主机连接方法有哪些
    轻量应用服务器和虚拟主机可以使用不同的连接方法。以下是一些常见的方法: DNS服务器:使用DNS服务器可以将域名转化为可信的IP地址,这是轻量应用服务器和虚拟主机连接的首选。 DHCP服务器:将DHCP服务器配置为一个IP地址,可以使其...
    99+
    2023-10-26
    虚拟主机 服务器 方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作