插件窝 干货文章 在 virt-manager 的主机和客户机之间共享文件夹

在 virt-manager 的主机和客户机之间共享文件夹

客户机 share 主机 Windows 887    来源:    2025-04-20

在 virt-manager 中实现主机和虚拟机之间的文件夹共享,主要有以下几种方法,具体选择取决于虚拟机的操作系统和需求:


方法 1: Virtio-FS (推荐用于 Linux 客户机)

适用场景:Linux 主机 + Linux 客户机(需内核 ≥5.4)
优势:高性能、原生支持、无需网络配置。

步骤

  1. 主机端准备

    • 确保主机内核支持 Virtio-FS: bash grep -i virtiofs /boot/config-$(uname -r)
    • 创建要共享的目录(如 /path/to/share)。
  2. 配置虚拟机 XML

    • 关闭虚拟机,在 virt-manager 中右键虚拟机 → OpenXML
    • <devices> 段添加以下内容: xml <filesystem type='mount' accessmode='passthrough'> <driver type='virtiofs'/> <source dir='/path/to/share'/> <target dir='shared_folder'/> </filesystem>
    • 保存并启动虚拟机。
  3. 客户机挂载

    • 在客户机中挂载共享文件夹: bash mkdir -p /mnt/share mount -t virtiofs shared_folder /mnt/share
    • 如需自动挂载,添加到 /etc/fstabbash shared_folder /mnt/share virtiofs rw,nofail 0 0

方法 2: 9P 文件系统 (通用但性能较低)

适用场景:支持 Plan 9 协议的客户机(如 Linux、某些 Windows 版本)。

步骤

  1. 主机端配置

    • 创建共享目录(如 /path/to/share)。
  2. 修改虚拟机 XML

    • <devices> 段添加: xml <filesystem type='mount' accessmode='mapped'> <source dir='/path/to/share'/> <target dir='shared_folder'/> </filesystem>
  3. 客户机操作

    • Linux 客户机bash mkdir /mnt/share mount -t 9p -o trans=virtio shared_folder /mnt/share
    • Windows 客户机:需安装 virtio-win 驱动中的 9P 支持。

方法 3: Samba/NFS (跨平台通用)

适用场景:需要跨操作系统(如 Windows 客户机)或网络共享。

步骤

  1. 主机端配置 Samba/NFS

    • Samba 示例bash sudo apt install samba sudo nano /etc/samba/smb.conf 添加配置: ini [share] path = /path/to/share browseable = yes read only = no guest ok = yes 重启服务: bash sudo systemctl restart smbd
  2. 客户机访问

    • Linux:挂载 Samba/NFS: bash sudo mount -t cifs //主机IP/share /mnt/share -o guest
    • Windows:通过文件资源管理器访问 \\主机IP\share

方法 4: SPICE WebDAV (适用于 Windows 客户机)

适用场景:使用 SPICE 协议且客户机为 Windows。

  1. 主机端:确保虚拟机配置中启用 SPICE WebDAV:

    <graphics type='spice'>
     <listen type='none'/>
     <channel name='org.spice-space.webdav.0' mode='secure'/>
    </graphics>
    
  2. 客户机:安装 spice-webdavd 并访问映射的网络驱动器。


常见问题排查

  1. 权限问题:确保主机共享目录权限开放(如 chmod 777 /path/to/share 临时测试)。
  2. SELinux:若启用,需添加上下文标签: bash sudo semanage fcontext -a -t virtiofs_t "/path/to/share(/.*)?" sudo restorecon -Rv /path/to/share
  3. Windows 驱动:从 virtio-win 官方 下载驱动。

总结建议

  • Linux ↔ Linux:优先使用 Virtio-FS(高性能)。
  • 跨平台:选择 Samba/NFSSPICE WebDAV(Windows)。
  • 旧版兼容:使用 9P(需客户机内核支持)。

根据实际需求选择最适合的方案即可!