学习虚拟化及其技术KVM。
虚拟化
虚拟化是云计算的基础。
虚拟化让一台物理机可以运行多个虚拟机,共享物理机的CPU、内存、IO,但是在逻辑上虚拟机之间是相互隔离的。
注:宿主机Host,虚拟机(客户机)Guest。
通过Hypervisor程序来实现虚拟化。目前有两种虚拟化(1型虚拟化、2型虚拟化)
1型虚拟化
Hypervisor直接安装在物理机。多个虚拟机在Hypervisor上运行。(采用此模式有Xen和VMWare的ESXi)
2型虚拟化
物理机上安装常规操作系统(Linux、MacOS、WIndows)。Hypervisor作为OS的一个程序运行,并对虚拟机进行管理。(采用此模式有KVM、VirtualBox和VMWare Workstation)
1型与2型虚拟化比较
1型虚拟化对硬件虚拟化功能进行了优化,性能比2型好。
2型基于普通操作系统,比较灵活,比如支持虚拟机嵌套。
KVM
KVM(Kernel-Based Virtual Machine)是基于Linux内核实现的。KVM是x86平台运行最广泛的虚拟化方案,且OpenStack对KVM支持很好。KVM有个内核模块叫kvm.ko
,用于管理虚拟CPU和内存,Linux内核和Qemu来管理存储和网络设备。
KVM管理工具Libvirt
作为KVM的管理工具Libvirt除了可以管理Hypervisor(KVM),还能管理Xen、VirtualBox。
注:OpenStack底层也使用Libvirt。
Libvirt三模块
模块 | 说明 |
---|---|
后台daemon程序libvirtd | 服务程序,接收和处理API请求 |
API库 | 开发基于Libvirt的高级工具(图形化KVM管理工具virt-manager) |
命令行工具virsh | KVM命令行工具 |
注:virsh和virt-manager工具在后面会学习。