KVM虚拟机静态迁移

KVM 背景简介

KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor,KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。

Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被 KVM 置于一种受限制的 CPU 模式下运行。

KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截。Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理。

QEMU:修改过的为 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过 IOCTL /dev/kvm 设备和 KVM 交互。

安装virsh、qemu

sudo apt-get install qemu-kvm libvirt

拷贝image文件

先查看下要img的格式:
qemu-img info devstack-controller-clone.img

image: devstack-controller.img
file format: raw
virtual size: 120G (128849125376 bytes)
disk size: 120G
[root@ue211 images]# qemu-img info devstack-controller.img
image: devstack-controller.img
file format: raw
virtual size: 120G (128849018880 bytes)
disk size: 120G

说明这是一个raw格式的image,
image文件通常是raw,相对较大,不适合传输,所以先把raw转为qcow2格式:
qemu-img convert -c -f raw -O qcow2 devstack-controller.img devstack-controller-clone2.img

看看转换后的格式:
qemu-img info devstack-controller-clon2e.img

image: devstack-controller-clone2.img
file format: qcow2
virtual size: 120G (128849018880 bytes)
disk size: 3.5G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false

用scp传到目标地址上:
scp /var/lib/libvirt/images/devstack-controller-clone2.img root@192.168.0.12:/var/lib/libvirt/images/devstack-controller-clone2.img

修改和拷贝配置文件

导出配置文件:

virsh dumpxml devstack-controller > /home/devstack-controller.xml

或者直接找到路径拷贝也可以,centos下路径在:``

修改配置文件,主要需要修改的地方有name、uuid、mac:

<name>devstack-controller</name>
<uuid>4aba494c-6f6a-f992-2ec2-23795f6c4680</uuid>
<mac address='52:54:00:49:03:d2'/>

name表示虚拟机的名字 ,
uuid表示id号,可以用uuid命令生成,
mac表示网关mac地址,

如果是迁移到其他系统,其他机器上,还需要修改emulator、source file:

<emulator>/usr/bin/kvm-spice</emulator>
<source file='/var/lib/libvirt/images/devstack-controller-clone2.img'/>

emulator表示kvm路径,
source file 表示image路径

用scp传到目标地址上:

scp /home/devstack-controller.xml root@192.168.0.12:/home/devstack-controller.xml

将配置文件和image都传到目标机后,将qcow2转换为raw:

qemu-img convert -f qcow2 -O raw devstack-controller-clone2.img devstack-controller.img

启动虚拟机

用virsh启动新的虚拟机

virsh define devstack-controller.xml

命令解说

qemu-img convert [-c] [-e] [-f format] filename [-O output_format] output_filename

qemu-img convert主要用来转换镜像格式,-c表示压缩,只有qcow和qcow2才有压缩,-f表示输入的格式,-O表示输出的格式

shikanon wechat
欢迎您扫一扫,订阅我滴↑↑↑的微信公众号!