目录

方式一

思路:以 QCOW2 格式来备份和恢复被保护的 KVM 虚拟机

  • Step1:centos7_0(base qcow2) 以 qcow2 格式写入到 iSCSI 设备
root@h3cas-e306:/vms/images# virsh list --all
Id Name State
----------------------------------------------------
33 centos7 running
root@h3cas-e306:/vms/images# virsh domblklist centos7
Target Source
------------------------------------------------
vda /vms/images/centos7_0
hda /vms/isos/CentOS-7-x86_64-Minimal-1511.iso
root@h3cas-e306:/vms/images# qemu-img convert -f qcow2 /vms/images/centos7_0 -O qcow2 /dev/sdd
root@h3cas-e306:/vms/images# qemu-img info /dev/sdd
image: /dev/sdd
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 0
cluster_size: 262144
Format specific information:
compat: 1.1
lazy refcounts: false
  • Step2:尝试使用 iSCSI 设备手动启动 KVM 虚拟机
# 创建 XML 文件
root@h3cas-e306:/etc/libvirt/qemu# vim centos7_q_0.xml <domain type='kvm'>
<name>centos7_q_0</name>
<uuid>d668e699-22a4-464b-99c4-1ffdcd6ad4e1</uuid>
<osha>0</osha>
<timesync>0</timesync>
<automem>0</automem>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<memorySlots>10</memorySlots>
<maxMemory unit='KiB'>34359738368</maxMemory>
<blkiotune>
<weight>300</weight>
</blkiotune>
<memtune>
<priority>1</priority>
</memtune>
<memoryBacking>
<locked>0</locked>
</memoryBacking>
<vcpu placement='static' current='2'>24</vcpu>
<cputune>
<shares>512</shares>
<period>1000000</period>
<quota>-1</quota>
</cputune>
<os>
<type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
<system>linux</system>
<boot dev='hd'/>
<boot dev='cdrom'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu>
<topology sockets='24' cores='1' threads='1'/>
<numa>
<cell cpus='0-1' memory='4194304'/>
</numa>
<gurantee unit='MHz'>0</gurantee>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<tools upgrade='auto'/>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='directsync' io='native'/>
<source file='/dev/sdd'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw' cache='none'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</controller>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/centos7.agent'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</memballoon>
</devices> root@h3cas-e306:/etc/libvirt/qemu# virsh define centos7_q_0.xml
Domain centos7_q_0 defined from centos7_q_0.xml root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
33 centos7 running
- centos7_q_0 shut off root@h3cas-e306:/etc/libvirt/qemu# virsh start centos7_q_0
Domain centos7_q_0 started root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
33 centos7 running
34 centos7_q_0 running
  • Step3:对 centos7_0 做快照得到增量快照数据 centos7_1(increment qcow2)
root@h3cas-e306:/vms/images# virsh snapshot-create-as --domain centos7 snap01 snap01-desc --disk-only --diskspec vda,snapshot=external,file=/vms/images/centos7_1 --atomic
Domain snapshot snap01 created
root@h3cas-e306:/vms/images# l
centos7_0 centos7_1
root@h3cas-e306:/vms/images# qemu-img info centos7_1
image: centos7_1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 772K
cluster_size: 262144
backing file: /vms/images/centos7_0
backing file format: qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/vms/images# virsh domblklist centos7
Target Source
------------------------------------------------
vda /vms/images/centos7_1
hda /vms/isos/CentOS-7-x86_64-Minimal-1511.iso

NOTE: 现在虚拟机的数据会写入到 centos7_1 中, centos7_0 理论上应该是只读的.

  • Step4:Copy centos7_1 的副本到备份目录下
root@h3cas-e306:/vms/images# cp centos7_1 /kvm_backup/
root@h3cas-e306:/vms/images# ll /kvm_backup/
total 2572
drwxr-xr-x 2 root root 4096 Apr 18 23:39 ./
drwxr-xr-x 33 root root 4096 Apr 18 23:22 ../
-rw------- 1 root root 2883584 Apr 18 23:39 centos7_1
  • Step5:rebase 并 commit centos7_1 到 iSCSI 设备中
root@h3cas-e306:/etc/libvirt/qemu# virsh destroy 34
Domain 34 destroyed
root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
33 centos7 running
- centos7_q_0 shut off
root@h3cas-e306:/vms/images# cd /kvm_backup/
root@h3cas-e306:/kvm_backup# ls
centos7_1
root@h3cas-e306:/kvm_backup# qemu-img info centos7_1
image: centos7_1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 2.5M
cluster_size: 262144
backing file: /vms/images/centos7_0
backing file format: qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/kvm_backup# qemu-img info /dev/sdd
image: /dev/sdd
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 0
cluster_size: 262144
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/kvm_backup# qemu-img rebase -b /dev/sdd -F qcow2 centos7_1
root@h3cas-e306:/kvm_backup# qemu-img info centos7_1
image: centos7_1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 15M
cluster_size: 262144
backing file: /dev/sdd
backing file format: qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/kvm_backup# qemu-img info /dev/sdd
image: /dev/sdd
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 0
cluster_size: 262144
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/kvm_backup# qemu-img commit -f qcow2 centos7_1
Image committed.
root@h3cas-e306:/kvm_backup# qemu-img info centos7_1
image: centos7_1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 15M
cluster_size: 262144
backing file: /dev/sdd
backing file format: qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/kvm_backup# qemu-img info /dev/sdd
image: /dev/sdd
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 0
cluster_size: 262144
Format specific information:
compat: 1.1
lazy refcounts: false
  • Step6:使用 commit 后的 iSCSI 设备启动虚拟机
root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
33 centos7 running
- centos7_q_0 shut off root@h3cas-e306:/etc/libvirt/qemu# virsh start centos7_q_0
Domain centos7_q_0 started root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
33 centos7 running
35 centos7_q_0 running

NOTE: 虚拟机启动成功, 证明 QCOW2 格式的虚拟机增量快照文件是能够合并到虚拟机 Base 数据文件中的。

方式二

思路:以 RAW 格式来备份和恢复被保护的 KVM 虚拟机

  • Step1:centos7(base qcow2) 以 raw 格式写入到 iSCSI 设备
root@h3cas-e306:/vms/images# qemu-img info centos7
image: centos7
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 1.0G
cluster_size: 262144
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/vms/images# qemu-img convert -f qcow2 /vms/images/centos7 -O raw /dev/sdd
root@h3cas-e306:/vms/images# qemu-img info /dev/sdd
image: /dev/sdd
file format: raw
virtual size: 23G (24696061952 bytes)
disk size: 0
  • Step2:使用 iSCSI 设备手动启动 KVM 虚拟机
root@h3cas-e306:/etc/libvirt/qemu# virsh define centos7_r_0.xml
Domain centos7_r_0 defined from centos7_r_0.xml
root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
36 centos7 running
- centos7_q_0 shut off
- centos7_r_0 shut off
root@h3cas-e306:/etc/libvirt/qemu# virsh start centos7_r_0
Domain centos7_r_0 started
root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
36 centos7 running
37 centos7_r_0 running
- centos7_q_0 shut off
  • Step3:对 centos7 做快照得到增量快照数据 centos7_1(increment qcow2)
root@h3cas-e306:/vms/images# virsh snapshot-create-as --domain centos7 snap01 snap01-desc --disk-only --diskspec vda,snapshot=external,file=/vms/images/centos7_1 --atomic
Domain snapshot snap01 created
root@h3cas-e306:/vms/images# ls
centos7 centos7_1
root@h3cas-e306:/vms/images# qemu-img info centos7_1
image: centos7_1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 2.0M
cluster_size: 262144
backing file: /vms/images/centos7
backing file format: qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
  • Step4: Copy centos7_1 的副本到备份目录下
root@h3cas-e306:/vms/images# cp centos7_1 /kvm_backup/
root@h3cas-e306:/vms/images# cd /kvm_backup/
root@h3cas-e306:/kvm_backup# ls
centos7_1
root@h3cas-e306:/kvm_backup# qemu-img info /kvm_backup/centos7_1
image: /kvm_backup/centos7_1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 2.5M
cluster_size: 262144
backing file: /vms/images/centos7
backing file format: qcow2
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/kvm_backup# qemu-img info /dev/sdd
image: /dev/sdd
file format: raw
virtual size: 23G (24696061952 bytes)
disk size: 0
  • Step5:以 raw 的格式 rebase 并 commit centos7_1 到 iSCSI 设备中
root@h3cas-e306:/kvm_backup# qemu-img rebase -b /dev/sdd -F raw centos7_1
root@h3cas-e306:/kvm_backup# qemu-img info centos7_1
image: centos7_1
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 25M
cluster_size: 262144
backing file: /dev/sdd
backing file format: raw
Format specific information:
compat: 1.1
lazy refcounts: false
root@h3cas-e306:/kvm_backup# qemu-img info /dev/sdd
image: /dev/sdd
file format: raw
virtual size: 23G (24696061952 bytes)
disk size: 0
root@h3cas-e306:/kvm_backup# qemu-img commit -f qcow2 centos7_1
Image committed.
root@h3cas-e306:~# qemu-img info /dev/sdd
image: /dev/sdd
file format: raw
virtual size: 23G (24696061952 bytes)
disk size: 0
  • Step6: 使用 commit 后的 iSCSI 设备再次启动虚拟机
root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
38 centos7 running
- centos7_q_0 shut off
- centos7_r_0 shut off root@h3cas-e306:/etc/libvirt/qemu# virsh start centos7_r_0
Domain centos7_r_0 started root@h3cas-e306:/etc/libvirt/qemu# virsh list --all
Id Name State
----------------------------------------------------
38 centos7 running
39 centos7_r_0 running
- centos7_q_0 shut off

NOTE:尚未测试虚拟机在备份和恢复的过程中虚拟机的应用业务是否被中断。

CAS KVM 虚拟机的保护与恢复的更多相关文章

  1. centos7命令行模式安装&&配置_br0+kvm+虚拟机+添加硬盘+快照及恢复

    KVM创建虚拟机步骤 Submitted by zhaoley on October 18, 2016 - 10:43am 测试环境: 1: 43.243.130.89, CentOS Linux r ...

  2. 烂泥:KVM快照的创建与恢复

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 因为要做有关KVM虚拟机的实验,所以需要虚拟机生成快照.查询相关资料,说KVM可以使用两种方法生成虚拟机的快照. 方法一.使用qemu-img snap ...

  3. (转)CentOS7安装KVM虚拟机详解

    原文:https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E ...

  4. 6、安装kvm虚拟机

    6.1.虚拟机开启虚拟化: 6.2.检查linux虚拟机cpu是否开启了虚拟化: egrep -o 'vmx|svm' /proc/cpuinfo vmx 6.3.安装kvm管理和安装kvm虚拟机的软 ...

  5. Oracl Linux KVM虚拟机备份

    Oracle Linux  KVM 作为Oracle Linux的一部分,基于KVM的Oracle Linux 服务器虚拟化解决方案在功能上得到了增强.用户可以利用Oracle Linux旧版本,将操 ...

  6. 烂泥:KVM虚拟机克隆

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章介绍了有关KVM虚拟机快照的创建与恢复,这篇文章我们来介绍有关KVM虚拟机克隆. KVM虚拟机的克隆,我们可以分以下几步: 1. 使用virt ...

  7. kvm虚拟机日常管理和配置操作命令梳理

    KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理.1)查看KVM虚拟机配置文件及运行状态KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/autostart目录是配置kvm ...

  8. 【转】libvirt kvm 虚拟机上网 – Bridge桥接

    libvirt kvm 虚拟机上网 – Bridge桥接 2013 年 7 月 3 日 / 东东东 / 暂无评论 目录 [hide] 1 Bridge桥接原理 2 在host机器配置桥接网络 2.1  ...

  9. 实现将VirtualBox 虚拟机转换为KVM虚拟机的步骤

    原来在桌面上一直使用virtualbox虚拟机管理程序(VMM)构建虚拟机安装不同的操作系统,现在 研究linux下的KVM,能否将已经建立的virtualBox虚拟客户机(guest)转换为KVM虚 ...

随机推荐

  1. div和span互换

    div是块级元素,它不论大小默认占一行,而且可以设置宽高以及外边距span是行内元素,它占它自身大小的位置,而且不能设置宽高以及边距同时div也可以变为span (display:inline),这样 ...

  2. js 全世界最短的IE浏览器判断代码

    var ie = !+"\v1"; 仅仅需要7bytes!参见这篇文章,<32 bytes, ehr ... 9, ehr ... 7!!! to know if your ...

  3. VMware Workstation key

    VMware workstation 11 Pro key VY790-6FF9M-H8D3Q-1PY5T-YFUTD AA5M8-8NGD3-M805Y-K5Q7G-X28E6 UY3TR-88W4 ...

  4. 第二节,下载openwrt源码和编译环境

    文章的开始先说两个重点 1.不要使用root用户编译,普通用户编译即可. 2.自行搭建梯子,以免编译失败. 一,进入虚拟机内的Ubuntu系统 点击左下角的显示应用程序,我们去修改一下Ubuntu的源 ...

  5. [apache spark]洞见纽约车辆事故|bluemix|apache spark

    今天,我们用spark 来分析 下一纽约市车辆事故的大数据. 前提条件: 1.有bluemix 帐号,并并在bluemix的dashboard里创建了一个sparck instance. 2.稳定可以 ...

  6. memcpy函数的用法以及实现一个memcpy函数

    memcpy的用法 在项目中经常用到memcpy来实现内存的拷贝工作,如下代码片段 memcpy( pData, m_pSaveData_C, iSize * sizeof( unsigned sho ...

  7. cocos随笔

    随笔:  [ 1 ] active能隐藏元素,且不占空间,但仍存在,索引时,仍能得到 [ 2 ] 碰到参数传不进去的时候可以试着用属性赋值的方法代替传参 [ 3 ] getChildByName是按照 ...

  8. Java 内存结构之虚拟机栈

    2.虚拟机栈 定义:虚拟机栈(Java Virtual Machine Stacks)就是每个线程运行需要的内存空间,栈由一个一个的栈帧(Frame)组成,栈帧就是每个方法运行时需要的内存(方法的参数 ...

  9. Qt学习笔记-Widget布局管理

    Qt学习笔记4-Widget布局管理       以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...

  10. Spring Cloud(1)相关概念

    单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子 ...