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

参考<kvm 虚拟化技术,实战与原理解析>

迁移:迁移包含系统整体的迁移和某个工作负载的迁移,按照迁移的特性可以分为以下几类:

静态迁移(冷迁移):指迁移过程中明显有一段时间,客户机的服务不可用,它还可以分为两种,一种是完全关闭客户机后,将硬盘镜像复制到另外的宿主机再启动起来,这种不会保存客户机的工作负载状态; 还有一种并不完全关闭客户机而是暂停客户机,而后用快照之类的方式,把当前的状态做成快照,复制快照到新的宿主机上启动。

动态迁移(热迁移):是指保证客户机上应用服务正常运行的同时,完成迁移,用户感受不到服务的变化,因为暂停服务的时间很短。所以,对一台服务比较繁忙的客户机,动态迁移是比较困难的。

kvm的保存工作负载状态的静态迁移:

(1)在源宿主机上摁ctrl+alt+2 切换到monitor,使用以下命令保存客户机当前状态

savevm  my_tag  #my_tag是自定义的名称

(2)拷贝该客户机的镜像到新的宿主机上,用跟在源宿主机一样的命令参数启动镜像,并且使用到monitor模式使用以下命令恢复状态

loadvm my_tag

注意:savevm特性只有特定的镜像文件格式才支持,如qcow2,qed等。

kvm基于nfs共享存储的动态迁移:

1.在使用共享存储的情况下,kvm的具体动态迁移过程为:

(1)目的宿主机启动共享存储上的客户机镜像并监听一个套接字,用来接收客户机的信息

(2)客户机依然在源宿主机上运行,与此同时客户机的内存页被传输到目的宿主机上

(3)kvm监控并记录下迁移过程中所有已经被传输的内存页的任何修改

(4)当所有的内存也被传输完成后,kvm开始传输内存页的修改内容

(5)kvm估算迁移过程中的传输速度,当剩余的数据量能够在一个可设定的时间周期(kvm默认30ms)完成的时候,kvm关闭源宿主机上的客户机,并传输剩下的内容

(6)目的宿主机收到最后的数据量,并依照这些数据恢复客户机的状态

由上述过程可以得知,当内存的修改速度大于kvm传输内存的速度之时,kvm的动态迁移过程是完成不了的

2.具体实现:

架构:

源宿主机:192.168.2.127

目的宿主机:192.168.2.188

nfs服务器:192.168.2.138

(默认关闭selinux和iptables)

在192.168.2.138上:

(1)配置nfs服务器(参考https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-nfs.html,这里只搭建,不解释)

yum install nfs-utils rpcbind -y #我的是centos6.5 默认已装rpcbind等,比较旧的系统好像rpc是portmap实现的,根据自己的情况来

echo "/mydata 192.168.2.0/24(rw)" >/etc/exports

#三段式命令,/mydata代表把这个目录export出去作为共享存储目录,192.168.2.0/24代表允许这个段的主机挂载,(rw)代表读写权限,各个用户主机可以对其读写

chown -R nfsnobody:nfsnobody /mydata #因为用户挂载这个目录是以nfsnobody的身份来的,所以要能读这个目录读写,还必须让nfsnobody对其有写权限

service nfs start

(2)创建磁盘镜像

dd if=/dev/zero of=/mydata/redhat6.5.img bs=1024 count=10240000

(3)安装系统

qemu-system-x86_64  -m 1024 -smp 1 -boot order=dc -hda /mydata/redhat6.5.img   -cdrom  install.iso  #install.iso是我利用kickstart制作的一键安装系统镜像

chown -R nfsnobody:nfsnobody /mydata   #因为安装镜像用的root身份,需要对其读写还是要改回nfsnobody

在源宿主机上:

(1)挂载nfs

mount 192.168.2.138:/mydata /mydata

(2)启动镜像

qemu-system-x86_64  -m 1024 -smp 1 /mydata/redhat6.5.img  -net nic -net tap #网络方面的配置请参考我前面的文档,有现成的脚本

在目的宿主机上:

(1)挂载nfs

mount 192.168.2.138:/mydata /mydata #这里的挂载的目录路径必须和源宿主机一样,原因的话可能是迁移过程中有路径依赖吧..个人猜测,有待查询

(2)启动镜像

qemu-system-x86_64  -m 1024 -smp 1 /mydata/redhat6.5.img  -net nic -net tap -incoming tcp:0:6666

#启动参数必须和源宿主机一致,只是额外多了-incoming ,启动后会黑屏,它并不是向普通客户机那样启动,而是等待动态迁移数据的传入

在源宿主机上:

ctrl+alt+2 进入qemu monitor模式使用以下命令进行迁移:

migrate tcp:192.168.2.188:6666

接下来就可以看到源宿主机的客户机黑屏,而目的宿主机的客户机成功启动,至此一个客户机的动态迁移完成。

时间: 2024-12-17 14:45:32

kvm 静态迁移、基于nfs的动态迁移的相关文章

CentOS7.4——KVM虚拟化二 共享存储之动态迁移与静态迁移

KVM虚拟化二 共享存储之动态迁移与静态迁移 目录第一部分 运行环境第二部分 配置nfs共享服务器第三部分 配置kvm服务器并实现动态迁移第四部分 配置静态迁移 第一部分 运行环境 KVM虚拟机两台(linux 7.4)IP地址:192.168.80.40(kvm01)IP地址:192.168.80.50(kvm02)注意:kvm01上需要有一个镜像文件,此处不再详细说明,基本配置操作请考上一个文档http://blog.51cto.com/12227558/2097113 共享服务器一台(li

Kubernetes 基于NFS的动态存储申请

部署nfs-provisioner external-storage-nfs 创建工作目录 $ mkdir -p /opt/k8s/nfs/data 下载nfs-provisioner对应的镜像,上传到自己的私有镜像中 $ docker pull fishchen/nfs-provisioner:v2.2.2 $ docker tag fishchen/nfs-provisioner:v2.2.2 192.168.0.107/k8s/nfs-provisioner:v2.2.2 $ docker

基于NFS共享存储实现KVM虚拟机动态迁移

基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移  实验初始配置:所有主机关闭防火墙与selinux [[email protected] ~]# iptables -F [[email protected] ~]# systemctl stop firewalld [[email protected] ~]# systemctl disable firewalld [[

基于centos7.4 KVM动态迁移

KVM动态迁移动态迁移(Live Migration):也叫在线迁移(Online Migration).就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程.该过程不会对最终用户造成明 显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级.与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可 用,迁移过程仅有非常短暂的停机时间.迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行

KVM虚拟化笔记(十四)------kvm虚拟机动态迁移

相比kvm虚拟机静态迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机动态迁移无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目录结构虚拟机磁盘文件,本文这部分内容通过nfs来实现,当然也可以采用GFS2集群文件系统来实现,本文以共享存储进行动态迁移 KVM动态迁移目前有两种,一种是基于共享存储的动态迁移,一种是基于基于数据块的动态迁移,需要qemu-kvm-0.12.2以上版本支持,OEL6.3版本是qemu-kvm-0.12.1.2,其它发行版可能有支持 由于资源有限,现在还没有实

KVM 【SNAT/DNAT2种配置实现以及扁平化网络模式(flat)实现/virsh2种动态迁移实现】

------------------------------------------------------------------------- ###KVM SNAT配置过程 ------------------------------------------------------------------------- #增加一个br0网桥(不跟任何网卡绑定) brctl addbr br0 #激活网桥 ifconfig br0 up #给br0配置IP地址 ifconfig br0 10

KVM虚拟机共享存储动态迁移与冷迁移

运行环境一. 配置nfs共享服务器二. 配置KVM虚拟化三. 创建桥接网卡四. 配置kvm服务器并实现动态迁移五. 配置冷迁移运行环境KVM虚拟机两台(linux 7.4)IP地址:192.168.80.100(KVM01)IP地址:192.168.80.200(KVM02)共享服务器一台(linux 7.4)IP地址:192.168.80.102(share) 所有主机都执行:service firewalld stopsetenforce 0 一.配置nfs共享服务器yum install

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

重磅精品翻译:QEMU-KVM虚机动态迁移原理

编者的话 本文翻译者,KVM社区首席翻译专家武楠. 本文详细的介绍了虚拟化迁移的原理. 翻译过程是怎样一个过程,会有怎样的收获? 个人感觉是翻译过程是一个挑战自我,不断完善自己,然后获得提升的过程. 翻译过程也是一个近距离和技术对话的过程,从字里行间理解.揣摩技术的精髓,在翻译成中文的时候斟酌,是一个反复理解的过程,最终的收获是知识. 请愿意加入KVM社区翻译群的朋友联系群主微信xiaoli173702,再技术翻译的过程中我们一起讨论,一起提升. QEMU-KVM虚机动态迁移原理 在虚拟化领域,