文章目录
- 虚拟化基础
- 什么是虚拟化
- 虚拟化优势
- 虚拟机
- 虚拟机的主要特征
- Hypervisor类型
- 类型1:裸金属型
- 类型2:宿主型
- KVM概述
- KVM体系结构
- KVM模块载入后的系统运行模式
- KVM集中管理和控制
- 宿主机环境准备
- 安装KVM工具包
- libvirt包功能
- libvirt结构图
- 安装KVM相关包
- CentOS安装KVM
- Ubuntu安装KVM
虚拟化基础
现在大行其道的云服务器,云计算等都是虚拟化技术。阿里云、腾讯云…他们提供出来的云服务器都是虚拟机,这些虚拟机底层都依赖于KVM。虚拟化是云的基础。
什么是虚拟化
虚拟化(Virtualization)是一种资源分配和管理技术,是将计算机的各种硬件资源,比如CPU、内存、磁盘空间、网络适配器等,进行抽象转换后虚拟出来的设备,可以实现灵活地分割、并组合为一个或多个计算机配置环境,并还支持重新分割、重新组合,以达到最大化合理利用物理资源的目的。
参考资料:https://www.vmware.com/solutions/virtualization.html
虚拟化优势
虚拟化优势包括
1.资源超分,如实际的物理内存只有128G,可以给虚拟机分配200G内存
2.降低资金成本和运维成本
3.最大限度减少或消除停机
4.提高IT部门的工作效率和响应能力
5.加快应用和资源的调配速度
6.提高业务连续性和灾难恢复能力
7.简化数据中心管理
8.减少资源,比如IP和端口的冲突
虚拟机
虚拟计算机称为“虚拟机"(VM,Virtual Machine),它是一种严密隔离且内含操作系统和应用的软件容器。
每个虚拟机都是完全独立的。
通过将多台虚拟机放置在一台物理计算机上,可仅在一台物理服务器或"主机"上运行多个操作系统和应用,名为"hypervisor"的精简软件层可将虚拟机与主机分离开来,并根据需要为每个虚拟机动态分配计算资源。
虚拟机的主要特征
Hypervisor类型
Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,其可以允许多个操作系统和应用共享底层的内存、CPU、磁盘等物理硬件,也可叫做VMM ( virtual machine monitor),即虚拟机监视器。
Hypervisor是所有虚拟化技术的核心,非中断地支持多工作负载迁移的能力是Hypervisor的基本功能,当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
Hypervisor允许多种操作系统在相同的物理系统中运行。
Hypervisor控制硬件并向来宾操作系统提供访问底层硬件的途径.。
Hypervisor向来宾操作系统提供虚拟化的硬件
类型1:裸金属型
直接运行在物理机的Hypervisor上,这种架构搭建的虚拟化环境称为裸机虚拟化环境(Bare-Metal Hardware)。
类型2:宿主型
即需要运行在具有虚拟化功能的操作系统上的Hypervisor,构建的是主机虚拟化环境(Hosted Virtualization)。
KVM概述
官网:https://linux-kvm.org/page/Main_Page
KVM 全称是 Kernel-based Virtual Machine(基于Linux内核的虚拟机)是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko 提供和虚拟化核心架构和处理器规范模块。
红帽KVM介绍:https://docs.redhat.com/zh_hans/documentation
RedHat创建虚拟机数量限制:https://access.redhat.com/articles/rhel-kvm-limits
KVM体系结构
KVM: 初始化CPU硬件,打开虚拟机模式,负责CPU,内存,中断控制器,时钟.由内核模块kvm_xxx.ko实现,工作于hypervisor,设备/dev/kvm,是一个字符设备,在用户空间可通过ioctI()系统调用来完成VM创建、启动,为VM分配内存、读写VCPU的寄存器、向VCPU注入中断、时钟等管理功能
QEMU进程:工作于用户空间,主要用于实现模拟IO设备,如显卡,网卡,硬盘等, qemu-kvm进程:工作于用户空间,用于实现一个虚拟机实例
Libvirt:提供统一API,守护进程libvirtd和相关工具,如:virsh,virt-manager等
KVM模块载入后的系统运行模式
内核模式: HostOS执行IO类操作,或其它的特殊指令的操作;称作内核模式
用户模式: GuestOS的I/O类操作
来宾模式: GuestOS非I/O类操作,称作虚拟机的用户模式更贴切
KVM集中管理和控制
KVM是运行在单机的系统,需要其它软件实现跨主机的统一的管理。常见的虚拟化管理平台如下:
https://www.linux-kvm.org/page/Management_Tools
oVirt
功能强大,是Redhat虚拟化管理平台RHEV的开源版本。
https://www.ovirt.org/
WebVirtMgr
http://www.webvirtmgr.net/
virt-manager的Web模式的替代品
OpenStack
最主流的开源虚拟化管理平台
Proxmox virtualization environment
简称PVE,是一个开源免费的基于Linux的企业级虚拟化方案,功能不输专业收费的VMware。是一个完整的企业虚拟化开源平台。借助内置的Web界面,您可以轻松管理VM和容器,软件定义的存储和网络,高可用性集群以及单个解决方案上的多个开箱即用工具。
宿主机环境准备
KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能。
安装KVM工具包
KVM相关工具包介绍
1.qemu-kvm: 为kvm提供底层仿真支持。
2.libvirt-daemon: libvirtd守护进程,管理虚拟机。
3.libvirt-client:用户端软件,提供客户端管理命令。
4.libvirt-daemon-driver-qemu: libvirtd连接qemu的驱动。
5.libvirt: 使用最多的KVM虚拟化管理工具和应用程序接口,即通过libvirt调用KVM创建虚拟机,
libvirt是KVM通用的访问API,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化方案。
6.virt-manager:图形界面管理工具.其底层也是调用libvirt API来完成对虚拟机的操作,包括虚拟机的创建、删除、启动、停止以及一些简单的监控功能等。
7.virt-install:虚拟机命令行安装工具。
8.virsh:命令行工具是基于libvirt API创建的命令行工具,它可以作为图形化的virt-manager应用的备选工具。virsh 命令可以被用来创建虚拟化任务管理脚本,如安装、启动和停止虚拟机。
9.virt-viewer:通过VNC和SPICE协议显示虚拟机器图形控制台的最小工具。该工具在其同名软件包中: virtviewer。
10.cockpit: CentOS8专门提供的基于Web的虚拟机管理界面。
libvirt包功能
官网:https://www.libvirt.org/
libvirt程序包是一个与虚拟机监控程序相独立的虚拟化应用程序接口,它可以与操作系统的一系列虚拟化性能进行交互。
libvirt程序包提供:
一个稳定的通用层来安全地管理主机上的虚拟机。
一个管理本地系统和连网主机的通用接口。
在虚拟机监控程序支持的情况下,部署、创建、修改、监测、控制、迁移以及停止虚拟机操作都需要这些API。尽管libvirt 可同时访问多个主机,但API只限于单节点操作
libvirt程序包被设计为用来构建高级管理工具和应用程序,例如virt-manager与virsh命令行管理工具。libvirt主要的功能是管理单节点主机,并提供API来列举、监测和使用管理节点上的可用资源,其中包括CPU、内存、储存、网络和非一致性内存访问(NUMA)分区。管理工具可以位于独立于主机的物理机上,并通过安全协议和主机进行交流。
libvirt结构图
安装KVM相关包
CentOS安装KVM
使用虚拟化,需要至少qemu-kvm和qemu-img(安装qemu-kvm会自动安装)软件包
建议安装: yum install qemu-kvm libvirt virt-manager virt-install
范例: Centos 8安装KVM相关工具
[root@centos8 ~]#yum -y install qemu-kvm libvirt virt-manager virt-install virt-viewer
[root@centos8 ~]#systemctl start --now libvirtd
范例: CentOS8还提供基于Web的虚拟机管理方式
[root@centos8 ~]#yum -y insta1l cockpit cockpit-machines
[root@centos8 ~]#systemctl enable --now cockpit.socket
#打开浏览器,访问以下地址:
https://centos8主机ip:9090
Ubuntu安装KVM
官方文档:https://ubuntu.com/server/docs/libvirt
# apt insta11 qemu-kvm virt-manager libvirt-daemon-system
# kvm-ok #验证是否支持kvm,只有ubuntu支持,centos不支持
INFO: /dev/kvm exists
KVM acceleration can be used
[root@ubuntu1804 ~]#apt -y install qemu-kvm virt-manager libvirt-daemon-system
#如果没有开启CPU虚拟化功能会提示以下信息
[root@ubuntu1804~]#kvm-ok
INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used
#添加CPU的虚拟化支持再执行
[root@ubuntu1804~]#kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used