是否可以使用 virt-manager 中的“文件系统直通”虚拟硬件选项与 Windows 客户机共享 Linux 主机上的文件夹?我找到了一些关于如何在 Linux 客户机上执行此操作的教程,但是当我在 Windows 客户机上尝试此操作时,我在尝试启动 VM 时收到以下错误消息:
Error starting domain: Unable to read from monitor: Connection reset by peer
Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 100, in cb_wrapper
callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/asyncjob.py", line 122, in tmpcb
callback(*args, **kwargs) File "/usr/share/virt-manager/virtManager/domain.py", line 1210, in startup
self._backend.create() File "/usr/lib64/python2.7/site-packages/libvirt.py", line 698, in create
if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer
我尝试寻找一些文档,但我所能找到的只是链接到常见问题解答和“一些屏幕截图”的官方页面。
答案1
我认为使用 Windows 来宾这是不可能的。我通常在 Linux KVM 主机上设置一个 Samba 服务器,然后使用该服务器将一个文件夹共享给我的 KVM 来宾。
文件系统直通
有关与 KVM 来宾 (Linux) 共享 KVM 主机目录的文档可在 virt-manager 网站上找到。该页面的标题是:与访客共享主机文件的示例。
设置桑巴
linux-kvm 网站还包含设置 Samba 的说明。该文档可在此处获取,标题为:提示:如何使用 Samba 与 Windows 来宾共享 Linux 主机上的文件。
答案2
Gnome 和 KDE 桌面环境的默认文件管理器都可以使用 SMB 协议轻松访问 Windows 共享资源。
您不需要在 Linux 主机上安装 samba 服务器因为Windows操作系统已经内置了Samba通信协议。
假设您的来宾操作系统是“视窗XP” 例如,选择您要共享的文件夹或为此目的创建一个文件夹,例如“hostshare”,然后右键单击它->”特性”->”分享“ 标签->选择: ”在网络上共享此文件夹“ 和 ”允许网络用户更改我的文件”。
此时请确保 Windows 防火墙允许访问共享文件和打印机资源。去 ”开始菜单”->”设置”->”控制面板”->”视窗防火墙”->”例外情况“ 标签->选择:->“文件和打印机共享”。
确保 Windows 来宾虚拟机可以通过网络看到 Linux 主机。因此,从 Windows 命令行输入:ping 10.0.0.12
在本例中(作为示例)“10.0.0.12”是主机 IP 地址;你必须把它改成你自己的。如果您没有收到 echo 的响应,则必须进行故障排除。
并从 Linux 命令行执行相同的操作:ping -c3 192.168.122.216
,其中这些数字(作为示例)属于分配给来宾 VM 的 virt-IP 地址;您必须将其更改为您自己的。
要获取 Windows IP 地址,请运行以下命令:ipconfig
要获取 Linux IP 地址,运行以下命令可能会帮助您:
$ ifconfig
$ ip a
$ ip r
$ hostname -I
$ hostname -i
从 Linux 主机打开“鹦鹉螺“然后前往”文件”->”连接到服务器”->进入 ”服务器地址” 盒子类型:smb://192.168.122.216
->”连接”。Nautilus
窗口将打开,其中包含 Windows 内置 Samba 服务器的可浏览资源。您将能够查看并访问“主机共享" windows 文件夹的内容。仅此而已!
答案3
您现在可以使用virtio-fs以在来宾上实现主机导出的文件系统的有效共享。它非常高效,因为它依赖于主机和来宾之间的共享内存,而不是某些基于网络的解决方法。
最低先决条件(在撰写本文时)
- 主持人:
- 内核 5.4、QEMU 5.0 和 libvirt 6.2 以及
- 用于来宾 RAM 分配的共享内存机制,例如大页或文件支持内存。
- 客人:
- Linux:内核 5.4
- 视窗:WinFSP(Windows 文件系统代理)
我已成功将其部署在托管 20.04 来宾的 Ubuntu 20.10 服务器上(此组合满足上述最低先决条件),RAM 由大页支持。
一些操作方法
- 与 Virtio-FS 共享文件-- 官方操作方法;恕我直言,写得很好,很容易理解
- QEMU/KVM + virtio-fs - 与虚拟机共享主机目录——综合博客文章;考虑安全最佳实践,展示文件支持内存的使用。
- Virtio-fs 太棒了! (加上我的设置方式)-- 简短的操作方法;显示大页支持内存的使用。
深入的背景介绍
答案4
我相信@slm 已经提供了最好的答案。然而,还有另一个用例。不过,这种替代方案有点麻烦。
粗略的指南。不要考虑这些明确的命令:
- 创建映像文件(ms-dos 软盘或 ISO-9660 CD)
- 使用文件系统格式化图像,例如 mkfs.msdos
- 根据需要复制和操作图像上的文件,例如使用 mcopy 等
- 将映像挂载到来宾 VM CD-ROM 或软盘驱动器上
这并不理想,但如果您的 Guest VM 不允许 dom0 和 Guest 之间的网络协议连接(例如在关闭的 VPN 会话期间),它可以工作。
更多信息请点击这里: