0%

KVM虚拟化简介

KVM 全称 kernel-based virtual machine,由Qumranet公司发起,2008年被RedHat收购。
KVM实现主要基于Intel-V或者AMD-V提供的虚拟化平台,利用Linux进程模拟虚拟机CPU和内存等。KVM不提供硬件虚拟化操作,其IO操作等都借助QEMU来完成。

Read more »

什么是QMP协议

QMP,即QEMU Machine Protocol,就是qemu虚拟机中的一种协议,是qemu的一部分。qmp是基于json格式的一整套协议,通过这套协议我们可以控制qemu虚拟机实例的整个生命周期,包括挂起、暂停、快照、查询、外设的热插拔等,以及最简单的查询,都可以通过qmp实现。 有多种方法使用qmp,这里简要介绍通过tcp和unix socket使用qmp。

Read more »

这篇内容详细记述了我在使用hexo搭载博客的过程中走过的路和跌过的坑。
另外,我搭建了一个新的博客作为自己的技术博客,地址是xuquan.site,欢迎来逛逛~

从印象笔记到简书到Hexo
我一直有收集资料的习惯,最开始把资料都放在印象笔记里,然后自己平时处理消化之后会添加一个Learning Card作为资料开头,方便自己复习和记忆。但是时间一久,资料就特别多,加上处理过和没处理过的都积攒在一起就显得特别臃肿,于是我就考虑将消化过的内容发布到简书上,给自己做一个记录,也算是自己的技术博客。

Read more »

代码版本:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git v3.16.37

在虚拟机的创建与运行中pc_init_pci负责(“KVM源代码分析2:虚拟机的创建与运行”),内存初始化也是在这里完成的,还是一步步从qemu说起,在vl.c的main函数中有ram_size参数,由qemu入参标识QEMU_OPTION_m设定,顾名思义就是虚拟机内存的大小,通过machine->init一步步传递给pc_init1函数。在这里分出了above_4g_mem_size和below_4g_mem_size,即高低端内存(也不一定是32bit机器..),然后开始初始化内存,即pc_memory_init,内存通过memory_region_init_ram下面的qemu_ram_alloc分配,使用qemu_ram_alloc_from_ptr。

Read more »

虚拟机的创建与运行章节里面笼统的介绍了KVM在qemu中的创建和运行,基本的qemu代码流程已经梳理清楚,后续主要写一些硬件虚拟化的原理和代码流程,主要写原理和qemu控制KVM运行的的ioctl接口,后续对内核代码的梳理也从这些接口下手。

QEMU:git://git.qemu.org/qemu.git v2.4.0

Read more »

原文链接:http://oenhan.com/kvm-src-2-vm-run

前段时间挖了一个坑,KVM源代码分析1:基本工作原理,准备写一下kvm的代码机制,结果一直没时间填土,现在还一下旧账,争取能温故而知新。 基本原理里面提到kvm虚拟化由用户态程序Qemu和内核态驱动kvm配合完成,qemu负责HOST用户态层面进程管理,IO处理等,KVM负责把qemu的部分指令在硬件上直接实现,从虚拟机的创建和运行上看,qemu的代码占了流程上的主要部分。下面的代码主要主要针对与qemu,KVM部分另外开篇再说。

Read more »