在咱们进行实时迁移设置前,首先要进行配置约束委派,由于Hyper-V实时转移提供了两种验证通讯协议,预设为CredSSP,另外一种是Kerberos委派。不过相对比较安全的Kerberos委派能够阻绝任何不明启用的服务器使用委派,因此建议使用。若是使用Kerberos委派来验证明时迁移,那就必需要先设定限制委派,而后才能够继续其他的步骤,并且还要必须使用Domain Administrators群组成员的帐户在Active Directory的Computers设置限制委派。若是使用CredSSP,那就不须要进行设定委派。shell
步骤1 打开“Active Directory 用户和计算机”管理单元。从服务器管理器 (SM) 中执行该操做,打开“Active Directory 用户和计算机”管理单元。从导航面板中选择域,而后双击“Computers”文件夹。在“Computers”文件夹中,右击源服务器的计算机帐户,而后在弹出的快捷菜单中选择“属性”命令。安全
步骤2 在接下来弹出的“属性”对话框中,单击“委派”选项卡。在“委派”选项卡下选择“信任仅委派到特定服务的计算机”。在该选项下面,选择“仅限使用 Kerberos”。单击“添加。服务器
步骤3 在接下来弹出的“添加服务”对话框中,单击“用户或计算机”按钮。网络
步骤4 在“选择用户或计算机”对话框中的“输入对象名称来选择”文本框中键入目标服务器的名称,单击“检查名称”按钮以验证你输入的名称是否正确,若无误,则单击“肯定”按钮。架构
步骤5 在“添加服务”对话框,在可用服务列表中执行如下步骤,而后单击“肯定”。要移动虚拟机存储器,请选择 cifs。若是要同时迁移存储器与虚拟机,并且仅迁移虚拟机的存储器,则须要执行此步骤。若是将该服务器配置为使用Hyper-V的SMB存储器,则应首先选中该选项。要迁移虚拟机,选择“Microsoft 虚拟系统迁移服务。并发
步骤6 在“属性”对话框的“委派”选项卡上,肯定上一步选定的服务列在目标计算机能够为其提供委派证书的服务中,而后单击“肯定”按钮。ide
委派要在域中的每台Hyper-V主机中都要添加相应的委派,否在会在迁移过程当中报错。如在Hyper-V02中,就须要信任Hyper-V01中的Kerberos协议,并指定相应的服务类型。操做步骤与以前的相同。若是只设定一方,那就只能将虚拟机迁移过去,但却没法迁移过来。性能
下面咱们用Powershell的方式进行委派,可是Powershell方式的委派很是麻烦,幸运的是在TeachNet Blogs中有提供了一个Set-KCD.ps1脚本文件,该脚本简化了烦琐的委派步骤,其地址为:http://blogs.technet.com/b/matthts/archive/2012/06/10/configuring-kerberos-constrained-delegation-for-hyper-v-management.aspx测试
从Blogs上咱们能够下载到Set-KCD脚本文件,下载以后解压后会有两个文件,一个是Set-KCD.ps1和Set-KCD.Zip。在解压Set-KCD.Zip后,会发现里面还有个Set-KCD.ps1,第二个Set-KCD.ps1文件大约9.2KB,第一个Set-KCD.ps1大小则为3KB,其实两种Set-KCD.ps1都能实现一样的效果,差异就是文件较大的Set-KCD.ps1文件包含服务类型的名称。3d
首先我先看大小为3KB的Set-KCD.ps1文件,其代码如图所示。
接下来咱们看大小为9.2KB的Set-KCD.ps1文件,因为代码过长,这里只给出了部分代码,可自行下载后查看,其代码如图所示。
了解了Set-KCD脚本文件,在准备执行Set-KCD.ps1脚本文件以前,还须要进行一步操做,不然会在执行的过程当中会出下没法加载文件的状况。
遇到这种事情是因为Set-KCD不是Windows Powershell内建的指令,因此必需要解除限制,设定为无限制才能执行。设置完成后,咱们还能够恢复Windows Powershell内建的指令限制。首先使用Powershell命令Set-ExecutionPolicy Undefined,目的是下降Windows Powershell安全性,当执行完成后,可使用Powershell命令Set-ExecutionPolicy RemoteSigned恢复其安全性。
下面咱们就来设置mabofeng.com域中的Hyper-V01信任委派Hyper-V02的服务类型CIFS。将9.2KB大小的Set-KCD.ps1文件拷贝到C盘下,使用的Powershell命令为
.\SetKCD.ps1 –TrustedComputer Hyper-V01 –TrustingComputer Hyper-V02 –ServiceType CIFS –Add
若是要将3KB大小的Set-KCD.ps1文件拷贝到C盘下,使用的Powershell命令为:
.\SetKCD.ps1 –AdDN “cn=Hyper-V01,cn=computers,dc=mabofeng,dc=com” –HostFQDN Hyper-V02.mabofeng.com –Service CIFS –Add
接下来设置mabofeng.com域中的Hyper-V01信任委派Hyper-V02的服务类型Microsoft Virtual System Migration Service。将9.2KB大小的Set-KCD.ps1文件复制到C盘下,使用的Powershell命令为:
.\SetKCD.ps1 –TrustedComputer Hyper-V01 –TrustingComputer Hyper-V02 –ServiceType “Microsoft Virtual System Migration Service” –Add
若是要将3KB大小的Set-KCD.ps1文件复制到C盘下,使用的Powershell命令为:
.\SetKCD.ps1 –AdDN “cn=Hyper-V01.cn=computers,dc=mabofeng,dc=com” –HostFQDN Hyper-V02.mabofeng.com –Service “Microsoft Virtual System Migration Service” –Add
复制完成后,进行设置信任委派,咱们可使用以下命令:
Get-AdObject “cn=Hyper-V01,cn=computers,dc=mabofeng,dc=com” –Properties msDSAllowedToDelegateTo
在域控中设定完成委派后,接下来就是设定转移的来源和目的地Hyper-V主机了。设定来源和目的地服务器目的是,让它们能够传送和接收实时迁移。当设置服务器的时候,有两种方案可供选择:在任何可用网络容许实时迁移的流量或只在指定网络上容许实时迁移的流量。最安全作法就是指定专用的网络负责实时迁移的网络流量。要在非群集Hyper-V主机上开启实时迁移,只要在Hyper-V主机的Hyper-V设置中进行设置便可。
在Hyper-V实时迁移设置中,首先勾选“启用传入和传出的实时迁移”,并选择身份验证协议。身份验证协议分为两种:一种是使用凭据安全支持提供程序(CredSSP),这种身份验证协议必须登陆到服务器才能执行实时迁移,因此不是最佳的选择;而另外一种方式是采用Kerberos,这种方式更为安全,在域控中咱们已经设置了采用Kerberos委派,并设定了cifs和Microsoft 虚拟系统迁移服务。在“指定所容许的并行实时迁移数量”中输入容许的数量。
接下就是设置传入实时迁移的网络状况,这里也有两种选择:一是使用任何可用的网络进行实时迁移,这种方式能够利用全部Hyper-V主机之间的网络,可是因为发生实时迁移后,对网络的压力较大,给其它网络中的业务形成压力;二是使用指定的IP地址进行实时迁移,这也是咱们要选择的方式。单击图6-16中的“添加”便可设置IP地址,单击“编辑”便可修改实时迁移IP地址。
若是是Microsoft Hyper-V Server 2012,没法经过GUI界面设置实时迁移,那么咱们也能够经过Powershell的方式设置Hyper-V的实时迁移,主要的命令包括:
启动传入和传出的实时迁移,命令以下:
Enable-VMMigration
停用传入和传出的实时迁移,命令以下:
Disable-VMMigration
查看传入和传出的实时迁移状态(见图6-17),命令以下:
Get-VMHost
使用凭据安全支持提供程序(CredSSP),命令以下:
Set-VMHost –UseAnyNetworkForMigration $ture
指定使用IP地址为192.168.1.201进行实施迁移,命令以下:
Add-VMMigrationNetwork 192.168.1.201/32
指定使用IP段均可以进行实施迁移,命令以下:
Add-VMMigrationNetwork 192.168.0.0/32
查看传入和传出的实时迁移IP地址,命令以下:
Get-VMMigrationNetwork
将192.168.1.201的前后顺序调到3,命令以下:
Set- VMMigrationNetwork 192.168.1.201/32 –NewPriority 3
在Hyper-V设置中,还须要进行设置的就是存储迁移的并发迁移量,设置容许存储迁移的并发数量。
除了在Hyper-V主机上要设置实时迁移之外,要注意在虚拟机的设置中,必定要勾选“将虚拟机迁移到具备不一样处理器版本的物理计算机”选项,若是不勾选这个选项,在迁移到不一样版本的CPU时候,会出现错误,致使迁移失败。
实时迁移具备不少种类:
具备共享存储的实时迁移,就是虚拟机运行在具备共享存储的磁盘中,两台Hyper-V并不是是群集关系,能够将虚拟机实时迁移到另一台主机上,在迁移过程当中可保证虚拟机不关机、不重启,服务器不中断,确保业务的正常运行。
另一种迁移是运行在一台Hyper-V主机中,改变虚拟机的存放位置,将虚拟机的存放位置从一个磁盘迁移到另外一个磁盘,一样的,在迁移过程当中虚拟机不关机、不重启,服务器不中断,保证业务的正常运行。
最后一种就是当虚拟机运行在单台Hyper-V主机时,将单台Hyper-V主机中的虚拟机迁移到另一台Hyper-V主机,而且这两台Hyper-V主机并无共享存储,也就是说,要同时迁移虚拟机和虚拟机存放的磁盘位置。
不管是哪一种迁移,将虚拟机迁移到另一台主机上时候,转移虚拟机基本上包括了转移虚拟机的快照、当前配置、智能分页和虚拟硬盘,若是是迁移虚拟存储文件,还能够指定将虚拟机磁盘存放到不一样的目录上。但这里要注意的就是,当迁移虚拟机到另一台主机上时,若是虚拟机使用的是DHCP,那么在迁移完成后,IP地址可能会发生变动,因此最好将虚拟机的IP地址设置成为固定的形式。在两台Hyper-V主机上进行迁移时,若是两台主机的虚拟交换机名称不一样,则也可能发生迁移失败。
下面咱们就来介绍如何进行具备共享存储的实时迁移,。相对于其它迁移方式,这种迁移速度是最快的,若是虚拟机存放在共享存储中,而共享存储是采用SMB3.0就能够顺利的迁移,若是是早期的Hyper-V版本,则没法使用具备共享存储进行实时迁移。这里还要注意,共享存储必须具备Hyper-V的Administrator的权限,并设置授予彻底控制。不然在迁移虚拟时候会发生错误。
步骤1 在Hyper-V管理器中,右击选择要迁移的虚拟机,在以后弹出的快捷菜单中选择“移动”命令。
步骤2 在迁移“新建虚拟机”向导中,点选“移动虚拟机”选项,而后单击“下一步”按钮。因为采用的是共享存储,因此就不必移动虚拟机的存储了。
步骤3 在指定目标的计算机界面上,输入指定目标计算机的名称,或者经过单击“浏览”按钮在域中查找到要迁移的目地虚拟主机,以后单击“下一步”按钮。
步骤4 在选择移动虚拟机后,能够在“选择移动选项”界面中选择如何使用虚拟机迁移项目,这里包括以下选项:
“将虚拟机的数据移动到一个位置”选项,此选项将迁移虚拟机到所指定的一个位置,这里的意思是迁移快照、智能分页、虚拟机配置文件和虚拟机的虚拟硬盘,将这些文件指定一个位置。
“经过选择项目移动位置来迁移虚拟机的数据”选项,这里的意思是将迁移快照、智能分页、虚拟机配置文件和虚拟机的虚拟硬盘分别指定存放的位置。这种选项和上一个选项能够手动或者自动选择虚拟机的存放位置,若是无需移动虚拟机虚拟硬盘,则指定路径时,将虚拟机的虚拟硬盘指定到源地址便可。
“仅移动虚拟机”选项,将虚拟机的文件除了虚拟机的虚拟硬盘以外的文件进行迁移,迁移后的虚拟机存放在系统默认的地方。
这里咱们选择“仅移动虚拟机”选项。
经过Powershell也能进行虚拟机的迁移,使用命令Move-VM。首先咱们先查看在Powershell中的迁移虚拟机的命令语法。
命令Move-VM的语法中包括了:
-SmartPagingFile: 智能分页处理。
-AnapshotFile :快照文件。
-VirtualMachine: 虚拟机配置文件。
-VHDs :虚拟机的虚拟硬盘。
经过Powershell命令能够将新建虚拟机从Hyper-V01主机上迁移到Hyper-V02主机上,使用的命令为:
Move-VM “新建虚拟机” Hyper-V02
能够将新建虚拟机从Hyper-V01主机上迁移到Hyper-V02主机上,并指定虚拟机的虚拟硬盘路径在C:\TestVM,其命令为:
PS C:\>Move-VM “新建虚拟机” Hyper-V02 –IncludeStorage –DestinationStoragePath C:\TestVM
能够将新建虚拟机从Hyper-V01主机上迁移到Hyper-V02主机上。并指定智能分页处理、快照文件、虚拟机配置文件和虚拟机的虚拟硬盘路径,使用的命令为:
PS C:\>Move-VM “新建虚拟机” Hyper-V02 –VirtualMachinePath D:\TestVM\Config –SnapshotFilePath D:\ 新建虚拟机\Snapshots –SmartPagingFilePath D:\ 新建虚拟机\SmartPaging –IncludeStorage –VHDs @(@{“SourceFilePath” =“C:\ 新建虚拟机\Disk1.VHDX”; “DestinationFilePath” = “D:\ 新建虚拟机\Disks\Disk1.VHDX”}, @{“SourceFilePath” = “C:\ 新建虚拟机\Disk2.VHDX”; “DestinationFilePath” = “D:\ 新建虚拟机\Disks\Disk2.VHDX”})
存储实时迁移是将虚拟机的存放位置从一个地方迁移到另外一个地方,好比能够将虚拟机的存放位置从C盘迁移到D盘,或者将虚拟机硬盘迁移到共享存储上面,也能够将虚拟机在共享存储中的不一样LUN之间相互迁移,在迁移过程当中,虚拟机不会出现中断。可是因为存储实时迁移包括了迁移虚拟机的快照、智能分页、虚拟机配置和虚拟机的虚拟硬盘,因此迁移过程是比较慢的,具体速度取决于咱们存储网络和磁盘速率。固然,在虚拟机关机的状况下,速度要比开机时候迁移的要快。
步骤1 在Hyper-V管理器中,右击选择要迁移的虚拟机,在以后弹出的快捷菜单中选择“移动”命令。在迁移“新建虚拟机”向导中,选择“迁移虚拟机的存储”选项,因为是在同一台主机上,就不必移动虚拟机了。
步骤2 在选择移动虚拟机存储后,能够在“选择移动选项”中选择如何使用虚拟机存储迁移项目,这里包括的具体选项有:
“将虚拟机的数据移动到一个位置”选项,此选项将迁移虚拟机到所指定的一个位置,这里的意思是迁移快照、智能分页、虚拟机配置文件和虚拟机的虚拟硬盘,将这些文件指定一个位置。
“将虚拟机的数据移动到其余位置”选项,即经过选择项目移动位置来迁移虚拟机的数据,这里的意思是将迁移快照、智能分页、虚拟机配置文件和虚拟机的虚拟硬盘分别指定存放的位置。这个选项和上一个选项能够手动或者自动选择虚拟机的存放位置。
“仅移动虚拟机的虚拟硬盘”选项,对虚拟机的虚拟硬盘文件进行迁移,迁移后的虚拟机存放在系统默认的地方。
这里咱们选择“仅移动虚拟机的虚拟硬盘。
步骤3 在选择要移动的项目中会列出虚拟机中的全部虚拟硬盘,能够将虚拟机中的虚拟硬盘所有勾选上而后能够进行迁移,也能够迁移其中的一些虚拟硬盘,可是不建议将一个虚拟机的硬盘迁移到不一样的目录中。这里的新建虚拟机只有1块硬盘,咱们就选择迁移此虚拟硬盘。
步骤4 为虚拟机中的虚拟硬盘选择迁移的目标路径,从图6-30中能够看出,新建虚拟机的当前位置在C盘下面,在“新位置”中单击“浏览”按钮选择路径或者直接输入路径,如果输入路径的地址下没有输入的文件夹,则会自动建立文件夹。
步骤5在摘要中查看要迁移虚拟机的路径,确认无误后单击“完成”按钮就开始迁移,整个迁移虚拟机的过程虚拟机不会出现中断。
经过Powershell也能进行虚拟机存储的迁移,使用的命令是Move-VMStorage。首先咱们先查看在Powershell中的迁移虚拟机的命令语法。
命令Move-VM的语法中包括了:
-SmartPagingFile :智能分页处理。
-AnapshotFile :快照文件。
-VirtualMachine: 虚拟机配置文件。
-VHDs :虚拟机的虚拟硬盘。
能够将新建虚拟机存储位置从默认路径迁移到D:\新建虚拟机,使用的命令以下:
PS C:\> Move-VMStorage “新建虚拟机” –DestinationStoragePath D:\新建虚拟机
将新建虚拟机的智能分页处理、快照文件、虚拟机配置文件和虚拟机的虚拟硬盘迁移到指定的路径,使用的命令以下:
PS C:\>Move-VMStorage “新建虚拟机” –VirtualMachinePath D:\新建虚拟机\Config –SnapshotFilePath D:\新建虚拟机\Snapshots –SmartPagingFilePath D:\新建虚拟机\SmartPaging –VHDs @(@{“SourceFilePath” = “C:\新建虚拟机\Disk1.VHDX”; “DestinationFilePath” = “D:\新建虚拟机\Disks\Disk1.VHDX”}, @{“SourceFilePath” = “C:\新建虚拟机\Disk2.VHDX”; “DestinationFilePath” = “D:\新建虚拟机\Disks\Disk2.VHDX”})
Windows Server 2012中的Hyper-V在虚拟机的迁移中,支持了具备非共享存储的实时迁移,这样能够大大加强了Hyper-V虚拟机的灵活性,在一些没有共享存储和群集的环境中,基于非共享存储的实时迁移起到了重要的做用。
非共享存储的实时迁移具有如下四个特性:
即便在迁移工程中遇到故障或问题,致使迁移失败,也能保证有一台可用虚拟机。
可跨群集迁移虚拟机,例如咱们能够从非群集的计算机迁移到群集计算机。
支持不一样存储类型的迁移虚拟机,无需受存储类型约束,无论环境是 JBOD 仍是直通存储,又或者是 iSCSI 存储,都能实现实时迁移。
可使用 Powershell 发起实施迁移的操做,那么就可以实现自动化的操做。
综上所述,非共享存储的实时迁移为咱们提供了低成本、高效率、灵活便捷的迁移方案,这一迁移方式可以被用到多种应用环境下,例如:
开发或 IT 人员可以将测试好的虚机在不停机的前提下直接迁移到生产环境。
在多主机环境下,若是须要进行主机维护,能够在不依赖共享存储的前提下,快速、灵活的在主机之间移动虚机。
故障检修和硬件升级,中小企业可能只有一台服务器并经过虚拟化方式运行着业务服务器,当遇到硬件故障或须要更新服务器时,IT顾问能够快速在笔记本上创建临时的基于 Windows Server 2012 的 Hyper-V 主机,将其加入到现有域中完成业务虚拟机的迁移,在完成原服务器的更换后,再迁移回去。
非共享存储的实时迁移在迁移过程当中虚拟机不会出现中断的现象。
而迁移的过程当中,有的Hyper-V主机没有共享存储,因此在迁移时,须要迁移虚拟机的全部配置,包括虚拟机的虚拟硬盘、配置文件、虚拟机快照和Hyper-V智能分页文件,迁移过去的虚拟机文件和数据存储可位于一个或者多个位置。因为没有共享存储,该实时迁移方案不提供高可用性。
能够经过Powershell发起实施迁移的操做,能够采用Move-VMStorage或者是Move-VM命令,只要指定相应的虚拟机迁移目标存储路径,虚拟机就会迁移过去,这与以前迁移使用的命令相同。Windows Server 2012 无需共享存储的实时迁移总体来说很是易用,无需过多的设置便可完成,仔细操做下来也就是几个简单的步骤,这彻底依靠强大的基础架构做为支撑,因此在迁移以前的Hyper-V主机中,都必须加入域环境。