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

发布时间:2026/9/17 13:24:54

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/9/17 13:24:54

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

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

2026/9/17 13:19:54

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

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

2026/9/17 14:19:59

Prometheus+node_exporter宿主机监控告警实战

简介:这份资源是一份面向运维工程师与Linux系统管理者的Prometheus宿主机监控实操文档,聚焦如何用Prometheus对Linux服务器节点建立从指标采集到告警通知的完整监控链路,适合具备一定Linux基础、需要落地主机层监控的技术人员参考。资源包内仅…

2026/9/17 14:19:59

SpringBoot智能管理系统在新能源汽车租赁行业的应用实践

1. 项目背景与行业需求新能源汽车租赁行业近年来呈现爆发式增长态势,据权威机构统计,2023年全球新能源汽车租赁市场规模已突破千亿元。这种业务模式既解决了用户对新能源车辆的尝鲜需求,又缓解了城市停车资源紧张问题。但传统租赁管理系统存在…

2026/9/17 14:19:59

数据驱动的高效课堂:效能指标、课堂结构与学科模式

简介:这份结题报告聚焦“双减”政策背景下高效课堂的构建路径,系统梳理了课题的提出背景、概念界定、理论支撑、课堂特点与实施策略,适合中小学教师、教研员及教育管理者参考。全文以PDF格式呈现,共1个文件,压缩包约42…

2026/9/17 14:19:59

DeepSeek+推理引擎:盐碱地园林绿化植物筛选工程化落地

简介:针对盐碱地园林绿化的行业痛点,这份478页的系统性PDF方案展示了DeepSeek大模型与推理引擎在耐盐植物适配和建植技术中的完整应用路径。文档面向园林绿化工程师、生态修复研究人员以及AI落地实践者,从土壤理化特性解析、耐盐植物种质资源…

2026/9/17 14:14:58

点云边缘有序提取实战:PCL与CGAL Alpha Shapes原理及C++实现

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

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/17 0:03:13

WiFi密码安全测试:从原理到实战的字典暴力破解指南

1. 写在前面:我为什么要研究WiFi密码这件事先交代一下背景。我身边有不少朋友,家里的WiFi密码常年是"12345678"或者"88888888",问就是"好记"。直到有一次,隔壁邻居蹭网蹭到我家路由器后台都进不去&…

2026/9/17 0:03:13

redis-py服务控制与监控函数实战:从ping到slowlog的巡检指南

我用 redis-py 写了快五年的业务代码,坦白说,真正让我觉得这个客户端“像一个成熟工具箱”的,不是 get/set 那套基本操作,而是它那批专门做服务控制与状态监控的辅助函数。日常开发里,大家把redis.Redis(host..., deco…

2026/9/17 0:03:13

SpringBoot+Vue3实现中小企业设备管理系统开发实践

1. 项目概述与核心价值中小企业设备管理系统是制造业、服务业等领域的基础信息化工具。传统设备管理往往依赖Excel表格或纸质记录,存在数据孤岛、流程混乱、维护成本高等痛点。这套基于Java SpringBootVue3MyBatis的技术方案,通过前后端分离架构实现了设…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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