如何在 KVM 中配置虚拟机的共享文件夹?

问题浏览数Icon
26
问题创建时间Icon
2025-03-01 04:03:00
回答 | 共 5 个
作者头像
snowwhisper01

在 KVM 中配置虚拟机的共享文件夹,可以通过使用 Virtio 文件系统 (virtiofs) 或者 Samba 来实现。首先,在宿主机上创建共享目录,然后在虚拟机的配置中添加共享文件夹的相关设置。

作者头像
lingfeng99

在 KVM (基于内核的虚拟机) 中配置虚拟机的共享文件夹可以方便主机与虚拟机之间的文件传输。通常,我们可以通过以下步骤来实现共享文件夹的配置:

  1. 准备工作

    • 确保你的服务器已经安装了 KVM 和 libvirt。
    • 确保你有权限访问 KVM 和管理虚拟机。
    • 确定共享文件夹的路径,例如:/path/to/shared_folder
  2. 创建共享文件夹

    • 在主机操作系统上,创建需要共享的文件夹(如果尚未创建):
      mkdir /path/to/shared_folder  
      chmod 777 /path/to/shared_folder  
    • 确保该文件夹的权限设置正确,以便虚拟机可以访问。
  3. 定义共享文件夹的 XML 配置

    • 使用 virsh 编辑虚拟机的 XML 配置:
      virsh edit <vm_name>  
    • <devices> 部分添加以下内容:
      <filesystem type='mount' accessmode='readwrite'>  
      <driver type='virtfs'/>  
      <source dir='/path/to/shared_folder'/>  
      <target dir='shared_folder'/>  
      </filesystem>  
    • 保存并退出编辑器。
  4. 安装 virtiofs 驱动 (如果需要)

    • 在虚拟机内部安装 virtiofs 驱动,通常这可以通过安装具体的操作系统包实现,确保虚拟机可以识别 virtiofs:
      • 对于 CentOS/Fedora 系统可以使用:
        dnf install qemu-guest-agent  
      • 对于 Ubuntu 系统可以使用:
        apt install qemu-guest-agent  
  5. 启动虚拟机

    • 启动或重启虚拟机。
      virsh start <vm_name>  
  6. 挂载共享文件夹

    • 登录到虚拟机,创建一个挂载点,例如:
      mkdir /mnt/shared  
    • 使用以下命令挂载共享文件夹:
      mount -t virtiofs shared_folder /mnt/shared  
    • 如果没有错误,当前共享文件夹的内容现在应该可以通过 /mnt/shared 访问。
  7. 自动挂载 (可选)

    • 如果希望在每次虚拟机启动时自动挂载共享文件夹,可以在 /etc/fstab 文件中添加以下行:
      shared_folder /mnt/shared virtiofs defaults 0 0  

通过以上步骤,你就可以在 KVM 中成功配置虚拟机的共享文件夹。不论是数据备份还是文件共享,都是一个非常有效的解决方案。

作者头像
mocun110

要在 KVM 中配置虚拟机的共享文件夹,您可以使用 Virtio 文件系统 (9p-virtio)。以下是简单步骤:1) 确保安装 qemu-guest-agent。2) 使用 -virtfs 参数在启动虚拟机时指定共享目录,例如:-virtfs local,id=shared_mount,path=/path/to/shared,dmode=0777,fmode=0777,mount_tag=shared_mount。3) 在虚拟机内部,使用 mount -t 9p -o trans=virtio shared_mount /mnt 挂载共享目录。

延伸知识点:Virtio 文件系统

Virtio 文件系统是一种用于 KVM 和 QEMU 的高效、可扩展的虚拟文件系统。它允许虚拟机直接访问宿主机的文件系统,实现高效的文件共享和数据交换。Virtio 文件系统的优势在于低延迟和高性能,适合需要频繁读写的应用场景。通过指定共享目录和所需权限设置,可以灵活控制数据访问。

总体而言,Virtio 文件系统是实现 KVM 虚拟环境中高效文件共享的重要工具。

作者头像
tinywhale88

为什么不考虑使用 Docker 等容器技术来实现文件共享,这样可以提高隔离性和灵活性?

作者头像
fengyanlu99

在 KVM 中配置虚拟机的共享文件夹可以通过以下步骤实现:

  1. 安装必要的包:确保你的主机系统安装了 virtiofsd,这个工具允许在主机和虚拟机之间共享文件夹。如果未安装,可以通过包管理工具进行安装。

  2. 创建共享目录:在主机上创建一个想要共享的目录,比如 /mnt/shared

    mkdir /mnt/shared
  3. 配置虚拟机:可以在虚拟机的 XML 配置文件中添加共享文件夹。使用 virsh edit vm_name 命令打开 XML 配置文件。在 <devices> 标签内添加如下配置:

    <filesystem type='mount' accessmode='passthrough'>
     <source dir='/mnt/shared'/>
     <target dir='hostshare'/>
    </filesystem>

    这代表将主机的 /mnt/shared 目录共享为虚拟机内部的 /mnt/hostshare 目录。

  4. 启动虚拟机:启动或重启虚拟机,让配置生效。

  5. 挂载共享文件夹:在虚拟机内部,使用以下命令挂载共享文件夹:

    mkdir -p /mnt/hostshare
    mount -t virtiofs hostshare /mnt/hostshare

    这将会把主机的共享目录挂载到虚拟机的指定目录中。

  6. 自动挂载(可选):如果希望每次启动虚拟机时自动挂载,可以在 /etc/fstab 文件中添加相应的配置。

    hostshare /mnt/hostshare virtiofs defaults 0 0

通过以上步骤,就可以在 KVM 中成功配置并使用共享文件夹了。这种方式非常适合需要频繁交换文件的开发环境和测试环境。