虚拟化技术
- 全虚拟化
- 半虚拟化
- 硬件辅助的虚拟化
KVM的整体结构
从GUI到Linux内核,包括以下五个组件:
- virt-manager一个用来管理VM的GUI/CUI用户接口;它使用libvirt api 调用VM的各种功能。
- libvirt一个工具及接口,作为较通用的服务器虚拟化软件,它支持Xen,VMware ESXi/GSX,当然,还有QEMU/KVM。
- QEMU一个和KVM内核模块交互的模拟器,处理多种客户机系统请求如I/O;一个QEMU进程对应一个客户机系统。
- KVM内核模块从狭义上来说,KVM是一个Linux内核模块,处理客户机系统的VM Exits和执行VM Entry指令。
- Linux内核既然QEMU作为一个普通的用户进程运行,相应客户机系统的调度就由Linux内核自己来处理。所有的组件都是开放源码软件(OSS)。
KVM 的功能列表
KVM 所支持的功能包括:
- 支持CPU 和 memory 超分(Overcommit)
- 支持半虚拟化I/O (virtio)
- 支持热插拔(cpu,块设备、网络设备等)
- 支持对称多处理(Symmetric Multi-Processing,缩写为 SMP )
- 支持实时迁移(Live Migration)
- 支持 PCI 设备直接分配和单根I/O虚拟化(SR-IOV)
- 支持内核同页合并(KSM )
- 支持NUMA (Non-Uniform Memory Access,非一致存储访问结构 )
KVM 工具集合
libvirt:操作和管理KVM虚机的虚拟化API,使用 C 语言编写,可以由 Python,Ruby,Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等Hypervisor。
Virsh:基于libvirt 的命令行工具(CLI)
Virt-Manager:基于libvirt的GUI工具
virt-v2v:虚机格式迁移工具
virt-* 工具:包括Virt-install (创建KVM虚机的命令行工具),Virt-viewer (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等
sVirt:安全工具和selinux相关
安装kvm虚拟化功能
这里使用VMware安装虚拟机,主要安装centos7.9,在之后我们主要用的是最小化安装,图形化安装了解一下即可。也可以直接跳过本章,如果可以的话还是了解一下图形化的原理,这样对最小化安装更加理解。
打开VMware,创建新的虚拟机、典型、稍后安装操作系统、选择Linux centos7 64位、根据需求填写虚拟机名称、存储路径、磁盘保持默认20G即可。点击内存修改为8G(越大越好),处理器2个,最重要的是勾选虚拟化功能。最后点击CD/DVD挂载centos7.9镜像,安装虚拟机。
开启此虚拟机,选择install centos 7后回车安装,等待安装完成后,修改时区等信息。
默认保持英文,下一步后修改 SOFTWARE SELECTION
勾选虚拟化客户端等应用,按Done保存退出。
选择INSTALLATION DESTINATION 保持默认选择Done保存退出,随后点击开始安装
点ROOT PASSWORD输入密码,如果密码没有符合密码复杂性,点两次Done强制保存退出,随后等待时间安装完成。
勾选好许可证继续下一步操作,随后就是时区,普通用户等信息输入即可创建成功。
注销普通用户登录root用户,输入密码即可。
创建虚拟机
后面就是创建虚拟机了,可以点击Applications进一步操作,也可以在终端下输入virt-manager也会弹出创建虚拟机界面。
下面就是虚拟机的创建界面了,双击QEMU/KVM
在这里为了区分,创建两个磁盘空间,一个用来安装操作系统,一个用来存放系统镜像。
创建一个虚拟机存放磁盘空间,大小我这里给了10G。
打开终端,导入镜像。需要注意的是,我修改了iso和vm的存放路径,放在了根目录,主要是为了好理解,但是这里就需要打开终端查看两个目录是否存在,并且并centos7的镜像拷贝到iso中。
勾选并选择centos7的镜像。使用dd命令把镜像文件转换为系统镜像并保存在iso目录下。
[root@localhost /]# dd if=/dev/sr0 of=/iso/centos.iso
根据下图,点击安装虚拟机
选择系统镜像,这里存放的位置是根下的ISO目录
安装位置选择刚创建的vm目录下的centos7磁盘空间
后面给虚拟机创建一个名称,然后下一步,就会到centos7安装界面,根据安装界面,可以图形化安装,也可以最小化安装,甚至可以继续虚拟化安装,只要硬件支持,里面可以套多个虚拟机。