热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

玩转KVM:一招完成vm在线迁移

下篇预告:玩转KVM:浅谈虚拟机lifecycle前言上篇一招打开vm的console口,让你轻轻松松管理vm。下面讲虚拟机是如何在kvm集群中来去自如。为什么要迁移迁移描述了将虚

下篇预告: 玩转KVM:浅谈虚拟机lifecycle

前言

上篇一招打开vm的console口,让你轻轻松松管理vm。下面讲虚拟机是如何在kvm集群中来去自如。

为什么要迁移

迁移描述了将虚拟机从一台主机物理机移动到另一台主机的过程。
虚拟机迁移可以分为:冷迁移(offline migration)和热迁移(live migration/online migration)

为什么要迁移呢?

1.负载平衡 - 当主机物理机器过载或其他主机物理机器未充分利用时,可将客户机虚拟机移动到主机物理机器,使用率较低。
2.硬件独立性 - 当我们需要在主机物理机上升级,添加或删除硬件设备时,我们可以安全地将虚拟机重定位到其他主机物理机。这意味着虚拟机不会遇到硬件改进的停机时间。
3.节能 - 客户虚拟机可以重新分配到其他主机物理机器,因此可以关闭电源以节省能源并在低使用率期间降低成本。
4.地理迁移 - 可以将虚拟机移动到其他位置,以降低延迟或在严重情况下使用。

迁移的要求

共享存储

虚拟机迁移要求是虚拟机存放在KVM集群的共享存储中。
如下:
基于光纤通道的LUN
iSCSI的
FCoE的
NFS
GFS2
CEPH RBD
SCSI RDMA协议(SCSI RCP):Infiniband和10GbE iWARP适配器中使用的块导出协议
玩转KVM:一招完成vm在线迁移

# 虚拟机的管理工具

KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具。

QEMU-KVM:在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载 KVM 模块,如果用 RPM 安装 KVM 软件包,系统会在启动时自动加载模块。加载了模块后,才能进一步通过其他工具创建虚拟机。

Libvirt、virsh、virt-manager:尽管 QEMU-KVM 工具可以创建和管理 KVM 虚拟机,RedHat 为 KVM 开发了更多的辅助工具,比如 libvirt、libguestfs 等。原因是 QEMU 工具效率不高,不易于使用。使用 libvirt,你只需要通过 libvirt 提供的函数连接到 KVM 或 Xen 宿主机,便可以用同样的命令控制不同的虚拟机了。Libvirt自带一套基于文本的管理虚拟机的命令—— virsh,你可以通过使用 virsh 命令来使用 libvirt 的全部功能。 virt-manager是一套用 python 编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机。

迁移实战

虚拟机冷迁移:

源物理主机:

确定虚拟机关闭状态
[[email protected] ~]# virsh list --all

准备迁移test虚拟机,查看该虚拟机的磁盘文件
[[email protected] ~]# virsh domblklist test

导入虚拟机配置文件
[[email protected] ~]# virsh dumpxml test > /root/test.xml

拷贝配置文件到目标虚拟主机上。
[[email protected] ~]# scp /root/test.yml 10.10.10.10:/etc/libvirt/qemu/test.yml

目标物理主机:

查看目标主机KVM环境
[[email protected] ~]# virsh list

查看虚拟机描述文件
[[email protected] ~]# ls -l /root

查看虚拟机磁盘文件,目录结构与源虚拟主机一致。
[[email protected] ~]# virsh domblklist test --输出需要与源主机一样

定义注册虚拟主机
[[email protected] ~]# virsh define /etc/libvirt/qemu/test.yml

启动虚拟主机并确认
[[email protected] ~]# virsh start test
[[email protected] ~]# virsh list

# 虚拟机热迁移:
共享存储可以用以上罗列的方式

准备NFS存储,全部节点挂载nfs目录
[[email protected] ~]# mount -t nfs 10.10.10.200:/data /data -o rw,rsize=12768,wsize=12768,hard

节点1虚拟机状态,test虚拟机开机状态
[[email protected] ~]# virsh list

节点2虚拟机状态,无虚拟机运行
[[email protected] ~]# virsh list
在主机1上执行迁移命令
[[email protected]~]#virsh migrate --live --verbose test  qemu+ssh://10.10.10.10/system tcp://10.10.10.10br/>[email protected]'spassword:
Migration:[100%]

迁移过程:客户机一直ping查看迁移,可以看到中间有两个包的中断,基本上没有太大影响。

节点2上,可以看到虚拟机test已经启动了,进入虚拟机观察
[[email protected] ~]# virsh list
[[email protected] ~]# virsh console test
玩转KVM:一招完成vm在线迁移

转载于:https://blog.51cto.com/13475644/2382443


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 树莓派Linux基础(一):查看文件系统的命令行操作
    本文介绍了在树莓派上通过SSH服务使用命令行查看文件系统的操作,包括cd命令用于变更目录、pwd命令用于显示当前目录位置、ls命令用于显示文件和目录列表。详细讲解了这些命令的使用方法和注意事项。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
author-avatar
手机用户2602929123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有