• CAS KVM 虚拟机的保护与恢复


    目录

    方式一

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

  • 相关阅读:
    CentOS升级Python 2.6到2.7
    ps命令使用 进程查看
    MySQL导入sql脚本 导出数据库
    html php 重定向 跳转 刷新
    Linux查看可执行程序所在路径
    解决phpMyAdmin“登录超时 (1440 秒未活动),请重新登录”的问题
    怎样选购冲锋衣
    常见排序算法及其java实现
    java开发环境搭建
    【转】与BT下载相关的概念
  • 原文地址:https://www.cnblogs.com/jmilkfan-fanguiju/p/10589819.html
Copyright © 2020-2023  润新知