KVM虚拟化平台部署详解

一、虚拟化技术

VMM一般指虚拟机监视程序。

通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率。

以软件形式实现物理设备的功能

软件资源是没有硬件资源性能高(稳定和效率)的(相同功能)

二、虚拟化技术发展

雏形:

1961年,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这些时间片进行轮询从而将一个CPU伪装成多个CPU;

1972年, IBM正式将system370机的分时系统命名为虚拟机;

1990年, IBM推出的system390机支持逻辑分区(将一个CPU分为多份,相互独立,也就是逻辑分割);

Xen 2003年问世,是一个外部的hypervisor程序(虚拟机管理程序),能够控制虚拟机和给多个客户机分配资源;

KVM:2007年问世,现已内置在kernel内核中的.

三、虚拟化类型

1、全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用

使用的方法:使用hypervisor(VMM)软件,其原理是在底层硬件和服务器之间建立一个抽象层,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。

2、半虚拟化:需要修改操作系统(开启硬件辅助———软件形式事务虚拟化功能)

3、直通:直接使用物理硬件资源(需要支持,还不完善)

Xen 支持的虚拟化技术:全虚拟化,半虚拟化
KVM:支持的虚拟化技术:全虚拟化

四、虚拟化的特性

优势
① 集中化管理(远程管理、维护)
② 提高硬件利用率(物理资源利用率低-例如峰值,虚拟化解决了“空闲”容量)
③ 动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)
④ 高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境)

劣势
① 前期高额费用(初期的硬件支持)
② 降低硬件利用率(特定场景-例如极度吃资源的应用不一定适合虚拟化)
③ 更大的错误影响面(本地物理机down机会导致虚拟机均不可用,同时可能虚拟机中文件全部损坏)
④ 实施配置复杂、管理复杂(管理人员运维、排障困难)
⑤ 一定的限制性(虚拟化技术涉及各种限制,必须与支持/兼容虚拟化的服务器、应用程序及供应商结合使用)
⑥ 安全性(虚拟化技术自身的安全隐患)

五、虚拟化前后对比

5.1 虚拟化前

  • 每台主机拥有一个操作系统
  • 软硬件紧密结合
  • 在同一个主机上运行多个应用程序通常会产生冲突
  • 系统资源利用率低(例如: 5%)
  • 硬件成本高昂并且不够灵活(物理资源有限)

5.2 虚拟化后

  • 打破了操作系统和硬件的互相依赖
  • 通过封装到虚拟机的技术,管理操作系统和应用程序为单一的个体
  • 强大的安全和故障隔离
  • 虚拟机时独立于硬件的,它们可以在任何硬件上运行

六、KVM

6.1、KVM简介

  • 广义的 KVM 实际上包含两部分, 一部分是基于 LINUX 内核支持的 KVM 内核模块, 另一部分就是经过简化和修改的 Qemu。
  • KVM 内核模块模拟处理器和内存以支持虚拟机的运行,Qemu 主要处理 I/O 以及为用户提供一个用户空间工具来进行虚拟机的管理。
    两者相互结合, 相辅相成, 构成了一个完整的虚拟化平台。
  • 请注意: Qemu 本身并不是 KVM 的一部分, Qemu 是一套完整的虚拟化解决方案, 是纯软 件实现虚拟化, 包括处理器虚拟化、内存虚拟化以及各种虚拟设备的模拟, 但因为是纯软件 模拟出来的, 所以 Qemu 的性能比较低。

6.2、KVM架构及简介

KVM 虚拟化架构/三种模式

  • 客户模式: 可以简单理解成客户机在操作系统运行中的模式, 客户模式又分为内核模式 和 用户模式。
    • 用户模式: 为用户提供虚拟机管理的用户空间工具以及代表用户执行 I/O, Qemu 运行在这个模式之下。
    • 内核模式: 模拟 CPU 以及内存, 实现客户模式的切换, 处理从客户模式的退出。 KVM 内 核模块运行在这个模式下

在这里插入图片描述

6.3、KVM工作流程

在这里插入图片描述

用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。 KVM驱动为虚拟机创建虚拟 CPU 和虚拟内存,然后执行 VMLAU·NCH 指令进入客户模式,装载 Guest OS 并运行。Guest OS 运行过程中如果发生异常,则暂停Guest OS的运行并保存当前状态同时退出到内核模式来处理这些异常。

内核模式处理这些异常时如果不需要 I/O则处理完成后重新进入客户模式。如果需要 I/O 则进入到用户模式, 则由 Qemu 来处理 I/O,处理完成后进入内核模式,再进入客户模式。

七、搭建KVM虚拟机

7.1、搭建环境

  • centos7系统安装完成后,需要勾选上KVM虚拟化功能,且网卡选择NAT模式

在这里插入图片描述

[root@localhost ~]# hostnamectl set-hostname kvm
[root@localhost ~]# bash
  • ssh环境优化
设置DNS反向解析
#是否反解DNS,设置为NO可以让客户端连接服务器更快
[root@kvm ~]# vim /etc/ssh/sshd_config 
UseDNS no	#取消DNS注释,改为NO
  • 防火墙优化
[root@kvm ~]# systemctl stop firewalld
[root@kvm ~]# setenforce 0
  • 已完成所有开局优化,重启系统
[root@kvm ~]# reboot

7.2、安装KVM

安装KVM基本组件

[root@kvm ~]# yum -y groupinstall  "GNOME Desktop"  #安装 GNOME 桌面环境  如果装了图形界面不需要装了
[root@kvm ~]# yum -y install qemu-kvm  #安装KVM 模块
[root@kvm ~]# yum -y install qemu-kvm-tools    #KVM 调试工具,可不安装
[root@kvm ~]# yum -y install virt-install     #构建虚拟机的命令行工具
[root@kvm ~]# yum -y install qemu-img    #qemu 组件,创建磁盘、 启动虚拟机等
[root@kvm ~]# yum -y install bridge-utils   #网络支持工具
[root@kvm ~]# yum -y install libvirt   #虚拟机管理工具
[root@kvm ~]# yum -y install virt-manager   #图形界面管理虚拟机

[root@kvm ~]# reboot	#重启
  • 设置开启启动界面的显示模式
[root@kvm ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
# 将 系 统 的 默 认 运 行 target 更 改 为graphical.targe。 重启后系统将进入图形化界面。
  • 进行一些检查
[root@kvm ~]# cat /proc/cpuinfo | grep vmx	# 检测CPU是否支持虚拟化

在这里插入图片描述

[root@kvm ~]# lsmod | grep kvm	#查看KVM模块是否已安装
kvm_intel             170086  0 
kvm                   566340  1 kvm_intel
irqbypass              13503  1 kvm

[root@kvm ~]# systemctl start libvirtd	#开启libvirtd服务
[root@kvm ~]# systemctl enable libvirtd	#开机启动libvirtd服务

7.3、设置KVM网络为桥接

  • 宿主服务器安装完成 KVM, 首先要设定网络, 在 libvirt 中运行 KVM 网络有两种方法: NAT 和 Bridge, 默认是NAT。
    • 用户模式, 即 NAT 方式, 这种方式是默认网络, 数据包由 NAT 方式通过主机的接口进行 传送, 可以访问外网,但是无法从外部访问虚拟机网络。
    • 桥接模式, 这种模式允许虚拟机像一台独立的主机一样拥有网络, 外部的机器可以直接 访问到虚拟机内部, 但需要网卡支持,一般有线网卡都支持。 这里以 Bridge(桥接) 为例。
  • 修改ens33网卡
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none	#原本的修改为none
#IPADDR=192.168.40.11
#NETMASK=255.255.255.0
#GATEWAY=192.168.40.2
#DNS=192.168.40.2
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=6e44752d-2834-4078-8fdb-94477ef302c0
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0	#注释掉原本的IP地址,添加此处
  • 新建桥接网卡
[root@kvm ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
OTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.40.11
NETMASK=255.255.255.0
GATEWAY=192.168.40.2
添加上述内容即可

[root@kvm ~]# systemctl restart network	#重启网卡

7.4、创建KVM存储和镜像数据的目录、上传centos7镜像

[root@kvm ~]# mkdir -p /data_kvm/iso   #上传镜像centos 7.6的镜像
[root@kvm ~]# mkdir -p /data_kvm/store    #虚拟机存储

[root@kvm ~]# ls /data_kvm/iso/
CentOS-7-x86_64-DVD-1708.iso

[root@kvm ~]# virt-manager      #图形界面敲,打开虚拟系统管理器

在这里插入图片描述

7.5、进入安装步骤

创建存储池

双击打开QEMU/KVM–存储–添加(加号)–填写名称–前进–浏览–其他位置–计算机–data_kvm–store–打开–完成,使用相同方法创建镜像存储池,选择的文件夹是/data_kvm/iso
在这里插入图片描述
在这里插入图片描述
创建存储池存储镜像

在这里插入图片描述
在这里插入图片描述
创建存储卷

在这里插入图片描述
在这里插入图片描述
创建虚拟机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

一个完整的数据包从虚拟机到物理机的路径是:

虚拟机–QEMU虚拟网卡–虚拟化层–内核网桥–物理网卡

KVM的网络优化方案,总的来说,就是让虚拟机访问物理网卡的层数更少,直至对物理网卡的单独占领,和物理机一样的使用物理网卡,达到和物理机一样的网络性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值