KVM
-
kvm为2型虚拟化
- kvm.ko 负责cpu和内存的虚拟化支持(负责cpu、内存、中断控制台、时钟)
- linux内核和qemu负责外设和io的支持(模拟网卡、显卡、存储控制台和硬盘等)
- 一个 KVM 虚机在宿主机中其实是一个 qemu-kvm 进程,与其他 Linux 进程一样被调度;虚机中的每一个虚拟 vCPU 则对应 qemu-kvm 进程中的一个线程;KVM 需要实现 VA(虚拟内存) -> PA(物理内存) -> MA(机器内存)之间的地址转换
-
虚拟化实现方式
- 纯软件仿真(qemu)
- 虚拟化翻译(hypervisor:kvm)
- 没有硬件辅助的全虚拟化(基于二进制翻译的全虚拟化):hypervisor运行在ring0;guest os运行在ring1;guest app运行在ring3;机制:异常、捕获、翻译(guest os执行特权指令的时候)
- 半虚拟化:hypervisor运行在ring0;guest os不能运行在ring0上,需要对kernel进行修改,将运行在ring0上的指令转为调用hypervisor;guest app运行在ring3上(xen,虚拟机知道自己运行在虚拟化上)
- 硬件辅助的全虚拟化:Intel VT和AMD-V创建了一个新的ring -1单独给hypervisor使用;hypervisor运行在ring -1;guest os运行在ring0;guest app运行在ring3(kvm)
- 容器技术
- Storage Pool
- KVM 所有可以使用的 Storage Pool 都定义在宿主机的 /etc/libvirt/storage 目录下,每个 Pool 一个 xml 文件
virsh pool-list --all
virsh pool-define /etc/libvirt/storage/HostVG.xml
virsh pool-start HostVG
KVM虚拟化
原文:https://blog.51cto.com/kgdbfmwfn/2522360