KVM虚拟化原理学习

KVM虚拟化介绍

KVM运行在Linux kernel下的一个模块,是免费、非商业、开源的虚拟机管理程序,代表基于内核的虚拟机。

它把VMM里的指令发到Guest里,Guest里的事件转换到VMM


现在常用两种虚拟化方案:

  • Qemu
  • kvm tools

KVM使用起来比VirtualBox等工具要复杂,主要用在服务器。kvm使用稍改动的qemu程式来创建虚拟机。KVM目前没有支持Windows的版本。

KVM目前不支持动态迁移,不支持在32位系统里模拟运行t64位系统。


Intel VT-X和AMD's AMD-V

   Intel VT和AMD’s AMD-V是一套和支持该技术的虚拟机监视器相结合的硬件增强特性(指令集扩展)。kvm可在原始硬件速度下通过运行完全隔离的虚拟机来执行任务。在Linux内核(2.6.16+)运行

egrep ‘^flags.*(vmx|svm)’ /proc/CPUinfo

可以查看是否支持VT。


KVM API

用于VMM和KVM间通讯,是一些通讯的规范,不是通讯函数API。文档位置在Linux Kernel的Documentation/virtual/kvm/api.txt。

System IOCTLs

创建VM,配置整体环境

示例:

system_fd = open("/dev/kvm",...) <span style="white-space:pre">		</span>//对应vm的system_fd
vm_fd=ioctl(system_fd,KVM_CREATE_VM,...) <span style="white-space:pre">	</span>//对system_fd创建vcpu等操作

VM IOCTLs

配置VM虚拟机属性

vcpu_fd=ioctl(vm_fd,KVM_CREATE_VCPU,...)

VCPU IOCTLs

创建一个VCPU

status=ioctl(vcpu_fd,KVM_RUN,...) //返回运行状态

什么样的事件要转换到VMM?

如要访问一个网卡,

三个要模拟的基本资源

文档位置:

  • CPU
    KVM_SET_REG 设置寄存器
    KVM_GET_REG 得到寄存器值
    KVM_GET_SREGS 一次得到多个寄存器
    KVM_SET_SREGS 一次设置多个寄存器
  • Memory
  • Device


KVM 资源管理


CentOS 上的KVM的安装

yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst     或yum groupinstall KVM

查询:lsmod | grep kvm

后面创建过程以后再补上。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值