KVM学习笔记

本文介绍了KVM(Kernel-based Virtual Machine)作为基于Linux内核的全虚拟化解决方案的基本原理和技术细节。KVM利用X86硬件的虚拟化扩展功能,实现了虚拟机作为普通Linux进程运行。文中还详细阐述了KVM的安装过程、虚拟机管理工具libvirt和virt-manager的使用,以及CPU、内存和存储虚拟化的实现方式。
KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案
KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚拟机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。
但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是QEMU
kernel-based virtual machine,基于Linux内核的虚拟机,kvm.ko负责CPU和内存虚拟化。IO虚拟化由Linux内核和Qemu实现。KVM的管理工具为libvirt,openstack底层也使用libvirt
kvm安装:直接在Linux系统上安装KVM所需包。其中qemu-kvm、qemu-systerm负责CPU、内存和IO虚拟化,libvirt-bin为libvirt,virt-manager为KVM图形管理工具,网络虚拟化由bridge-utils、vlan实现。
使用virt-manager启动虚拟机, /var/lib/libvirt/images/ 目录为KVM默认存放镜像文件的地方。virt-manager也可以用来管理其他宿主机上的虚拟机,注意此处需要配置被管理宿主机中的两个文件。
virsh list 命令用于查看宿主机上的虚拟机,还可以使用其他virsh命令管理虚拟机。
注:一个KVM虚拟机在宿主机中作为一个qemu-kvm进程运行,与其他Linux进程一样被调度。
CPU虚拟化由vmx 或 svm 实现。虚拟机中每一个vCPU对应qemu-kvm进程中的每一个线程。因此虚拟机中vCPU总数可以超过物理CPU总数,这个叫CPU超配。
内存虚拟化实现客户机物理内存到宿主机机器内存的转化,客户机操作系统负责客户机虚拟地址到客户机物理地址的转化,也可以实现超配。KVM实现内存虚拟化的方式有两种:影子页表EPT页表,可参考http://www.cnblogs.com/sammyliu/p/4543597.html
存储虚拟化由存储池(storage pool)和volume卷实现,存储池为宿主机中可见的一块内存,volume为存储池中分配给虚拟机的一块空间。KVM 将宿主机目录 /var/lib/libvirt/images/ 作为默认的 Storage Pool,是一种目录类型的存储池,而volume则为该目录下的文件,如一个镜像文件则为一个volume,volume有多种类型,包括raw,qcow,vmdk,vdl。
网络虚拟化通过Linux bridge实现vnet br0 eth0之间的数据传输。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值