Hyper-V 是一種超級監視器,運行於 Windows 上,可以直接在安裝它的機器上或遠程管理。通常,您需要將文件從 Hyper-V 服務器複製到虛擬機器,以及從服務器複製到虛擬機器。您不能只是將文件拖放到 Hyper-V VM 中,應該使用其他方法來複製文件。
例如,在 Hyper-V 中創建新的虛擬機器時,您需要在該虛擬機器上安裝操作系統。通常,這是通過掛載操作系統媒體的 ISO 安裝映像來完成的。為了將媒體傳送到 Hyper-V 主機,您必須將 ISO 文件複製到主機上,並在新的虛擬機器上安裝客戶操作系統。
本博客文章提供了6種方法來將文件複製到 Hyper-V 虛擬機器和 Hyper-V 服務器。請注意,這些方法也可以用於其他情況,例如從 Hyper-V 主機複製文件到 VM。
方法 1:如何使用 Hyper-V 主機上的文件共享複製文件
此方法涉及在 Hyper-V 主機上創建文件共享並將 ISO 映像或其他文件複製到此 SMB 文件共享。SMB 協議是 Windows 中的一種本地共享協議,但也支持 Linux 和其他操作系統。
如果建立了網絡連接,還可以使用此方法將文件複製到 Hyper-V 服務器從任何物理或虛擬機器。
- 為正在運行 Hyper-V 的機器啟用防火牆規則以啟用入站 SMB 連接。要在防火牆中啟用文件和打印機共享,請在 Hyper-V 主機上運行以下命令:
網路防護防火牆設定規則群組=”檔案及印表機共用” 新啟用=是
注意: 您可以 設定SMB檔案共用 並為所需的使用者設定適當的權限,僅共用所需的資料夾。
- 如果您在Windows機器上有圖形使用者介面(GUI),請在Windows檔案總管視窗的位址列中輸入共用路徑,以連接到Hyper-V主機上的遠端檔案共用。在此範例中,我們使用預設啟用的隱藏系統共用C$,用於管理目的。同樣地,您也可以連接到其他磁碟區,如D$、E$等。
\\10.10.10.31\c$\
注意: 檔案儲存在磁碟C:僅供示範用途。建議您使用另一個專用的分割區來儲存VM檔案、ISO映像、檔案共用和其他非系統資料。
- 瀏覽到您想要儲存ISO映像或您需要複製的其他檔案所在的目錄。如果該目錄尚未建立,您現在可以建立它。在我們的例子中,ISO檔案位於 C:\ISO_1\ 在我們的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 中运行此命令。
- 通过使用此网络路径,将所需的 ISO 文件(或其他文件)从您的本地计算机(在我们的情况下为 C:\data\shared01\)复制到 Hyper-V 主机。
- 将 ISO 映像复制到服务器后,我们可以将 DVD 驱动器指向映像文件并浏览到我们在 (C:) 驱动器根目录上创建的文件夹。
- 在将所有所需文件复制到您的 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客戶端OS的虛擬機器,除了使用SMB協議之外,您還有另一個選項。您可以使用SSH進行安全的Hyper-V檔案傳輸網絡。
方法3:透過RDP進行Hyper-V檔案傳輸
如果您的Hyper-V伺服器在具有GUI的Windows機器上運行,您可以透過RDP(遠端桌面協議)連接到此主機,並將本地機器的本地磁碟附加到複製所需的檔案。為此,您需要在目標伺服器上啟用遠端桌面連接。
您可以使用此方法從另一台物理或虛擬Windows機器複製檔案到Hyper-V伺服器。
- 要啟用遠端桌面連接,請前往開始 > 設定 > 系統 > 遠端桌面並啟用遠端桌面。
- 運行 Windows 遠端桌面客戶端,其位置為 %windir%\system32\mstsc.exe
在命令行中輸入 mstsc 或在 執行 對話框中輸入並按下 Enter。
- 輸入遠端計算機的 IP 地址或主機名(在我們的示例中,這是具有 IP 地址 10.10.10.31 的 Hyper-V 主機)和用戶名。 您可以以完整格式輸入用戶名(domain\user 或 computer\user)。
- 轉到 本地資源 選項卡並點擊 更多。
- 選擇您要從計算機映射到遠端主機的本地資源(在我們的示例中,遠端主機是 Hyper-V 主機)。 展開 驅動器 並選擇所需的磁盤驅動器。 所需文件位於我們計算機上的磁盤 E:\,因此我們選擇將磁盤 E: 映射到我們的 RDP 連接。
- 點擊 確定 保存設置,然後點擊 連接。
建立遠端桌面會話後,打開遠端計算機的 Windows Explorer 中的 我的電腦 或 此電腦。 您應該看到從本地計算機映射到遠端計算機的映射磁盤驅動器(在下面的截圖中為 SERVER01-DC 上的 E)。 瀏覽此映射驅動器上所需的文件並將其複製到您的 Hyper-V 主機。
如果虛擬機器連接到網絡,此方法也適用。
方法 4:使用 PowerShell CMDlet 進行 Hyper-V 文件傳輸
PowerShell 4.0及更高版本具有一个有用的cmdlet,允许您在Hyper-V主机和虚拟机之间没有网络连接并且无需配置防火墙的情况下,将文件从主机复制到虚拟机。
让我们看看如何在PowerShell中将文件复制到Hyper-V虚拟机而不使用网络。
- 在虚拟机上启用Guest services。虚拟机的客户操作系统中必须安装集成服务。
Guest services是Hyper-V集成服务的一部分,但默认情况下未启用。要启用Guest services,请打开VM settings,在VM设置窗口的左窗格中选择Integration Services,并选择Guest services复选框。
在PowerShell中为VM启用Guest services:
Enable-VMIntegrationService -VMName VM1 -Name ‘Guest Service Interface’
- 您可以在PowerShell中检查Guest services功能是否已启用:
Get-VMIntegrationService -name Guest* -VMName VM1,VM2
其中VM1,VM2是虚拟机的名称
- 如果状态是未联系,您需要更新虚拟机并在客户操作系统中安装集成服务。
- 如果状态是False,您可以启用所需的客户服务接口:
Enable-VMIntegrationService -name Guest* -VMName win10preview -Passthru
- 使用以下命令进行从 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到主機和虛擬機
這個方法的想法是創建一個VHDX虛擬磁碟,可以掛載到Hyper-V主機和虛擬機。您可以將所需的文件複製到這個虛擬磁碟,將磁碟掛載到需要的機器上,並從虛擬磁碟複製文件。
我們在這個示例中使用Windows Server 2019。在計算機管理中可以創建VHDX虛擬磁碟,不僅在配置VM時在Hyper-V管理員中。
- 打開計算機管理視窗。您可以通過按Win+R打開運行對話框,運行compmgmt.msc命令。
- 進入儲存> 磁碟管理在計算機管理視窗中。
- 右鍵點擊磁碟管理,在上下文菜單中點擊創建VHD。
- 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.
- 右键单击磁盘管理中的此VHDX虚拟硬盘,然后单击初始化磁盘。
或者,如果您喜欢使用PowerShell,则列出所有已挂载的磁盘,以确定需要初始化的虚拟磁盘的编号:
Get-Disk
- 系统会自动选择您的磁盘。选择分区样式。我们使用MBR(主引导记录)以获得更好的兼容性。单击确定。
或者,对于那些使用PowerShell的人,命令包括虚拟磁盘的编号和分区样式:
Initialize-Disk 1 -PartitionStyle MBR
- 在Hyper-V主机上已初始化的虚拟磁盘上创建一个新卷(分区)。此分区还将在Windows VM中可见(或者可以使用NTFS文件系统的Linux中可见)。
- 新的簡單卷精靈打開。點擊下一步。
- 指定卷大小。將整個磁盤大小用於此卷。
- 指定驅動器字母,例如,H:
- 格式化分區。選擇NTFS文件系統,保留默認的分配單位大小,並輸入卷標籤(例如,Copy-Files)。選擇執行快速格式化复选框。
或者,您可以使用以下 PowerShell 命令來創建和格式化卷:
New-Partition -DiskNumber 1 -UseMaximumsize -AssignDriveLetter
Format-Volume -DriveLetter H -FileSystem NTFS -Full -Force
- 完成精靈後,您應該在 Hyper-V 主機機器的 Windows Explorer 中看到已掛載的虛擬磁碟。
- 將所需文件複製到位於虛擬磁碟上的分區。我們複製file01.txt,如下面的截圖所示。
- 在複製完所有需要的文件到虛擬磁碟後,我們必須從我們的 Hyper-V 主機卸載虛擬磁碟。
右鍵單擊從 VHDX 虛擬磁碟掛載的適當分區,然後在上下文菜單中單擊退出。
或者,在 PowerShell 中從主機機器卸載虛擬磁碟的命令:
dismount-VHD -path C:\Hyper-V\data-temp.vhdx
- 您可以將此為 Hyper-V 文件傳輸創建的虛擬磁碟從 Hyper-V 主機掛載到客戶機,反之亦然。讓我們將已寫入文件的虛擬磁碟掛載到虛擬機器。
- 選擇所需的虛擬機並在 Hyper-V 管理員中打開 VM 設定。
- 在 VM 設定視窗的左窗格中選擇所需的虛擬磁碟控制器。
- 選擇 硬碟 並點擊 新增。
- 選擇 虛擬硬碟 並點擊 瀏覽 以將現有的虛擬硬碟添加到 VM 中。
- 指定 VHDX 路徑。在我們的情況下,路徑是 C:\Hyper-V\data-temp.vhdx
- 點擊 確定 以保存設定。
或者,這是將現有虛擬硬碟添加到 Hyper-V VM 配置的 PowerShell 命令:
Add-VMHardDiskDrive -VMName VM2 -Path C:\Hyper-V\data-temp.vhdx
- 啟動附加虛擬硬碟的虛擬機器在您的 Hyper-V 主機上。
- 登錄到客戶操作系統並檢查虛擬硬碟上的卷是否已自動掛載。否則,轉到 電腦管理 > 磁碟管理 並為需要從 Hyper-V 主機傳輸到 VM 的文件分配一個磁碟字母。
- 從附加的虛擬硬碟將所需的文件複製到虛擬機器。
方法 6:使用增強會話模式的 VMConnect
VMConnect,或虛擬機器連線,是一個內建的 Hyper-V 工具,用於管理虛擬機器。作為虛擬機器的監視器運作的螢幕,您可以看到如何使用鍵盤和滑鼠進行導覽,這是 VMConnect 工具的一部分。使用增強會話模式的 VMConnect 更加方便並提供更多功能。
增強會話模式允許您在連接到虛擬機器時自定義螢幕解析度,並附加在運行 Hyper-V 管理員以管理虛擬機器的主機上的本地資源。本地資源的附加方式與使用遠端桌面連線訪問遠端主機或虛擬機器時類似。
要啟用增強會話模式:
- 在 Hyper-V 管理員中右鍵單擊您的 Hyper-V 主機名稱,在上下文菜單中,點擊Hyper-V 設定。
- 在左側面板中點擊增強會話模式
- 選擇使用增強會話模式核取方塊
或者在 PowerShell 中啟用增強會話模式:
Set-VMHost -EnableEnhancedSessionMode $True
一旦啟用增強會話模式並為來賓虛擬機器和 Hyper-V 伺服器配置好一切,您可以啟動虛擬機器並使用 VMConnect 連接到該虛擬機器。
如果啟用了增強會話模式,您應該看到選擇顯示解析度的視窗。在此視窗中點擊顯示選項。
選擇本機資源選項卡。在本機設備和資源部分中點擊更多。
選擇您的 Hyper-V 主機上可用的磁碟,您想要連接到虛擬機器。
方法 7:使用 ISO 映像進行 Hyper-V 檔案傳輸
另一種將檔案複製到 Hyper-V 虛擬機器的方法類似於使用 VHDX 虛擬磁碟。但是,這個方法只能單向進行(將 Hyper-V 檔案複製到 VM),並且從 VM 存取檔案是唯讀的。
如果您有一個可以編輯和寫入 ISO 檔案的應用程式,您可以將所需的檔案寫入您的 Hyper-V 主機上的 ISO 映像,並將此 ISO 映像作為虛擬 DVD 媒體插入 VM 中。
如果您需要將可啟動的 ISO 映像複製到您的虛擬機器(例如,在測試嵌套虛擬化時),您應該創建一個新的空的非可啟動 ISO 映像檔案,並將可啟動的 ISO 映像檔案添加到此映像中。然後,您可以從插入到 VM 的虛擬 DVD 驅動器中的外部 ISO 檔案中複製可啟動的 ISO 映像。
結論
無論您使用哪種方法將檔案複製到 Hyper-V 伺服器,都不建議將其用於備份目的。這些方法不如專業的 Hyper-V 備份解決方案高效和可靠。今天的 Hyper-V VM 備份解決方案,如 NAKIVO 備份與複製,創建主機級備份,這些備份體積小,速度快,並且易於從中恢復數據。
Source:
https://www.nakivo.com/blog/copy-files-to-hyper-v-server/