使用PowerShell管理Hyper-v

Windows Server 2012 Hyper-V功能非常强大,大家不但可以使用GUI图形界面外管理,也可以使用Windows PowerShell的方式管理,Windows Server 2012 R2所有的功能都可以使用Powershell,所以无论是在Windows Server 2012 R2 GUI还是Server Core亦或者是微软单独的服务器虚拟化产品Hypervisio,Powershell都显得非常重要。但是,大部分的人都喜欢使用图形界面来进行操作,其实当你深入使用Powershell,你就会了解到其实Hyper-V有很多功能是GUI图形界面无法使用的,但是在Powershell的环境下可以正常使用。所以在上一期博客为大家介绍了GUI的基本管理以后今天要介绍下Powershell的使用。

Windows PowerShell 是 Windows Server 中自动执行任务的脚本解决方案。Windows PowerShell 新的 Hyper-V CMDlet 是专门为 IT 专业人员设计的,允许他们执行在 Hyper-V Manager 的图形用户界面中可以执行的任务,还有一些任务只有通过 Windows PowerShell 的 CMDlet 才能执行

一、在Windows Powershell使用Get-Command命令显示所有和Hyper-v有关的命令:

使用PowerShell管理Hyper-v_虚拟化

除了使用Windows Powershell以外,我们也可以使用PowerShell 3.0管理Hyper-V。PowerShell ISE是集成在Windows Server中的PowerShell集成开发环境,在Windows Server 8/10中,在运行窗口中输入PowerShell ISE,即可打开PowerShell ISE

使用PowerShell管理Hyper-v_微软_02

二、使用Powershell对Hyper-v进行简单配置

1、通过Powershell ISE远程管理Hyper-V

之前我们已经讲了,想管理Hyper-V主机,但是又不想去机房,那么可以是用Hyper-V管理器进行图形化的远程操作管理Hyper-V服务器,同样我们也可以是用Powershell ISE远程管理Hyper-V服务器,但是,要管理Hyper-V Server 2012及以上版本,必须是使用Windows 8/10或者是Windows Server 2012中的Powershell ISE来进行管理,不能是用低版本的Powershell ISE进行管理。

首先在文件中选择新建远程Powershell选项卡。然后点击连接。

使用PowerShell管理Hyper-v_IT_03

输入密码,点击确定:

使用PowerShell管理Hyper-v_Microsoft Hyper-v Se_04

OK,已经成功连接到Hv-03了:

使用PowerShell管理Hyper-v_Microsoft Hyper-v Se_05

2、 设置Hyper-V虚拟硬盘存储位置

我们知道,Windows 在默认情况下把一切都安装在一个分区里,也就是OS安装在什么地方,其它配置就安装在什么地方,目的是怕新手配置的时候出错,但这样有一个问题,把所有的配置和OS混合安装,大大的影响了系统的性能,所以在规划虚拟服务器的第一步,就是服务的配置存放路径。Windows Server 2012 R2 默认的Hyper-v虚拟硬盘的存放路径为:C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks;但是在本次实验中我的磁盘也分了一个区,所以我就使用PowerShell修改Hyper-V虚拟硬盘存储位置设置到c:\Hyper-V\ Disks,如果没有此文件夹,会自动创建。 ,具体步骤如下:

Powershell修改命令为Set-VMHost -VirtualHardDiskPath "c:\Hyper-V\ Disks "

使用PowerShell管理Hyper-v_微软_06

3、修改虚拟机的存储位置:

在不指定虚拟机存放位置的情况下,Windows Server 2012 R2 默认的虚拟机默认存放路径为:C:\ProgramData\Microsoft\Windows\Hyper-V;使用PowerShell可以修改Hyper-v的虚拟机的存储位置,比如可以将虚拟机存放在C:\Hyper-v\VMM,如果没有此文件夹,系统会默认创建。具体命令如下:

Set-VMHost -VirtualMachinePath "c:\Hyper-v\VMM"

使用PowerShell管理Hyper-v_IT_07

4、NUMA跨越设置:

非统一内存访问(NUMA)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置。在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。如需要打开服务器的NUMA 跨越功能,则在Hyper-V 主机设置“NUMA 跨越”选项中,可以勾选“允许虚拟机跨越物理NUMA 节点”,如下图所示:

使用PowerShell管理Hyper-v_微软_08

允许虚拟机跨越物理NUMA节点的PowerShell命令:“Set-VMHost -NumaSpanningEnabled $true ”

使用PowerShell管理Hyper-v_Microsoft Hyper-v Se_09

允许虚拟机跨越物理NUMA节点的PowerShell命令:“Set-VMHost -NumaSpanningEnabled $false”

使用PowerShell管理Hyper-v_微软_10

5、实时迁移:

Windows Server 2008 R2 引入了实时迁移,可以将运行中的虚拟机从一台物理计算机迁移到另一台,中间不需要停机,也不会有服务中断。但是,这个功能要求虚拟机的虚拟硬盘在共享存储设备上保持一致,例如在光纤通道或 iSCSIS AN上。从Windows Server 2012 开始,实时迁移不再限于群集,虚拟机可以跨越群集界限进行迁移,包括迁移到环境内的任意Hyper-V主服务器上。Hyper-V在这个功能之上增加了对并行实时迁移的支持,因此可以同时迁移多台虚拟机。与网络虚拟化结合,这个功能甚至支持在本地主机和云主机之间轻松地迁移虚拟机。

Hyper-V 实时迁移支持将运行中的虚拟机从一台物理主机迁移到另一台,对虚拟用户来说,中间对虚拟机的可用性没有影响。Windows Server 2012 开始 Hyper-V 引入了更快的并发实时迁移,可以在群集环境内外进行迁移。除了在最基本的部署中提供实时迁移外,这个功能还支持更高级的场景,例如在多个独立的群集之间进行虚拟机的实时迁移,以便在整个数据库内平衡负载。

使用PowerShell管理Hyper-v_Microsoft Hyper-v Se_11

实时迁移的设置如果使用PowerShell就比较复杂,也需要相关的知识。需要迁移的主机必须具有相同的域或者相同的信任网络,而且委派的账户都是管理员组的成员,而且需要特定的网络设计,所以在这里我首先先介绍下设置的命令,在后面的博客中,会有专门的一章节专门讲虚拟机的动态迁移。

首先是使用:Enable-VMMigration命令启动传入和传出的实施迁移:

使用PowerShell管理Hyper-v_微软_12

由于没有指定实时迁移的网络,所以会提示要求设置迁移网络。如果关闭实时迁移,则需要执行Disable-VMMigration。开启实施转移后,通过命令Get-VMHost来检测实时迁移的状态。

使用PowerShell管理Hyper-v_windows_13

之后设置实时迁移的认证协议,有2种认证协议,一种是CredSSP,另一种是Kerberos。CredSSP 是一个新安全支持提供程序 (SSP),通过使用安全支持提供程序接口 (SSPI) 。而Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

使用PowerShell管理Hyper-v_虚拟化_14

接下来就是设置并行实施迁移数量

使用PowerShell管理Hyper-v_微软_15

传入的实时迁移,如果是使用任何网络来进行实时迁移则输入

使用PowerShell管理Hyper-v_虚拟化_16

如果是指定IP地址来进行实施迁移,则后面带着IP地址就行

使用PowerShell管理Hyper-v_微软_17

6、存储迁移就是将虚拟机的文件转移到其它地方,而在转移过程中,虚拟机一直保持运作,不停机,而这里设置的是存储的并发转移数目。

使用Powershell设置存储迁移的数目,这里设置的并发数是10,使用命令:“Set-VMHost -MaximumStorageMigrations 10”

使用PowerShell管理Hyper-v_Microsoft Hyper-v Se_18

OK、上述的这些就是使用PowerShell管理Hyper-v的一些基本命令!如果大家感兴趣可以去微软的网站上下载Hyper-v PowerShell相关的资料。