Hyper-V提供了很方便的虚机导入和导出功能。平时假如我们想导出虚机,先选中虚机,然后鼠标右键在出现菜单列表中选中“导出”就可以,导入的话,选中Hyper-V服务器,鼠标右键选中“导入虚拟机”进行操作。但是,最近遇到一个问题,一个用户只拷贝了整个文件夹目录,如何帮助他进行导入呢?
把用户的文件夹拷贝到D:\MSVM目录下,我们先来看看文件夹的架构。
为确保虚机资源仅能被特定虚机所访问,Hyper-V使用了一个叫服务SID的功能来确保安全访问,所以我们需要手动赋予某个SID 访问权限。这个SID是由这样的形式构成的:VIRTUAL MACHINE\<GUID>
虚机的GUID, 我们可以在VirtualMachines目录下找到
例如这里的SID为 NT VIRTUAL MACHINE\1A1A0D9F-47C8-4A10-A60A-D5BF0497817B
1. 我们使用 mklink 命令创建Symbolic link(符号链接),让Hyper-V能够读到虚机的配置。
在命令行下输入
mklink "%systemdrive%\programdata\Microsoft\Windows\Hyper-V\Virtual Machines\1A1A0D9F-47C8-4A10-A60A-D5BF0497817B.xml" "D:\MSVM\a1\Virtual Machines\1A1A0D9F-47C8-4A10-A60A-D5BF0497817B.xml"
这时我们可以看到Hyper-V\Virtual Machines目录下创建了一个新文件。
在Server 08的Hyper-V的管理器中你可能已经发现新的虚机了,在Server 08 R2版本中,你遇到的情况可能和我的截图一样,虚机并没有出现。
这时候我们需要在服务中重启“Hyper-V 虚拟机管理”服务。
虚机出现了。
2. 使用 icacls 命令将服务SID添加到Symbolic link中以便Hyper-V可以访问它。/L 指示此操作在Symbolic link本身而不是在其目标上执行。
icacls "%systemdrive%\programdata\Microsoft\Windows\Hyper-V\Virtual Machines\1A1A0D9F-47C8-4A10-A60A-D5BF0497817B.xml" /grant "NT VIRTUAL MACHINE\1A1A0D9F-47C8-4A10-A60A-D5BF0497817B":(F) /L
3. 我们同样需要赋予此SID 访问所有虚机文件的权限。
icacls D:\MSVM\a1\ /T /grant "NT VIRTUAL MACHINE\1A1A0D9F-47C8-4A10-A60A-D5BF0497817B":(F)
4. 假如虚机中含有快照,我们还需要创建额外的Symbolic link以及服务SID访问权限。
mklink "%systemdrive%\ProgramData\Microsoft\Windows\Hyper-V\Snapshots\9A4D34EF-9895-424C-91D1-FC1C2FC39950.xml" "D:\MSVM\a1\Snapshots\9A4D34EF-9895-424C-91D1-FC1C2FC39950.xml"
icacls "%systemdrive%\ProgramData\Microsoft\Windows\Hyper-V\Snapshots\9A4D34EF-9895-424C-91D1-FC1C2FC39950.xml" /grant "NT VIRTUAL MACHINE\1A1A0D9F-47C8-4A10-A60A-D5BF0497817B":(F) /L
5. 可以了吗?让我们启动虚机看看。
6. 最后一步,我们需要修改虚机配置,为虚机选取正确的虚拟交换机,大功告成。
本文转自 VirtualTom 51CTO博客,原文链接:http://blog.51cto.com/virtualtom/424862,如需转载请自行联系原作者