首页 > 代码库 > 使用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 选项卡,此时会弹出一个对话框,在该对话框中单击“连接”按钮,如图所示。
单击连接之后键入有效的账户密码将会连接到服务器“BJ-HC-01”,
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 "
3. 设置Hyper-V Server虚拟机存储位置
在不指定虚拟机的存放文件夹的情况下,虚拟硬盘会放到默认的位置上
“C:\ProgramData\Microsoft\Windows\Hyper-V\”,使用PowerShell 可以修改Hyper-V 虚拟硬盘存储位置, 比如可以将此位置设置到C:\Hyper-V\VM,如果没有此文件夹,系统会自动创建。
Set-VMHost -VirtualMachinePath "c:\Hyper-v\VM"
4. 设置NUMA跨越
非统一内存访问(NUMA)是一种用于多处理器的计算机记忆体设计,内存访问时间取决于处理器访问内存的位置。在NUMA 下,处理器访问自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些,如果需要打开服务器的NUMA 跨越功能,则在Hyper-V 主机设置“NUMA 跨越”选项中,可以勾选“允许虚拟机跨越物理NUMA 节点”。
通过PowerShell 命令来设置允许虚拟机跨越物理NUMA 节点的命令如下:
Set-VMHost -NumaSpanningEnabled $true
通过PowerShell 命令来设置关闭虚拟机跨越物理NUMA 节点的命令如下:
Set-VMHost -NumaSpanningEnabled $false
5. 设置实时迁移
为了最优化地使用物理资源,并方便增加新的虚拟机,必须能够在需要的时候随时迁移虚拟机——同时不能中断业务。Windows Server 2008 R2 引入了实时迁移,可以将运行中的虚拟机从一台物理计算机迁移到另一台,中间不需要停机,也不会有服务中断。但是,这个功能要求虚拟机的虚拟硬盘在共享存储设备上保持一致,例如在光纤通道或 iSCSIS AN上。从Windows Server 2012 开始,实时迁移不再限于群集,虚拟机可以跨越群集界限进行迁移,包括迁移到环境内的任意Hyper-V主服务器上。Hyper-V在这个功能之上增加了对并行实时迁移的支持,因此可以同时迁移多台虚拟机。与网络虚拟化结合,这个功能甚至支持在本地主机和云主机之间轻松地迁移虚拟机。
Hyper-V 实时迁移支持将运行中的虚拟机从一台物理主机迁移到另一台,对虚拟用户来说,中间对虚拟机的可用性没有影响。Windows Server 2012 开始 Hyper-V 引入了更快的并发实时迁移,可以在群集环境内外进行迁移。除了在最基本的部署中提供实时迁移外,这个功能还支持更高级的场景,例如在多个独立的群集之间进行虚拟机的实时迁移,以便在整个数据库内平衡负载。
使用PowerShell 进行实时迁移的设置时,需要迁移的主机必须具有相同的域或者相同的信任网络,委派的账户必须都是管理员组的成员,而且需要特定的网络设计。这里只是简单介绍如何使用PowerShell简单开启这个功能,关于Hyper-V实时迁移,将有独立篇幅介绍。
使用命令Enable-VMMigration 启动传入和传出的实时迁移。将会提示“无法将虚拟机的实时迁移发送到目标主机,因为没有为传入的实时迁移指定迁移网络”
Hyper-V服务器传入的实时迁移的网络支持:
使用任何可用的网络进行实时迁移
Set-VMHost -UseAnyNetworkForMigration $true
指定这些IP地址进行实时迁移
Set-VMHost -UseAnyNetworkForMigration 192.168.100.0/24
默认情况下,可同时并行实时迁移虚拟机数量为2,但是通常可能大批量进行实时迁移。通过如下命令设置并行实施迁移数量
Set-VMHost -MaximumVirtualMachineMigrations 20
存储迁移就是将虚拟机的文件转移到其他地方,而在转移过程中,虚拟机一直保持运作,不停机。Hyper-V服务器中队存储迁移需要进行设置的只有并行存储迁移数量。通过如下命令设置并行实施存储迁移数量
Set-VMHost -MaximumStorageMigrations 10
本文出自 “徐庭的博客” 博客,请务必保留此出处http://ericxuting.blog.51cto.com/8995534/1584793
使用Hyper-V Server PowerShell