跳转至

虚拟化技术

一、计算机系统虚拟化定义

1.1 物理机向虚拟机演进过程

当物理机资源足够某一应用使用,并有多余的富余时,可以把多余的资源提供给其它的应用使用,这时就需要一种计算资源“打包技术”,2001年vmware公司提出来虚拟机,即在一台物理机上运行多个虚拟机,让不同或相同的应用使用虚拟机运行,这就达到了共享一台物理机计算资源的方式。

image-20220110200045146

image-20220110200109732

1.2 计算机系统虚拟化定义

计算机系统虚拟化就是对计算机资源的抽像。在物理机中创建软件或虚拟表示形式的应用、服务器、存储和网络,以减少 IT 开销,同时提高效率和敏捷性。

虚拟化可以提高 IT 敏捷性、灵活性和可扩展性,同时大幅节约成本。更高的工作负载移动性、更高的性能和资源可用性、自动化运维 - 这些都是虚拟化的优势,虚拟化技术可以使 IT 部门更轻松地进行管理以及降低拥有成本和运维成本。

二、虚拟化技术分类

2.1 虚拟化管理程序 Hypervisor(VMM)

一种运行在物理机和虚拟机操作系统之间的中间==软件层==,可以允许多个操作系统和应用共享硬件,即虚拟机监视器,也可称之为VMM。

image-20220110155353456

2.2 虚拟化管理程序 Hypervisors作用

Hypervisor是所有虚拟化技术的核心。 非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。

Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,而且在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。

2.3 虚拟化管理程序Hypervisors分类

目前市场上各种x86 管理程序(hypervisor)的架构存在差异,三个最主要的架构类别包括:

2.3.1 半虚拟化(Hypervisor Type I)

虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”型。 裸机型在虚拟化中Hypervisor直接管理调用硬件资源,不需要底层操作系统,也可以将Hypervisor看作一个很薄的操作系统。这种方案的性能处于主机虚拟化与操作系统虚拟化之间。

例如:Xen

image-20220110194319016

image-20220110194348034

2.3.2 硬件辅助全虚拟化(HypervisorTyep II)

虚拟机运行在传统操作系统(HOST OS)上,同样创建的是硬件全仿真实例,被称为“托管(宿主)”型。托管型/主机型Hypervisor运行在基础操作系统上,构建出一整套虚拟硬件平台(CPU/Memory/Storage/Adapter),使用者根据需要安装新的操作系统和应用软件,底层和上层的操作系统可以完全无关化,如Windows运行Linux操作系统。主机虚拟化中VM的应用程序调用硬件资源时需要经过:VM内核->Hypervisor->主机内核,因此相对来说,性能是三种虚拟化技术中最差的。

例如:kvm

image-20220110194527729

image-20220110194550287

2.3.3 软件全虚拟化(Hypervisor Type III)

所谓的软件全虚拟化,即非硬件辅助全虚拟化,模拟CPU让VM使用,效率低,例如:QEMU

2.3.4 操作系统虚拟化

称为轻量级虚拟化,允许操作系统内核拥有彼此隔离和分割的多用户空间实例(instance),这些实例也被称之为容器。其是基于Linux内核中的namespace,cgroup实现

例如:LXC,Docker

image-20220110195509448

三、虚拟化技术管理工具

image-20220110151928337

四、虚拟机管理工具 VMware Workstation pro

4.1 安装前准备

  • 创建安装目录

image-20220111141447039

  • 准备操作系统ISO镜像文件

image-20220111141519483

  • 虚拟机软件准备

image-20220111141943956

4.2 安装Linux操作系统虚拟机

4.2.1 创建虚拟机

image-20220111152601888

image-20220111142255315

image-20220111142334823

image-20220111142511897

image-20220111142535948

image-20220111142606674

image-20220111142811078

image-20220111142844069

image-20220111142910855

image-20220111142933018

image-20220111142952608

image-20220111143014339

image-20220111143033619

image-20220111143138494

image-20220111143204016

image-20220111143237484

4.2.2 安装操作系统

image-20220111143507489

image-20220111143631795

image-20220111143747401

image-20220111143830169

image-20220111144005531

image-20220111144154956

image-20220111144254002

image-20220111144409337

image-20220111144453627

image-20220111144547786

image-20220111144638457

image-20220111144720723

image-20220111144745098

image-20220111144823978

image-20220111145005563

image-20220111144921587

image-20220111145053730

image-20220111145809091

image-20220111145937589

image-20220111150021029

image-20220111150042642

image-20220111150130846

image-20220111150430571

image-20220111150452529

image-20220111150516285

image-20220111150542618

image-20220111150600954

image-20220111150708634

image-20220111150735190

4.3 VMware Workstation虚拟机网络设置

image-20220111152914753

image-20220111153030283

# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="c8838cc3-83d3-45fb-8ddd-863e5f6c7c2c"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.10.130"
PREFIX="24"
GATEWAY="192.168.10.2"
DNS1="119.29.29.29"

image-20220111153523824

# systemctl restart network
# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:2d:2e:6b brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.130/24 brd 192.168.10.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::81a2:2c89:8b27:a756/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
ping网关检查网络连通性
# ping 192.168.10.2
PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.
64 bytes from 192.168.10.2: icmp_seq=1 ttl=128 time=0.186 ms
64 bytes from 192.168.10.2: icmp_seq=2 ttl=128 time=0.369 ms
64 bytes from 192.168.10.2: icmp_seq=3 ttl=128 time=0.145 ms
ping互联网服务器检查网络连通性
# ping -c 4 www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=128 time=11.7 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=128 time=11.6 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=128 time=12.1 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=128 time=11.6 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 11.629/11.778/12.118/0.239 ms

4.4 VMware Workstation虚拟机系统安全设置及更新

4.4.1 关闭防火墙

关闭防火墙
# systemctl stop firewalld
设置防火墙为开机禁用状态
# systemctl disable firewalld

4.4.2 关闭SELINUX

关闭SELINUX后必须重启系统才能使其修改生效
# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
确认是否关闭
# cat /etc/selinux/config

......
SELINUX=disabled
......

4.4.3 更新系统

更新系统
# yum -y update
重启操作系统
# reboot

4.5 VMware Workstation虚拟机快照设置

为了防止部署应用过程中多次使用同一环境,可以考虑使用虚拟机快照功能。建议关闭虚拟机后再做快照。

image-20220111153951801

image-20220111154024872

image-20220111154107331

image-20220111154248279

4.6 VMware Workstation Pro模板机

在后期应用中,可能会同时需要多台虚拟机,建议使用虚拟机模板机创建虚拟机使用。虚拟机模板机安装完成后,关闭防火墙、关闭SELINUX、更新操作系统即可,不需要配置IP地址,后期使用过程中再设置IP地址。

4.6.1 新安装的虚拟机硬盘文件注意事项

image-20220111143138494

4.6.2 利用模板机快速创建虚拟机

image-20220111154718283

image-20220111154818419

image-20220111154951242

image-20220111155010629

image-20220111155037173

image-20220111155059999

image-20220111155159931

image-20220111155237982

image-20220111155300651

image-20220111155316649

image-20220111155338372

image-20220111155402773

image-20220111155423525

image-20220111155445712

image-20220111155549589

image-20220111155615710

image-20220111155640584

五、虚拟机管理工具KVM

5.1 KVM系统需求

官方推荐宿主机硬件需求 Host system requirements
1.1核心
2.2G内存
3.6G硬盘
运行KVM虚拟机需求
KVM hypervisor requirements
[root@localhost ~]# lscpu
虚拟化           VT-x       #intel虚拟技术
检查CPU是否有以下特性此特性支持CPU虚拟化
[root@localhost ~]#  egrep 'svm|vmx'  /proc/cpuinfo
vmx
在BIOS中开启虚拟化功能
BIOS Enable Virtualization
不同CPU厂商 CPU虚拟化技术名称
Intel CPU:  VT-x
AMD CPU:  AMD -V

5.2 安装KVM虚拟机管理工具

如果需要在vmware workstation 测试环境上安装kvm:

管理KVM虚拟机管理工具组件
[root@localhost ~]# yum grouplist
[root@localhost ~]# yum -y groupinstall "虚拟化*"
安装完成后验证libvirtd状态及系统模块是否添加
[root@localhost ~]#systemctl status libvirtd
[root@localhost ~]#lsmod | grep kvm
在firewalld中配置default默认区域中masquerade以便虚拟机通过连接外网
[root@localhost ~]# firewall-cmd --permanent --zone=public  --add-masquerade

加载配置使上述配置生效
[root@localhost ~]# firewall-cmd --reload
通过命令查看虚拟机列表
[root@localhost ~]# virsh list --all

5.3 使用virt-manager安装KVM虚拟机

5.3.1 准备

  • 准备iso镜像文件
  • 准备一套系统预备工具 PXE&kickstart || Cobbler

5.3.2 KVM虚拟机组成

  • 磁盘镜像文件 /var/lib/libvirt/images
  • 配置文件 /etc/libvirt/qemu/

5.3.3 Linux主机安装

virt-manager

1545964085410

1545964256167

1545964311912

1545964480043

1545964650939

1545964871080

1545965036341

1545965229134

1545965315019

1545965440953

1545965688832

1545965872625

1545965938349

5.3.4 查看已安装的虚拟机

通过命令查看虚拟机列表
[root@localhost ~]# virsh list --all