首页/新闻资讯/正文详情

Multipass Driver(后端)机制详解:支持的虚拟化后端、默认选择与实例作用域

发布时间:2026/9/26 18:51:33 来源:云帆数科 栏目:资讯中心
Multipass Driver(后端)机制详解:支持的虚拟化后端、默认选择与实例作用域
虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载Multipass 通过抽象的driver驱动/后端层来创建和运行 Ubuntu 虚拟机driver 本质上是 Multipass 与底层 hypervisorQEMU、Hyper-V、AppleVZ、VirtualBox 等之间的桥梁。本篇指南以 driver.md 为骨架结合 如何设置驱动、local.driver设置参考 以及仓库源码系统讲解 driver 的概念、各平台可用与默认后端、切换与实例作用域规则以及不同后端之间的功能差异。读完本文你将掌握 Multipass 驱动的完整选型与切换方法理解实例与驱动绑定的底层原理并能判断不同后端下的功能支持边界。什么是 Driver后端在 Multipass 中driver是 Multipass 用来模拟一台正在运行的机器的底层技术它对应一个 hypervisor虚拟机监视器或中间技术。driver 有时也被称为backend后端例如仓库中所有后端的实现都位于src/platform/backends/目录下qemu、hyperv、applevz、virtualbox等子目录。关键特性Multipass 的运行依赖driver没有 driver 就无法创建和运行实例Multipass支持多个 driver但同一时刻只运行一个 driver通过 Multipass 设置项local.driver来选择当前使用的 driver设置键定义于 include/multipass/constants.h在某些平台上安装 Multipass 时即可选择 driver在用户手动设置之前Multipass 会使用平台适配的默认 driver。从源码结构看driver 的抽象层是VirtualMachineFactory接口include/multipass/virtual_machine_factory.h它声明了创建虚拟机create_virtual_machine、克隆clone_bare_vm、资源清理remove_resources_for、网络准备prepare_networking、镜像准备prepare_source_image/prepare_instance_image、hypervisor 健康检查hypervisor_health_check、后端目录名get_backend_directory_name、镜像仓库创建create_image_vault、网络接口枚举networks以及可用区支持supports_availability_zones等能力。每个具体后端QEMU、Hyper-V、AppleVZ、VirtualBox都以不同方式实现这套接口从而向 Multipass 上层提供统一语义。各平台支持的驱动不同平台可用的 driver 集合不同平台可用驱动说明LinuxQEMU自 Multipass 1.16 起LXD 和 libvirt 驱动不再可用1.16.0 发布说明 记载 LXD 与 libvirt 驱动被弃用并计划移除macOSQEMU、Apple Virtualization frameworkAppleVZ、VirtualBox自 Multipass 1.13 起Hyperkit 驱动不再可用WindowsHyper-V仅 Windows Pro、VirtualBox—这与源码中各平台的is_backend_supported()实现一致Linuxsrc/platform/platform_linux.cpp 中仅返回qemu若以VIRTUALBOX_ENABLED编译宏构建还会额外接受virtualboxmacOSsrc/platform/platform_osx.cpp 中按编译宏接受qemu要求系统为 macOS Big Sur 或更新、virtualbox与applevzWindowssrc/platform/platform_win.cpp 中接受hyperv、virtualbox若以HYPERV_HCS_ENABLED构建还会接受内部后端hyperv_api。也就是说能否设置某个 driver 取决于当前平台的is_backend_supported()判定而非任意字符串。默认驱动Multipass 安装完成后各平台选择的默认 driver 如下平台默认驱动LinuxQEMUmacOSQEMUWindowsWindows ProHyper-VWindowsWindows HomeVirtualBox上述默认值与源码一一对应Linux 与 macOS 的Platform::default_driver()均返回qemusrc/platform/platform_linux.cpp、src/platform/platform_osx.cppWindows 上则返回hyperv_api启用 HCS API 的构建或hypervsrc/platform/platform_win.cpp。默认值在 daemon 启动注册设置时被写入local.driver见 src/daemon/daemon_init_settings.cpp。需要说明的是Windows Home 版因不包含 Hyper-V 组件Multipass 会在安装期检测并回退到 VirtualBox这也是为什么文档将 Windows 默认驱动区分为 ProHyper-V与 HomeVirtualBox两种情形。选择与切换驱动local.driver 设置驱动选择通过设置键local.driver完成其取值是一个标识 hypervisor 后端的字符串。各平台允许的值LinuxqemuWindowshyperv、virtualboxmacOSqemu、applevzIntel/x86 架构上另有virtualbox查看与设置当前驱动查看当前使用的驱动multipass get local.driver切换到 AppleVZmacOSmultipass set local.driverapplevz切换到 VirtualBoxmacOS 仅 Intel/x86Windows 需管理员权限multipass set local.drivervirtualbox切换回默认驱动macOS 为 QEMU、Windows 为 Hyper-Vmultipass set local.driverqemu # macOS multipass set local.driverhyperv # WindowsLinux 上只支持qemu一个驱动因此无法切换local.driver。设置值的规范化与合法性校验local.driver的取值并不是无条件接受的。在 src/daemon/daemon_init_settings.cpp 中driver_interpreter()会对值做如下处理统一转为小写将别名归一化hyper-v→hypervvbox→virtualbox调用MP_PLATFORM.is_backend_supported(val)校验该平台是否支持若不支持则抛出InvalidSettingException(local.driver, val, Invalid driver)。因此把local.driver设置为当前平台不支持的驱动会直接报错而不是静默接受后再启动失败。切换驱动后 daemon 自动重启修改local.driver后Multipass daemon 会检测到配置文件变化并自动重启以应用新的后端。源码中monitor_and_quit_on_settings_change()src/daemon/daemon_init_settings.cpp使用QFileSystemWatcher监视 daemon 配置文件一旦文件变化便以设置变更退出码退出主进程由服务管理器拉起新进程。CLI 集成测试也验证了这一点设置驱动后测试会等待 daemon 重启完成见 tests/cli/cli_settings_test.py。后端工厂的运行时分发daemon 启动时根据local.driver的当前值构造对应的后端工厂VirtualMachineFactory。各平台的vm_backend()实现Linuxsrc/platform/platform_linux.cpp——qemu构造QemuVirtualMachineFactoryvirtualbox构造VirtualBoxVirtualMachineFactory其余抛出Unsupported virtualization drivermacOSsrc/platform/platform_osx.cpp——按virtualbox/qemu/applevz分别构造对应工厂选择 VirtualBox 时会把/usr/local/bin加入PATHVirtualBox 安装程序默认的二进制目录Windowssrc/platform/platform_win.cpp——按hyperv/virtualbox/hyperv_api构造工厂选择 VirtualBox 时会把C:\Program Files\Oracle\VirtualBox加入Path。这个工厂随后被注入 daemon 配置src/daemon/daemon_config.cpp供后续所有实例操作使用。daemon 还会在启动与关键操作前调用factory-hypervisor_health_check()检测 hypervisor 是否可用src/daemon/daemon.cpp 等处。实例作用域实例与驱动的绑定关系driver 切换不仅是换一个 hypervisor 这么简单它还引入了**实例作用域instance scope**的概念一般来说Multipass 实例与创建它的 driver绑定使用某个 driver 启动的实例集合只在该 driver 正在使用时可见。当切换到新的 driver 时Multipass 进入一个独立的实例作用域该作用域内的实例集合一开始为空。用户可以在不同 driver 下创建同名实例且对某一 driver 下实例的修改不会影响另一 driver 下的同名实例。实例本身跨 driver 保留。切回之前用过的 driver 时Multipass 会恢复对应的实例作用域并尝试把实例恢复到切换前的状态之后即可照常交互。从源码看这一设计落地于实例数据库的存储方式daemon 持久化实例清单时使用后端目录名作为数据/缓存目录下的子目录src/daemon/daemon.cpp即backend_directory_path(data_directory, factory-get_backend_directory_name())。每个后端通过get_backend_directory_name()返回自己的目录名如 QEMU 后端返回由平台决定的名字见 src/platform/backends/qemu/qemu_virtual_machine_factory.cpp因此不同 driver 的实例记录天然隔离切换 driver 即切换了实例数据库从而实现了独立的作用域。例外macOS 上的 Hyperkit 自动迁移上述规则有一个例外在 macOS 上Multipass 1.12 及以后版本会把已停止的 Hyperkit 实例自动迁移到 QEMU。迁移操作与手动切换驱动类似详见 从 Hyperkit 迁移到 QEMUmacOSmultipass stop --all multipass set local.driverqemuHyperkit 实例在迁移后会保留在 QEMU 作用域中如果 QEMU 侧已有同名实例则不会被迁移覆盖。原始 Hyperkit 实例会一直保留直到显式删除。驱动间的功能差异Multipass 力求在各后端之上提供统一接口但并非所有功能在每个后端上都可用部分行为也存在差异功能不支持的驱动影响原生挂载Native mountsAppleVZ、VirtualBox影响mount命令的--type选项快照SnapshotsAppleVZ影响snapshot命令挂起SuspendAppleVZ影响suspend命令原生挂载Native mountsmultipass mount用于把宿主目录映射到实例内其-t, --type选项可选择两种挂载方式classic默认使用 Multipass 内置的 SSHFSSSH 文件系统技术跨所有后端可用兼容性最高但 SSH 加密带来一定性能开销native使用 hypervisor 或平台特有的挂载技术换取更高性能。按 Mount 概念说明native 挂载仅在两类后端可用Hyper-V基于 SMB/CIFS 协议QEMU基于 9P 协议。例如经典挂载的完整命令形式multipass mount --typeclassic /host/path instance name:/instance/path在 AppleVZ 与 VirtualBox 后端下--typenative不可用只能使用 classic 挂载。快照Snapshotsmultipass snapshot命令可以为实例创建快照记录恢复实例所需的一切信息之后可通过restore恢复。当前快照命令只能作用于Stopped状态的实例。在 AppleVZ 后端下快照功能不受支持。挂起Suspendmultipass suspend命令将运行中的实例挂起只有Running状态的实例可挂起挂起后状态显示为Suspended可通过multipass start恢复。该功能在 AppleVZ 后端下不受支持。网络相关差异补充除上述三个核心差异外网络能力也随后端不同而有所区别。根据multipass networks参考文档该命令用于列出可接入实例的宿主网络接口目前仅在以下场景可用Linux QEMUWindows Hyper-V 或 VirtualBoxmacOS QEMU、AppleVZ 或 VirtualBox。该命令的输出直接影响launch的--network spec与--bridged选项例如--network bridged是--network name的快捷写法其中name由local.bridged-network配置。此外后端功能差异还取决于宿主平台本身如 Windows 上挂载默认禁用、Wi-Fi 网络桥接仅 macOS 支持等详见 平台Platform概念说明。源码视角后端抽象、健康检查与资源管理VirtualMachineFactory 抽象接口所有后端都实现统一的VirtualMachineFactory接口include/multipass/virtual_machine_factory.h其中与实例生命周期直接相关的关键方法包括create_virtual_machine()按VirtualMachineDescription创建虚拟机clone_bare_vm()克隆一个裸虚拟机通用实现会复制实例目录、更新 cloud-init 中的标识符MAC 地址等并构造新的描述见 src/platform/backends/shared/base_virtual_machine_factory.cppremove_resources_for()删除与某实例关联的后端资源daemon 在释放实例时调用见 src/daemon/daemon.cpphypervisor_health_check()daemon 启动及若干关键操作前调用验证 hypervisor 可用性networks()枚举后端可见的网络接口supports_availability_zones()声明后端是否实现可用区Availability Zones。可用区Availability Zones随后端而异从源码可以推断可用区支持也与驱动相关backend_supports_availability_zones()在 Linux/macOS 上对virtualbox返回 false在 Windows 上对hyperv与virtualbox均返回 falsesrc/platform/platform_linux.cpp、src/platform/platform_osx.cpp、src/platform/platform_win.cpp。不支持的平台/驱动组合会使用StubAvailabilityZoneManager占位src/daemon/daemon_config.cpp。后端实现目录仓库中每个后端的实现集中在 src/platform/backends 下qemu/QEMU 后端含 Linux 下的 dnsmasq、防火墙配置macOS 平台适配hyperv/与hyperv_api/Windows Hyper-V 后端HCS/HCN API、虚拟磁盘与快照applevz/macOS Apple Virtualization framework 后端virtualbox/VirtualBox 后端shared/跨后端共享的基础实现基础虚拟机、快照、镜像仓库、可用区等。感兴趣的读者可直接在这些目录中查看各后端的*_virtual_machine_factory.cpp与*_virtual_machine.cpp理解不同 hypervisor 如何被统一到 Multipass 的实例模型中。小结Multipass 的 driverbackend抽象把实例与具体虚拟化技术解耦选型Linux 仅 QEMUmacOS 可选 QEMU/AppleVZ/VirtualBoxIntelWindows 可选 Hyper-V/VirtualBox默认值随平台自动确定Windows 还随 Pro/Home 版本变化切换通过multipass set local.driverbackend完成取值会经规范化与平台合法性校验daemon 随后自动重启应用新后端作用域实例与创建它的驱动绑定驱动切换产生独立实例作用域同名实例可跨驱动共存实例数据按后端目录名分开持久化切回时自动恢复能力边界原生挂载Hyper-V/QEMU、快照、挂起等高级功能并非所有后端都支持AppleVZ 是功能限制最集中的后端使用前应结合 功能差异表 与 平台差异说明 评估。更多相关内容可继续阅读如何设置驱动——分平台的切换命令与 VirtualBox 管理实操local.driver设置参考——键名、可能值与默认值速查实例Instance概念说明——实例生命周期与 primary 实例从 Hyperkit 迁移到 QEMUmacOS——历史驱动的迁移流程。赞分享虚拟化开发工具云原生【免费下载链接】multipassMultipass orchestrates virtual Ubuntu instances项目地址https://gitcode.com/gh_mirrors/mu/multipass点击查看免费下载相关推荐Multipass local.driver 设置详解选择与切换虚拟化后端QEMU / Hyper-V / VirtualBox / AppleVZMultipass local.driver 设置详解选择与切换虚拟化后端QEMU / Hyper V / VirtualBox / AppleVZ lo虚拟化开发工具云原生NetBox 虚拟机Virtual Machine模型详解字段、作用域与类型默认值机制NetBox 虚拟机Virtual Machine模型详解字段、作用域与类型默认值机制 虚拟机Virtual Machine是 NetBox 虚拟化模后端网络数据建模虚拟化技术新选择VirtualBox KVM 后端安装指南虚拟化技术新选择VirtualBox KVM 后端安装指南 VirtualBox KVM 是一个开源项目旨在将 KVM Kernel based Virtu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

RAG架构调优与AI Agent工作流:企业级AI落地核心技能解析
RAG架构调优与AI Agent工作流:企业级AI落地核心技能解析

1. 项目概述:这不是一张榜单,而是一张技能演化的实时地图“每周热门 SKILLS 排行(9月16日)”——看到这个标题,很多人第一反应是点开扫一眼,记下几个新词,比如“RAG”“Claude 3.5 Sonnet”“Cu… · 2026/9/26 18:51:27

Agent Coding实战:工作流设计、踩坑记录与验收方法全解析
Agent Coding实战:工作流设计、踩坑记录与验收方法全解析

1. 从“能跑就行”到“真想用起来”:我为什么开始记录这些坑Agent Coding这个词,从2024年下半年起就越来越不像一个“演示玩具”了。我最早接触Copilot那类补全工具时,感觉它顶多是个“高级联想输入法”,能把注释变成代码&#xf… · 2026/9/26 18:51:27

Kata Containers 中的 Upcall:基于 vsock 的 VMM 与 Guest 直接通信通道及其设备热插拔实现解析
Kata Containers 中的 Upcall:基于 vsock 的 VMM 与 Guest 直接通信通道及其设备热插拔实现解析

云原生容器运行时 【免费下载链接】kata-containers Kata Containers is an open source project and community working to build a standard implementation of lightweight Virtual Machines (VMs) that feel and perform like containers, but provide the workload isolat… · 2026/9/26 18:51:27

DSR响应流程越权访问漏洞分析:从IDOR到防御实践
DSR响应流程越权访问漏洞分析:从IDOR到防御实践

DSR(Data Subject Rights,数据主体权利)响应流程,说白了就是用户按照隐私法规行使自己权利时,企业需要处理的一整套后台流程。最近几年做隐私合规项目,我最常被问到的不是"某个法律条款怎么理解"… · 2026/9/26 20:16:35

虚拟机共享文件夹:原理、配置与排错实战
虚拟机共享文件夹:原理、配置与排错实战

干这行这么多年,每次给新同事或者朋友远程解决虚拟机问题,十个里有八个都卡在“共享文件夹”这一步。要么是装完虚拟机发现文件拖不进去,要么是配好了共享文件夹结果里面空空如也,再要么就是一顿操作猛如虎,最后弹出来… · 2026/9/26 20:16:35

Figma 之外还有什么选择?用 Penpot 搭一套可自托管、可接 AI 的设计工作台
Figma 之外还有什么选择?用 Penpot 搭一套可自托管、可接 AI 的设计工作台

前言 我对设计协作工具的要求一直不只是“能不能画 UI”。真正用到团队项目以后,我更在意三件事:设计稿能不能放在自己控制的环境里,开发能不能直接理解页面里的组件和样式,以及 AI 能不能参与到真实画布,而不是只在聊… · 2026/9/26 20:16:16

Codex与Skill技能配置:AI短剧自动化生产流水线实战拆解
Codex与Skill技能配置:AI短剧自动化生产流水线实战拆解

1. 项目整体设计与思路拆解1.1 为什么是 Codex:AI 短剧生产缺的不是模型,而是执行者短剧这个词,这两年已经从一个内容品类变成了一个产业。单集时长控制在 1-3 分钟,节奏快、反转密、爽点连续,一天更新好几集&#xff… · 2026/9/26 20:16:09

内容发出去还在等收录:IndexNow 协议与 Bing Webmaster 的即时提交接入规范
内容发出去还在等收录:IndexNow 协议与 Bing Webmaster 的即时提交接入规范

内容发出去还在等收录:IndexNow 协议与 Bing Webmaster 的即时提交接入规范适用读者:负责外贸独立站的技术与 SEO 同学,站点跑在 .NET 上,Bing 带来的海外流量不能忽视,想搞清楚 IndexNow(即时索引协议&… · 2026/9/26 20:16:09

基于Django+Vue3的农产品销售管理系统设计与实现
基于Django+Vue3的农产品销售管理系统设计与实现

1. 这个标题,先得把“技术栈大乱炖”掰正我最近被一个项目标题逗笑了:基于PHP、asp.net、java、Springboot、SSM、vue3的基于Django的农产品销售管理系统的设计与实现。第一次看到这种六合一标题,说实话谁都会愣一下——一个真实项目不可能同… · 2026/9/26 20:16:09

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

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

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码