1、静态迁移(冷迁移)html
对于静态迁移,你能够在宿主机上保存一个完整的客户机镜像快照,而后在宿主机中关闭或 者暂停该客户机,而后将该客户机的镜像文件复制到另外一台宿主机中,使用在源主机中启动该客户机时的命令来启动复制过来的镜像。python
2、动态迁移(热迁移)vim
若是源宿主机和目的宿主机共享存储系统,则只须要经过网络发送客户机的 vCPU 执行状 态、内存中的内容、虚机设备的状态到目的主机上。不然,还须要将客户机的磁盘存储发到目的主机上。共享存储系统指的是源和目的虚机的镜像文件目录是在一个共享的存储上的。centos
3、在基于共享存储系统时,KVM 动态迁移的具体过程为:安全
一、迁移开始时,客户机依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上。bash
二、QEMU/KVM 会监控并记录下迁移过程当中全部已被传输的内存页的任何修改,并在全部内存页都传 输完成后即开始传输在前面过程当中内存页的更改内容。服务器
三、QEMU/KVM 会估计迁移过程当中的传输速度,当剩余的内存数据量可以在一个能够设定的时间周期 (默认 30 毫秒)内传输完成时,QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输 到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态。网络
四、至此,KVM 的动态迁移操做就完成了。迁移后的客户机尽量与迁移前一致,除非目的主机上 缺乏一些配置,好比网桥等。dom
注意,当客户机中内存使用率很是大并且修改频繁时,内存中数据不断被修改的速度大于KVM可以 传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。ssh
关于实时迁移的效率,业界很多人提出了改进的建议,好比经过使用内存压缩技术,减小须要传输的内存的大小
4、迁移注意事项:
一、最好迁移的服务器cpu品牌同样
二、64位只能在64位宿主机间迁移,32位能够迁移32位和64位宿主机
三、宿主机名字不能冲突
四、目的宿主机和源宿主机软件配置尽量的相同,若有相同的桥接网卡,资源池等。
五、两台迁移的主机 cat /proc/cpuinfo |grep nx 的设置是相同的
NX,全名为“No eXecute”,即“禁止运行”,是应用在CPU的一种技术,用做把存储器 区域分隔为只供存储处理器指令集,或只供数据使用。
任何使用NX技术的存储器,表明仅供数据使 用,所以处理器的指令集并不能在这些区域存储。这种技术可防止大多数的缓冲溢出攻击,即一些 恶意程序,把自身的恶意指令集放在其余程序的数据存储区并运行,从而把整台计算机控制。
5、静态迁移
1.安装虚拟化所须要的环境
1
2
3
4
5
6
7
8
|
yum
install
qemu qemu-img qemu-kvm libvirt libvirt-python libguestfs-tools virt-
install
安装虚拟化程序(若是服务器存在虚拟化环境则不要安装)
grep
-e vmx
/proc/cpuinfo
检查是否能支持虚拟化
mkdir
/kvm-vm/
建立虚拟机磁盘文件目录
mkdir
/kvm-vm/nspool
pool-define-as nfspool netfs --
source
-host 192.174.1.11 --
source
-path
/mnt/nfs
--target
/kvm-vm/nspool/
设置储存池
pool-build nfspool
pool-start nfspool
pool-autostart nfspool
|
2.拷贝镜像文件和虚拟机配置文件 (我是基于nfs作的 因此只须要拷贝虚拟机配置文件便可)
1
|
scp
/etc/libvirt/qemu/test1
.xml 192.174.1.5:
/etc/libvirt/qemu/
|
3.从新定义此虚拟机
1
|
define
/etc/libvirt/qemu/test1
.xml
|
4.启动虚拟验证
6、动态迁移:
1.建立共享存储
2.两台机器挂载共享存储(手工挂载;使用资源池)
3.启动动态迁移
4.建立迁移后的虚拟机配置文件
5.从新定义虚拟机
案例实施步骤以下:‘
一、设置主机名、/etc/hosts 互相解析,保证网络链接
1
2
|
vim
/etc/hosts
scp
/etc/hosts
192.174.1.5:
/etc/
|
二、两台主机的KVM链接NFS共享存储 (若是不会能够查看上篇文章 kvm储存池 或者查看静态迁移中有步骤)
三、在源主机的KVM中新建虚拟机并安装操做系统
四、链接KVM,并进行迁移。’
1
|
migrate test3 qemu+
ssh
:
//192
.174.1.5
/system
--live --unsafe --verbose
|
5.查看验证
源主机 (迁移主机test关闭)
迁移主机
7、virsh migrate命令帮助
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
|
# virsh migrate --help
[--domain] <string> 域名,
id
或 uuid
[--desturi] <string> 客户端(常规迁移)或者源(p2p 迁移)中看到到目的地主机链接 URI
--live 热迁移
--offline 离线迁移
--p2p 点对点迁移
--direct 直接迁移
--tunnelled 管道迁移
--persistent 目的地中的持久 VM
--undefinesource 在源中取消定义 VM
--suspend 部启用目的地主机中的域
--copy-storage-all 使用全磁盘复制的非共享存储进行迁移
--copy-storage-inc 使用增值复制(源和目的地共享同一基础映像)的非共享存储进行迁移
--change-protection 迁移结束前不得对域进行任何配置更改
--unsafe 即便不安全也要强制迁移
--verbose 显示迁移进程
--compressed 实时迁移过程当中压缩重复的页
--auto-converge force convergence during live migration
--rdma-pin-all support memory pinning during RDMA live migration
--abort-on-error 在迁移过程当中忽略软错误
--migrateuri <string> 迁移 URI, 一般可省略
--graphicsuri <string> 无空隙图形迁移中使用的图形 URI
--listen-address <string> listen address that destination should bind to
for
incoming migration
--dname <string> 在迁移过长中从新命名为一个新名称(若是支持)
--timeout <number> 若是 live 迁移超时(以秒计)则强制虚拟机挂起
--xml <string> 包含为目标更新的 XML 的文件名
--migrate-disks <string> comma separated list of disks to be migrated
|
8、 常见错误:
一、迁移时遇到的错误描述:
1
2
|
# virsh migrate centos live qemu+ssh://192.168.30.132/system
error: unable to connect to server at
'KVM2:49152'
: No route to host
|
缘由:你的免密登陆没有成功
解决方法:从新作免密登陆便可
二、迁移时的存储错误:
1
2
|
# virsh migrate centos live qemu+ssh://192.168.30.132/system
error: Failed to
open
file
'/mnt/CentOS6.8.qcow2'
: Input
/output
error
|
缘由:存储没有挂载成功
解决方法:mount -o remount /dev/sdb /mnt
三、迁移时FQDN错误:
1
2
|
# virsh migrate centos live qemu+ssh://192.168.30.132/system
error: internal error
hostname
on destination resolved to localhost, but migration requires an FQDN
|
缘由:两台宿主机没法解析主机名
解决方法:从新配置主机名和ip的解析
4.迁移时语法错误:
1
2
|
# virsh migrate centos live qemu+ssh://192.168.30.132:/system
error: internal error Unable to parse URI qemu+
ssh
:
//192
.168.30.132:
/system
|
缘由:qemu+ssh语法写错了 解 决 方 法 :
正 确 的 应 该 是 : virsh migrate centos live qemu+ssh://192.168.30.132/system