CAS KVM 虚拟机的保护与恢复

简介: 目录目录方式一方式二方式一思路:以 QCOW2 格式来备份和恢复被保护的 KVM 虚拟机Step1:centos7_0(base qcow2) 以 qcow2 格式写入到 iSCSI 设备root@h3cas-e306:/vms/im...

目录

方式一

思路:以 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:尚未测试虚拟机在备份和恢复的过程中虚拟机的应用业务是否被中断。

相关文章
|
3月前
|
KVM 虚拟化
kvm虚拟机快照
这篇文章主要介绍了KVM虚拟机快照的创建、管理、恢复以及删除的详细步骤,包括查看快照信息、创建快照、模拟系统破坏后基于快照恢复虚拟机、使用快照的注意事项以及如何删除快照。
69 2
|
3月前
|
KVM 虚拟化
KVM虚拟机的桥接网络
文章主要介绍了KVM虚拟机的NAT和桥接网络类型的工作原理、配置方法以及如何进行网络模式的切换。
51 3
KVM虚拟机的桥接网络
|
3月前
|
KVM 虚拟化
KVM虚拟机的克隆
这篇文章介绍了如何使用KVM虚拟机进行完整克隆和链接克隆,包括手动克隆和使用virt-clone工具克隆的方法,以及如何编写脚本来实现自动化克隆和删除虚拟机。
86 3
KVM虚拟机的克隆
|
3月前
|
KVM 虚拟化
KVM虚拟机的热迁移
这篇文章详细介绍了KVM虚拟机的热迁移过程,包括临时迁移和永久迁移的步骤,以及可能遇到的故障和解决方案。
135 1
KVM虚拟机的热迁移
|
3月前
|
KVM 虚拟化
kvm虚拟机磁盘管理
文章详细介绍了KVM虚拟机磁盘管理,包括磁盘格式概述、创建虚拟机时如何指定磁盘格式、以及磁盘工具的常用命令,旨在帮助用户更好地理解和操作KVM虚拟机的磁盘管理。
111 1
kvm虚拟机磁盘管理
|
3月前
|
KVM 虚拟化 数据安全/隐私保护
KVM虚拟机安装实战
本文讲述了如何创建并使用VNC连接KVM虚拟机的详细教程,包括安装图解和命令行参数说明。
127 8
|
3月前
|
KVM 虚拟化
KVM虚拟机的冷迁移
这篇文章详细描述了KVM虚拟机的冷迁移过程,包括无依赖环境迁移、有链接克隆虚拟机迁移、多块磁盘迁移的案例,以及可能遇到的错误和解决方案。
119 3
|
4月前
|
KVM 虚拟化
[kvm]创建虚拟机
[kvm]创建虚拟机
|
4月前
|
机器学习/深度学习 监控 Linux
在Linux中,如何创建和管理KVM虚拟机?
在Linux中,如何创建和管理KVM虚拟机?
|
4月前
|
Shell KVM 虚拟化
shell kvm 虚拟机镜像管理-自动创建删除停止和启动 qcow2 虚拟机
这是一个用于自动创建 KVM 虚拟机的 Bash 脚本。用户可以选择创建、删除、启动、关闭虚拟机或查看虚拟机的 IP 地址。脚本支持 Debian 12 和 Ubuntu 22.04 系统,并允许用户配置 CPU 线程数和内存大小。脚本会检查服务器的资源情况,确保输入的配置不会超过可用资源。
64 0