Sound! Euphonium
531 words
3 minutes
KVM宿主机文件共享
virtio-9p
宿主机
图形化
Powered By Virtual Machine Manager
命令行
sudo virsh list --all
展示全部虚拟机
sudo virsh edit vm-name
编辑vm-name
虚拟机xml配置文件
添加内容
<device><!--其他内容--> <filesystem type='mount' accessmode='mapped'> <source dir='/home/tomato/KVM_Share'/> <target dir='kkvm'/> <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/> </filesystem><!--其他内容--></device>
type="mount"
指定共享方式为 目录挂载(对应 9p 文件系统)accessmode="mapped"
定义权限映射模式:mapped
:将虚拟机内的文件 UID/GID 映射到宿主机(默认使用nobody
用户权限)passthrough
:直接使用宿主机文件的 UID/GID(需宿主机权限配置)squash
:所有访问降权到宿主机的一个低权限用户(如nobody
)
source dir="/home/tomato/KVM_Share"
宿主机上要共享的 绝对路径。确保该目录存在且虚拟机有权限访问(可通过chmod
调整)target dir="kkvm"
虚拟机内部的 挂载标签(mount_tag
),不是实际路径。在虚拟机内挂载时需指定此标签name="fs0"
设备的逻辑名称(Libvirt 内部管理用),通常可省略type="pci"
指定设备挂载到虚拟机的 PCI 总线上bus="0x07"
,slot="0x00"
,function="0x0"
定义设备在虚拟机 PCI 总线中的具体位置(需避免与其他设备冲突)
虚拟机
相关依赖
lsmod | grep 9p # 应输出 `9pnet_virtio` 和 `9pnet`
example:┌──(kali㉿kali)-[~/kkvmShare]└─$ lsmod | grep 9p9p 81920 19pnet_virtio 20480 19pnet 114688 2 9p,9pnet_virtionetfs 573440 2 9p,9pnet
挂载
sudo mount -t 9p -o trans=virtio,version=9p2000.L kkvm /home/kali/kkvmShare
-t 9p
:指定文件系统类型为 9p(Plan 9 文件系统),KVM/QEMU用于宿主机-虚拟机共享目录的协议。trans=virtio
使用 virtio 作为传输协议version=9p2000.L
指定 9p 协议版本为9p2000.L
(最新稳定版,支持 Linux 扩展特性如符号链接、权限保留等) _其他可选版本:9p2000.u
(Unix 兼容)、9p2000
(基础版)kkvm
:虚拟机配置中定义的 挂载标签(<target dir="kkvm"/>
),对应宿主机共享目录的标识符。
必须与 QEMU 启动参数或 Libvirt XML 中的mount_tag
一致。/home/kali/kkvmShare
:挂载点:虚拟机内用于访问共享目录的本地路径(需提前创建)
自动挂载
编辑/etc/fstab
添加如下内容
kkvm /home/kali/kkvmShare 9p trans=virtio,version=9p2000.L 0 0
virtiofs
累了 下次再写
KVM宿主机文件共享
https://kmk.moe/posts/linux/kvmsharefiles/