使用 virt-manager 在 Linux 主机和 Windows 客户机之间共享文件?

使用 virt-manager 在 Linux 主机和 Windows 客户机之间共享文件?

是否可以使用 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:虚拟机共享文件系统”作者:Stefan Hajnoczi,Fosdem20(PDF/完整的演示

答案4

我相信@slm 已经提供了最好的答案。然而,还有另一个用例。不过,这种替代方案有点麻烦。

粗略的指南。不要考虑这些明确的命令:

  1. 创建映像文件(ms-dos 软盘或 ISO-9660 CD)
  2. 使用文件系统格式化图像,例如 mkfs.msdos
  3. 根据需要复制和操作图像上的文件,例如使用 mcopy 等
  4. 将映像挂载到来宾 VM CD-ROM 或软盘驱动器上

这并不理想,但如果您的 Guest VM 不允许 dom0 和 Guest 之间的网络协议连接(例如在关闭的 VPN 会话期间),它可以工作。

更多信息请点击这里:

https://stackoverflow.com/q/11202706/3407600

相关内容