如何在 Linux 主机和 KVM 中的 Windows 客户机之间共享文件夹
在本指南中，你将了解如何在 Linux 主机（例如使用 KVM 的 Fedora、Ubuntu 或 Linux Mint）下运行的 Windows 客户机之间共享文件夹。
共享 KVM
58.252.161.8
samba完事
来自广东江门的 Firefox 102.0|GNU/Linux 用户
2023-07-22T23:23:39.000
在本指南中，你将了解如何在 Linux 主机（例如使用 KVM 的 Fedora、Ubuntu 或 Linux Mint）下运行的 Windows 客户机之间共享文件夹。
![](/data/attachment/album/202307/22/155908ypin2xpzoxsrsx4n.jpg)



> 
> 在本指南中，你将了解如何在 Linux 主机（例如使用 KVM 的 Fedora、Ubuntu 或 Linux Mint）下运行的 Windows 客户机之间共享文件夹。
> 
> 
> 


[virt-manager](https://virt-manager.org/) 应用（带有 [libvirt](https://libvirt.org/manpages/libvirtd.html)）和软件包提供了一组灵活的工具来管理 Linux 中的虚拟机。它是自由开源的，用于 KVM 虚拟机和其他虚拟机管理程序。


在上一篇文章中，我解释了 [如何在 Linux 客户机和 Linux 主机之间共享文件夹](https://www.debugpoint.com/share-folder-virt-manager/)。然而，当你尝试使用 Windows 客户机和 Linux 主机创建共享文件夹时，这是一个有点困难和复杂的过程。因为两种操作系统的工作方式不同，需要进行大量配置。


按照下面提到的说明在 Windows 客户机和 Linux 主机之间共享文件夹。


### 关于 virtiofs 的说明


共享文件和文件夹由名为 virtiofs 的 libvirt 共享文件系统提供支持。它提供了访问主机上目录树的所有功能和参数。由于大多数 virt-manager 虚拟机配置都会转换为 XML，因此共享文件/文件夹也可以由 XML 文件指定。


注意：如果你正在寻求在**两台 Linux 计算机**（客户机和主机）之间使用 KVM 进行文件共享，请 [阅读此文](https://www.debugpoint.com/share-folder-virt-manager/)。


### 使用 KVM 在 Windows 客户机和 Linux 主机之间共享文件夹


以下说明假设你已在任何 Linux 主机的 virt-manager 中安装了 Windows。如果没有，你可以阅读有关如何在 Linux 中安装 Windows 的完整指南。


#### 在 virt-manager 中设置挂载标签


首先，确保你的客户虚拟机已关闭。从 virt-manager GUI 中，选择虚拟机并单击“<ruby> 打开 <rt>  Open </rt></ruby>”以调出控制台设置。


![打开控制台设置](/data/attachment/album/202307/22/160144l5di1ri15z3r1m16.jpg)


单击工具栏中显示虚拟硬件详细信息的图标。然后单击左侧面板上的“<ruby> 内存 <rt>  Memory </rt></ruby>”。


选择选项“<ruby> 启用共享内存 <rt>  Enable shared memory </rt></ruby>”。单击“<ruby> 应用 <rt>  Apply </rt></ruby>”。


确保 XML 在 XML 选项卡中显示 `<access mode="shared"/>`，如下所示。



```
<memoryBacking>
    <source type="memfd"/>
    <access mode="shared"/>
  </memoryBacking>

```

![启用共享内存](/data/attachment/album/202307/22/160156vo9l8zormqqz19ao.jpg)


单击底部的“<ruby> 添加硬件 <rt>  Add hardware </rt></ruby>”。


从添加新硬件窗口的左侧面板中选择“<ruby> 文件系统 <rt>  Filesystem </rt></ruby>”。


然后在详细信息选项卡中选择 “<ruby> 驱动 <rt>  Driver </rt></ruby>” 为 “virtiofs”。单击“<ruby> 浏览 <rt>  browse </rt></ruby> > <ruby> 浏览本地 <rt>  browse local </rt></ruby>”并从 Linux 系统中**选择主机路径**。


在“<ruby> 目标路径 <rt>  Target path </rt></ruby>”中，输入你想要的任何名称。它只是一个文件标签，将在挂载过程中使用。目标路径中的此名称将作为 Windows 中的驱动器挂载，即资源管理器中的我的电脑。


我已添加 “linux\_pictures” 作为目标挂载标签。


因此，如果我想访问图片文件夹（`/home/debugpoint/Pictures`），示例设置可能如下：


![为 Windows 添加文件系统挂载](/data/attachment/album/202307/22/160208f092xt7mzhkuuhpd.jpg)


单击“<ruby> 完成 <rt>  Finish </rt></ruby>”。


上述配置的 XML 设置如下。你可以在 XML 选项卡中找到它。



```
<filesystem type="mount" accessmode="passthrough">
  <driver type="virtiofs"/>
  <source dir="/home/debugpoint/Pictures"/>
  <target dir="linux_pictures"/>
  <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</filesystem>

```

在 virt-manager 主窗口中，右键单击 Windows 虚拟机，然后单击“<ruby> 运行 <rt>  Run </rt></ruby>”启动虚拟机。如果未显示虚拟机，请单击“显示图形控制台”（工具栏中的监视器图标）。


#### 设置 WinFSP – 适用于 Windows 的 FUSE


确保 Windows 虚拟机（客户机）正在运行。


首先，我们需要安装 WinFSP（Windows File System Proxy）– FUSE for Windows。这使你能够毫无困难地挂载任何类 UNIX 文件系统。


从客户 Windows 计算机打开 WinFSP 的 GitHub 页面。



> 
> **[下载 WinFSP 安装程序](https://github.com/winfsp/winfsp/releases/)**
> 
> 
> 


下载 WinFSP .msi 安装程序。


在 Windows 虚拟机上安装软件包。安装软件包时请确保选择 “Core”。完成安装。


![WinFSP 设置](/data/attachment/album/202307/22/160221j54oncm4g5kccord.jpg)


#### 创建 VirtIO-FS 服务


进入 `stable-virtio` 文件夹，从以下地址下载 `virtio-win-guest-tools.exe`。



> 
> **[下载 virtio-win-guest-tools](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/)**
> 
> 
> 


![下载客户机工具](/data/attachment/album/202307/22/160233qnjhhw1hl69hh6hh.jpg)


在 Windows 虚拟机上安装软件包。


![Virtio-Win-driver 安装](/data/attachment/album/202307/22/160247kq64a4ug47d6qqz8.jpg)


安装完成后，**重启** Windows 虚拟机。


重启后，在开始菜单中搜索打开“设备管理器”。


进入系统设备并查找 “VirtIO FS 设备”。它应该被识别并且驱动程序应该由 Red Hat 签名。


**注意**：（可选）如果你看到感叹号，即未检测到驱动程序，请按照 [此处](https://virtio-fs.gitlab.io/howto-windows.html) 说明下载 ISO 文件、安装它并手动检测驱动程序。


![Make sure the Virt IO driver is signed and installed](/data/attachment/album/202307/22/160258uvqkrqm0cjklvk8r.jpg)


打开开始菜单并搜索“服务”。


向下滚动找到 “VirtIO-FS Service”。右键单击并单击“开始”启动该服务。


或者，你可以以管理员身份从 PowerShell/命令提示符运行以下命令来启动服务。



```
sc create VirtioFsSvc binpath="C:\Program Files\Virtio-Win\VioFS\virtiofs.exe" start=auto depend="WinFsp.Launcher/VirtioFsDrv" DisplayName="Virtio FS Service"

```


```
sc start VirtioFsSvc

```

![启动 Virt IO 服务](/data/attachment/album/202307/22/160312j868t6fhtt58lox9.jpg)


服务启动后，打开资源管理器，你应该看到你在上面第一步中创建的挂载标签，该标签应映射为 Z 驱动器。见下图。


![挂载标签在 Windows 中映射为 Z 驱动器](/data/attachment/album/202307/22/160328m3jcqg9cltxcg3a3.jpg)


你现在可以根据需要使用修改后的权限访问整个 Linux 文件夹。


以下是在 Linux Mint 和 Windows 客户虚拟机中访问的同一文件夹的并排比较。


![访问和共享 Windows 客户机和 Linux 主机中的文件夹](/data/attachment/album/202307/22/160344cikhafybq7h9oacf.jpg)


### 总结


我希望你现在能够在 Windows 客户机和 Linux 主机系统之间共享文件夹。本文在 Linux Mint 中测试了上述方法。它应该也适用于 Ubuntu、Fedora。


如果上述方法有效，请在下面发表评论以造福他人。


### 参考


* <https://virtio-fs.gitlab.io/howto-windows.html>
* <https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/>
* <https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md>
* <https://github.com/virtio-win/kvm-guest-drivers-windows/issues/473>


*（题图：MJ/91c30453-5939-4368-b885-c4cb84e732bf）*




---


via: <https://www.debugpoint.com/kvm-share-folder-windows-guest/>


作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed/) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

