一、KVM概述

KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine)

是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor

  • 它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。
  • 它支持 x86 (32 and 64 位), s390, Powerpc 等 CPU。
  • 它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
  • 它需要支持虚拟化扩展的 CPU。
  • 它是完全开源的。
(1)虚拟化产生背景

美国环境保护EPA报告中曾经统计过一组统计数据:EPA研究服务器和数据中心得能源效率时发现,实际上服务器只有5%得时间时在工作的,其他时间一直处于休眠状态
软件资源是没有硬件资源性能高(稳定和效率)的(相同功能)

(2)虚拟化类型
  • 全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用

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

  • 半虚拟化:需要修改操作系统
  • 直通:直接使用物理硬件资源(需要支持,还不完善)
(3)虚拟化优劣势

优势

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

劣势

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

KVM虚拟化架构/三种模式

客户模式(guestOS):VM中的OS为Guestos

  • 客户机在操作系统中运行的模式,客户机分为内核模式和用户模式

用户模式:

  • 为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu工作在此模式下(Qemu的主要功能)

linux内核模式

  • 模拟CPU、内存,实现客户模式切换,处理从客户模式的推出,KVM即运行在此模式下

KVM原理

  • Guest:客户机系统,包括CPU (vCPU)、内存、驱动(Console、网卡、I/O设备驱动等),被KVM置于—种受限制的CPU模式下运行。
  • KVM内核模块模拟处理器和内存以支持虚拟机运行
  • Qemu主要处理l/O以及为客户提供一个用户空间/dev/kvm
    libvirt来进行虚拟机管理ioctl(定义)专用于设备输入输出操作的系统调用

以上构成一个完整的虚拟化平台

二、实验搭建

(1)基础环境

进行一些基础的配置

----修改主机名----
 hostnamectl set-hostname kvm 
 su
----将镜像光盘挂载----
vim /etc/fstab
/dev/cdrom /mnt iso9660 defaults 0 0
mount -a 

环境优化

----设置DNS反向解析----(是否反解DNS,设置为NO可以让客户端连接服务器更快)
vim /etc/ssh/sshd_config 
----115行 取消DNS注释,改为NO----
UseDNS no 

YUM仓库

----本地YUM仓库----
cd /etc/yum.repos.d/
mv CentOS-* repo.bak

vim local.repo

[local]
name=kvm
baseurl=file:///abc
gpgcheck=0
enabled=1

yum clean all && yum makecache

关闭防火墙策略

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
(2)安装KVM

安装KVM基本组件

安装 GNOME 桌面环境  如果装了图形界面可以不需要装
yum groupinstall -y "GNOME Desktop"

==KVM 模块==
yum -y install qemu-kvm

==安装KVM 调试工具,可不安装==
yum -y install qemu-kvm-tools

==构建虚拟机的命令行工具==
yum -y install virt-install

==qemu 组件,创建磁盘、启动虚拟机等==
yum -y install qemu-img

==网络支持工具==
yum -y install bridge-utils

==虚拟机管理工具==
yum -y install libvirt

==图形界面管理虚拟机==	
yum -y install virt-manager

CPU是否支持虚拟化

cat /proc/cpuinfo | grep vmx 

在这里插入图片描述
查看KVM模块是否已安装

lsmod | grep kvm

设置开启启动界面的显示模式

ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
(3)设置KVM网络
  • NAT 默认设置,数据包由 NAT 方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络
  • 网桥:这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持(一般有线网卡都支持)
vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=none	'//原本的修改为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="0739b616-18e4-49b1-9a09-f75cc793899b"
DEVICE="ens33"
ONBOOT="yes"
#IPADDR=192.168.90.10
#NETMASK=255.255.255.0
#GATEWAY=192.168.90.2
#DNS1=8.8.8.8
#DNS2=114.114.114.114
BRIDGE=br0	'//注释掉原本的IP地址,添加此段'

创建、编辑桥接网卡

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.90.10              #这里可以改成之前ens33的ip,这样就可以再次连上xshell了
NETMASK=255.255.255.0
GATEWAY=192.168.90.2              #网卡也跟之前一样
systemctl restart network	'重启网卡'

到这一步基本的虚拟化环境已经配置完成

如果需要创建虚拟机

 virt-manager

输入完之后桌面会有管理虚拟机的一个可视化工具安装

自行创建即可

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐