技术透析:Hyper-V实时迁移指南

原创
云计算 虚拟化 新闻
实时迁移是微软向Windows Server 2008 R2 Hyper-V添加的最重要的功能。实时迁移可以手工启动,也可以使用System Center Virtual Machine Manager(SCVMM) 2008 R2或System Center Operations Manager 2007(SCOM 2007)实现自动化实时迁移,本文将介绍如何为两个系统配置实时迁移的详细过程。

【51CTO精选译文】实时迁移是微软向Windows Server 2008 R2 Hyper-V添加的最重要的功能,通过实时迁移功能,在Hyper-V主机之间移动虚拟机(VM)就无需再停机了,正常维护Hyper-V主机时,可以将它托管的所有VM全部移走,等到维护结束后,又移回来,整个过程不会引起业务中断。此外,利用实时迁移功能还可以更好地动态调整主机资源利用率,将繁忙的Hyper-V主机上的部分VM移动到相对空闲的Hyper-V主机上,这样可以确保即便在业务高峰期也能给终端用户提供很好的性能。

实时迁移可以手工启动,也可以使用System Center Virtual Machine Manager(SCVMM)2008 R2或System Center Operations Manager 2007(SCOM 2007)实现自动化实时迁移,本文将介绍如何为两个系统配置实时迁移的详细过程,首先我会介绍一下实时迁移是如何工作的,然后会介绍实施实时迁移需要的硬件和软件先决条件,最后介绍Hyper-V的重点和实施实时迁移必须要要的故障转移集群配置。

实时迁移是如何工作的

实时迁移是发生在两个Hyper-V主机之间的,本质上就是在两台Hyper-V主机之间复制VM内存,内存复制完毕后,VM就可以在新的主机上访问它的虚拟硬盘(VHD)文件继续运行了,两个Hyper-V主机都访问的是共享存储上的VM VHD文件,当你启动实时迁移时,如图1所示,发生以下行为。
 

 

图 1  初始化实时迁移

1、在目标服务器上创建新的VM配置文件;

2、将源VM的初始内存状态拷贝到目标主机;

3、将源VM上做上标记的变动内存页拷贝到目标主机上;

4、持续这个过程,直到变动的内存页数量越来越小;

5、暂停源节点上的VM;

6、将源VM的最终内存状态复制到目标主机;

7、在目标主机上恢复VM;

8、更新网络路由表。

#p#

实时迁移的先决条件

在硬件方面,你需要两个x64系统,处理器要相互兼容,必须是同一家处理器厂商,且必须是同一处理器家族,双方处理器相同是最好的,如果一台Hyper-V主机是AMD处理器,另一台是英特尔的处理器,在它们之间是不能执行实时迁移的。

此外,每台服务器至少需要三块千兆网卡,一个用于连接外部网络,一个用于连接iSCSI存储,最后一个用于节点管理,理想情况下最好有一块专门用于实时迁移的网卡,但并非必须的,实时迁移通信也可以走外部网络连接,只是速度会稍慢一点,值得注意的是,如果你也想整合服务器,最好添加一块网卡用于VM网络通信。

在软件方面,所有参与实时迁移的节点必须安装Windows Server 2008 R2 64位操作系统,可以是标准版,企业版或数据中心版,Hyper-V Server 2008 R2也支持实时迁移,此外,在所有参与实时迁移的服务器上必须安装Hyper-V角色和故障转移集群功能。

另外还需要共享存储,可以是iSCSI SAN或FC SAN,我这里以iSCSI SAN为例,注意iSCSI SAN必须支持iSCSI 3规范,因为实时迁移需要该规范定义的持久化预留存储功能,有些开源iSCSI解决方案,如OpenFiler目前尚不支持这项功能,如果你只是想在本地测试一下实时迁移功能,可以选择免费的StarWind服务器产品。

#p#

故障转移集群网络配置

实时迁移必须使用故障转移集群,也只能在故障转移集群内节点之间实时迁移VM,创建故障转移集群的第一步是配置网络和存储,图2显示了本例使用的故障转移集群网络配置。
 

 

图 2 故障转移集群网络配置

图2中使用192.168.100.xxx的子网是客户端连接,iSCSI SAN运行在独立的物理网络上,使用的是192.168.0.xxx子网,理想情况下还应该为管理和实时迁移配备独立的网卡和对应的IP地址,但并非必须,实时迁移对每一方网卡的最低要求是两块。

#p#

存储配置

我使用的是LeftHand的iSCSI SAN,我在上面安装了一个SQL Server,在iSCSI SAN上,我创建了4个LUN,其中一个500MB大小,用于集群仲裁,另一个大小为1024GB,托管10个VM,其它两个分别用于SQL Server(500GB)和分布式事务协调(DTC,200MB)。

创建好LUN后,我在双方Windows节点上配置了iSCSI Initiator,接着选择“管理工具”*“iSCSI Initiator选项”,在“发现”标签上,我选择“搜索门户”选项,弹出搜索门户对话框,在这里输入IP地址和SAN的iSCSI端口,我分别输入了192.168.0.1和3260。

接下来,在“连接到目标”对话框中,我指定了目标iSCSI SAN的名字,通过SAN属性可以查看其名字,根据厂商、域名和LUN名字的不同,SAN的名字也不同,我选中了“将本连接添加到常用目标列表”复选框。完成iSCSI配置后,iSCSI Initiator目标标签就使用LUN填充好了。

最后,使用磁盘管理器给LUN分配驱动器号,我给仲裁LUN分配Q,DTC分配R,SQL Server分配S,VM分配V,你需要先在一个节点上分配,将驱动器脱机,然后在另一个节点上做同样的分配,图3显示了在一个节点上看到的驱动器号分配情况。
 

图 3 在一个节点上看到的驱动器

#p#

添加Hyper-V角色和故障转移功能

选择“管理工具”*“服务器管理器”,点击“添加角色”链接,在选择服务器角色对话框中,选择“Hyper-V”,然后点击“下一步”,将会显示创建虚拟网络提示,其本质是在Hyper-V VM和外部网络之间建立一个桥。

选择你想用于VM通信的网卡,注意不要选中用于iSCSI SAN连接的网卡,点击“下一步”结束添加角色向导,重启系统,需要在集群的所有节点上执行这些操作。

接下来在服务器管理器中,点击“添加功能”选项,启动添加功能向导,选择“故障转移集群”功能,点击“下一步”结束向导,这个过程也必须在所有节点上执行。

#p#

配置故障转移集群

接下来就该创建故障转移集群了,可以在任一集群节点上做这件事,选择“管理工具”*“故障转移集群管理器”,在打开的故障转移集群控制台窗口中,选择“验证配置”链接启动验证向导,显示“选择服务器或集群”对话框。

输入要加入集群的所有节点的完全限定名称,然后一路点击“下一步”,完成集群验证测试,包括检查操作系统,网络配置和所有节点的存储配置,最后一页会显示测试结果摘要信息,如果验证成功,就可以开始创建集群了,如果遇到错误,必须先纠正后才能继续。

在故障转移集群控制台窗口中点击“创建集群”链接,和验证过程差不多,首先需要输入所有节点的名字,点击“下一步”,显示“集群管理接入点”对话框,如图4所示。
 

 

图 4 集群管理接入点

在这里输入集群的名字和IP地址,名字和IP地址必须是网络中唯一的,在图4中,你可以看到我给集群取的名字是WS08R2-CL01,给集群分配的IP地址是192.168.100.200,如果你使用的是Windows Server 2008 R2,可以指定通过DHCP分配IP地址,但推荐使用静态IP地址,这样便于出现问题时进行故障诊断和排除。

点击“下一步”,显示确认界面,如果确定没有需要修改的配置信息就点击“下一步”创建集群,接着显示一个集群配置摘要信息界面,这就是配置集群的全部过程。

创建集群向导会自动为仲裁选择存储,但不是总能选中你创建的仲裁驱动器,你可以在故障转移集群控制台窗口的集群名字上点击右键,选择“更多操作”*“配置集群仲裁设置”,检查和修改仲裁驱动器,在弹出的对话框中,向导会自动选择最佳的仲裁类型,主要取决于集群中节点的数量,在双节点集群中,它选择了“节点和磁盘优先”仲裁类型。

接下来显示配置存储对话框,我将默认值修改为我想要的Q,点击“下一步”保存集群仲裁配置。

#p#

启用集群共享卷

集群配置的下一步是启用集群共享卷,集群共享卷允许多个集群节点同时访问相同存储位置,但默认没有启用,在故障转移集群控制台的集群名称上点击右键,然后选择“启用集群共享卷”,显示集群共享卷摘要信息对话框,初始是空白的。

在行为面板中选择“添加存储”选项,在弹出的对话框中,选择存储的位置,我选择了V驱动器,实际上它是LeftHand SAN上的一个LUN,点击“确定”启用集群共享卷,完成后将会在所有集群节点上创建一个挂载点,默认这个挂载点被标记为C:\ClusterStorage\Volume1。

#p#

在集群共享卷上创建VM

可以使用Hyper-V Manager或System Center Virtual Machine Manager创建Hyper-V VM,在Hyper-V Manager中,点击管理工具,然后选择“新建VM”选项,显示如图5所示的新建虚拟机向导对话框。
 

图 5 新建虚拟机向导

我这里将虚拟机名字命名为vWS08-SQL01,VM存放位置选择了C:\ClusterStorage\Volume1,VM配置文件也创建在共享存储上。

点击“下一步”给VM分配内存,再点击“下一步”给VM选择网络连接,虽然给VM配置专用网络不是必须的,但如果你选择了外部网络连接,一定要确保所有Hyper-V节点上外部网络连接的名字要相同,我这里就选择使用外部网络连接。

点击“下一步”显示连接虚拟磁盘对话框,最初这里显示Hyper-V管理器默认指定的名字和位置,我将VHD文件的名字改为vWS08-SQL01.vhd,将位置改为C:\ClusterStorage\Volume1,点击“下一步”指定客户机操作系统安装选项,所有客户机操作系统,包括Linux在内都可以使用实时迁移功能,剩下的步骤就和创建普通VM的步骤差不多了。

结束创建虚拟机向导后,VM将会创建在集群共享卷上,下一步是启动VM安装客户机操作系统和需要的应用程序。

#p#

启用VM实时迁移功能

打开故障转移集群控制台,导航到服务和应用程序节点,点击右键,选择“配置服务或应用程序”启动高可用向导,在选择服务或应用程序对话框中,从服务列表中选择虚拟机,然后点击“下一步”,显示选择虚拟机对话框,选择你想启用实时迁移的VM,我选择前面的vWS08-SQL01 VM,如果没有执行这一步VM是不能运行的。

在VM名字前选中复选框,一路点击“下一步”结束向导,最后会显示一个确认对话框和一个摘要信息对话框,如果你看到有“成功”的标志,就表明VM启用实时迁移成功。

#p#

迁移!

至此,可以使用故障转移集群管理器启动一个实时迁移了,展开服务和应用程序节点,然后选择它下面的VM节点,这时会显示一个摘要面板,显示VM的状态,如图6所示。
 

 

图 6 VM摘要信息面板

在图6中,你可以看到VM vWS08-SQL01正在运行中,目前属于WS08R2-S1节点,要启动实时迁移,转到行为面板,点击“实时迁移虚拟机”选项,飞出一个菜单提示你指定目标节点,我这里选择“1-实时迁移到节点WS08R2-S2”,点击这个选项启动实时迁移,摘要信息窗口中的状态改为正在运行实时迁移。

实时迁移需要的时间取决于VM的大小和活动,以及两节点之间网络速度和网络流量,在我的测试网络中通常只需要10秒,最多只要1分钟,实时迁移完成后,摘要信息面板又重新显示VM的当前所有者,正常情况下就是目标节点的名字。

#p#

虚拟化乐土

实时迁移解决了计划内停机时间,它奠定了动态数据中心的基础,虽然实时迁移的步骤不少,如果你仔细浏览就会发现其实就几个关键点,相信你有了Hyper-V实时迁移的帮助,一定会在虚拟化道路上快乐地前行!

【51CTO.com译稿,合作站点转载请注明原文译者和出处。】

原文:Hyper-V Live Migration: A Step-by-Step Guide 作者:Michael Otey

【编辑推荐】

  1. 规划最省钱的Hyper-V容灾备份方式
  2. 微软为管理员提供三款免费Hyper-V工具
  3. 七问Hyper-V Server 2008 R2 

 

 

责任编辑:王勇 来源: 51CTO原创
相关推荐

2013-06-27 09:52:01

Hyper-V在线存储

2013-06-27 09:50:00

Hyper-V在线存储

2013-08-06 10:25:18

Hyper-V虚拟机迁移

2014-04-18 09:18:07

Hyper-V虚拟机实时迁移

2012-09-12 10:35:51

Hyper-V

2020-06-11 08:02:38

VMwareHyper-VOpenStack

2010-10-14 10:50:32

Hyper-Vbrownout

2013-10-15 11:04:17

Hyper-V 3.0Hyper-V

2013-10-15 13:57:53

Hyper-V 3.0共享存储

2011-11-21 10:27:43

虚拟化PowerShellHyper-V

2009-08-24 14:12:13

Hyper-V技术原理

2013-07-01 10:29:21

Win Server Hyper-V

2013-01-30 14:55:04

Windows SerHyper-V

2011-01-25 10:17:24

微软Hyper-V c

2010-10-14 10:54:32

Hyper-V

2009-05-22 18:10:51

微软 Hyper-V

2011-09-29 09:39:45

VMwareHyper-V

2012-05-18 10:03:32

VMware

2013-06-08 10:12:52

Hyper-V虚拟化迁移

2010-12-29 10:55:51

Hyper-V
点赞
收藏

51CTO技术栈公众号