一.计算机系统虚拟化定义
1.物理机向虚拟机演进过程
当物理机资源足够某一应用使用,并有多余的富余时,可以把多余的资源提供给其它的应用使用,这时就需要一种计算资源“打包技术”。
2001年vmware公司提出来虚拟机,即在一台物理机上运行多个虚拟机,让不同或相同的应用使用虚拟机运行,这就达到了共享一台物理机计算资源的方式。
2.计算机系统虚拟化定义
虚拟化就是通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同操作系统的技术。
计算机系统虚拟化就是对计算机资源的抽像。在物理机中创建软件或虚拟表示形式的应用、服务器、存储和网络,以减少IT开销,同时提高效率和敏捷性。
虚拟化技术可以使IT部门更轻松地进行管理以及降低拥有成本和运维成本。
- 可以提高IT敏捷性;
- 灵活性;
- 可扩展性;
- 同时大幅节约成本;
- 更高的工作负载移动性;
- 更高的性能和资源可用性;
- 自动化运维;
二.虚拟化技术分类
1.虚拟化管理程序 Hypervisor(VMM)
一种运行在物理机和虚拟机操作系统之间的中间软件层,可以允许多个操作系统和应用共享硬件。
Hypervisor也称VMM(Virtual Machine Monitor),即虚拟机监视器。
2.虚拟化管理程序 Hypervisors作用
Hypervisor是所有虚拟化技术的核心。 非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。
Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。
Hypervisors不但协调着这些硬件资源的访问,而且在各个虚拟机之间施加防护。
当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。
3.虚拟化管理程序Hypervisors分类
目前市场上各种x86 管理程序(hypervisor)的架构存在差异,三个最主要的架构类别包括:
半虚拟化(Hypervisor Type I):
虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”型。
裸机型在虚拟化中Hypervisor直接管理调用硬件资源,不需要底层操作系统,也可以将Hypervisor看作一个很薄的操作系统。
这种方案的性能处于主机虚拟化与操作系统虚拟化之间。
这种虚拟化方案需要我们修改各个guest虚拟机的内核,这也就是为不同的虚拟机打上可能需要打上不同的内核驱动。
例如:Xen
硬件辅助全虚拟化(HypervisorTyep II):
虚拟机运行在传统操作系统(HOST OS)上,同样创建的是硬件全仿真实例,被称为“托管(宿主)”型。
托管型/主机型Hypervisor运行在基础操作系统上,构建出一整套虚拟硬件平台(CPU/Memory/Storage/Adapter),使用者根据需要安装新的操作系统和应用软件,底层和上层的操作系统可以完全无关化,如Windows运行Linux操作系统。
主机虚拟化中VM的应用程序调用硬件资源时需要经过:VM内核->Hypervisor->主机内核,因此相对来说,性能是三种虚拟化技术中最差的。
例如:kvm
软件全虚拟化(Hypervisor Type III):
所谓的软件全虚拟化,即非硬件辅助全虚拟化,模拟CPU让VM使用,效率低。
例如:QEMU
4.操作系统虚拟化
称为轻量级虚拟化,允许操作系统内核拥有彼此隔离和分割的多用户空间实例(instance),这些实例也被称之为容器。
其是基于Linux内核中的namespace,cgroup,chroot,iptables,overlayFS等技术实现。
例如:LXC,Docker,Podman,Pouch等。
如果非要划分的话,其实操作系统虚拟化本质上属于软件全虚拟化(Hypervisor Type III)的一个分支。只不过其不需要模拟CPU,而是和宿主机共用同一个内核。
5.常见的虚拟化技术管理工具
三.虚拟化管理工具实战
1.虚拟机管理工具VMware Workstation pro
本教程我默认你是对VMware Workstation pro工具是非常熟练的,因此并不打算演示该软件的使用。
如果你对VMware Workstation pro产品不太熟练,建议采用如下的学习方案:
- VMware Workstation pro环境搭建及软件激活;
- VMware Workstation pro创建Guest,根据需求DIY操作系统配置;
- VMware Workstation pro基于Guest安装CentOS或者Ubuntu虚拟机操作系统;
- VMware Workstation pro的自定义网络,给虚拟机配置IP地址链接网络;
- VMware Workstation pro的虚拟机基于Xshell工具进行连接;
- VMware Workstation pro的快照使用指南;
- VMware Workstation pro的虚拟机迁移,导入和导出虚拟机;
- VMware Workstation pro的模板机使用指南;
- VMware Workstation pro的故障排查;
2.虚拟机管理工具KVM(Kernel-Based Virtual Machines)
2.1 KVM系统需求
- 官方主机要求:
- 1 core
- 2 GB memory
- 6 GB disk
- 我们学习使用中,建议配置高一点:
- 如上图1所示,我给了虚拟机8core,16G,200GB磁盘且CPU一定要勾选支持虚拟化功能;
如果你的配置较低,也可以考虑使用4core,8GB,100GB。
- 生产环境中,对于KVM的使用建议大家直接在Linux主机安装KVM,此处我们在学习环境中使用虚拟机来演示;
- 如上图2所示,安装KVM虚拟机时建议选择图形化安装以减少错误率;
- 如上图3所示,关闭KDUMP工具;
- Linux运行KVM虚拟机需求:(具体效果如下图所示)
lscpu | grep Virtualization:
egrep 'svm|vmx' /proc/cpuinfo # 有几颗CPU就会显示几次vmx指令哟,我这里是16core。
2.2 安装KVM虚拟化管理工具
1.安装软件包
yum -y install libvirt virt-install qemu-kvm
相关软件包说明:
libvirt:
一款通用的虚拟机管理软件,不仅仅能够操作kvm虚拟机,也可以操作xen,qemu的虚拟机。
libvirt能够管理虚拟机的生命周期,比如开机,关机,重启等操作。
virt-install:
给虚拟机安装操作系统的工具包。
qemu-kvm:
对于qemu,kvm、xen等虚拟磁盘格式是通用的。我们的KVM是基于qemu的磁盘技术做了一个优化,我们可以使用该工具来管理磁盘。
安装该软件包会自动帮咱们安装"qemu-img"工具包,其作用就是滚利虚拟机的虚拟磁盘。
2.启动服务
systemctl enable --now libvirtd
systemctl status libvirtd
2.3 安装一台KVM的虚拟机
1.启动虚拟机
virt-install --virt-type kvm \
--os-type=linux \
--os-variant rhel7 \
--name yinzhengjie-kvm01 \
--memory 2048 \
--vcpus 2 \
--disk /opt/yinzhengjie-kvm01.raw,format=raw,size=10 \
--cdrom /opt/CentOS-7-x86_64-DVD-2009.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
相关参数说明:
--virt-type:
指定虚拟机的类型,支持kvm,qemu,xen等虚拟机。
--os-type:
指定系统的类型。
--os-variant:
指定系统的版本号。
--name:
指定虚拟机的名称,每个虚拟机的名称必须唯一。
--memory:
指定虚拟机的内存大小。
--vcpus
指定CPU的核心数。
--disk:
指定磁盘的路径,使用format指定磁盘的格式,使用size自定磁盘大小,默认单位为GB。
--cdrom
自定ISO镜像文件连接。
--network
指定网络,可以自定多块网卡设备。
--graphics
指定图形化使用的协议及监听地址,如果不指定监听地址,默认监听地址为"127.0.0.1"。
--noautoconsole
不自动连接虚拟机的console,该参数可有可无。
2.使用vnc连接虚拟机
systemctl disable --now firewalld
netstat -untalp | grep 5900 # 注意,VNC服务端监听的默认端口为"5900",连接测试。
3.KVM虚拟机的日常使用指南
参考我的博客即可。
温馨提示:
- 每次启动虚拟机都会监听一个端口,默认监听的端口是从5900开始,依次递增;
该端口可以直接通过vnc客户端工具进行连接即可。
- 每次启动虚拟机都会启动一个qemu-kvm进程。
ps -ef | grep qemu-kvm