相比KVM虚拟机静态迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机动态迁移无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目录结构虚拟机磁盘文件,本文这部分内容通过nfs来实现,当然也可以采用GFS2集群文件系统来实现,本文的动态迁移是基于共享存储动态迁移。
KVM动态迁移目前有两种,一种是基于共享存储的动态迁移,一种是基于基于数据块的动态迁移,需要qemu-kvm-0.12.2以上版本支持,CentOS6.5版本是qemu-kvm-0.12.1.2,其它发行版可能有支持。
1.虚拟化平台架构
2.虚拟化环境介绍
(1)KVM虚拟化服务器node1
操作系统版本:CentOS6.5x86_64
KVM虚拟化:自带版本
桥接IP地址1:10.10.172.191
测试虚拟机:CentOS6.5-01
虚拟机IP地址:10.10.172.241
虚拟磁盘文件1:/data/kvm/CentOS6.5-01.qcow2
虚拟磁盘文件2:/data/kvm/CentOS6.5-01_add.qcow2
nfs挂载目录:/data/kvm
(2)KVM虚拟化服务器node2
操作系统版本:CentOS6.5x86_64
KVM虚拟化:自带版本
桥接IP地址1:10.10.172.192
nfs挂载目录:/data/kvm
(3)nfs服务器(nfs配置略)
操作系统版本:CentOS6.5x86_64
桥接IP地址1:10.10.172.193
nfs服务目录:/kvmdata
3.kvm虚拟主机配置准备
(1)节点1挂载nfs目录
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@node1 ~] # mount -t nfs 10.10.172.193:/kvmdata /data/kvm/
[root@node1 ~] # df -h
Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 14G 3.2G 9.5G 26% /
tmpfs 3.9G 80K 3.9G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/sdb1 197G 28G 160G 15% /data
10.10.172.193: /kvmdata 14G 7.1G 5.6G 57% /data/kvm
[root@node1 ~] # ll /data/kvm/
total 2264200 -rw-r--r-- 1 root root 393216 Nov 29 2017 CentOS6.5-01_add.qcow2 -rw-r--r-- 1 root root 2318139904 Nov 29 2017 CentOS6.5-01.qcow2 [root@node1 ~] #
|
(2)节点2挂载nfs目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@node2 ~] # mount -t nfs 10.10.172.193:/kvmdata /data/kvm/
[root@node2 ~] # df -h
Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 14G 2.8G 9.9G 22% /
tmpfs 1.9G 72K 1.9G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/sdb1 197G 7.2G 180G 4% /data
10.10.172.193: /kvmdata 14G 7.1G 5.6G 57% /data/kvm
[root@node2 ~] #
[root@node2 ~] # ll /data/kvm/
total 2264200 -rw-r--r--. 1 root root 393216 Nov 29 2017 CentOS6.5-01_add.qcow2 -rw-r--r--. 1 root root 2318139904 Nov 29 2017 CentOS6.5-01.qcow2 [root@node2 ~] #
|
确保两节点都有相同的虚拟机磁盘文件存储目录。
4.kvm虚拟机迁移
(1)节点1虚拟机状态,oeltest01虚拟机开机状态
1
2
3
4
|
[root@node1 ~] # virsh list --all
Id Name State
---------------------------------------------------- - CentOS6.5-01 running
|
(2)节点2虚拟机状态,无虚拟机运行
1
2
3
|
[root@node2 ~] # virsh list --all
Id Name State
---------------------------------------------------- |
(3)在主机1上执行迁移命令
1
2
3
4
5
6
7
8
|
[root@node1 ~] # virsh migrate --live --verbose CentOS6.5-01 qemu+ssh://10.10.172.192/system tcp://10.
10.172.192 root@10.10.172.192's password: Migration: [100 %] [root@node1 ~] # virsh list --all
Id Name State
---------------------------------------------------- - CentOS6.5-01 shut off
|
过程有一个暂停与关闭的过程。
(4)客户机一直ping查看迁移,可以看到中间有两个包的中断,基本上没有太大影响。
1
|
[root@localhost ~] # ping 10.10.172.241
|
(5)虚拟主机2上,可以看到虚拟机CentOS6.5-01已经启动了。
1
2
3
4
|
[root@node2 ~] # virsh list --all
Id Name State
---------------------------------------------------- 1 CentOS6.5-01 running
|
虽然CentOS6.5-01虚拟机已经在节点2上启动了,但是虚拟主机上还没有CentOS6.5-01虚拟机的配置文件。所以需要创建配置文件并定义虚拟机。
1
2
3
4
5
6
7
|
[root@node2 ~] # cd /etc/libvirt/qemu
[root@node2 qemu] # ls
networks [root@node2 qemu] # ll
total 4 drwx------. 3 root root 4096 Nov 27 07:57 networks [root@node2 qemu] #
|
(6)kvm虚拟主机2上,通过迁移过来的虚拟机内存状态创建虚拟机配置文件,并通过xml配置文件定义虚拟机。
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@node2 qemu] # virsh dumpxml CentOS6.5-01 > /etc/libvirt/qemu/CentOS6.5-01.xml
[root@node2 qemu] #
[root@node2 qemu] # ll -h
total 8.0K -rw-r--r-- 1 root root 3.5K Nov 27 09:18 CentOS6.5-01.xml drwx------. 3 root root 4.0K Nov 27 07:57 networks [root@node2 qemu] #
[root@node2 qemu] # virsh define /etc/libvirt/qemu/CentOS6.5-01.xml
Domain CentOS6.5-01 defined from /etc/libvirt/qemu/CentOS6 .5-01.xml
[root@node2 qemu] #
[root@node2 qemu] #
|
在kvm虚拟主机2上进入虚拟机没有问题。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
[root@node2 qemu] # virsh console CentOS6.5-01
Connected to domain CentOS6.5-01 Escape character is ^] CentOS release 6.5 (Final) Kernel 2.6.32-431.el6.x86_64 on an x86_64 CentOS6.5-01 login: root Password: Last login: Mon Nov 27 15:33:12 on ttyS0 [root@CentOS6 ~] # ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:00:56:9A:7F inet addr:10.10.172.241 Bcast:10.10.172.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fe56:9a7f /64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:372 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:41334 (40.3 KiB) TX bytes:566 (566.0 b)
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1 /128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
[root@CentOS6 ~] #
|
到此,kvm虚拟机动态迁移成功。
本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/2044775,如需转载请自行联系原作者