在《虚拟化部署之Hyper-V虚拟机创建》一文中我们了解了如何在Hyper-V中创建一个新的虚拟机,但当我们已经在原来的VPC或Virtual Server中部署了虚拟机的情况下,如何能够将我们原有的虚拟机迁移到Hyper-V中,使之能够顺利地在Hyper-V中使用呢?这一章我将给大家介绍如何将已有的虚拟机迁移到Hyper-V。
1.找到原来在VPC或Virtual Server已经创建了的虚拟机,并查看其设置或属性,找到其主磁盘的存储位置。
p_w_picpath
2.找到虚拟磁盘所在的位置并选择所需迁移的虚拟机磁盘文件,并复制到服务器的虚拟存储位置上。
p_w_picpath 
p_w_picpath
3.粘贴好后,我们将在服务器端看到相应的文件。
p_w_picpath
4.这样我们便可以在“Hyper-V服务器”进行操作了,首先打开“新建虚拟机向导”并点击“下一步”。
p_w_picpath
5.指定迁移后的虚拟机名称和存储位置并点击“下一步”。
p_w_picpath
6.分配适当的虚拟机内存并点击“下一步”。
p_w_picpath
7.重新指定虚拟机的虚拟网络连接方式并点击“下一步”。
p_w_picpath
8.选择“使用现有虚拟硬盘”,这里一定要选择刚才拷贝过来的虚拟机磁盘文件(.vhd),并点击“下一步”。
p_w_picpath
9.确定迁移后的虚拟机的设置并点击“完成”。
p_w_picpath
10.现在我们在“Hyper-V管理器”中就可以看到迁移过来的虚拟机了。
p_w_picpath
11.为了确保迁移后的虚拟机设置和之前一样,我们可能进入“设置”中进行相应的检查和修改。
p_w_picpath
12.启动迁移过来的虚拟机,我们首先需要对此虚拟机的SID进行更新,由于之前的虚拟机中我已经加入了此工具在第一次运行虚拟机时启动“NewSID”工具修改SID,大家可以在虚拟机启动后再运行“NewSID”工具,“NewSID”工具可以到文章后面进行下载,也可以到http://download.csdn.net/source/1405479等网站上搜索下载。
p_w_picpath
13.点击“下一步”继续。
p_w_picpath
14.正在更改SID信息。
p_w_picpath
14.根据自己的需求更改虚拟机的系统名称后点击“下一步”。
p_w_picpath
15.选择当应用SID后自动重启,并点击“下一步”。
p_w_picpath
16.正在应用SID。
p_w_picpath
17.SID更改完成后经过重新启动,我们将可以正常的进入虚拟机系统中,当然你还得检查一下系统中其它的应用程序和硬件程序是否正常,如果有点小问题,还是得花点时间调整一下,一般正常的情况下,是不会出现异常的。
p_w_picpath
18.这样我们的其它虚拟机也可以如法炮制了,方便快捷的迁移就这样完成了。

注:NEWSID工具只适用于Windows2008 SP2之前的版本,Windows2008 R2运行并重启系统后会产生蓝屏状态。


Windows2008 R2的解决方案如下:

1.启动Windows2008 R2虚拟机进入系统后,打开“CMD窗口”并进入到"C:\windows\system32\sysprep"目录后再输入“sysprep /generalize /oobe /reboot”重新配置SID。

2.输入上面的命令敲回车后将出现“sysprep正在处理”的界面。

3.设置完成后将会重启系统,系统将重新配置,我们只要按向导完成操作,重新启动后将正常登录到系统,SID也就全部重置了。



下面是有关NEWSID工具介绍:

NewSID 首先读取现有计算机 SID。计算机的 SID 存储在注册表的 SECURITY\SAM\Domains\Account 下的 SECURITY 配置单元中。此项包含一个名为 F 的值和一个名为 V 的值。V 值是一个将计算机 SID 嵌入到其数据末尾的二进制值。NewSID 能够确保此 SID 具有标准格式(三个 32 位子颁发机构位段的前面带有三个 32 位颁发机构位段)。
接下来,NewSID 为计算机生成一个新的随机 SID。NewSID 的生成过程竭力创建了一个真正的 96 位随机值,该值将替换组成计算机 SID 的 3 个子颁发机构值(共 96 位)。
计算机 SID 的替换分为以下三个阶段。在第一阶段中,扫描 SECURITY 和 SAM 注册表配置单元,以便在项名称以及项值中查找旧的计算机 SID。如果在值中找到 SID,则用新的计算机 SID 替换它;如果在名称中找到 SID,则会将相应的项及其子项复制到与替换旧 SID 的新 SID 具有相同名称的新子项。
最后两个阶段涉及到更新安全描述符。注册 表项和 NTFS 文件具有与自身相关联的安全性。安全描述符包含以下部分:一个标识了哪个帐户拥有资源,哪个组是主要组所有者的条目;一个可选列表(称为自由访问控制列表 - DACL),其中的条目指定了用户或组所允许的操作;以及另外一个可选列表,其中的条目指定了特定用户或组所执行的哪些操作将在系统事件日志(系统访问控 制列表 - SACL)中生成条目。用户或组在这些安全描述符中通过其各自的 SID 进行标识,而且如前所述,本地用户帐户(内置帐户,如 Administrator、Guest 等除外)的 SID 由计算机 SID 和 RID 组成。
安全描述符更新的第一部分发生在计 算机中的所有 NTFS 系统文件上。将扫描每个安全描述符以查找计算机 SID。当 NewSID 找到一个 SID 时,就会用新的计算机 SID 替换它。
安全描述符更新的第二部分在注册表上执行。首先, NewSID 必须确保已经扫描了所有配置单元,而不只是扫描了已加载的那些配置单元。当用户登录时,每个用户帐户都具有一个作为 HKEY_CURRENT_USER 加载的注册表配置单元,而当用户未登录时,该注册表配置单元将保留在磁盘的用户配置文件目录中。 NewSID 标识所有用户配置单元位置的方法是枚举 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList 项,该项指向存储了这些配置单元的目录。然后,它使用 RegLoadKey 将这些配置单元加载到注册表中 HKEY_LOCAL_MACHINE 的下面,并且扫描整个注册表,检查每个安全描述符以查找旧的计算机 SID。这些更新的执行方式与文件更新相同,而且在更新完成时, NewSID 将卸载它所加载的用户配置单元。最后一步,NewSID 扫描 HKEY_USERS 项,该项包含 .Default 配置单元以及当前登录用户的配置单元。这一步是必要的,因为一个配置单元不能加载两次;所以,当 NewSID 正在加载其他用户配置单元时,不会将登录用户配置单元加载到 HKEY_LOCAL_MACHINE 中。
最 后,NewSID 必须更新 ProfileList 子项以便引用新的帐户 SID。为了使 Windows NT 帐户能够在更改 SID 以反映新的计算机 SID 后正确地将配置文件与用户帐户相关联,需要执行此步骤。
NewSID 通过给予自身以下权限,确保它能够访问和修改系统中的每个文件和注册表项:系统、备份、还原和取得所有权。
 

请关注我后续发布的Hyper-V系列文章。