kvm迁移

摘要:
3、 当基于共享存储系统时,KVM动态迁移的具体过程如下:1.在迁移开始时,客户端仍在主机上运行,同时,客户端的内存页被转移到目标主机。

一、静态迁移(冷迁移)

       对于静态迁移,你可以在宿主机上保存一个完整的客户机镜像快照,然后在宿主机中关闭或 者暂停该客户机,然后将该客户机的镜像文件复制到另一台宿主机中,使用在源主机中启动该客户机时的命令来启动复制过来的镜像。

二、动态迁移(热迁移)

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

三、在基于共享存储系统时,KVM 动态迁移的具体过程为:

         1、迁移开始时,客户机依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上。

         2、QEMU/KVM 会监控并记录下迁移过程中所有已被传输的内存页的任何修改,并在所有内存页都传 输完成后即开始传输在前面过程中内存页的更改内容。

        3、QEMU/KVM 会估计迁移过程中的传输速度,当剩余的内存数据量能够在一个可以设定的时间周期 (默认 30 毫秒)内传输完成时,QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输 到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态。

       4、至此,KVM 的动态迁移操作就完成了。迁移后的客户机尽可能与迁移前一致,除非目的主机上 缺少一些配置,比如网桥等。

      注意,当客户机中内存使用率非常大而且修改频繁时,内存中数据不断被修改的速度大于KVM能够 传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。

       关于实时迁移的效率,业界不少人提出了改进的建议,比如通过使用内存压缩技术,减少需要传输的内存的大小

四、迁移注意事项:

          1、最好迁移的服务器cpu品牌一样

          2、64位只能在64位宿主机间迁移,32位可以迁移32位和64位宿主机

          3、宿主机名字不能冲突

          4、目的宿主机和源宿主机软件配置尽可能的相同,如有相同的桥接网卡,资源池等。

         5、两台迁移的主机 cat /proc/cpuinfo |grep nx 的设置是相同的

       NX,全名为“No eXecute”,即“禁止运行”,是应用在CPU的一种技术,用作把存储器 区域分隔为只供存储处理器指令集,或只供数据使用。

       任何使用NX技术的存储器,代表仅供数据使 用,因此处理器的指令集并不能在这些区域存储。这种技术可防止大多数的缓冲溢出攻击,即一些 恶意程序,把自身的恶意指令集放在其他程序的数据存储区并运行,从而把整台计算机控制。

五、静态迁移

          1.安装虚拟化所需要的环境

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

       kvm迁移第1张

          2.拷贝镜像文件和虚拟机配置文件  (我是基于nfs做的 所以只需要拷贝虚拟机配置文件即可)

scp /etc/libvirt/qemu/test1.xml  192.174.1.5:/etc/libvirt/qemu/

         3.重新定义此虚拟机

define  /etc/libvirt/qemu/test1.xml

  kvm迁移第2张

        4.启动虚拟验证

六、动态迁移:

        1.创建共享存储

         2.两台机器挂载共享存储(手工挂载;使用资源池)

         3.启动动态迁移

         4.创建迁移后的虚拟机配置文件

         5.重新定义虚拟机

       kvm迁移第3张

       案例实施步骤如下:‘

        1、设置主机名、/etc/hosts 互相解析,保证网络连接

vim /etc/hosts
scp /etc/hosts  192.174.1.5:/etc/

  kvm迁移第4张

        2、两台主机的KVM连接NFS共享存储 (如果不会可以查看上篇文章 kvm储存池 或者查看静态迁移中有步骤)

kvm迁移第5张

        3、在源主机的KVM中新建虚拟机并安装操作系统

        4、连接KVM,并进行迁移。’

migrate  test3 qemu+ssh://192.174.1.5/system --live --unsafe --verbose

  5.查看验证

      源主机 (迁移主机test关闭)

        kvm迁移第6张

    迁移主机

            kvm迁移第7张

 七、virsh migrate命令帮助

# 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

八、 常见错误:

       1、迁移时遇到的错误描述:

# virsh migrate centos ­­live qemu+ssh://192.168.30.132/system
error: unable to connect to server at 'KVM­2:49152': No route to host

        原因:你的免密登录没有成功

              解决方法:重新做免密登录即可

       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

        3、迁移时FQDN错误:

# 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.迁移时语法错误:

# 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

免责声明:文章转载自《kvm迁移》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解决Openwrt版本内核不兼容dotnet 教你写一个可以搞炸本机所有 WCF 应用的程序方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java虚拟机介绍

Java虚拟机概述 Java虚拟机(JavaVirtualMachine)简称JVMJava虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。下面我们就来看一下这几部分比较重要的java虚拟机的结构 一、JVM寄存器 所有的CPU均包含用于保存系统状...

斗鱼直播三面:说说JDK与JRE的区别是什么!

前言 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚...

局域网无法访问vmware虚拟机WEB服务器解决办法

具体情况如下 : 环境:虚拟机服务器是centos,apache+php+mysql环境,但是局域网无法访问 1.本机能ping通虚拟机 2.虚拟机也能ping通本机 3.虚拟机能访问自己的web 4.本机无法访问虚拟己的web 后来发现是防火墙将80端口屏蔽了的缘故。 检查是不是服务器的80端口被防火墙堵了,可以通过命令: telnet {服务器ip}...

更改kvm虚拟机磁盘大小

kvm 虚拟机的磁盘大小可通过命令:qemu-img resize filename size 来改,要注意的是resize只支持raw格式的磁盘文件,如果想更改qcow2等格式的磁盘大小,需先用qemu-img convert 转换磁盘格式后才能更改大小;另外,用命令改完大小后需重启kvm虚拟机,系统才能识别新添加的磁盘容量。 1、用qemu-img r...

Java OOM 常见情况

Java OOM 常见情况 原文:https://blog.csdn.net/qq_42447950/article/details/81435080  1)什么是OOM?  OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown when t...

VMware VMnet8 模式共享主机网络配置静态 IP 和 DNS

一、简介 NAT网络模式: 1. 宿主机可以看做一个路由器,虚拟机通过宿主机的网络来访问  Internet; 2. 可以安装多台虚拟机,组成一个小型局域网,例如:搭建 hadoop 集群、分布式服务。 二、配置 1. VMnet8 设置静态 IP 2. Centos 网络设配器为 NAT 模式 3. VMware 虚拟网络设置 4. 启动虚拟...