目录

  • 前言
  • 一、虚拟化
    • 1.1 虚拟化发展历史
    • 1.2 虚拟化分类
      • 1.2.1 架构分类
      • 1.2.2 虚拟化程度分类
    • 1.3 虚拟化的优势及劣势
      • 1.3.1 优势
      • 1.3.2 劣势
  • 二、KVM
    • 2.1 定义
    • 2.2 KVM架构图及模式
    • 2.3 KVM原理
    • 2.4 KVM工作流程
  • 三、KVM搭建
    • 3.1 VMware设置
    • 3.2 环境配置
    • 3.3 安装组件
    • 3.4 设置KVM网络
    • 3.5 KVM部署与管理

前言

虚拟化是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。一般所指的虚拟化资源包括计算能力和资料存储。

一、虚拟化

1.1 虚拟化发展历史

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

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

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

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

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

1.2 虚拟化分类

1.2.1 架构分类

  • 寄居虚拟化

寄居虚拟化最底层是物理硬件,物理硬件之上是主机的操作系统,操作系统之上是VMM(virtual machine monitor,虚拟机管理层),再往上就是客户的虚拟户了。

在这种技术里面,虚拟机对各种物理设备(cpu、内存、硬盘等)的调用,都是通过VMM层和宿主机的操作系统一起协调才完成的。VMvare和VirtualBox都是基于这种方式实现的。

  • 裸机虚拟化

裸机虚拟化指的是,直接将VMM安装在硬件设备与物理硬件之间。VMM在这种模式下又叫做Hypervisor,虚拟机有指令要执行时,Hypervisor会接管该指令,模拟相应的操作。

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

如果要进行虚拟化,必须要给虚拟机一个假的独立的环境,让他误以为自己处在一个独立的环境当中,于是就需要模拟cpu、内存、硬盘、网络等资源,模拟一个独立完整的硬件环境。

1.2.2 虚拟化程度分类

  • 全虚拟化

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

  • 半虚拟化

需要修改操作系统

  • 直通

直接使用物理硬件资源

理论上讲:

全虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比半虚拟化要高;
半虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

1.3 虚拟化的优势及劣势

1.3.1 优势

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

1.3.2 劣势

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

二、KVM

KVM官网地址

2.1 定义

广义KVM
KVM(Kernel-based Vritual Machine)–基于内核的虚拟机,KVM 是基于虚拟化扩展的X86硬件的开源Linux原生的全虚拟化方案(要求cpu支持Intel-VT-x或AMD-V)。

KVM内嵌于内核模块中,虚拟化硬件资源(处理器和内存)以支持虚拟机运行;虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚拟机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KVM 能够使用 Linux 内核的已有功能,但KVM本身不执行任何模拟。需要客户空间程序(虚拟机)通过/dev/kvm(此虚拟设备需要开起硬件辅助虚拟化才能看到)接口设置一个客户机虚拟服务器的地址空间,并且由Qemu模拟I/O(ioctl)进行调度资源和维护管理。

Libvirt:KVM的管理工具,除了可以管理KVM这类VMM,还可以管理Xen,VirtualBox,甚至OpenStack底层
Libvirt包含3个组件:后台daemon程序libvirtd、API库、命令行工具virsh。

2.2 KVM架构图及模式

客户模式(guestOS):VM中的OS为GuestOS
客户机在操作系统中运行的模式,客户机分为内核模式和用户模式,作用如下:
2、用户模式:
为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu工作在此模式下(Qemu的主要功能)
3、linux内核模式
模拟CPU、内存,实现客户模式切换,处理从客户模式的退出,KVM即运行在此模式下

2.3 KVM原理

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

2.4 KVM工作流程

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

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

三、KVM搭建

3.1 VMware设置

3.2 环境配置

# 修改主机名
[root@kvm ~]# hostnamectl set-hostname kvm
[root@kvm ~]# su# 将镜像光盘设为自动/永久挂载
[root@kvm ~]# vim /etc/fstab
/dev/sr0    /mnt    iso9660     defaults 0 0
[root@kvm ~]# mount -a
[root@kvm ~]# df -Th
/dev/sr0       iso9660   4.3G  4.3G     0  100% /mnt# 设置DNS反向解析
[root@kvm ~]# vim /etc/ssh/sshd_config
UseDNS no       # 反解DNS,设置为NO可以让客户端连接服务器更快# 制作本地YUM仓库
[root@kvm ~]# mkdir /abc
[root@kvm ~]# cd /etc/yum.repos.d/
[root@kvm yum.repos.d]# mkdir bak
[root@kvm yum.repos.d]# mv C* bak
[root@kvm yum.repos.d]# vim local.repo
[local]
name=kvm
baseurl=file:///mnt
gpgcheck=0
enabled=1
[root@kvm yum.repos.d]# yum clean all
[root@kvm yum.repos.d]# yum repolist# 关闭防火墙、核心防护
[root@kvm yum.repos.d]# systemctl stop firewalld
[root@kvm yum.repos.d]# systemctl disable firewalld
[root@kvm yum.repos.d]# setenforce 0
[root@kvm yum.repos.d]# vim /etc/selinux/config
SELINUX=disabled
[root@kvm ~]# systemctl stop NetworkManager

3.3 安装组件

# KVM 模块
[root@kvm ~]# yum -y install qemu-kvm
# 安装KVM 调试工具,可不安装
[root@kvm ~]# yum -y install qemu-kvm-tools
# 构建虚拟机的命令行工具
[root@kvm ~]# yum -y install virt-install
# qemu 组件,创建磁盘、启动虚拟机等
[root@kvm ~]# yum -y install qemu-img
# 网络支持工具
[root@kvm ~]# yum -y install bridge-utils
# 虚拟机管理工具
[root@kvm ~]# yum -y install libvirt
# 图形界面管理虚拟机
[root@kvm ~]# yum -y install virt-manager
# 设置开启启动界面的显示模式
[root@kvm ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

3.4 设置KVM网络

KVM网络的两种模式:

① NAT: 默认设置,数据包由 NAT 方式通过主机的接口进行

传送,可以访问外网,但是无法从外部访问虚拟机网络

② 网桥:这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持(一般有线网卡都支持)

# 使用Bridge网桥模式进行部署
[root@kvm ~]# vi /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=9c410a83-3355-4796-910e-4e6c9b265f68
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.61
#NETMASK=255.255.0.0
#GATEWAY=10.0.0.254
#DNS1=114.114.114.114
BRIDGE=br0# 创建桥接网卡br0并重启
[root@kvm ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=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=10.0.0.61
NETMASK=255.255.0.0
GATEWAY=10.0.0.254
DNS1=114.114.114.114
[root@kvm ~]# systemctl restart network

3.5 KVM部署与管理

# 创建KVM存储和镜像数据的目录、上传centos7镜像
[root@kvm ~]# mkdir -p /kvm_data/iso   #存储镜像
[root@kvm ~]# mkdir -p /kvm_data/store   #存储数据
[root@kvm ~]# ls /kvm_data/iso/
CentOS-7-x86_64-DVD-1708.iso# 使用虚拟系统管理器管理虚拟机
[root@kvm ~]# virt-manager

后续图形化操作如下

KVM虚拟化技术介绍及搭建相关推荐

  1. KVM虚拟化平台介绍及搭建

    文章目录 一:虚拟化技术 1.1:虚拟化技术发展 1.2:虚拟化类型 1.3:虚拟化的特性: 优势 劣势 案例: 二:KVM: 2.1.KVM 原理简介 2.2.KVM架构及原理 2.3.KVM原理 ...

  2. 云计算运营—03 KVM虚拟化技术方案介绍

    KVM虚拟化技术方案介绍 1.背景介绍 KVM(Kernel-based Virtual Machine) 开源全虚拟化方案 支持体系结构 x86(32位,64位).IA64.PowerPC.S390 ...

  3. Linux KVM 虚拟化技术

    目录 KVM 介绍 一.KVM虚拟化 二.虚拟化技术 三.虚拟化技术发展 四.虚拟化类型 五.虚拟化特性 优势 劣势 案例 VMM主要功能 六.KVM架构及原理 KVM简介 KVM原理 KVM虚拟化架 ...

  4. kvm虚拟化技术下虚拟机磁盘的数据保护

    摘要:kvm虚拟化技术下虚拟机的磁盘空间中数据的保护与恢复,考虑kvm的服务器级别的可用性. 1.kvm技术简单介绍    kvm虚拟化技术由几部分构成,kvm内核模块(cpu和内存的虚拟化及管理), ...

  5. KVM虚拟化技术的-NUMA技术和应用

    KVM虚拟化技术的-NUMA技术和应用 NUMA技术是解决多CPU共同工作的技术方案,多CPU共同工作主要有3中架构:SMP:Symmetric Multi-Processor),非统一存储访问结构( ...

  6. 【HCIA】虚拟化技术介绍

    虚拟化技术介绍 虚拟化(Virtualization)的含义很广泛.将任何一种形式的资源抽象成另一种形式的技术都是虚拟化,是资源的一种逻辑表示.解除了物理硬件和操作系统之间的紧耦合关系. •虚拟化是云 ...

  7. KVM 虚拟化技术以及 KVM 和云计算的关系

    KVM 是 Kernel-based Virtual Machine 的简称,KVM 要求 CPU 支持硬件虚拟化技术(如 intel VT 或 AMD-V),是 Linux 下的全虚拟化解决方案.K ...

  8. KVM虚拟化技术(三)之克隆虚拟机

    大家好,我是邵奈一,一个不务正业的程序猿.正儿八经的斜杠青年. 1.世人称我为:被代码耽误的诗人.没天赋的书法家.五音不全的歌手.专业跑龙套演员.不合格的运动员- 2.这几年,我整理了很多IT技术相关 ...

  9. KVM 虚拟化技术之Hypervisor的实现

    KVM 虚拟化技术之Hypervisor的实现 VMM(VirtualMachineMonitor)对物理资源的虚拟可以划分为三个部分: CPU虚拟化.内存虚拟化和I/O设备虚拟化,其中以CPU的虚拟 ...

最新文章

  1. Demo:充分利用 Ajax 技术 来体现页面局部刷新 效果(获取天气预报情况)
  2. Linux信号处理函数可中断么,linux中关于信号处理笔记(一)
  3. 一段不错的话透过公车的玻璃窗突然看见你
  4. mysql zip win10安装_mysql 8.0.16 Win10 zip版本安装配置图文教程
  5. 论文阅读:Spatial context-aware network for salient object detection
  6. 如何在Python中表示一个无限数?
  7. forge是用java装吗_我的世界forge怎么安装 forge使用方法
  8. sudo chmod 755 ....指令分析
  9. elementui 中的 el-descriptions 文字居中显示
  10. 滤波器原理及其作用计算机网络,什么是网络滤波器_网络滤波器工作原理_网络滤波器作用-与非网...
  11. FreeRTOS 任务调度 系统节拍
  12. PyTorch 深度学习实践 第3讲 反向传播
  13. 教师在家长群内表扬配合家长的话术
  14. “集五福”瓜分20亿!互联网巨头扎堆春节红包大战,暗藏啥玄机?
  15. 分分钟带你学会DNS、WEB、DHCP服务器的搭建
  16. [转] 高度近视也不用带眼镜了 只要有恒心,坚持三年,即使800度近视也可以根治。
  17. 【爬虫】网页抓包工具--Charles的使用教程
  18. TECS——ArduPilot——代码框架理解
  19. try to re connect to a new server ,server is not appointed,will choose a random server
  20. 小程序使用formdata格式传参

热门文章

  1. Elasticsearch 实战 - 第三讲:ES 基本操作、批处理
  2. linux安装并配置ffmpeg
  3. 一部高清电影在不同分辨率下文件大概各有多大
  4. Excel 日期或时间为负值或太大时会显示为#####
  5. ps ef grep mysql_linux ps -ef grep查找进程
  6. 【CCF 201912-2】 回收站选址(两种方法)
  7. Java 格式化 XML
  8. linux grep工作常用
  9. oracle倍数四舍五入,Oracle 的 Round 函數(四舍五入)函数
  10. Virtual Data Augmentation: 虚拟数据扩增技术