恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

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

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

相关资讯

【AI教做人】动画帧分析-9月-记录动画原理+构图 2026/9/17 13:24:48
MMSegmentation 完整教程:30 分钟跑通语义分割的推理、训练与评估 2026/9/17 13:24:48
Matlab实现卡尔曼滤波目标跟踪:从状态建模到噪声调参 2026/9/17 13:19:47

最新资讯

InvenTree 版本管理与发布说明全解析:语义化版本、分支策略与发布追踪机制
KVM下Tesla T4/V100 vGPU性能调优:显存分配与帧率解除实战
AgentsView S3 Provider 规则:面向对象存储会话摄入的实现者契约
rathole Rust代码走读(一):从main.rs到run()的完整启动流程全解
PyWxDump 移除之后,微信数据恢复还有快速办法吗?
openFPGALoader:跨厂商FPGA命令行烧录与Flash量产指南

今日推荐

每日热评|13% 的 Agent 技能带严重漏洞,这个注册表想用“验证+签名”解决信任危机
即梦AI保姆级教程:从生图到数字人,一站式搞定AI视频创作
BERT+LLM混合架构:突破NER长尾实体抽取瓶颈的工程实践

本周热门

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

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

发布时间:2026/9/17 13:24:48
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),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号