vSPhere使用vMotion实现虚拟机热迁移详解

若要实现热迁移,那么外部共享存储服务器便是必不可少的,因为必须要保证源ESXi主机和目标ESXi主机都可访问虚拟机文件,所以在热迁移之前必须把虚拟机配置文件都迁移到外部共享存储之上。

说到外部共享就自然想到了openfiler,openfiler是一个免费的NAS/ISCSI的SAN服务器系统,主要用于为LAN主机提供独立存储系统,openfiler提供了包括NFS、SMB、ISCSI、target等多种连接方式,一般通过http的方式管理,它对于希望搭建虚拟化的中小型企业而言,是provisiong阶段最好的工具。

vMotion是所有vSPhere高级功能的基础,可实现热迁移。

vMotion的迁移过程(如果迁移期间出错,虚拟机将恢复原始状态和位置):

  1. 请求vMotion迁移时,vCenter server会验证虚拟机与ESXi主机状态是否稳定;
  2. 此时,源ESXi主机将虚拟机内存克隆到新ESXi主机;
  3. 源ESXi主机将克隆期间发生改变的内存信息记录在内存对应图上(也有人成为心电图);
  4. 当虚拟机内存数据迁移到新ESXi主机后,源ESXi主机会使虚拟机处于静止状态,此时虚拟机无法提供服务(仅仅一两秒钟而已),然后将内存对应图克隆到新ESXi主机。静止状态所需要的时间极为短暂;
  5. 新ESXi再根据内存对应图恢复内存数据,完成后两台ESXi主机对于这台虚拟机的内存就完全一致;
  6. 最后在新ESXi主机运行该虚拟机,并在源ESXi主机中删除内存数据(自动删除,无需操作)

那么,接下来了解一下运行vMotion的兼容性要求:

  • **不允许连接只能单台ESXi主机才能识别的设备,如光驱、软驱等。
  • 不允许连接没有物理网络的虚拟交换机。
  • 迁移的虚拟机必须存放在外部共享存储,且所有的ESXi主机均可访问。
  • ESXi主机至少有1块千兆网卡用于vMotion。
  • 如果使用标准交换机,必须确保所有ESXi主机的端口组网络标签一致。
  • 所有ESXi主机使用的CPU供应商必须一致(Intel或AMD)**

迁移虚拟机的具体操作过程:

拓扑图如下所示:

现在在ESXi 01主机上有一台centos 7,ip为192.168.1.6,我们在不中断服务的情况下迁移到ESXi 02。

一、安装openfiler,可以通过http://www.openfiler.com/ 下载openfiler的ISO镜像。openfiler的安装步骤如下:

1、挂载ISO镜像,开机(建议现在不要连接除系统盘以外的硬盘,要不然就麻烦),出现以下界面按“enter”,等待加载:

2、单击“下一步”:

3、选择键盘类型,默认为美国英语。保持默认,点击下一步即可:

4、提示是否要初始化硬盘,选择“yes”:

5、在选择磁盘分区时保持默认,单击“下一步”:

6、单击“yes”:

7、点击“edit”,编辑网卡信息,设置完网卡信息后单击“下一步”:

8、设置相应的时区后,单击“下一步”:

9、设置root密码,然后单击“下一步”,直至安装:

10、安装完成:

11、至此就完成了,剩下的管理工作通过https即可(现在要把用来存储数据的硬盘挂载上了,并保证系统检测到新挂载的磁盘,openfiler这个系统与Linux操作系统大同小异),管理地址如下所示:

二、openfiler系统配置iSCSI

1、登录存储服务器管理页面:

2、使用系统初始默认的用户名和密码进行登录,默认用户名为:openfiler;密码为:password。系统初始用户名和密码可以在第一次登陆后进行重新设置:

3、登录后的界面如下,显示了当前系统的各种初始化配置信息:

4、在系统菜单“system”下,可以检查当前系统的ip地址等网络信息设置情况,如果想要重新设置网络信息,可以单击“configure”链接对系统网络进行重新配置,如下所示:

5、在系统菜单“system”下的“Network Access configuration”区域,配置允许访问openfiler系统的安全访问控制列表,只有加入openfiler的访问控制列表中的网络或主机地址,才允许访问openfiler系统所提供的虚拟存储服务。在网络访问控制列表中,既可以添加网段,也可以添加单个主机地址,如下:

6、接下来需要做的,和在Linux系统中创建LVM卷原理一样,先创建物理卷,再创建卷组,最后创建lvm,首先按照下图所示,创建物理卷:

7、进入磁盘编辑页面后,往下拉,可以看到已经分配的磁盘分区信息,按照下图的默认选项,单击“create”,完成创建物理卷:

8、按照下图,进入创建卷组的界面:

9、按照下图所示,把刚才做的物理卷组成卷组:

10、点击添加lvm卷:

11、进入添加volume页面后,下拉网页,如下所示:

12、开启iscis target server服务,如下所示:

13、开启iscis target server服务后,选择“volumes”菜单,单击“ISCSI Targets”,如下所示:

14、单击“ADD”,添加一个ISCSI target:

15、单击“LUN Mapping”,保持默认,单击“Map”:

16、单击“Network ACL”标签,将Access 设置为“Allow” ,然后单击“update”,后面“CHAP Authentication”标签可以添加访问此target的用户,为可选项,这里就不添加了:

至此,存储服务器就设置完毕了,现在连接到vCenter服务器来配置:

三、登录vCenter服务器,创建所需端口组:

1、创建VMKernel端口组,首先创建用来通行vMotion流量的端口组:

2、根据向导创建vMotion端口组:

3、

4、

5、

6、设置静态IP地址,点击“下一步”,直至完成:

7、创建完vMotion端口组后,再继续添加用来连接存储服务器的端口组iscsi:

8、

9、选择“新建标准交换机”,点击“下一步”:

10、添加物理网卡:

11、

12、

13、

14、按照下图所示,连接共享存储:

15、点击“是”:

16、

17、绑定端口组:

18、

19、

20、

21、输入ISCSI主机的ip地址,并点击“确定”:

22、继续重新扫描:

23、单击“设备”,可以看到已经连接到了openfiler存储服务器:

24、至此,已经准备工作已经快完成了,现在需要在另一台ESXi主机上进行1~23的步骤,创建vMotion和ISCSI端口组,并且连接openfiler存储服务器。(需要注意的是vMotion和ISCSI端口组的网络标签必须一致,也可以说,除了IP地址外,其余的配置必须一样。)

等两台主机都连接到ISCSI存储服务器后,可以在任意一台ESXi主机进行以下操作:

1、

2、

3、保持默认,单击“下一步”:

4、

5、保持默认,单击“下一步”:

6、对存储的使用空间进行分配,实际项目中可能各有不同,这里保持默认,单击“下一步”:

7、点击“完成”:

8、可以看到已连接的共享存储了,而且另一台ESXi主机也会自动连接(在之前的配置没有问题的前提下):

至此,准备工作就完全做好了,还有一个需要注意的是,要进行迁移的虚拟机,不可以挂载光盘,因为,目标主机并不能访问挂载的光盘镜像,所以还需要一步设置,如下:

开始迁移:
若想看看虚拟机在迁移过程中是否有终端服务,可以使用ping命令进行死亡ping,会发现过程中会有几个包延迟,或丢几个包,这些都是无关痛痒的:

1、

2、

3、

4、选择ISCSI存储服务器后单击“下一步”:

5、

6、确认无误后,单击“完成”,开始虚拟机的迁移:

7、使用ping 命令,加上-t选项进行死亡ping,观察虚拟机状态:

迁移中,开始有延迟和丢包现象:

等待进度条完成,虚拟机迁移便成功了:

一篇博客写了将近四个小时,希望所有努力终有回报吧!洗洗睡觉去................

原文地址:https://blog.51cto.com/14154700/2382975

时间: 2024-09-30 17:52:20

vSPhere使用vMotion实现虚拟机热迁移详解的相关文章

vSphere 通过 vMotion 实现虚拟机热迁移

在实际环境中,总会有新陈代谢,旧机器总还是躲不过时间的摧残,这就需要更换新机器,而 vMotion 是 VMware 开发出的一项独特技术,可将正在运行的虚拟机从一台服务器迁移到另一台服务器上.若要实现热迁移,那么外部共享存储服务器便是必不可少的,因为必须要保证源ESXi主机和目标ESXi主机都可访问虚拟机文件,所以在热迁移之前必须把虚拟机配置文件都迁移到外部共享存储之上.openfiler是一个免费的NAS/ISCSI的SAN服务器系统,主要用于为LAN主机提供独立存储系统,openfiler

Java虚拟机工作原理详解

原文地址:http://blog.csdn.net/bingduanlbd/article/details/8363734 一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 [java] view plaincopy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码

利用Keepalived实现双机热备详解

在这个高度信息化的IT时代,企业的生产系统.业务运营.销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的.不间断的计算机系统或网络服务. 一.Keepalived双机热备基础知识 1.Keepalived概述 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集. Keepaliv

一次OpenStack虚拟机热迁移的排错经历

先来看下cpu型号,从/proc/cpuinfo中可以看出所有cpu型号版本是一样的 通过nova live-migration --debug <instance-xxx>  <node-xxxx>命令行迁移,可以看到报错信息 通过nova-compute log错误信息定位代码 再下面就到libvirt.py了 通过这个api,看不出具体错误信息,可能是跟flags是0有关系. 通过debug代码,保存cpu xml信息到某个文件 通过virsh接口可以看到错误, 舒了一口气!

深入Java虚拟机——JVM内存详解

在C++中,程序员拥有每一个对象的所有权,但与此同时还肩负着释放对象内存空间的责任:而Java由于有了虚拟机的帮助,程序员拥有对象的所有权的同时不再需要释放对象的内存空间.由于是JVM自动进行对象内存的释放,所以内存泄漏和内存溢出的问题也很少出现. Java虚拟机在运行时将内存空间分成5个部分,分别是:方法区.虚拟机栈.本地方法栈.堆.程序计数器. 程序计数器 本质 程序计数器本质上是一块较小的内存空间. 作用 可以把程序计数器简单地看作是当前线程所执行的字节码的行号指示器. 字节码解释器在工作

Java虚拟机内存分配详解

简介 了解Java虚拟机内存分布的好处 1.了解Java内存管理的细节,有助于程序员编写出性能更好的程序.比如,在新的线程创建时,JVM会为每个线程创建一个专属的栈 (stack),其栈是先进后出的数据结构,这种方式的特点,让程序员编程时,必须特别注意递归方法要尽量少使用,另外栈的大小也有一定的限制,如果过多 的递归,容易导致stack overflow. 2.了解Java内存管理的细节,一旦内存管理出现问题,有助于找到问题的根本原因所在. 3.了解Java内存管理的内幕,有助于优化JVM,从而

java虚拟机底层结构详解[转]

本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后

Java虚拟机工作原理详解 (一)

一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 [java] view plain copy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码的时候,开发工具已经帮你完成了上述的编译工作,因此你可以在对应的目录下看到class文件.此时的class文 件依然是保存

Java虚拟机工作原理详解 ( 二 )

首先这里澄清两个概念:JVM实例和JVM执行引擎实例,JVM实例对应了一个独立运行的Java程序,而JVM执行引擎实例则对应了属于用户运行程序的线程:也就是JVM实例是进程级别,而执行引擎是线程级别的. JVM是什么?—JVM的生命周期 JVM实例的诞生:当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有 publicstaticvoidmain(String[]args)函数的class都可以作为JVM实例运行的起点,既然如此,那么JVM如何知道 是运行classA的main而不是