如何将文件复制到 Hyper-V 服务器和虚拟机:7 种方法

Hyper-V 是一个在 Windows 上运行的 hypervisor,可以直接在安装了它的计算机上以及远程管理。通常情况下,您需要将文件复制到 Hyper-V 服务器,以及从服务器复制到虚拟机。您不能简单地将文件拖放到 Hyper-V 虚拟机中,而应该使用其他方法复制文件。

例如,在 Hyper-V 中创建新的虚拟机时,您需要在该虚拟机上安装操作系统。通常情况下,这是通过挂载操作系统介质的 ISO 安装映像来完成的。为了将介质传送到 Hyper-V 主机,您必须将 ISO 文件复制到主机上,并在新的虚拟机上安装客户操作系统。

本博文提供了 6 种将文件复制到 Hyper-V 虚拟机和 Hyper-V 服务器的方法。请注意,这些用于将文件复制到 Hyper-V 服务器的方法也可以用于其他场景,例如从 Hyper-V 主机复制文件到虚拟机。

方法一:如何使用 Hyper-V 主机上的文件共享复制文件

该方法涉及在 Hyper-V 主机上创建文件共享,并将 ISO 映像或其他文件复制到此 SMB 文件共享。SMB 协议是 Windows 中的一种本地共享协议,但也支持 Linux 和其他操作系统。

如果建立了网络连接,您也可以使用此方法将文件复制到 Hyper-V 服务器,从任何物理或虚拟机器。

  1. 启用防火墙规则以允许运行 Hyper-V 的计算机的入站 SMB 连接。要在防火墙中启用文件和打印机共享,请在 Hyper-V 主机上运行以下命令:

netsh advfirewall firewall set rule group=”文件和打印机共享” new enable=Yes

注意:您可以为所需用户配置适当权限的SMB文件共享,并仅共享所需文件夹。

  1. 如果您的Windows机器上有图形用户界面(GUI),请在Windows资源管理器窗口的地址栏中键入共享路径以连接到Hyper-V主机上的远程文件共享。在本示例中,我们使用了一个默认在所有Windows机器上为管理目的启用的隐藏系统共享C$。类似地,您可以连接到其他卷,如D$、E$等。

\\10.10.10.31\c$\

注意:演示目的上文件存储在C:盘。建议您使用另一个专用分区用于VM文件、ISO镜像、文件共享和其他非系统数据。

  1. 浏览到您希望存储ISO镜像或需要复制的其他文件的目录。如果尚未创建此目录,您现在可以创建它。在我们的情况下,ISO文件位于我们的Hyper-V主机上的,网络路径为\\10.10.10.31\c$\ISO_1\

如果您需要使用命令行界面,您可以使用以下命令将SMB文件共享映射为网络驱动器:

Net use * \\〈您的Hyper-V主机〉\d$

例如,

net use S: \\10.10.10.31\d$

注意:您可以在具有要传输到 Hyper-V 的数据的客户端或服务器上的 CMD 或 PowerShell 中运行此命令。

  1. 通过使用此网络路径,将所需的 ISO 文件(或其他文件)从本地计算机(在我们的情况下为 C:\data\shared01\)复制到 Hyper-V 主机。

  1. 将 ISO 映像复制到服务器后,我们可以将 DVD 驱动器指向映像文件并浏览到我们在 (C:) 驱动器根目录上创建的文件夹。

  1. 在将所有所需文件复制到 Hyper-V 主机后,出于安全目的,您可以在 Hyper-V 主机上禁用入站连接的 Windows 防火墙。如果我们选择这样做,我们可以通过简单地将 PowerShell 命令中的 Yes 更改为 No 来禁用我们允许的文件和打印机共享防火墙规则。

netsh advfirewall firewall set rule group=”文件和打印机共享” new enable=No

方法 2:如何使用单个文件共享将文件复制到 Hyper-V 服务器

当您的环境中有多个 Hyper-V 主机时,在每个 Hyper-V 主机上配置文件共享并将 ISO 映像复制到所有这些 Hyper-V 主机可能会很不方便。此外,对于相同的 ISO 映像在多个主机上使用存储空间可能是不合理的。

您可以在另一台服务器上配置文件共享,例如在文件服务器或NAS上,并将所有所需的ISO映像存储在那里。只需配置一次文件共享,为Hyper-V主机配置访问权限,并为所有主机使用存储在一个地方的所需ISO映像。

如果所有使用的计算机都是Active Directory域的成员,则此方法非常方便。

如果您希望使用此方法在Hyper-V主机和虚拟机的客户操作系统之间传输文件,您需要在Hyper-V设置中配置虚拟交换机并设置所需的网络模式。

如果您需要将文件复制到具有Linux客户操作系统的虚拟机,除了使用SMB协议外,您还有另一个选项。您可以使用SSH进行安全的Hyper-V文件传输。

方法3:通过RDP进行Hyper-V文件传输

如果您的Hyper-V服务器在带有GUI的Windows机器上运行,您可以通过RDP(远程桌面协议)连接到此主机,并附加本地磁盘以复制所需的文件。要执行此操作,您需要在目标服务器上启用远程桌面连接。

您可以使用此方法将文件从运行Windows的另一台物理或虚拟机复制到Hyper-V服务器。

  1. 要启用远程桌面连接,请转到开始>设置>系统>远程桌面并启用远程桌面
  2. 运行Windows远程桌面客户端,其位置为%windir%\system32\mstsc.exe

在命令行或运行对话框中键入mstsc,然后按Enter

  1. 输入远程计算机的IP地址或主机名(在我们的示例中,是具有IP地址10.10.10.31的Hyper-V主机)和用户名。您可以输入完整格式的用户名(domain\usercomputer\user

  1. 转到本地资源选项卡,然后点击更多

  1. 选择要从您的计算机映射到远程主机(在我们的示例中,远程主机是Hyper-V主机)的本地资源。展开驱动器,选择所需的磁盘驱动器。我们的计算机上所需的文件位于磁盘E:\上,因此我们选择将磁盘E:映射到我们的RDP连接中
  2. 点击确定保存设置,然后点击连接

建立远程桌面会话后,在远程计算机的Windows资源管理器中打开我的电脑此PC。您应该看到从本地计算机映射到远程计算机的磁盘驱动器(在下面的截图中为E on SERVER01-DC)。浏览此映射驱动器上所需的文件,并将其复制到您的Hyper-V主机

如果VM连接到网络,则此方法也适用

方法4:使用PowerShell CMDlet进行Hyper-V文件传输

PowerShell 4.0及更高版本具有一个有用的cmdlet,允许您在Hyper-V主机和虚拟机之间没有网络连接且无需配置防火墙的情况下复制文件。

因此,让我们看看如何在PowerShell中将文件复制到Hyper-V虚拟机而不使用网络。

  1. 在虚拟机上启用Guest services。必须在VM的guest OS中安装集成服务。

Guest services是Hyper-V集成服务的一部分,但默认情况下未启用。要启用Guest services,请打开VM设置,在VM设置窗口的左窗格中选择集成服务,并选中Guest services复选框。

在PowerShell中为VM启用Guest services

Enable-VMIntegrationService -VMName VM1 -Name ‘Guest Service Interface’

  1. 您可以在PowerShell中检查Guest services功能是否已启用:

Get-VMIntegrationService -name Guest* -VMName VM1,VM2

其中VM1,VM2是VM名称

  • 如果状态是未联系,您需要更新虚拟机并在客户操作系统中安装集成服务
  • 如果状态是False,您可以启用所需的客户服务接口:

Enable-VMIntegrationService -name Guest* -VMName win10preview -Passthru

  1. 使用以下命令进行从 Hyper-V 主机到 VM 客户端的 Hyper-V 文件传输,设置 Hyper-V 主机上的源路径和 VM 上的目标路径:

Copy-VMFile “VMName” -SourcePath “F:\Test.txt” -DestinationPath “C:\Temp\Test.txt” -CreateFullPath -FileSource Host

其中:

  • VMname 是您要复制文件的 VM 的名称(您可以在 Hyper-V 管理器中看到 VM 的名称;这不是显示在客户操作系统中的 VM 的主机名)。
  • SourcePath 是 Hyper-V 主机上源文件的路径(您需要复制的文件)。
  • DestinationPath 是 VM 上目标文件的路径(要复制所需文件的位置)。
  • 使用-CreateFullPath命令可在需要时创建具有所有必要文件夹的完整路径。

在我们的示例中,从主机到 VM 客户端的 Hyper V 文件传输的确切 PowerShell 命令是:

Copy-VMFile “VM2” -SourcePath “C:\temp\file01.txt” -DestinationPath “C:\Temp1\file01.txt” -CreateFullPath -FileSource Host

注意: Copy-VMFile cmdlet 仅在从 Hyper-V 主机到 VM 的方向上起作用。

方法 5: 挂载VHDX到主机和客户机

这种方法的想法是创建一个可以挂载到Hyper-V主机和虚拟机的VHDX虚拟磁盘。您可以将所需的文件复制到这个虚拟磁盘,将磁盘挂载到需要的机器上,并复制文件到/从虚拟磁盘中。

我们在示例中使用的是Windows Server 2019。在配置虚拟机时,可以在计算机管理中创建VHDX虚拟磁盘,而不仅仅在Hyper-V管理器中。

  1. 打开计算机管理窗口。您可以按Win+R打开运行对话框,然后运行compmgmt.msc命令。
  2. 转到存储 > 磁盘管理计算机管理窗口中。
  3. 右键单击磁盘管理,在上下文菜单中单击创建VHD

  1. A new window opens to create a virtual disk.
  • 指定Hyper-V主机上的虚拟硬盘位置,例如,C:\Hyper-V\data-temp\
  • 设置虚拟硬盘大小。我们为演示目的创建一个8-GB的虚拟硬盘。
  • 选择虚拟硬盘格式。我们选择VHDX作为更新的格式。阅读有关VHD vs VHDX的内容,以了解它们之间的区别。
  • 选择虚拟硬盘类型。我们选择动态扩展以节省存储空间,直到磁盘填满数据。
  • 点击确定保存设置并关闭窗口。

或者,以下是在PowerShell中创建VHDX虚拟磁盘的命令示例:

New-VHD -Path C:\Hyper-V\data-temp.vhdx -SizeBytes 8GB -Dynamic -BlockSizeBytes 1MB

在PowerShell中挂载VHD虚拟磁盘的命令如下:

mount-VHD -path C:\Hyper-V\data-temp.vhdx

A virtual hard disk has been created on our Hyper-V host.

  1. 磁盘管理工具中右键点击这个VHDX虚拟硬盘,然后点击初始化磁盘

如果您更喜欢使用PowerShell,请在初始化之前列出所有已挂载的磁盘以确定所需虚拟磁盘的编号:

Get-Disk

  1. 您的磁盘会自动选择。选择分区样式。我们使用MBR(主引导记录)以获得更好的兼容性。点击确定

或者,对于使用PowerShell的命令,包括虚拟磁盘的编号和分区样式:

Initialize-Disk 1 -PartitionStyle MBR

  1. 在Hyper-V主机上初始化的虚拟磁盘上创建一个新的卷(分区)。这个分区在Windows VM(或可以处理NTFS文件系统的Linux)中也可见。

右键点击8-GB卷,然后在上下文菜单中点击新建简单卷

  1. 新建简单卷向导打开。点击下一步
  2. 指定卷大小。使用整个磁盘大小为此卷。

  1. 分配一个驱动器号,例如,H:

  1. 格式化分区。选择NTFS文件系统,保留默认分配单元大小,并输入卷标(例如,复制文件)。选择执行快速格式化复选框。

或者,您可以使用以下PowerShell命令来创建和格式化卷:

New-Partition -DiskNumber 1 -UseMaximumsize -AssignDriveLetter

Format-Volume -DriveLetter H -FileSystem NTFS -Full -Force

  1. 完成向导后,您应该在Hyper-V主机机器的Windows资源管理器中看到已挂载的虚拟磁盘。
  2. 将所需文件复制到位于虚拟磁盘上的分区。我们复制file01.txt,如下截图所示。

  1. 在将所有所需文件复制到虚拟磁盘后,我们必须从Hyper-V主机卸载虚拟磁盘。

右键单击从VHDX虚拟磁盘挂载的适当分区,然后在上下文菜单中点击弹出

或者,使用PowerShell从主机机器卸载虚拟磁盘的命令:

dismount-VHD -path C:\Hyper-V\data-temp.vhdx

  1. 您可以挂载此为Hyper-V文件传输创建的虚拟磁盘,从Hyper-V主机到客户机以及反之。让我们将带有文件的虚拟磁盘挂载到虚拟机。
  1. 选择所需的虚拟机,并在 Hyper-V 管理器中打开 VM 设置
  2. 在虚拟机设置窗口的左窗格中选择所需的虚拟磁盘控制器。
  3. 选择 硬盘驱动器,然后点击 添加

  1. 选择 虚拟硬盘,然后点击 浏览 以将现有的虚拟硬盘添加到虚拟机中。
  2. 指定 VHDX 路径。在我们的案例中,路径为 C:\Hyper-V\data-temp.vhdx
  3. 点击 确定 以保存设置。

或者,这是将现有虚拟硬盘添加到 Hyper-V 虚拟机配置的 PowerShell 命令:

Add-VMHardDiskDrive -VMName VM2 -Path C:\Hyper-V\data-temp.vhdx

  1. 在您的 Hyper-V 主机上启动已连接虚拟磁盘的虚拟机。
  2. 登录到客户操作系统,检查位于虚拟磁盘上的卷是否已自动挂载。否则,转到 计算机管理> 磁盘管理 并为需要从 Hyper-V 主机传输到虚拟机的文件分配磁盘号。
  3. 将需要的文件从已连接的虚拟磁盘复制到虚拟机。

方法 6:具有增强会话模式的 VMConnect

VMConnect,或者虚拟机连接,是一个内置的Hyper-V工具,用于管理虚拟机。作为监视虚拟机的显示器的屏幕,您可以在其中看到如何使用键盘和鼠标进行导航,这是VMConnect工具的一部分。使用增强会话模式的VMConnect更加方便,并提供了更多功能。

增强会话模式允许您在连接到虚拟机时自定义屏幕分辨率,并附加在运行Hyper-V管理器的主机上的本地资源来管理虚拟机。这些本地资源的附加方式与使用远程桌面连接访问远程主机或虚拟机时类似。

要启用增强会话模式

  1. 右键单击Hyper-V管理器中您的Hyper-V主机的名称,在上下文菜单中,单击Hyper-V 设置
  2. 在左侧面板中单击增强会话模式
  3. 选择使用增强会话模式复选框

或者,可以在PowerShell中启用增强会话模式

Set-VMHost -EnableEnhancedSessionMode $True

一旦启用了增强会话模式并且对虚拟机和Hyper-V服务器进行了相关配置,您可以启动虚拟机并使用VMConnect连接到该虚拟机。

如果启用了增强会话模式,您应该会看到用于选择显示分辨率的窗口。在此窗口中点击显示选项

选择本地资源选项卡。在本地设备和资源部分中点击更多

在您的Hyper-V主机上选择要连接到虚拟机的可用磁盘。

方法7:使用ISO映像的Hyper-V文件传输

将文件复制到Hyper-V虚拟机的方法之一与使用VHDX虚拟磁盘类似。然而,这个方法只支持单向操作(将Hyper-V文件复制到VM),并且从VM访问文件是只读的。

如果您有应用程序可以编辑和写入CD/DVD映像文件的ISO文件,您可以将Hyper-V主机上需要的文件写入ISO映像,并将此ISO映像作为虚拟DVD介质插入到VM中。

如果您需要将可启动的ISO映像复制到您的虚拟机(例如,在测试嵌套虚拟化时),您应该创建一个新的空非可启动ISO映像文件,并将可启动ISO映像文件添加到此映像中。然后,您可以从插入VM虚拟DVD驱动器的ISO文件外层复制可启动ISO映像。

结论

无论您使用哪种方法将文件复制到Hyper-V服务器,都不建议将其用于备份目的。这些方法不如专业的Hyper-V备份解决方案高效和可靠。当今的Hyper-V VM备份解决方案,如NAKIVO Backup & Replication,创建主机级备份,这些备份小巧、快速,且易于恢复数据。

Source:
https://www.nakivo.com/blog/copy-files-to-hyper-v-server/