KVM虚拟平台——迁移KVM虚拟机

博文大纲:
一、KVM虚拟机迁移的方式
二、实现KVM虚拟机静态迁移
三、实现KVM虚拟机动态迁移

一、KVM虚拟机迁移的方式

KVM平台中的KVM虚拟机迁移分为以下两种:

(1)冷迁移(静态迁移)

我们存放虚拟机磁盘的目录都是挂在的一个nfs文件系统的磁盘,进行冷迁移时,只要在目标主机上挂载这个nfs文件系统,就可以看到要迁移的那个虚拟机的磁盘文件,通常以.qcow2或.raw结尾的,然后,只需将虚拟机的.xml配置文件发送到目标服务器上,然后重新定义一下迁移过来的虚拟机即可!

(2)热迁移(动态迁移)

如果源宿主机和目的宿主机共享存储系统,则只需要通过网络发送客户机的 vCPU 执行状态、内存中的内容、虚机设备的状态到目的主机上。否则,还需要将客户机的磁盘存储发到目的主
机上。共享存储系统指的是源和目的虚机的镜像文件目录是在一个共享的存储上的。

基于共享存储系统,动态迁移的具体过程:
(1)迁移开始时,客户端依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上;
(2)QEMU/KVM 会监控并记录下迁移过程中所有已被传输的内存页的任何修改,并在所有内存页都传输完成后即开始传输在前面过程中内存页的更改内容;
(3)QEMU/KVM 会估计迁移过程中的传输速度,当剩余的内存数据量能够在一个可以设定的时间周期(默认 30 毫秒)内传输完成时,QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态;
(4)至此,KVM的动态迁移操作完成!迁移后的客户机尽可能与迁移前一致,除非目的主机上缺少一些配置,比如网桥等。注意,当客户机中内存使用率非常大而且修改频繁时,内存中数据不断被修改的速度大于KVM能够传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。

(3)注意事项

(1)迁移的服务器CPU品牌最好一致;
(2)64位只能在64位宿主机间迁移,32位可以迁移32位和64位宿主机;
(3)宿主机中的虚拟机名字不能冲突;
(4)目的宿主机和源宿主机软件配置尽可能相同;

(4)总结

静态迁移:
(1)复制镜像文件和虚拟机配置文件;
(2)重新定义虚拟机即可!

动态迁移:
(1)创建共享存储;
(2)两台KVM宿主机挂载共享存储;
(3)启动动态迁移;
(4)创建迁移后的虚拟配置文件;
(5)重新定义虚拟机;

二、实现KVM虚拟机静态迁移

(1)环境要求

  • 一台KVM服务求A:IP地址:192.168.1.7,其中一台为web01的KVM虚拟机;
  • 一台KVM服务器B:IP地址:192.168.1.8;

(2)实现步骤

KVM服务器A的操作:

由于实验环境,简单起见,这里就略过了,有兴趣可以自行创建文件或目录进行测试!

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
//实验环境,简单起见关闭防火墙与SElinux
[[email protected] ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境
kvm_intel             174841  0
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[[email protected] ~]# virsh list --all     //确认虚拟机存在,而且是关机的状态
 Id    名称                         状态
----------------------------------------------------
 -     web01                          关闭

KVM服务器B的操作:

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
//实验环境,简单起见关闭防火墙与SElinux
[[email protected] ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境
kvm_intel             174841  0
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[[email protected] ~]# virsh list --all           //确认没有kvm虚拟机
 Id    名称                         状态
----------------------------------------------------
[[email protected] ~]# scp 192.168.1.7:/etc/libvirt/qemu/web01.xml /etc/libvirt/qemu/web01.xml
//复制KVM宿主机A的虚拟机配置文件
[[email protected] ~]# scp 192.168.1.7:/kvm/disk/web01.raw /kvm/disk/web01.raw
//复制KVM宿主机的虚拟机磁盘文件
[[email protected] ~]#  cd /etc/libvirt/qemu/
[[email protected] qemu]# virsh define web01.xml
定义域 web01(从 web01.xml)
//根据配置文件生成虚拟机
[[email protected] qemu]# virsh start web01     //开启虚拟机进行测试
域 web01 已开始

[[email protected] qemu]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 1     web01                          running
//可以正常开机表示没有问题,自行进行测试即可!

静态迁移迁移完成!

静态迁移其实没什么好说的,说白了,跟克隆其实差不多!

三、实现KVM虚拟机动态迁移

(1)环境要求

  • 一台NFS服务器:IP地址:192.168.1.6;
  • 一台KVM服务器A:IP地址:192.168.1.7;
  • 一台KVM服务器B:IP地址:192.168.1.8;

注意:KVM宿主机不需要KVM虚拟机!

(2)实现步骤

NFS服务器的操作:

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
//实验环境,简单起见关闭防火墙与SElinux
[[email protected] ~]# yum -y install nfs-utils rpcbind
//安装NFS所需软件
[[email protected] ~]# mkdir /kvmshare          //创建共享目录
[[email protected] ~]# echo "/kvmshare  *(rw,sync,no_root_squash)" >> /etc/exports
//配置共享目录的权限,共享的用户
//no_root_squash:使其获取NFS服务器的root权限
[[email protected] ~]# systemctl start rpcbind           //启动远程传输控制服务
[[email protected] ~]# systemctl start nfs       //启动NFS共享服务

两台KVM进行验证:

[[email protected] ~]# showmount -e 192.168.1.6
Export list for 192.168.1.6:
/kvmshare *

KVM服务器A的操作:

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
//实验环境,简单起见关闭防火墙与SElinux
[[email protected] ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境
kvm_intel             174841  0
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[[email protected] ~]# virsh list --all           //确认没有kvm虚拟机
 Id    名称                         状态
----------------------------------------------------
[[email protected] ~]# virt-manager          //打开图像化界面管理KVM

首选创建存储池,如图:




接下来基于存储池创建存储卷,如图:


接下来创建虚拟机,如图:







接下来根据自己实际情况创建适合的虚拟机!

虚拟机重启完成之后,将其关机,配置其为桥接网络,方法如下:

[[email protected] ~]# virsh destroy centos7.0             //实验环境,就采取强制关机了,但不建议使用
域 centos7.0 被删除

[[email protected] ~]# systemctl stop NetworkManager       //关闭网络管理工具
[[email protected] ~]# virsh iface-bridge ens33 br0       //通过ens33生成br0
使用附加设备 br0 生成桥接 ens33 失败            //提示失败没有关系
已启动桥接接口 br0

[[email protected] ~]# virsh edit centos7.0      //使用“edit”命令编辑虚拟机的配置文件
定位到interface,修改一下内容:
    <interface type=‘bridge‘>          修改为bridge
      <mac address=‘52:54:00:ef:a3:93‘/>
      <source bridge=‘br0‘/>     修改为 bridge=‘br0‘
[[email protected] ~]# virsh start centos7.0         //启动centos7虚拟机



KVM服务器B的操作:

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
//实验环境,简单起见关闭防火墙与SElinux
[[email protected] ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境
kvm_intel             174841  0
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[[email protected] ~]# virsh list --all           //确认没有kvm虚拟机
 Id    名称                         状态
----------------------------------------------------
[[email protected] ~]# virt-manager          //打开图像化界面管理KVM

创建存储池,跟KVM服务器A的操作一模一样,如图:





生成桥接网卡br0,便于一会进行热迁移操作,操作如下:

[[email protected] ~]# systemctl stop NetworkManager
[[email protected] ~]#  virsh iface-bridge ens33 br0
使用附加设备 br0 生成桥接 ens33 失败
已启动桥接接口 br0
//因为本地现在并没有虚拟机,所以只需生成桥接网卡即可!
[[email protected] ~]# hostname kvmB
[[email protected] ~]# su -
上一次登录:三 12月  4 20:05:59 CST 2019从 192.168.1.253pts/1 上
[[email protected] ~]#                        //修改主机名,否则一会可能会出现错误

KVM服务器A进行以下操作:


如果出现以下错误,如图:

那是因为没有安装使用SSH协议连接所需的询问密码的软件包!

接下来的操作需要在两台KVM都进行操作:

[[email protected] ~]# yum -y install openssh-askpass
[[email protected] ~]#  yum -y install openssh-askpass
//安装询问密码的依赖包,注意两台KVM服务器都需安装

安装完成之后,在KVM服务器A上再次进行连接:


打开KVM虚拟机,使其一直访问百度,如图:

接下来进行热迁移操作,如图:



查看KVM虚拟机的访问是否存在终端现象,如图:

根据显示结果,发现访问并没有中断,至此,动态迁移成功!

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14157628/2456147

时间: 2024-10-06 23:10:13

KVM虚拟平台——迁移KVM虚拟机的相关文章

KVM虚拟平台搭建使用

一.KVM虚拟化介绍 KVM 全称 kernel-based virtual machine,由Qumranet公司发起,2008年被RedHat收购.KVM实现主要基于Intel-V或者AMD-V提供的虚拟化平台,利用普通的Linux进程运行于虚拟态的指令集,模拟虚拟机监视器和CPU.KVM不提供硬件虚拟化操作,其IO操作等都借助QEMU来完成. KVM有如下特点: guest作为一个普通进程运行于宿主机 guest的CPU(vCPU)作为进程的线程存在,并受到宿主机内核的调度 guest继承

ESXi到KVM之v2v迁移

1.ESXi到KVM之v2v情况说明 (1).配置任务列表: 1)VMwareESXi虚拟平台下linux系统迁移到KVM虚拟平台.2)VMwareESXi虚拟平台下windows系统迁移到KVM虚拟平台. 提示:本文只介绍以上两种迁移过程,KVM到ESXi之v2v可以采用VMwareconvert工具进行迁移. (2).VMwareESXi5.1及虚拟机情况说明 VMwareESXi5.1 IP地址:192.168.233.154 帐号:root/1111111 (3).OEL63_test0

更改CloudStack中KVM平台的Windows虚拟机默认磁盘类型为VirtIO

前言 本文的目的是为了解决在使用CloudStack(CloudPlatform)时,基于KVM虚拟化平台,Windows虚拟机的性能低下的问题. 此性能,主要指磁盘IO和网卡性能. 相关文档 由于CS文档中,只强调了PV这个概念,根据PV模式区分使用不同的硬件接口类型.所以收集部分链接给大家扫盲. 关于PV(Paravirtualization-半虚拟化)模式的概念,请参阅: http://www.rackspace.com/knowledge_center/article/choosing-

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

kvm虚拟迁移(5)

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

RedHat 7.2 KVM通过V2V迁移VMware的虚拟机

一.前言 最近想测试一下RedHat 7 KVM的V2V功能,结果发现Redhat 7.0没有V2V的包,上RedHat官网才发现要RedHat 7.2才包含Virt-V2V的包. 官网说明如下: Virt-v2v became a supported product starting with Red Hat Enterprise Linux 7.2. Therefore, we recommend you update your virt-v2v conversion server to R

部署KVM虚拟化平台

防伪码:一场秋雨一场寒,十场秋雨穿上棉. 第四章 部署KVM虚拟化平台 前言:我们在以前学习过vsphere虚拟化平台,安装过esxi5.5,在esxi5.5上安装过虚拟机,使用vcenter管理esxi,从而实现了虚拟机的迁移,备份,高可用等操作,但是安装成本很高,需要购买正版.今天这一章内容是利用linux内核的一个模块kvm,并使用一些辅助工具来搭建虚拟机,完成和esxi类似的操作,实现linux虚拟化.KVM直接整合到了linux内核,因此在性能.安全性.兼容性.稳定性上都有好的表现.我

KVM虚拟化平台部署及管理

前言 KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet开发.2007年2月被导入Linux 2.6.20核心中,成为内核源代码的一部分.2008年9月4日,Redhat收购了Qumranet,至此Redhat拥有了自己的虚拟化解决方案,之后便舍弃Xen开始全面扶持KVM,从RHEL6开始KVM便被默认内置于内核中.本文介绍KVM虚拟化平台部署及管理. KVM简介 KVM特点 KVM必须在具备Intel VT或AMD-V功能的x86平台上运行.KVM包含一个

KVM搭建及管理,虚拟机快建

一.什么是虚拟化 1.硬件虚拟化 -一台物理计算机虚拟出多台逻辑计算机 -cpu,内存可分配给多个虚拟机 2.软件虚拟化 -一个LAMP平台支撑多个网站 -桌面虚拟化 3.通过软件平台模拟出的计算机 -对最终用户来说,感受不到与物理计算机的差异 -根据虚拟化程度不同,所需的修改也不同 4.虚拟化的实现程度 完全虚拟化,Full Virtualization -由平台软件模拟实现 -客户机的操作系统代码几乎不做修改 半虚拟化,Para Virtualization -平台软件只提供最核心的虚拟机功