Hyper-V1:创建和管理虚拟机

Hyper-V是微软的管理虚拟机(Virtual Machine)的服务,在安装Hyper-V功能之后,系统自动安装可视化的虚拟机管理工具:Hyper-V Manager。在同一台物理机上,能够使用Hyper-V创建多个虚拟机(VM),每一个VM执行不同的工作负载(workload),运行单独的系统环境。Hyper-V为管理VM提供全面的灵活性,用户可以根据需要,在一台物理机上创建多个VM,每个VM安装不同的操作系统(Windows或Linux),运行不同的应用程序,但是,虚拟机是以牺牲性能为代价的,IO和CPU的性能都会下降。

You can use virtual machines to run different workloads. Each virtual machine runs in an isolated execution environment, which gives you the flexibility to run different operating systems and applications on one physical computer.

一,安装Hyper-V功能

本文物理机的操作系统环境是Windows Server 2012 R2(Win12 R2),默认情况下,Hyper-V是不会安装的。想要在一台物理机上创建多个VMs,首先安装Hyper-V功能。打开Server Manager->Dashboard窗体,点击”Add Roles and Features“,在Server Roles Tab中,选择Hyper-V安装。计划在VM上安装的Guest OS是Win12 R2。

Hyper-V1:创建和管理虚拟机

二,在Hyper-V中创建虚拟机

在安装Hyper-V之后,系统会自动安装Hyper-V管理器(Hyper-V Manager),默认将本机添加到Server列表中,可以通过菜单”Connect To Srever“将其他Server(已安装Hyper-V Feature)添加到Hyper-V管理器中,通过Hyper-V Manager来创建和管理虚拟机。

1,打开 New Virtual Machine 向导(Wizard)

Hyper-V1:创建和管理虚拟机

2,指定VM的名字和数据存储的位置(Location)

Hyper-V1:创建和管理虚拟机

3,选择VM的版本(Generation)

Hyper-V的版本共有2代:Generation 1 和 Generation2。第一代虚拟机是Hyper-V的前一个版本,第二代虚拟机启动(boot)更快,模拟加载的硬件资源更少,性能更高,但并不是所有的机器都支持第二代VM。 因此,可以无脑选择Generation 2,如果创建第二代VM失败,再选择Generation 1。

Hyper-V1:创建和管理虚拟机

4,为VM分配开机内存

为新建的VM分配开机内存,勾选动态分配内存,VM会动态使用系统内存。

Hyper-V1:创建和管理虚拟机

5,配置网络适配器,从connection列表中选择网络适配器

Hyper-V1:创建和管理虚拟机

6,为VM分配存储数据的磁盘空间

创建虚拟硬盘(Virtual Disk)文件,后缀名是.vhdx,是逻辑盘符中的一个文件,能够动态扩张,用于存储VM的OS和数据文件。

Hyper-V1:创建和管理虚拟机

7,为VM安装操作系统

选项:Install an operating system later,在VM创建完成之后,等到VM启动时再安装OS,本文使用该选项。

其他两个选项都是在创建VM时安装OS,从镜像文件(ISO),或从网络上安装。如果有了Windows Server 2012 R2的镜像文件,可以选择”Install an operating system from a bootable image file“,后缀名是.ISO。

Hyper-V1:创建和管理虚拟机

8,概要,描述VM的配置信息,点击Finish按钮,开始创建VM 

Hyper-V1:创建和管理虚拟机

三,配置VM,安装OS

由于在创建VM时,选择的是”Install an operating system later“,因此,在VM创建成功之后,需要配置VM,安装OS。在Virtual Machines面板中,会罗列出在特定Server上创建的所有VMs,选择需要安装OS的一个VM。

Hyper-V1:创建和管理虚拟机

1,点击Connect,打开VM

Hyper-V1:创建和管理虚拟机

2,点击Start按钮,启动VM

Hyper-V1:创建和管理虚拟机

3,从镜像文件(ISO)安装OS

首先,添加集成服务安装硬盘,点击菜单 Action,选择”Insert Integration Services Setup Disk“,

然后,添加Disk驱动设备,点击菜单 Media,选项DVD Drive,选择”Insert Disk“,选择Windows Server 2012 R2的安装镜像文件(ISO);

最后,关闭VM(shutdown),设置firmware,从DVD Drive引导启动(boot from DVD Drive),设置的过程,参考下文:4,设置固件(Firmware),从固件中引导VM启动(boot)

Hyper-V1:创建和管理虚拟机

重启VM,等待出现以下Dos界面,按下任意键,从CD或DVD引导VM安装OS

Hyper-V1:创建和管理虚拟机

4,设置固件(Firmware),从固件中引导VM启动(boot)

点击VM的Settings,打开VM_Test的设置窗体

Hyper-V1:创建和管理虚拟机

点击Firware,设置VM引导启动的顺序(Boot order),排在第一个Boot Entry,默认的类型是File,从bootmgfw.efi 文件中引导启动;将第一个boot Entry修改为Hard Drive,首先从Disk驱动器中引导VM启动,选中Hard Drive,点Move Up向上移动。

Hyper-V1:创建和管理虚拟机

四,虚拟交换机管理器(Virtual Switch Manager)

在Hyper-V Manager的右侧面板上,点击Virtual Switch Manager,打开虚拟交换机管理器面板,如图

Hyper-V1:创建和管理虚拟机

在Hyper-V中,能够创建三种类型的Virtual Switch:

  • External:将Virtual Switch绑定到物理网络适配器上,这样,VM能够通过访问物理网络和外网通信;
  • Internal:Virtual Switch 不能连接物理网络适配器,只能用于在本地物理机上创建的VM,用于VM和本地物理机的通信;
  • Private:Vitrual Switch 只能用于在本地物理机上创建的VM,使VMs之间能够互相通信;

五,修改VM的设置

1,修改Firmware,上文已说明

2,配置VM使用的内存资源,有四个配置选项:

  • Startup RAM:是VM启动时,分配的内存资源,建议配置
  • Dynamic Memory:VM动态地增加或减少内存使用,需要为VM分配内存资源的范围,建议配置
  • Memory Buffer:在VM使用的内存动态增加或减少时,尝试保留(Reserve)的内存缓冲区,建议使用默认值
  • Memory Weight:争用内存的优先级

Hyper-V1:创建和管理虚拟机

3,处理器配置(Processor)

管理虚拟机的处理器,为VM分配处理器数量

4,SCSI控制器

管理虚拟硬盘驱动器(Virtual Hard Drive),为VM分配虚拟硬盘,收缩或扩展Disk空间

5,网络适配器(Network Adapter)

管理虚拟机的网络适配器,为VM分配Virtual Switch

六,故障排除

1,Hyper-V:Firmware 显示 Load Failed

详细请参考:《Hyper-V: Firmware – Load Failed》,《Hyper-V VM Load Firmware Failed》,使用的Powershell代码是:

(Get-VM "YOURVMNAME" | Get-VMFirmware).BootOrder

Get-VM "YOURVMNAME" |Get-VMFirmware|ForEach {Set-VMFirmware -BootOrder ($_.Bootorder | ? {$_.BootType -ne 'File'}) $_}

参考文档:

Part 1: Introduction to generation 2 virtual machines

Hyper-V的使用方法

深入浅出Hyper-V网络虚拟化技术

What is the memory buffer when dynamic memory is enabled?

Deciding When To Use Generation 1 or Generation 2 Virtual Machines with Hyper-V

Hyper-V Guide: Create and Configure Generation 1 and 2 Virtual Machines

上一篇:php四个常用类封装


下一篇:【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md