关于Linux虚拟化技术KVM的科普
虚拟化技术应用越来越广泛,虚拟化技术需求越来越强劲。KVM、XEN、Docker等比较热门,尤其是KVM技术越来越受欢迎。
基于此背景,了解一下KVM+QEMU就有点必要了。
从网上收集了一些资料进行科普,由于篇幅太长,分开如下:
《关于Linux虚拟化技术KVM的科普 科普一(先用起来!)》
《关于Linux虚拟化技术KVM的科普 科普二(KVM虚拟机代码揭秘)》
《关于Linux虚拟化技术KVM的科普 科普三(From OenHan)》
《关于Linux虚拟化技术KVM的科普 科普四(From humjb_1983)》
《关于Linux虚拟化技术KVM的科普 科普五(From 世民谈云计算)》
《KVM架构与原理详解》
《KVM架构与原理详解》是一篇简洁明了介绍KVM的文章,有框架图、工作原理描述等。
KVM架构,分两部分:位于内核的kvm模块,负责虚拟机创建,虚拟内存的分配,VCPU寄存器的读写以及VCPU的运行;用户空间的QEMU,用于模拟虚拟机的用户空间组建,提供I/O设备模型,访问外设的途径。
kvm模块让Linux主机成为一个虚拟机监视器(VMM),并且在原有的Linux两种执行模式基础上,新增加了客户模式。客户模式拥有自己的内核模式和用户模式。
因此在虚拟机运行时,有三种模式:
客户模式:执行非I/O的客户代码,虚拟机运行在这个模式下。
用户模式:代表用户执行I/O指令,QEMU运行在这个模式下。
内核模式:实现客户模式的切换,处理因为I/O或者其他指令引起的从客户模式退出(VM_EXIT)。kvm模块运行在这个模式下。
kvm模型中,每一个Guest OS都是作为一个标准的Linux进程,都可以使用Linux进程管理命令管理。
KVM工作原理:用户模式的QEMU通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLAUCH指令进入客户模式。加载Guest OS并执行。如果Guest OS发生外部中断或者影子页表却也之类的情况,会暂停Guest OS的执行,退出客户模式进行异常处理,执行客户代码。如果发生I/O事件或者信号队列有信号到达,就会进入用户模式处理。
对比Xen和KVM:Linux虚拟化技术选择,关于Xen和KVM的对比,可以看出未来的趋势还是KVM。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?