运行中Arch系主机QEMU/KVM Win10虚拟机文件交换问题求助
问题描述
- 系统环境:基于Arch的Garuda Linux,Xfce桌面,硬件为Lenovo Thinkpad T480(i7 8核、32GB内存)
- 操作流程:
- 安装QEMU与Virt-Manager:
sudo pacman -S qemu virt-manager sudo systemctl start virtlogd.service sudo systemctl enable libvirtd.service sudo virsh net-start default sudo pacman -S ebtables dnsmasq - 创建Windows 10虚拟机,分配4核、16GB内存,安装
virtio-win-0.1.229.iso虚拟设备驱动 - 安装libguestfs-tools并挂载虚拟机镜像:
sudo pacman -S libguestfs sudo mkdir /mnt/sda2 sudo guestmount -a /var/lib/libvirt/images/win10.qcow2 -m /dev/sda2 /mnt/sda2
- 安装QEMU与Virt-Manager:
- 遇到的问题:通过
guestmount挂载镜像后,虚拟机无法启动(提示镜像被占用),需实现虚拟机运行时的主机与虚拟机目录互访。
可行的虚拟机运行时文件共享方法
1. 使用VirtioFS(推荐,性能最优)
这是QEMU/KVM官方推荐的高性能共享方案,适配Windows虚拟机:
- 主机端操作:
- 在Virt-Manager中打开Win10虚拟机的设置,切换到**“磁盘”选项卡,点击“添加”**
- 选择**“文件系统”**类型,在“源路径”中选择主机需要共享的目录,“目标路径”填写自定义名称(如
hostshare) - 确保“驱动”选择
virtiofs,保存设置后启动虚拟机
- 虚拟机端操作:
- 打开设备管理器,找到“其他设备”下的未知设备,右键选择“更新驱动程序”
- 浏览到
virtio-win-0.1.229.iso镜像中的virtiofs目录(对应Windows版本的子目录),完成驱动安装 - 安装完成后,打开“此电脑”即可看到共享的主机目录
2. 使用Virt-Manager自带的“共享文件夹”(基于Samba)
适合不需要极致性能的场景:
- 主机端操作:
- 在Virt-Manager的虚拟机设置中,切换到**“共享文件夹”选项卡,点击“添加”**
- 设置共享名称、主机目录路径,勾选“自动挂载”和“启动时连接”
- 虚拟机端操作:
- 打开Windows的“文件资源管理器”,在地址栏输入
\\192.168.122.1\共享名称(192.168.122.1是默认的libvirt虚拟网关地址) - 输入主机的用户名和密码即可访问,也可将该映射设置为网络驱动器
- 打开Windows的“文件资源管理器”,在地址栏输入
3. 关于guestmount的说明
guestmount是离线挂载虚拟机镜像的工具,挂载后镜像会被锁定,因此虚拟机无法启动——这不是权限问题,是工具本身的设计限制。如果需要用guestmount传输文件,必须先关闭虚拟机,操作完成后卸载镜像:
sudo guestunmount /mnt/sda2
内容的提问来源于stack exchange,提问作者Daniel Wulf
相关产品推荐
相关产品推荐

