Cloud Hypervisor 使用 virtio-fs 实现宿主机与虚拟机目录共享:从 virtiofsd 配置到内核挂载全指南

发布时间:2026/11/7 3:36:50

Cloud Hypervisor 使用 virtio-fs 实现宿主机与虚拟机目录共享:从 virtiofsd 配置到内核挂载全指南 Cloud Hypervisor 使用 virtio-fs 实现宿主机与虚拟机目录共享从 virtiofsd 配置到内核挂载全指南【免费下载链接】cloud-hypervisorA Virtual Machine Monitor for modern Cloud workloads. Features include CPU, memory and device hotplug, support for running Windows and Linux guests, device offload with vhost-user and a minimal compact footprint. Written in Rust with a strong focus on security.项目地址: https://gitcode.com/GitHub_Trending/cl/cloud-hypervisor导读本文介绍如何在 Cloud Hypervisor 中通过 virtio-fs即 vhost-user-fs将宿主机目录共享给虚拟机使用。virtio-fs 是由 VIRTIO 规范定义的虚拟设备它借助 vhost-user 协议把文件系统后端模拟卸载到宿主机上的独立守护进程 virtiofsd 中运行。读完本文你将掌握 virtiofsd 的构建与运行参数cache 模式、线程池大小、Cloud Hypervisor--fs命令行配置tag、socket、队列参数、虚拟机内mount -t virtiofs的挂载流程以及 DAX 特性的可用性边界并能结合源码理解每个参数背后的校验逻辑与默认值。virtio-fs 是什么在虚拟化场景中宿主机与客户机之间的目录共享一直是高频需求——无论是开发调试、日志收集还是容器编排中的持久化存储都需要一种安全、高效、低开销的共享方案。virtio-fs也称vhost-user-fs正是为此设计的 VIRTIO 虚拟设备它允许任意 VMM虚拟机监视器提供文件系统共享能力。它的核心设计在于前端/后端分离设备的前端virtio 队列与 PCI 设备由 VMM 侧实现而后端真实文件系统的 I/O 模拟则通过vhost-user协议委托给宿主机上一个专用守护进程执行。这种 offload 架构让文件系统实现与 VMM 解耦也便于复用成熟的 FUSE/文件系统栈。在 Cloud Hypervisor 仓库中前端设备实现位于 virtio-devices/src/vhost_user/fs.rs设备类型注册为VirtioDeviceType::Fs并通过 vmm/src/device_manager.rs 的make_virtio_fs_device()在 VM 启动时实例化。前置条件守护进程 virtiofsdvirtio-fs 依赖 vhost-user 协议即设备模拟后端由宿主机上一个专用进程承担这个进程就是virtiofsd。在启动 Cloud Hypervisor 之前必须先确保 virtiofsd 已构建并运行在宿主机上。构建 virtiofsdgit clone https://gitlab.com/virtio-fs/virtiofsd pushd virtiofsd cargo build --release sudo setcap cap_sys_adminepi target/release/virtiofsd说明setcap cap_sys_adminepi为 virtiofsd 授予必要的CAP_SYS_ADMIN能力使其能够在宿主机上完成与 VMM 共享内存相关的操作。创建共享目录mkdir /tmp/shared_dir运行 virtiofsd./virtiofsd \ --log-level debug \ --socket-path/tmp/virtiofs \ --shared-dir/tmp/shared_dir \ --cachenever \ --thread-pool-size$N几个关键参数说明--socket-pathvhost-user 的 unix socket 路径Cloud Hypervisor 侧--fs socket必须与之一致--shared-dir宿主机上要共享出去的目录例如/tmp/shared_dir--cache控制宿主页面缓存page cache的使用策略--thread-pool-sizevirtiofsd 内部 I/O 线程池大小。关于--cache模式cachenever是与 Cloud Hypervisor 配合时的默认推荐选项。它禁止使用宿主页面缓存从而降低对宿主机内存的占用减少单台宿主机可承载的虚拟机密度被缓存拖累的风险——这正是尽可能小 footprint的体现有助于在一台宿主机上启动更多虚拟机。cachealways允许使用宿主页面缓存guest 的工作负载可能获得更好的性能但代价是宿主机内存 footprint 上升。关于--thread-pool-size该参数控制 virtiofsd 派生多少个 I/O 线程。对于 NVMe 这类非常快速的存储线程数不足会成为瓶颈只有派生足够的工作线程才能获得接近原生文件系统的性能。内核支持virtio-fs 需要 guest 内核提供virtiofs文件系统驱动。现代 Linux 内核至少 v5.10已原生支持 virtio-fs带额外补丁的旧内核不受支持。同时Cloud Hypervisor 侧要求 guest 镜像内包含足够新的内核无论采用直接内核引导direct kernel boot还是 EFI 固件引导都可以配合 virtio-fs 使用。用 Cloud Hypervisor 共享目录启动虚拟机virtiofsd 运行后在 Cloud Hypervisor 命令行使用--fs选项即可为虚拟机挂载该共享设备。这里有一个硬性前提--fs正常工作要求--memory开启sharedon以便在 virtiofsd后端进程与 VMM 之间进行跨进程内存共享。假设宿主机上已有focal-server-cloudimg-amd64.raw磁盘镜像和vmlinux内核一个可运行的 Cloud Hypervisor 命令如下./cloud-hypervisor \ --cpus boot1 \ --memory size1G,sharedon \ --disk pathfocal-server-cloudimg-amd64.raw,image_typeraw \ --kernel vmlinux \ --cmdline consolehvc0 root/dev/vda1 rw \ --fs tagmyfs,socket/tmp/virtiofs,num_queues1,queue_size512其中--fs的参数完整语法定义于 vmm/src/config.rs 的FsConfig::SYNTAX为tagtag_name,socketsocket_path,num_queuesnumber_of_queues,queue_sizesize_of_each_queue,iddevice_id,pci_segmentsegment_id,pci_device_idpci_slot各参数解析与校验逻辑均可从源码得到印证vmm/src/config.rsFsConfig::parse/validate参数含义默认值与约束tag共享文件系统的标签guest 挂载时使用必填长度不能超过VIRTIO_FS_TAG_LEN36 字节超长报ParseFsTagTooLong该常量定义于 virtio-devices/src/vhost_user/fs.rssocketvhost-user socket 路径必填必须与 virtiofsd--socket-path一致Landlock 沙箱模式下会为它授予rw访问规则见 vmm/src/vm_config.rsApplyLandlock for FsConfignum_queues请求队列数量默认1不能超过--cpus boot指定的 vCPU 数否则报TooManyQueuesqueue_size每个 virtio 队列的项数默认1024必须是 2 的幂validate_queue_size否则报InvalidQueueSizeid设备 ID可选缺省时由make_virtio_fs_device()自动生成前缀见FS_DEVICE_NAME_PREFIXpci_segment/pci_device_idPCI 段与槽位可选用于多 PCI 段拓扑中的设备定位iommu不支持若开启会返回IommuNotSupported校验错误默认值定义于 vmm/src/vm_config.rsdefault_fsconfig_num_queues() - 1、default_fsconfig_queue_size() - 1024并在 vmm/src/config.rs 的parse中通过unwrap_or_else兜底。队列数量背后的实现细节从源码看virtio-devices/src/vhost_user/fs.rsFs::new实际生效的 virtio 队列数为实际队列数 NUM_QUEUE_OFFSET(1) num_queues即除了--fs num_queues指定的请求队列外virtio-fs 规范还要求一个额外的队列通常承载高优先级请求/通知。同时设备在协商阶段会通告MQ多队列、CONFIGURE_MEM_SLOTS、REPLY_ACK、INFLIGHT_SHMFD、LOG_SHMFD、DEVICE_STATE等 vhost-user 协议特性并会查询后端virtiofsd支持的最大队列数如果请求的队列数超过后端能力会返回BadQueueNum错误并打印日志vhost-user-fs requested too many queues。另外需要留意--fs设备默认不开启 vhost-user 直通内存之外的访问平台特性force_access_platform仅在全局强制时才会置位VIRTIO_F_ACCESS_PLATFORM。在 guest 内挂载共享目录最后一步是在客户机内部使用virtiofs文件系统类型挂载共享目录mkdir mount_dir mount -t virtiofs myfs mount_dir/其中的tag此处为myfs必须与 Cloud Hypervisor 命令行--fs tag提供的一致两者对不上将无法正确找到设备。DAX 特性virtio-fs 的 DAX直接访问将宿主页面缓存以 mmap 方式暴露给 guest从而让 guest 直接访问文件数据页特性由于在 virtiofsd 一侧尚未稳定因此Cloud Hypervisor 中不可用。在 virtio-devices/src/vhost_user/fs.rs 的设备实现中也没有为 DAX 预留共享内存区域——cache字段与get_shm_regions()/userspace_mappings()相关的共享内存能力均围绕通用 vhost-user 机制设计而非 DAX 缓存窗口。选择cachenever也能进一步降低 host 内存占用从侧面弱化了在 Cloud Hypervisor 场景下对 DAX 的需求。更多资源以 virtio-fs 作为根文件系统启动 guest 的完整示例可参考 docs/virtiofs-root.md若需要了解 Cloud Hypervisor 中其他 vhost-user 后端块、网络等的通用协议处理可阅读 virtio-devices/src/vhost_user/vu_common_ctrl.rsFsConfig的解析单测含缺失tag/socket报错、多队列参数解析、非法配置拒绝等场景位于 vmm/src/config.rs 的fs_fixture及附近测试代码中可作为排查命令行参数问题的参考。【免费下载链接】cloud-hypervisorA Virtual Machine Monitor for modern Cloud workloads. Features include CPU, memory and device hotplug, support for running Windows and Linux guests, device offload with vhost-user and a minimal compact footprint. Written in Rust with a strong focus on security.项目地址: https://gitcode.com/GitHub_Trending/cl/cloud-hypervisor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/7 3:36:05

【AI教做人】动画帧分析-9月-记录动画原理+构图

可能会连续做几个月基础动画,每月分析一个动画 先模糊查找一个灌篮动画,很多概念,和原理也是模糊的 很多HR招了个人,其实根本不管这个新进员工死活,和他日常工作水平如何很多搞媒体的,挂 个社会科学头衔&…

2026/11/2 6:09:02

海康工业相机硬件触发+YOLOv5:产线实时检测实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 3:33:22

想考电工证要学哪些 2026河南最新政策下学历不高也能报名

想考电工证要学哪些 2026河南最新政策下学历不高也能报名 你是不是也担心学历不高报不上电工证?别急,2026年河南最新政策已经出台,对学历要求放宽了不少,只要你是年满18周岁、具备初中及以上学历,并且身体健康,就能报名参加低压或高压电工证…

2026/11/7 3:33:22

电工证复审考试操作郑州报考避坑指南:3步搞定,别再被中介骗钱

电工证复审考试操作郑州报考避坑指南:3步搞定,别再被中介骗钱 你是不是也在为电工证复审发愁?不知道去哪儿报名,怕被中介坑?别急,今天就给你一套 电工证复审考试操作 的完整流程,尤其是 郑州报考避坑指南 ,手把手教你避开那些让人头疼的陷阱。…

2026/11/7 3:33:22

59岁去考电工证怎么在河南转证?2026河南最新政策来了

59岁去考电工证怎么在河南转证?2026河南最新政策来了 之前考的证在外省能不能转过来?这是很多像你我这样年纪大了还想考证的朋友们最关心的问题。特别是在2026年河南最新政策出台后,关于证书转接、考试报名、年审等流程有了新的变化,今天我们就…

2026/11/7 3:33:22

烟台海阳快速出电工证怎么报名?怕被中介坑?这几点必须知道

烟台海阳快速出电工证怎么报名?怕被中介坑?这几点必须知道 不知道去哪报名怕被中介坑?你不是一个人。在烟台海阳,想快速出电工证的人不少,但真正知道怎么报名的却不多,尤其是一些新手,很容易被各种虚假宣传和低价陷阱误导。今天我来帮你理清楚【烟台海…

2026/11/7 3:33:22

特种工证去哪里报名郑州报考避坑指南

特种工证去哪里报名郑州报考避坑指南 你是不是也担心自己学历不高,考不了特种工证?别急,今天就来聊聊【特种工证去哪里报名】这个事儿,特别是郑州的小伙伴,别被那些培训机构套路了,咱们一起看清楚怎么走,别踩坑。…

2026/11/7 3:28:22

电工证线下报考在哪,实操考试心里没底怕挂科?良心建议来了

电工证线下报考在哪,实操考试心里没底怕挂科?良心建议来了 实操考试心里没底怕挂科,这几乎是每个准备报考电工证的学员心里最真实的声音。尤其是在洛阳涧西区从事建筑行业的你,面对复杂的工地环境,如果缺乏正规的电工操作资质,不仅影响工作进度,更可能…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/6 10:49:01

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 0:03:08

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在郑州这样的城市,很多施工企业负责人和一线作业人员在报考电工证和钳工证时都面临着同样的困惑。到底该考哪个证?哪个更适合自己?哪个证书…

2026/11/7 0:03:08

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱?

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到太多了,今天就拿广西电工证办理流程来具体说说,别再走弯路了。广西电工证的报考、复审、继续教育这些环节,如果你不了解,真的会吃大亏,尤其对于从…

2026/11/7 0:03:08

电气电工证都有哪些保姆级教程

电气电工证都有哪些保姆级教程 你是不是正愁不知道去哪报名,怕被中介坑?别急,这篇保姆级教程专为河南初次报考人员准备,帮你搞清楚 电气电工证都有哪些 ,以及如何避开那些坑。 电气电工证都有哪些?别被五花八门的证书搞懵了…

2026/11/5 15:39:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/6 10:49:01

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑