Hyper-V的使用技巧及管理方法

  摘要

  本文第一章简要介绍了Microsoft Hyper-V 产品背景、不同类型的Hyper-V及如何安装使用Hyper-V。

  第二章介绍了Hyper-V的各项基本功能以及配置项,并从具体场景出发解释Hyper-V 的各个配置项的用途。

  第三章详细介绍Hyper-V 四个较为高级的功能,并配以实例进行诠释,帮助读者理解如何使用这些功能。

  第四章则从部署角度介绍如何构建Hyper-V实例的高可用群集,群集所依赖的功能组件及模拟场景所使用的存储ISCSI的使用方法。

  第五章简单介绍如何管理Hyper-V主机及虚拟机,推荐两款管理应用软件:Hyper-V 管理器和 SCVMM,并附以图片参考。

  第六章为开发方面的内容,主要从运维管理角度利用Windows PowerShell 工具开发部分功能模块实现运维自动化。

  希望此文能够带给读者全面的Hyper-V视图,帮助掌握如何部署Hyper-V,如何使用Hyper-V以及如何管理Hyper-V。文中难免有纰漏或错误,请各位专家或读者不吝赐教。希望读者能从中获益。

  第一章 Hyper-V 介绍

  本章主要从Hyper-V发展历史、两种形式的Hyper-V产品、如何部署Hyper-V功能三方面介绍Hyper-V。

  1-1 Hyper-V发展历史

  2003 年,微软收购了一家虚拟化软件公司。2004 年推出了第一个桌面虚拟化产品Virtual PC 2004,其功能类似于VMware 工作站(work station)。由于该虚拟化产品集成在操作系统之中,所以用户可以在windows XP或者 Windows Server 2003 安装Virtual PC。

  2005 年,微软推出Virtual Server版本2005。在功能方面,该产品具有统一管理页面、 虚拟机管理功能和迁移方案。对比Virtual PC,二者共同点是均能在Windows Server 2003系统上安装,因其均基于操作系统安装前提。

  2008年,微软发布Windows server 2008 操作系统,从而正式推出Hyper-V企业级产品。事实上在3月份发布的2008操作系统中,Hyper-V仍处于测试版本。大约在半年后也就是2008年底,微软发布了一个更新补丁,才将Hyper-V正式版正式发布。从发布时间上来看,微软推出企业级虚拟化产品是非常急迫的。

  2012年 Hyper-V 3.0 发布,距上次发布时隔4年之久。对于从来不缺钱和人才的微软来说,只要有时间就会有创新,也得益于向市场和VMWARE的学习精神。2012版本中的Hyper-V发生更多改变,企业所需要的Hyper-V 企业级功能,虚拟机生命周期的维护性能,SCVMM管理工具等各层面都发生了改变。从功能、性能、操作与VMWARE不相上下。 SVCMM 2012 SP1后发布了除虚拟机的整合外,所有的资源通过云的方式进行发布,提出了私有云概念。可以说Windows server 2012 Hyper-V已经是一款真正可以与VMWARE 竞争的产品。

  1-2 两种Hyper-V产品

  本节主要讲述微软发布的两种不同形式的Hyper-V产品: Hyper-V 角色和Hyper-V Server。

  v Hyper-V 角色

  Hyper-V 角色集成在微软发布的服务器操作系统中。根据Windows Server 2012 服务器操作系统版本不同,分为数据中心版本和标准版本。

  · 数据中心版本——没有虚拟机数量使用限制

  · 标准版本——有免费的两个虚拟机使用限制;如果创建额外的虚拟机,需要向微软支付Hyper-V授权费。

  v Hyper-V Server

  Hyper-V Server是微软推出的专门优化的服务器版本,其安装在硬件服务器上,是一个命令行方式的交互产品。通过相应的命令行工具可以进行初始化虚拟机、管理等。产品本身免费,但是要在其上创建虚拟机则要支付微软一定的费用。

  1-3 Hyper-V安装部署介绍

  上节讲到两款Hyper-V产品,目前比较普遍使用的是Hyper-V 角色。本节着重介绍安装部署Hyper-V 角色的先决条件和具体安装步骤。

  1-3-1 部署要求

  Windows Server 2012 或者 Hyper-V 服务器要求硬件CPU 支持虚拟化功能,此外,Windows8 还需要支持内存二次地址转换功能(SLAT)。

  为方便用户知悉自身环境是否满足部署要求,微软推出一个小工具“Coreinfo”帮助检测硬件是否支持Hyper-V安装部署。下面列出此工具支持运行的操作系统版本及检测结果案例参考。

  · 该工具支持的操作系统版本

  客户端操作系统版本要求: Windows Vista 或者更高

  服务器端操作系统版本要求: Windows Server 2008或者更高

  · 工具运行结果参考:

  *代表支持 -代表不支持

  <图1-1 CoreInfo>

  1-3-2 Hyper-V角色部署过程

  本节以Windows Server 2012R2 操作系统为例说明如何安装Hyper-V角色并配以截图参考。

  (1)打开服务器管理器

  <图1-2 Hyper-V安装过程>

  (2)启动添加角色和功能向导

  <图1-3 Hyper-V安装过程>

  (3)勾选Hyper-V

  <图1-4 Hyper-V安装过程>

  (4)点击下一步

  <图1-5 Hyper-V安装过程>

  (5)保持默认设置并下一步

  <图1-6 Hyper-V安装过程>

  (6)确认安装所选内容

  <图1-7 Hyper-V安装过程>

  (7)安装完成需重启计算机

  <图1-8 Hyper-V安装过程>

  第二章 Hyper-V 基本功能

  本章介绍了Hyper-V的基本功能并配以实例讲述具体用途,分三部分:创建虚拟机、虚拟资源分配、安装虚拟机操作系统和三种类型的虚拟网络交换机。

  2-1 创建虚拟机

  创建虚拟机有多种方式,本节着重讲述最常用的利用向导创建虚拟机过程。

  (1)在开始菜单找到Hyper-V 管理器

  <图2-1 Hyper-V管理器>

  (2)以下窗口就是Hyper-V管理器,左侧区域为Hyper-V主机列表,在这里可以管理本地Hyper-V主机,也可以远程连接到其他Hyper-V主机,但需提前配置好网络和权限。中间区域为虚拟机列表,可以点击某一台虚拟机进行相应的操作、配置。右侧区域为配置区域,可以对Hyper-V主机和虚机进行相应操作配置。

  <图2-2 Hyper-V管理器>

  (3)点击左侧的Hyper-V主机,右侧区域选择“创建”可以触发一个新建虚拟机的向导,根据向导创建一台新的虚拟机。

  <图2-3 Hyper-V 新建虚机向导>

  (4)为虚拟机分配内存

  <图2-4 Hyper-V 新建虚机向导>

  (5)点击完成,完成虚拟机的创建。

  <图2-5 Hyper-V 新建虚机向导>

  (6)一台新的虚拟机创建完成后会显示在中间区域。

  <图2-6 Hyper-V 新建虚机向导>

  2-2 虚拟硬件资源配置

  本节从Hyper-V虚拟出的硬件资源角度出发,讲述如何分配这些虚拟硬件资源并配以场景详细讲述各个设置项的具体用途。

  Hyper-V 支持的服务器版操作系统和客户端操作系统如下:

  · 服务器版操作系统:Windows NT/ 2000/2003/2008/2008r2/2012/2012r2

  · 客户端操作系统:Windows 95/98/XP/8/10

  如果企业需要部署SQL Server 到虚拟化平台上,由于SQL Server 对硬件资源要求高,那么前期我们需要对Hyper-V 服务器能否提供相应的硬件资源进行评估,以虚拟机平台操作系统Windows Server 2012 为例,假设SQL Server 要求的硬件资源如下: 64 核CPU、256GB 内存 、硬盘10TB。

  我们需要考虑三个问题:1、Hyper-V 虚拟机安装的操作系统版本Windows Server 2012 是否被Hyper-V 服务器平台支持;2、上述的硬件要求是否可以满足;3、如何进行资源分配。

  2-2-1 CPU 资源分配、保留、限制

  本节讲述如何分配、保留、限制CPU 资源以及资源评估的方式,以充分合理利用有限的CPU资源。

  首先引用一个应用案例帮助理解为什么要合理利用资源:

  案例

  某企业有10台物理服务器,分别运行不同的服务:文件服务器、数据库服务器、Web应用服务器等,为节约成本希望将所有服务都迁移到Hyper-V平台中。但在迁移时发现各个服务所在的物理服务器硬件配置高低不一。工程师没有进行任何资源评估,按照原有硬件配置将服务迁移到Hyper-V平台,最终导致分配的Hyper-V部分资源处于闲置状态,这就造成Hyper-V硬件资源浪费。

  为充分并且合理的利用Hyper-V硬件资源,首先要对现有服务所需资源进行评估。根据评估结果分配相对应的Hyper-V硬件资源,从而有效控制成本。

  资源评估的方式:

  · 性能监视器 - 需要对每台服务器进行信息获取

  · MAP toolkits - 微软推出的对系统资源分配进行评估的工具

  评估完成后掌握了所需资源的具体数据,接下来进行Hyper-V资源配置。通过以下操作打开CPU资源分配具体设置页:右击虚拟机,选择“虚拟机设置”,在“虚拟机设置”的选项中,在弹出的“处理器”页面中,可以设置虚拟机的虚拟处理器的数量、虚拟机保留(百分比)、占总系统资源的百分比、虚拟机限制和相对权重等。

  具体设置项位置请参照下图

  <图2-7 Hyper-V 处理器设置>

  下面介绍了图2-7中几个比较重要的选项:

  · 虚拟机保留:在虚拟机可用的虚拟机处理器资源中,指定要留给虚拟机的百分比,此设定可以确保指定的百分比提供虚拟机使用。

  · 虚拟机限制:在虚拟机可用的虚拟机处理器资源中,限制虚拟机的CPU使用百分比,此设定可以确保指定的百分比将提供虚拟机最多的使用资源。

  · 相对权重:当有多台虚拟机同时运行且CPU资源较少时,分给虚拟机CPU计算能力的优先级,权重越高则越优先分配。

  2-2-2 CPU 兼容性和NUMA 设置

  关于Hyper-V处理器设置还有两个比较重要的设置项:CPU 兼容性和NUMA(非一致性内存访问)。下面具体说明二者的功能:

  · CPU兼容性:对于不同品牌的硬件服务器,一般CPU 型号也会不同。这种情况下虚拟机跨硬件平台的迁移,则需要勾选“处理器兼容性”。

  · NUMA: 计算资源是CPU 、内存,CPU 负责计算,内存负责数据交换, CPU 计算需从内存读取数据,处理完成后返回内存。还有一个提高性能的方法,尽量缩短CPU和内存之间的访问时间,缩短访问路径即主板总线。NUMA将固定的CPU 与固定内存形成一个单元,提高CPU 和内存之间的访问效率。

  具体设置项位置请参考下图:

  <图2-9 Hyper-V 处理器设置>

  2-2-3 内存分配

  本节讲述Hyper-V 虚拟机的两种内存分配方式以及用途,具体设置项如图2-10。

  · 静态内存功能:指定启动RAM:2048MB。即启动该虚拟机所需内存,一般这种配置方式被称为静态内存。

  · 动态内存功能:勾选启用。Hyper-V 2.0 后引入的功能,在虚拟机运行过程中,根据自身情况申请或者释放内存资源,使得内存利用率更高。

  <图2-10 Hyper-V 内存设置>

  关于动态内存,有两个重要设置项:内存缓冲区和内存权重。

  (1)内存缓冲区:20%

  在相应虚拟机配置此选项后,如果后续使用中对内存要求越来越多,比如用户打开应用程序,则需求从1G 增大到 6G。为了加快这个内存申请的过程,有一部分20%是马上可以分配的,加快了内存申请的速度。

  (2)内存权重

  如果有10台虚拟机同时向Hyper-V主机申请内存,虚拟机内存权重越高,申请内存越快。

   场景

  一台Hyper-V主机装配了8G内存,现要求创建4 台虚拟机并且配置启动内存为2G。虚拟机创建并运行后发现虚拟机未能充分利用2GB, 实际只利用1.5GB。为了提高Hyper-V主机内存使用率,此时再创建第5台虚拟机,将Hyper-V主机剩余的 2GB内存动态分配给这台虚拟机。

  问题

  如果5台虚拟机同时重启,因为启动内存都是2GB, 所以共需要10GB (大于8GB),那么会不会重启失败呢?

  结果

  5台虚拟机可以正常启动。

  基于以上场景分析,谁提供了额外的2GB 内存?在这种场景下,Hyper-V会调用本地磁盘作为内存分配使用,“智能分页文件位置” 提供这个功能,如下图:

  <图2-11 Hyper-V 内存设置>

  2-3 安装虚拟机操作系统及三种虚拟网络交换机

  本节主要介绍如何利用多种方式安装虚拟机操作系统并且介绍了三种Hyper-V网络交换机。

  2-3-1 安装虚拟机操作系统

  虚拟机操作系统是指运行在虚拟机上的操作系统。本节主要讲述如何安装虚拟机的操作系统,这里列出了4中常见的方式。

  · 物理CD/DVD驱动器——配置虚拟机使用物理服务器的硬件CD/DVD驱动器,读取驱动器中的光盘文件进行操作系统安装。

  · 挂载 ISO映像文件——为虚拟机挂载映像文件,通常映像文件格式为.iso。

  · VHD 模板盘——可利用windows自带封装工具sysprep.exe将已安装操作系统的虚拟机磁盘VHDX 制作成为一块模板盘,拷贝模板盘并重命名作为新虚拟机的挂载磁盘。

  · 虚拟机模板——利用SCVMM 工具制作整个虚拟机的模板,包含硬件配置。

  2-3-2 虚拟网络交换机

  本节讲述Hyper-V中的三种网络类型以及每种类型的虚拟网络交换机的具体功能。

  · External虚拟交换机——External虚拟交换机就是将当前Hyper-V服务器里面的物理网卡配置成为一块虚拟的网卡,当虚拟机加载这块External的网卡的时候它就能够和当前的网络环境进行通讯。

  · Internal 虚拟交换机——Internal虚拟交换机就是在当前Hyper-V服务器中创建一块虚拟的网络连接,这样能够让虚拟机和Hyper-V主机进行通讯。但是这样的通讯不会广播到Hyper-V主机以外的网络,包括当前的网络环境。

  · Private 虚拟交换机——Private虚拟交换机就是为了让虚拟机之间进行通讯,他们之间的通讯不会扩散到Hyper-V主机上面,也就是说和当前的环境是完全隔离的。

  第三章 Hyper-V 高级功能

  本章主要讲述四个常见的Hyper-V高级功能:自动操作、快照、复制以及实时迁移,并从实际案例角度对复制及实时迁移进行详细叙述。

  3-1 Hyper-V 自动操作

  本节讲述Hyper-V的自动操作功能并举例说明各个自动操作的具体用途。Hyper-V自动操作包含自动启动操作、自动停止操作。

  v 自动启动操作

  自动启动操作是指当Hyper-V主机启动时,希望对虚拟机做什么操作

  v 自动停止操作

  自动停止操作是指当Hyper-V主机关闭时,希望对虚拟机做什么操作

  自动启动操作和自动停止操作都是Hyper-V服务对虚拟机操作系统执行的操作,其依赖于Hyper-V集成服务。如果虚拟机操作系统不兼容Hyper-V集成服务或者未安装Hyper-V集成服务,都会导致自动操作失败。

   另外,自动启动操作中还涉及一项比较实用的设置:自动启动延时。下面以场景具体说明自动启动延时的用途:

  场景

  某企业正在使用一套财务系统,此系统运行在两台Hyper-V虚拟机:一台安装了后端数据库, 一台安装了应用系统。Hyper-V主机因故障意外关机,故障修复后进行如何的操作才能保障财务系统正常开启呢?

  思考

  应先开启哪台虚拟机,应用系统虚拟机还是后端数据库虚拟机?

  提示

  一般情况都是保障后端数据库服务器先启动,应用系统后启动。这个功能可以通过启动延时来实现。

  3-2 Hyper-V 快照

  本节讲述了Hyper-V 快照功能以及对应的恢复操作,方便测试者快速还原系统至某个快照时间点。

  为了完整地记录虚拟机的状态,需要很多不同的信息。尽管可以手动备份所有必需文件和设置,但这个过程极其漫长而且容易出错。Hyper-V快照包含了虚拟机返回到之前某时间点所需的所有信息和数据。这包括:

  · 虚拟机配置设置

  · 虚拟网络设置

  · 附属到虚拟机的所有虚拟硬盘的当前状态

  · 虚拟机已保存的状态信息

  虚拟机一旦创建完毕即可创建快照。通常快照创建过程只需几秒钟,而且虚拟机不需暂停、停止或关闭。快照是由Hyper-V创建、执行的,它完全独立于运行在子分区的子操作系统的类型和性能。快照相关文件会自动储存到Hyper-V服务器设置的默认路径下。

  在Hyper-V管理控制台可以轻松地创建快照,只需右击虚拟机,选择“创建快照”即可。任何时刻都可以创建快照,它会自动嵌入该虚拟机的即时状态浏览树结构中。在快照属性中可以查看快照的详细信息。

  通过点击快照-应用,虚拟机会根据不同时间点创建的快照点还原到快照时间点状态。

  3-3 Hyper-V 复制

  Hyper-V复制的最终目的是灾难恢复。灾难恢复不同于普通故障转移或者其他高可用实例。一般高可用的目的是消除单点故障,后续章节会介绍一种高可用实例——Hyper-V群集,在高可用实例下,即使一台Hyper-V主机损坏,其实例中的任何虚拟机也不会受影响。

  从存储资源高可用角度,可以使用本地存储 RAID/存储池功能实现存储高可用;从网络资源高可用角度,可以建立多条网络连接消除单点故障从而实现网络高可用。总而言之,为保障Hyper-V高可用,各环节都会有相应的对应高可用方案。

  然而如果整个数据中心由于不可抗力因素如天灾导致损坏,那以上所有的高可用实例都将付之一炬,无法为业务提供可持续访问,为此Hyper-V复制功能应运而生。

  3-3-1 基本原理

  将虚拟机副本复制到另一个数据中心,副本可以提供服务并且业务中断时间非常短。Hyper-V 复制功能提供远程灾难恢复方案。下面以具体案例来具体说明Hyper-V复制是如何工作的:

  案例

  某企业的重要业务运行在北京和上海两个数据中心,其中活动的虚拟机存放在北京数据中心,相应副本虚拟机存放在上海数据中心。

  北京数据中心的活动虚拟机运行时不断写入数据,数据变更会通过网络同步到上海数据中心对应的虚拟机副本。正常情况下,北京数据中心的虚拟机处于启动状态,而上海数据中心的副本虚拟机不会启动。考虑到两地带宽因素,可以设置复制间隔 15分钟,也可以调整其他复制间隔。

  如果此时北京数据中心因地震损坏,那么上海数据中心的虚拟机副本可以启动并继续提供服务。每15分钟复制的数据变更加上初始副本,就组成了一个虚拟机恢复点。可支持恢复点的数量在启动复制功能时可以定义。

  3-3-2 配置过程

  下面配图说明Hyper-V复制配置过程。

  环境描述:主机Hyper-V1 位于数据中心DC1,主机Hyper-V2 位于数据中心 DC2,应用服务器Webserver 位于主机 Hyper-V1。现要在Hyper-V主机开启复制功能使主机Hyper-V2作为复制副本服务器并且在此主机上生成Webserver 副本。

  (1) 使用Hyper-V管理器分别连接Hyper-V1主机和Hyper-V2 主机。在Hyper-V2 主机的Hyper-V设置中,添加允许Hyper-V1 进行复制。

  <图3-1 Hyper-V 复制配置>

  (2)添加Hyper-V2防火墙策略允许基于端口 80的进站流量。

  <图3-2 Hyper-V 复制 - 防火墙配置>

  <图3-3 Hyper-V 复制 - 防火墙配置>

  此时Hyper-V2 已经成为Hyper-V1的副本服务器。

  (3)在Webserver 上点击复制,选择副本服务器,选择Hyper-V2,下一步

  <图3-4 Hyper-V 复制配置>

  注:“压缩通过网络传输的数据”可以将数据压缩后传递节省传输时间,但压缩过程消耗Hyper-V 服务器资源,一般情况下可以勾选。

  (4) 选择复制的VHD 文件

  <图3-5 Hyper-V 复制配置>

  (5)恢复点,同步的数据变更和初始副本合并组成一个恢复点。建议选择存储更多恢复点。

  <图3-6 Hyper-V 复制配置>

  (6) 设置初始复制方式:可通过网络发送或者导出的方式。如导出虚拟机 然后刻成光盘,邮寄到数据中心DC2,再进行导入操作。其他的数据变更可以通过网络传输。

  <图3-7 Hyper-V 复制配置>

  (7)查看复制信息

  <图3-8 Hyper-V 复制配置>

  <图3-9 Hyper-V 复制配置>

  (8)测试及故障转移

  测试——测试功能会在副本服务器Hyper-V2上额外生成一台新的测试虚拟机,如果测试虚拟机功能正常说明复制操作是正常工作的。此时测试虚拟机不会接受任何数据变更也不会有网络连接。完成测试后此测试虚拟机会被删除。

  故障转移——选择主服务器Hyper-V1—计划的故障转移—将角色转移到Hyper-V2,此时Hyper-V2作为主服务器。适用于数据中心停电维护的情况。

  计划的故障转移——设置反向复制使位于数据中心DC1中的 Hyper-V1变成副本服务器,位于DC2中的 Hyper-V2 变成主服务器。(具体设置方法参考部署步骤1和步骤2)

  <图3-10 Hyper-V 复制配置>

  3-4 Hyper-V 实时迁移

   本节讲述了Hyper-V 实时迁移功能,其可以帮助管理员在保障业务不中断的情况下完成对主机的维护工作。下面场景介绍了实时迁移的具体用途:

  场景

  某企业有Hyper-V1和Hyper-V2 两主机,每台主机都各自运行相应的虚拟机。每月需要对所有的Hyper-V 服务器更新补丁,更新过程需重新启动计算机。但是在重启Hyper-V主机之前需对其上运行的虚拟机做相应处理,比如关闭虚拟机 ,主机恢复后开启虚拟机。这样就会造成业务中断从而影响SLA,这让该企业无法接受这种情形。

  针对以上场景提到的问题,实时迁移提供完美的解决方案。该企业可以在Hyper-V1 启动之前,将其上运行的虚拟机实时迁移到Hyper-V2上,在Hyper-V1启动后再实时回迁到Hyper-V1上,整个过程虚拟机一直都是运行状态。

  3-4-1发展历史

  伴随Hyper-V 发展历史,2008 Hyper-V1.0 实现计算资源、存储资源的迁移。但只能实现快速迁移,虚拟机会有停顿,没有办法实现企业中7*24的支持。而且需要配置群集功能,使用虚拟机管理支持。

  2008R2 Hyper-V 2.0 实现了实时迁移功能, 实现不断线在不同主机间移动。但需要配置群集功能,使用虚拟机管理支持。

  2012 Hyper-V 3.0 实现不需要群集或者虚拟机管理就可以进行迁移,使Hyper-V 配置入门更加简单。

  3-4-2 实时迁移配置

  下面将配图说明如何配置实时迁移并进行测试。

  (1)首先勾选虚拟机处理器配置 “处理器兼容性”, 确保不同平台兼容性。两台主机的虚拟交换机名称需要相同。

  <图3-11 Hyper-V 实时迁移配置>

  (2)启用传入、传出实时迁移。配置Hyper-V 主机网络连接,身份验证协议,CredSSP/Kerberos。一般Hyper-V 主机都加入域,所以用Kerberos传入实时迁移。在另外一个Hyper-V主机– Hyper-V 设置, 勾选Kerberos 认证。进入域控DC-计算机-添加委派:两台Hyper-V 计算机账号-委派-“仅信任此计算机来指定的委派“,对主机1添加主机2 CIFS 服务和Microsoft Virtual system migration服务,对主机2添加主机1 CIFS 服务和Microsoft Virtual system migration服务。

  <图3-12 Hyper-V实时迁移配置>

  (3)移动选项:建议选择“将虚拟机的数据移动到一个位置”。点击下一步会跳转到图3-13,正在执行移动。此时观察虚拟机状态会发现虚拟机并没有中断。虚拟机迁移速度取决于网络质量,而存储迁移由于是在本地不同位置迁移,相对会更加快速,二者都不会造成虚拟机中断。

  <图3-13 Hyper-V实时迁移配置>

  第四章 构建Hyper-V 群集

  本章讲述Hyper-V群集的应用场景、如何安装部署Hyper-V群集并配以图片说明。最终讲述了Windows操作系统自带的ISCSI功能以创建共享盘为群集服务。

  4-1 Hyper-V 群集部署场景及先决条件

  本节讲述了Hyper-V群集的应用场景及部署Hyper-V群集的先决条件。下面的场景介绍了Hyper-V群集的用途:

  场景

  某企业有两台Hyper-V 主机 Hyper-V1 和 Hyper-V2。 虚拟机1 位于主机 Hyper-V1上。为避免Hyper-V1主机宕机导致虚拟机1中断的情况发生,该企业计划使用Hyper-V2实现高可用实例——Hyper-V群集。

  Hyper-V群集可以将虚拟机1 的计算资源迁移到Hyper-V2。并设计将虚拟机的存储资源放置在共享存储或者网络存储设备,让Hyper-V1和Hyper-V2共同访问。这样即使Hyper-V1损坏,最多损失的是计算资源,Hyper-V2可以接管提供计算资源。

  Hyper-V群集部署需要满足以下两个先决条件:

  · Windows 群集功能

  · 共享存储:SMB/ISCSI/SAN

  下面通过4-2节、4-3节和4-4节配图具体介绍配置过程。

  4-2 Windows 群集介绍及安装部署

  Hyper-V群集的强大功能建立在Windows群集的基础之上,所以在部署Hyper-V群集前必须安装Windows群集。

  (1)安装群集功能(Hyper-V1和Hyper-V2都需安装)

  <图4-1 Windows群集配置>

  (2)创建群集

  <图4-2 Windows群集配置>

  (3)打开群集管理器页面。首先验证环境,添加Hyper-V1、Hyper-V2进行验证测试

  <图4-3 Windows群集配置>

  <图4-4 Windows群集配置>

  (4)只有验证通过后才能够创建群集。会生成测试报告。有任何问题会告诉我们哪个环节出现问题。指定群集名称

  <图4-5 Windows群集配置>

  (5)创建完成

  <图4-6 Windows群集配置>

  (6)转换存储磁盘到群集共享卷。从Windows Server 2008r2开始,可以支持群集共享卷,可以同时将多个虚拟机放到一个共享卷中,每个虚拟机都需要添加共享卷。

  <图4-7 Windows群集配置>

  4-3 Hyper-V 群集介绍及安装部署

  上一节已经完成了Windows群集的安装,接下来本节讲述如何创建Hyper-V 群集

  (1)打开群集管理工具

  <图4-8 Hyper-V 群集配置>

  (2)必须选择虚拟机存储位置为群集共享卷

  <图4-9 Hyper-V 群集配置>

  (3)分配内存,指定网络,虚拟磁盘的大小,点击完成会显示“成功为此角色配置了高可用性”

  <图4-10 Hyper-V 群集配置>

  <图4-11 Hyper-V 群集配置>

  4-4 ISCSI 目标和发起程序

  本节主要介绍如何利用微软操作系统自带工具ISCSI 部署共享磁盘,主要辅助群集部署。

  4-4-1 ISCSI 目标

  (1)添加ISCSI 目标服务“ISCSI Target Server”

  <图4-12 iSCSI配置>

  (2)发布虚拟磁盘:数据盘、仲裁盘大小建议设置1GB

  <图4-13 iSCSI配置>

  <图4-14 iSCSI配置>

  <图4-15 iSCSI配置>

  (3)添加两台Hyper-V 服务器到访问列表,使其能够访问ISCSI 发布的虚拟磁盘。使用相同步骤创建其他磁盘。

  <图4-16 iSCSI配置>

  4-4-2 ISCSI 发起程序

  (1)在主机 Hyper-V1和Hyper-V2 打开ISCSI发起程序

  <图4-17 iSCSI配置>

  (2)点击目标右侧的“快速链接”

  <图4-18 iSCSI配置>

  (3)选择状态为“已连接”的已发现目标,点击下方连接。

  <图4-19 iSCSI配置>

  (4)此时共享磁盘已经挂载到本地,但处于脱机状态

  <图4-20 iSCSI配置>

  (5)将磁盘初始化并格式化,分配驱动器号

  <图4-21 iSCSI配置>

  (6)在另外一个Hyper-V 上做相同操作,无需初始化。因为已经在第一台Hyper-V 完成初始化,只需要分配卷标。如图4-22,共享盘图标和本地磁盘一致,但其实是网络存储。

  <图4-22 iSCSI配置>

  <图4-23 iSCSI配置>

  4-4-3 多路径I/O配置

  本节主要讲述多路径I/O的具体安装过程。如果根据上面的部署过程部署的共享盘只有一块网卡,如果网卡失败会造成当前连接中断,所以需要添加多路径。可以使用Windows服务器操作系统配备的多路径I/O 实现这一功能。下面各个步骤讲述如何安装及配置多路径I/O。

  (1)安装多路径I/O功能“Multipath I/O”,另外一个Hyper-V 服务器也要安装。

  <图4-24 iSCSI配置>

  (2)添加ISCSI 支持, 第一次添加需要重启计算机,Hyper-V1和Hyper-V2 都要重启。

  <图4-25 iSCSI配置>

  (3)ISCSI 配置多路径I/O 添加两条链路,即Hyper-V 访问存储通道

  <图4-26 iSCSI配置>

  <图4-27 iSCSI配置>

  <图4-28 iSCSI配置>

  <图4-29 iSCSI配置>

  (4)同样的方式添加另外一条链路

  (5)断开原有链路

  <图4-30 iSCSI配置>

  (6)下图可以看到两条链路添加成功,至此多路径I/O配置完成。在另外一台Hyper-V 服务器做同样的操作。

  <图4-31 iSCSI配置>

  4-5 群集故障转移

  根据上面3节的部署内容,Hyper-V群集功能已经部署完成。接下来我们要进行故障转移测试其功能,能否满足自动故障转移或者手动故障转移。

  (1)打开群集管理工具选择虚拟机,右侧工具-移动-快速迁移, 虚拟机会有短暂停机

  <图4-32 群集故障转移测试>

  (2)自动故障转移测试:关机Hyper-V2, 发现虚拟机已经自动转移到节点Hyper-V1即Server1服务器上。

  <图4-33 群集故障转移测试>

  第五章 Hyper-V 管理工具

  本章讲述了两个常见的Hyper-V管理工具Hyper-V 管理器和SCVMM。对于SCVMM,从安装部署及使用两方面进行详细叙述。

  5-1 Hyper-V 管理器的使用

  Hyper-V 管理器集成在Windows Server 操作系统中,提供虚拟机创建、管理的服务。在安装Hyper-V功能之后,系统自动安装可视化的虚拟机管理工具:Hyper-V管理器。

  在同一台物理机上,能够使用Hyper-V创建多个虚拟机。每一个虚拟机运行单独的系统环境。Hyper-V为管理虚拟机提供全面的灵活性,用户可以根据需要,在一台物理机上创建多个虚拟机,每个虚拟机安装不同的操作系统(windows或Linux),运行不同的应用程序。

  但是,虚拟机是以牺牲性能为代价的,I/O和CPU的性能都会下降。可以使用Hyper-V 管理器连接到本地Hyper-V 主机或者远程主机(配置管理权限),从而更加便利创建、管理虚拟机。

  5-2 SCVMM的安装及使用

  相对于Hyper-V 管理器, SCVMM (Microsoft System Center Virtual Machine Manager)是一款独立的产品,试用版的VMM于安装后180天过期。用于管理Hyper-V 主机和虚拟机,并且支持其他虚拟化平台的虚拟机迁移,比如VMWARE VCENTER/ESXI,支持Cloud 功能。

  5-2-1部署SCVMM

  本节讲述部署SCVMM的先决条件和部署SCVMM的具体步骤。安装SCVMM的先决条件如下:SQL Server 实例 、Windows Assessment and Deployment Kit (ADK) for Windows 8.1

  部署步骤如下:

  (1)安装SCVMM2012

  <图5-1 SCVMM 部署>

  (2)点击安装之后,选择要安装的功能,在此选择:“VMM管理服务器”,同时默认选择“VMM控制台”

  <图5-2 SCVMM 部署>

  (3)接下来,注册产品信息,如果不提供注册序号,则为试用版

  <图5-3 SCVMM 部署>

  (4)接下来对安装的必备项进行检查,是否满足安装要求

  <图5-4 SCVMM 部署>

  (5)接下来是对数据库进行配置,指定服务器名称、选择实例名即可

  <图5-5 SCVMM 部署>

  (6)接下来配置服务账户和已分发密钥管理,服务帐户就使用AD域环境中创建的用户,已分发密钥管理默认

  <图5-6 SCVMM 部署>

  5-2-2 SCVMM 功能使用

  可以使用 Microsoft System Center Virtual Machine Manager 2012 (SCVMM) 管理员控制台中的添加主机向导向 VMM 中添加下面的一种或多种虚拟主机:

  · 位于 Active Directory 域服务 (AD DS) 域中的基于 Windows Server 的主机

  · 位于外围网络中的基于 Windows Server 的主机

  · 位于环境内任意位置的 VMware ESX Server 主机

  · AD DS 域中的基于 Windows Server 的主机

  · VMware ESX Server 主机

  · Citrix Xenserver 主机

  下面介绍添加AD域环境中的Hyper-V主机进行管理。在加入SCVMM之前,要对Hyper-V进行相关的设置,加域,固定IP地址,打开远程控制等等

  (1)首先连接SCVMM主控制台

  <图5-7 SCVMM 管理>

  (2)右键点击-所有主机-添加Hyper-V主机和群集。SCVMM2012支持Hyper-V、ESXi、Xenserver主机。

  <图5-8 SCVMM 管理>

  (3)选择受信任的域中的Hyper-V主机,也可加入不同域,不同网络的Hyper-V主机。

  <图5-9 SCVMM 部署>

  (4)输入域用户和密码

  <图5-10 SCVMM 管理>

  (5)输入主机的用户名,或者通过域来扫描主机。

  <图5-11 SCVMM 管理>

  (6)通过输入或者扫描主机的形式,发现有2台虚拟主机,将主机选中并点击下一步。

  <图5-12 SCVMM 管理>

  (7)为主机指定主机组和虚拟机放置路径设置

  (8)添加虚拟机摘要。点击完成,确认添加主机。

  <图5-13 SCVMM 管理>

  (9)作业里,正在添加虚拟机主机

  因为没有挂载ISCSI存储,也没有启动存储多路径,所以这里弹出警告,不影响主机添加。

  查看主机的功能命令,首先要在虚拟主机中新建虚拟机。

  <图5-14 SCVMM 管理>

  (10)可以选择模版和创建新的虚拟机。

  <图5-15 SCVMM 管理>

  (11)输入虚拟机的名称

  <图5-16 SCVMM 管理>

  (12)设置虚拟机的各种设置。可以看到虚拟CPU最大支持16个

  <图5-17 SCVMM 管理>

  (13)支持动态内存

  <图5-18 SCVMM 管理>

  (14)可以设置高可用性,前提是Hyper-V必须建立群集,并且挂载统一存储。

  <图5-19 SCVMM 管理>

  (15)可将虚拟机放在主机,或转成模版放到库中,或者由SCVMM2012自动分配主机的云中(前提要先建立云)以完成虚拟机创建。

  <图5-20 SCVMM 管理>

  第六章 Hyper-V 实用脚本分享

  本章从运维自动化角度,带来三个关于Hyper-V管理的功能脚本,仅供参考。

  6-1 定期生成Hyper-V 资源使用报告

  日常运维管理中,当环境中有成百上千台Hyper-V主机,我们需要了解其资源使用情况。如果一台一台登录,打开资源管理器进行查看这样的重复操作太浪费人力物力,况且资源使用数据是一个动态变化的数值,即使手动收集完成所有数据,这些数据的准确性也受到质疑。如果利用脚本帮助工程师定期收集这些数据则使这项任务变得简单高效。下面利用Windows平台的PowerShell工具和任务计划功能讲述这一过程如何实现。

  6-1-1工具介绍

  工具介绍:PowerShell、 Windows Server 任务计划功能

  借助PowerShell 平台连接SCVMM数据库获取关于Hyper-V 主机及虚拟机的资源使用数据,然后进行简单处理,表格化输出报告。

  如果实现定期获取此报告,可以借助Windows Server 任务计划功能定制。

  6-1-2 PowerShell脚本

  下面贴出部分PowerShell 脚本,并配以功能描述。

  //SCVMM 数据库连接功能:

  Function Get-HVHostResource() \定义一个函数

  {

  $database = '*****' \输入SQL 数据库名称

  $servername = '*****' \输入SQL Server名称

  $SqlConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection

  $SqlConnection.ConnectionString = "Data Source=$servername;Initial Catalog=$database;integrated Security=SSPI;"

  $SqlCommand = New-Object System.Data.SqlClient.SqlCommand

  $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter

  $SqlCommand.Connection = $SqlConnection

  $SqlCommand.CommandText = "SELECT TOP 1000 [HostID]

  ,upper([ComputerName]) as ComputerName

  ,[HostGroupID]

  ,[LogicalProcessorCount]

  ,[PhysicalProcessorCount]

  ,[CoresPerProcessor]

  ,[TotalMemory]/1024/1024/1024 as TotalMem

  ,[AvailableMemory]/1024 as AvailMem

  ,[CpuUtilization]

  FROM [****DB].[dbo].[tbl_ADHC_Host]

  WHERE HostGroupID = '*******' \ 输入Host Group ID

  ORDER by ComputerName"

  $SqlAdapter.SelectCommand = $SqlCommand

  $DataSet = New-Object System.Data.DataSet

  $SqlAdapter.Fill($DataSet)

  $SqlConnection.Close()

  Return ($DataSet.Tables[0].Rows)

  }

  //数据表格化处理部分:

  $process =

  {

  $Hostname = $_.column1

  $Ldisk = $_.Mountpoint

  $TolSpace=$_.tolspace

  $freespace=$_.freespace

  $rate=$_.availrate

  $rate0=$_.availrate0

  if ($rate0 -ge 50)

  {

  ''

  '{0}' -f $Hostname

  '{0}' -f $Ldisk

  '{0}' -f $TolSpace

  '{0}' -f $freespace

  '{0}' -f $rate

  ''

  }

  else

  {

  ''

  '{0}' -f $Hostname

  '{0}' -f $Ldisk

  '{0}' -f $TolSpace

  '{0}' -f $freespace

  '{0}' -f $rate

  ''

  }

  }

  $beginning = {

  @'

  

  

   Report

  

  

  

Hyper-V Host Resource Report - Disk

  

  

  '@

  }

  $end = {

  @'

  

Hostname Logical Disk Total Space(GB) Free Space(GB) Availability Rate

  

  

  '@

  [string]$body = $out | ForEach-Object -Begin $beginning -Process $process -End $end

  6-1-3任务计划

  下面讲述如何使用Windows 任务计划功能定制自动触发脚本运行。

  (1)打开Windows系统自带任务计划功能,利用向导创建任务

  <图6-1 任务计划管理>

  (2)点击动作选项,利用脚本或者程序创建动作。

  <图6-2 任务计划管理>

  (3)点击触发器,创建对应的时间点或者重复设置,使任务在指定的时间点自动运行

  <图6-3 任务计划管理>

  6-2 如何批量创建虚拟机

  前面我们讲到使用向导创建虚拟机,如果遇到大批量部署虚拟机的任务时,使用向导部署变得不切实际,所以同样可以借助PowerShell脚本批量创建虚拟机。

  使用PowerShell 及 VHD 模板批量创建虚拟机。应先创建一台虚拟机,安装操作系统后使用系统工具sysprep 封装关机,然后将虚拟机的虚拟磁盘拷贝到另外的路径作为VHD模板。

  部分脚本:

  $VMs = Import-Csv $FilePath -Header H1, H2, H3, H4, H5, H6, H7

  [int]$VMsCount = $VMs.Count

  for ($i=1;$i -lt $VMsCount;$i++)

  {

  $VMType = $VMs[$i].H7

  $VM = $VMs[$i].H1

  $Host = $VMs[$i].H6

  $RAM = [long]$VMs[$i].H4*1073741824

  #$RAM = $MEM*1073741824

  $Cpu = $VMs[$i].H5

  switch ($VMType)

  {

  Standard

  { $OSDrive = "$location\$VM.vhdx"

  Write-Host "Information :$VM is a Standard VM." -ForegroundColor Green

  $ImageName = "\\$Host\e$\ProgramData\Microsoft\Windows\Hyper-V\$StandardVHD"

  $ImageNameVDH = "\\$Host\e$\ProgramData\Microsoft\Windows\Hyper-V\$VM.vhdx"

  Testimage /* A standalone function to check the VHD template exists.

  New-VM -Name $VM -MemoryStartupBytes $RAM -Generation 2 -VHDPath "E:\ProgramData\Microsoft\Windows\Hyper-V\$VM.vhdx" -BootDevice VHD -ComputerName $Host -SwitchName HV-SWITCH

  SET-VMProcessor VMName $VM Count $Cpu Computername $Host -ErrorAction SilentlyContinue

  Get-VM -ComputerName $Host -Name $VM | start-vm -ErrorAction SilentlyContinue

  }

  }

  6-3 如何批量配置虚拟机

  上节讲述了如何批量部署虚拟机,当虚拟机部署完成后,我们需要对虚拟机进行简单配置,如配置网络地址、磁盘管理、设置远程连接等,同样可以借助PowerShell脚本实现批量配置。

  使用PowerShell 批量配置虚拟机脚本:

  $IP = "IPAddress"

  $Subnet = "SubnetMask"

  $GW = "DefaultGW"

  $DNs1 = "DNSServer1"

  $DNS2 = "DNSServer2"

  $Hostname = "VMServerName"

  Get-NetAdapter | Rename-netadapter -newname ADMIN

  $NICs = Get-WMIObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq TRUE}

  Foreach($NIC in $NICs) {

  $NIC.EnableStatic($IP, $Subnet)

  $NIC.SetGateways($GW)

  $DNSServers = $DNs1,$DNS2

  $NIC.SetDNSServerSearchOrder($DNSServers)

  }

  Initialize-Disk -Number 1

  Set-Partition -DriveLetter F -NewDriveLetter R

  Set-Partition -DriveLetter E -NewDriveLetter M

  Set-Partition -DriveLetter D -NewDriveLetter E

  netsh firewall set icmpsetting 8 enable

  set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name "fDenyTSConnections" -Value 0

  Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

  set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "UserAuthentication" -Value 1

  Rename-Computer $Hostname -Restart

第 1 /  10 页
点击查看余下全文