首页 > 代码库 > 使用Hyper-V Server PowerShell

使用Hyper-V Server PowerShell

既上篇主要介绍了使用不同的方法对Hyper-V Server进行简单初始配置后,本篇主要演示通过内置的PowerShell对Hyper-V Server进行简单管理。

Windows PowerShell 是 Windows Server 中自动执行任务的脚本解决方案。但在 Windows Server 以前的版本中,使用自带工具为 Hyper-V 编写脚本,必须学习 WMI,WMI 提供了一套为开发人员设计的非常灵活的接口集合。参与虚拟化工作的 IT 专业人员需要有其他方式,既不需要学习开发人员的技能,又能方便地自动执行大量的管理任务。

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

Hyper-V CMDlet 让 IT 专业人员更容易站在实际要执行的任务角度去思考任务。下面显示了有关任务及相关的 CMDlet 语法。

任务

执行任务的PowerShell命令

创建名为“BJ-AP-01”的新虚拟机

New-VM –Name BJ-AP-01

得到全部虚拟机列表

Get-VM

创建新的虚拟硬盘d:\VHDs\BJ-AP-01.vhd

New-VHD –Path D:\VHDs\BJ-AP-01.vhd

启动名称以“BJ”开始的全部虚拟机

Start-VM –Name BJ*

将“BJ-AP-01”虚拟机上的虚拟网络适配器连到“LAB”交换机

Connect-VMNetworkAdapter –VMName BJ-AP-01 –SwitchName LAB

要使用新的 Hyper-V CMDlet,有以下要求:

1) Windows Server 2012/R2

2) 服务器CPU必须支持硬件虚拟化

3) Hyper-V角色

4) 具有管理Hyper-V服务器的有效权限

但是,要管理Hyper-V Server 2012 R2,必须使用Windows 8.1 或者Windows Server 2012 R2中的PowerShell ISE,不能使用低版本的PowerShell ISE 进行管理。这里主要通过使用PowerShell ISE 进行远程管理Hyper-V Server 2012 R2。

这里简单介绍几个常用的Hyper-V PowerShell

1. 首先在PowerShell 中输入“ PowerShell ISE”,或者在“运行”中输入“ PowerShell ISE”,之后就会打开PowerShell ISE。然后在文件中选择新建远程PowerShell 选项卡,此时会弹出一个对话框,在该对话框中单击“连接”按钮,如图所示。

clip_image001

clip_image003

clip_image004

单击连接之后键入有效的账户密码将会连接到服务器“BJ-HC-01”,

clip_image006

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

默认情况下所有和Hyper-V相关的配置文件全部会存储到

“C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks\”。所以通常需要修改Hyper-V相关的配置文件到其他路径或者存储服务器上,使用PowerShell 可以修改Hyper-V 虚拟硬盘存储位置,使用如下路径可以对其进行修改:

Set-VMHost -VirtualHardDiskPath "c:\Hyper-V\VHD "

clip_image008

3. 设置Hyper-V Server虚拟机存储位置

在不指定虚拟机的存放文件夹的情况下,虚拟硬盘会放到默认的位置上

“C:\ProgramData\Microsoft\Windows\Hyper-V\”,使用PowerShell 可以修改Hyper-V 虚拟硬盘存储位置, 比如可以将此位置设置到C:\Hyper-V\VM,如果没有此文件夹,系统会自动创建。

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

clip_image010

4. 设置NUMA跨越

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

clip_image012

通过PowerShell 命令来设置允许虚拟机跨越物理NUMA 节点的命令如下:

Set-VMHost -NumaSpanningEnabled $true

clip_image014

通过PowerShell 命令来设置关闭虚拟机跨越物理NUMA 节点的命令如下:

Set-VMHost -NumaSpanningEnabled $false

clip_image016

5. 设置实时迁移

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

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

clip_image018

使用PowerShell 进行实时迁移的设置时,需要迁移的主机必须具有相同的域或者相同的信任网络,委派的账户必须都是管理员组的成员,而且需要特定的网络设计。这里只是简单介绍如何使用PowerShell简单开启这个功能,关于Hyper-V实时迁移,将有独立篇幅介绍。

使用命令Enable-VMMigration 启动传入和传出的实时迁移。将会提示“无法将虚拟机的实时迁移发送到目标主机,因为没有为传入的实时迁移指定迁移网络”

clip_image020

Hyper-V服务器传入的实时迁移的网络支持:

使用任何可用的网络进行实时迁移

Set-VMHost -UseAnyNetworkForMigration $true

clip_image022

指定这些IP地址进行实时迁移

Set-VMHost -UseAnyNetworkForMigration 192.168.100.0/24

clip_image024

默认情况下,可同时并行实时迁移虚拟机数量为2,但是通常可能大批量进行实时迁移。通过如下命令设置并行实施迁移数量

Set-VMHost -MaximumVirtualMachineMigrations 20

clip_image026

存储迁移就是将虚拟机的文件转移到其他地方,而在转移过程中,虚拟机一直保持运作,不停机。Hyper-V服务器中队存储迁移需要进行设置的只有并行存储迁移数量。通过如下命令设置并行实施存储迁移数量

Set-VMHost -MaximumStorageMigrations 10

clip_image028

本文出自 “徐庭的博客” 博客,请务必保留此出处http://ericxuting.blog.51cto.com/8995534/1584793

使用Hyper-V Server PowerShell