【研究任务】KVM热迁移

所谓热迁移,就是在用户无感知的情况下,把虚机由远端迁移到目的端。

一、原理理解



KVM的热迁移分为共享存储和非共享存储两种,其最终目的都是为了将内存和磁盘中的数据转移到目的端。总共要进行5个阶段

源端:

1、set_params阶段:此阶段根据热迁命令与参数,遍历savevm_handlers链表,初始化各个模块的迁移特征参数,完成后向目的端发送qemu_put_be_32(f, QEMU_VM_FILE_MAGIC),由此进入setup阶段

2、setup阶段:这个阶段会遍历savevm_handlers,将所有需要热迁设备的section_id,idstr,instance_id,version_id信息传递到目的端,并调用各个设备的setup函数

3、iterate阶段:此阶段会反复遍历savevm_handlers链表上的所有设备,调用iterate函数进行数据传递,传输完成后,调用vm_stop,暂停源端,进入complete阶段。

4、complete阶段:用来传递最后的脏页与迁移信息的清理。

目的端:

1、load阶段

接收源端需要迁移的设备列表,从savevm_handlers列表中找到对应设备的处理函数,并以此初始化loadvm_handlers链表。然后,根据源端传递来的数据,从loadvm_handlers中拿到对应的load函数,并加载数据。

二、热迁常用技巧



(1)三种场景速度差别

目前热迁有三种场景,千兆场景(速度大概是75MB),万兆场景(速度大概是300MB),属于万兆场景但迁移速度上不来(约100MB左右)。第三种情况可能是由于内存降速引起。

(2)评估迁移时间

watch  -n  1  "virsh  domjobinfo  uuid"

可以通过上面命令,看下迁移速度再评估最后中断时间

可以查看/usr/local/var/log/libvirt/qemu/uuid.log,里面有个remaining值,这个值就是迁不动的page数(乘以4后是kb)。看这个值就可以看出还剩多少内存没有迁走

三、内存降速问题



有时母机会出现内存降速问题,导致系统读取磁盘到内存速度降低。这时可以在发起迁移前,使用taskset绑定子机的qemu主线程到未降速的numa上,能提升迁移速度。

(1)    确认降速的numa节点。有两个方法。

a)     通过母机上/tmp/test_mem/test_mem.sh脚本测试当前numa空闲可用速度。结果在numa0.log,numa1.log,test_mem.log中。

b)     通过上传pcm-memory.x这个脚本,查看numa实时使用的速度,确认内存变化(这里要根据子机所在的numa,看numa的写内存。因为迁移是把已有的内存置为脏页,只能读,不能写。然后子机需要写内存的时候,就新申请内存。所以内存变化主要看写内存速度),决定中断时长。这个脚本需要:

echo 0 > /proc/sys/kernel/nmi_watchdog设置系统参数

./pcm-memory.x                 执行脚本,查看实时速度

echo 1> /proc/sys/kernel/nmi_watchdog用完后恢复系统参数

(2)    numactl- - hardware,查看降速numa对应的cpu。

(3)     virsh vcpuinfo uuid,获取子机的cpu分布。或着 /usr/sbin/tools/cvminfo也可以看到。

(4)    taskset –pc 6-11,18-23 pid,把子机的qemu主线程绑定到另外一个numa上。这里用vcpu命令绑核没有作用。

(5)    发起迁移,就能解决内存降速导致的迁移速度慢问题。这个操作能提高点迁移速度

原文地址:http://blog.51cto.com/12814931/2130733

时间: 2024-10-29 15:08:27

【研究任务】KVM热迁移的相关文章

KVM热迁移虚拟机

一.KVM虚拟机迁移分为动态(热迁移)和静态两种 静态迁移就是复制虚拟机的镜像文件到另外的一台KVM主机上,然后通过define重新定义出该虚拟机.操作简单,一般用于更换KVM主机时使用. 动态迁移则是基于共享存储系统,将虚拟机在不中断服务的情况下进行迁移.动态迁移过程:1.迁移开始时,客户机依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上2.QEMU/KVM会监控并记录下迁移过程中所有己被传输的内存页的任何修改 并在所有内存页都传输完成后即开始传输在前面过程中内存页的更改内容3.

KVM虚拟机实现在线热迁移

博文大纲: 一.KVM虚拟机的迁移方式及需要注意的问题 二.kvm虚拟机热迁移配置实例 一.KVM虚拟机的迁移方式及需要注意的问题 KVM虚拟机的迁移有两种方法:1.静态迁移(冷迁移):对于冷迁移,就是在虚拟机关闭状态下,将虚拟机的磁盘文件及.xml配置文件(这两个文件组成了一个虚拟机)复制到要迁移到的目标主机上,然后在目标主机上使用"virsh define *.xml"命令重新定义虚拟机即可.2.动态迁移(热迁移):对于热迁移,比较常用,通常是这台服务器上正在跑着一些业务,而这些业

kvm 静态迁移、基于nfs的动态迁移

参考<kvm 虚拟化技术,实战与原理解析> 迁移:迁移包含系统整体的迁移和某个工作负载的迁移,按照迁移的特性可以分为以下几类: 静态迁移(冷迁移):指迁移过程中明显有一段时间,客户机的服务不可用,它还可以分为两种,一种是完全关闭客户机后,将硬盘镜像复制到另外的宿主机再启动起来,这种不会保存客户机的工作负载状态: 还有一种并不完全关闭客户机而是暂停客户机,而后用快照之类的方式,把当前的状态做成快照,复制快照到新的宿主机上启动. 动态迁移(热迁移):是指保证客户机上应用服务正常运行的同时,完成迁移

Kvm动态迁移

Kvm动态迁移 案例实施步骤如下:(1)设置一台源主机(192.168.88.100)与一台目的主机(104):NFS服务器(102)(2)两台主机的kvm连接NFS共享存储:(3)在源主机的kvm中新建虚拟机并安装系统:(4)两台主机连接并实现迁移实验开始:第一步:搭建NFS服务器yum -y install nfs-utils vi /etc/exports /kvmshare/kvmshare1 192.168.88.0/24(rw,sync,no_root_squash)//no_roo

虚拟机的迁移(热迁移)

迁移: 系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行 迁移的目的: 1.简化系统维护管理 2.高系统负载均衡 3.增强系统错误容忍度 4.优化系统电源管理 KVM 虚拟机的热迁移 ---Live Migration 热迁移(又叫动态迁移.实时迁移),即虚拟机保存( save ) / 恢复 (restore) :将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上.恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异.

kvm虚拟迁移(5)

一.迁移简介 迁移:      系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行.在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术.在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统.随着虚拟机技术的发展,系统的迁移更加灵活和多样化. 最终我们迁移的目的就是:    简化系统维护管理    高系统负载均衡    增强系统错误容忍度    优化系统电源管理 二.热迁移 ---Live Migra

KVM虚拟机迁移

KVM虚拟机迁移 说明:测试使用的是从本地到本地,远程方法类似,scp拷贝配置文件和虚拟磁盘即可,如果多块磁盘,都得拷贝,远程拷贝不需要修改配置文件,除非有相同的虚拟机,本例在本地,所以必须修改配置文件,否则会名称.uuid.目录等有冲突 1.关闭daixuan2虚拟机 [[email protected] ~]# virsh shutdown daixuan2 域 daixuan2 被关闭 2.拷贝配置文件 [[email protected] ~]# virsh dumpxml daixua

OpenStack之虚机热迁移

OpenStack之虚机热迁移 最近要搞虚机的热迁移,所以也就看了看虚机迁移部分的内容.我的系统是CentOS6.5,此处为基于NFS共享平台的虚机迁移.有关NFS共享服务器的搭建可以看这里. Yak shaving 1.设置nfs共享存储(/var/lib/nova/instances) 2. 在各个计算节点设置权限 1 chmod 777 /var/lib/nova/instances 3. 修改各个节点的nova.conf(/etc/nova/nova.conf) 1 vncserver_

利用redis replication实现redis服务器热迁移

利用redis replication实现redis服务器热迁移 文章开头我先声明:标题过于高大上,主要是为了装逼. 某个月黑风高的夜晚,一只运维攻城狮和一只PHP程序猿在促膝长谈,只见PHP程序猿双眼目光呆滞的盯着眼前屏幕上的一坨坨代码状文本,突然问出一句:"这个你会搞吗?"语气中透着一股程序猿的傲娇与对运维这一行业的轻蔑.攻城狮显然感觉到了空气中的那一缕杀气,但为了不给这个行业丢脸,攻城狮还是傲娇的仰头,冷冷的说:"我瞅瞅!" 问题是这样的,程序员他们公司最近要