Hyper-V 虚拟机与物理机共享文件方法之:挂载虚拟磁盘

使用 Vmware Workstation 时,系统安装完成之后往往会提示安装增强工具,提高虚拟机和物理机(宿主机)之间的交互体验,例如:共享剪贴板、文件拖拽等。假设虚拟机系统非 Windows,那么这些好功能在系统自带的 Hyper-V 上,都没有。

假设不使用网络共享,我们可以使用虚拟磁盘。这个方法虽说有点绕,操作也有些不便,但也算是一种方法。

一、创建虚拟磁盘

打开 Hyper-V 管理器,点击右侧的【新建】,选择【硬盘】。

Hyper-V 新建虚拟磁盘
推荐选择VHDX格式
Hyper-V 新建虚拟磁盘
根据自己的需求选择固定大小或动态扩展,日常使用推荐动态扩展,文件多大,磁盘就占用多大,不浪费空间
Hyper-V 新建虚拟磁盘
设置虚拟磁盘的名称和储存路径
Hyper-V 新建虚拟磁盘
设置虚拟磁盘的容量上限
Hyper-V 新建虚拟磁盘
点击完成即可创建虚拟磁盘

二、初始化磁盘

之所以使用虚拟磁盘这个方法,就是因为 Win10 原生支持对虚拟磁盘的访问,只不过我们需要先初始化,以便资源管理器中能够识别。

右键点击开始按钮,打开磁盘管理器,此时我们是看不到虚拟磁盘的:

磁盘管理器

网上的教程很少有提到这点,因此我一开始也摸不着头脑,试验了一番才知道需要手动附加虚拟磁盘,不知道这是不是 Win10 之后才有的改变。

点击上方菜单中的【操作】-【附加VHD】,浏览虚拟磁盘所在的目录,添加虚拟磁盘:

Win10 磁盘管理附加VHD
磁盘管理器初始化虚拟磁盘

可以看到磁盘 1 容量 5GB,状态是“没有初始化”。此时资源管理器中无法看到这个磁盘,需要在磁盘 1 上点击右键,选择【初始化磁盘】。

初始化磁盘分区形式

磁盘分区形式选择 GPT,这是当前主流的分区形式,选择 MBR 会与 Hyper-V 的安全启动机制冲突。

点击确定之后,磁盘 1 就会变成一个完整的未分配空间,需要将它新建分区(简单卷)。操作方法参考:https://www.pcoic.com/system/windows/218.html

分区新建好之后就可以在资源管理器中像普通分区一样读写文件。

三、虚拟机读写文件

通过上面的操作,虚拟磁盘已经被物理机的 Win10 挂载,也就是说虚拟磁盘当前是被物理机独占的。因此,我们要先在磁盘管理器中把虚拟磁盘分离开。

磁盘管理分离VHD

右键点击磁盘 1,可以点击脱机之后再点击分离 VHD,也可以直接选择分离 VHD。在弹出的提示框中点击【确定】,虚拟磁盘就从磁盘管理中移除了。

在 Hyper-V 管理器中打开虚拟机的设置,选择 SCSI 控制器 – 硬盘驱动器,点击添加:

Hyper-V添加磁盘驱动器

点击【浏览】,定位到共享虚拟磁盘所在位置,添加到虚拟机中。

Hyper-V添加虚拟磁盘驱动器

保存设置之后运行虚拟机,就可以看到共享磁盘了。因为 VHDX 是 Hyper-V 的通用磁盘格式,这就意味着不论虚拟机运行的是什么系统,共享磁盘都能够被识别和读写。

虚拟机上的Win10资源管理器
虚拟机上的Win10资源管理器,已经加载共享磁盘

如果虚拟机设置中已经添加虚拟磁盘,启动虚拟机前一定要在物理机系统上分离 VHD,否则虚拟机会报错无法启动。

四、物理机读写文件

与虚拟机读写共享磁盘一样,若要在物理机上读写共享磁盘,首先要解除虚拟机对它的占用。方法很简单——关闭虚拟机即可。

上文我们已经初始化虚拟磁盘并新建了分区,这些步骤不需要重复操作。关闭虚拟机之后,我们只需要在磁盘管理中附加 VHD,共享磁盘会立刻出现在资源管理器中,像普通分区一样读写就行了。

以上方法无法实现实时共享文件,需要关闭和启动虚拟机,这已经背离了使用虚拟机的初衷。然而一旦设置完成,日后的操作都已经变得相对简便;再者,启动虚拟机终究比物理机重启要便捷得多,这也就是本文方法的价值所在。

本文方法参考:

Win8/Win8.1玩转虚拟机六:Hyper-V文件共享篇

耕读君
耕读君

热爱科技,热爱折腾,有一个可爱的女儿

文章: 329

2 评论

  1. 从主机复制完文件到虚拟磁盘后,再启动虚拟机就说检查点丢失,虚拟机就启动不了了.,是咋回事?

    • 之前测试时也遇到了这个问题,我发现无论是虚拟机的虚拟磁盘还是用于共享的虚拟磁盘都会产生多个增量文件,你可以到虚拟磁盘所在目录查看。一旦这些文件产生,Hyper-V的设置中会引用最新的那一个增量文件,导致虚拟机无法正常加载,重新选择正确虚拟磁盘文件能够恢复,但是经常这样操作会比较麻烦。我的建议是,如果需要频繁地在虚拟机和物理机之间交换文件,最便捷的方法还是使用文件夹共享功能,在物理机上创建一个用于共享的文件夹,在虚拟机中直接访问。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注