KVM 虚拟化技术

  • 一、虚拟化技术
    • 1.1 概述
    • 1.2 类型
      • ① 全虚拟化
      • ② 半虚拟化
      • ③ 直通
    • 1.3 特点
  • 二、KVM
    • 2.1 概述
    • 2.2 原理
    • 2.3 虚拟化架构
    • 2.4 工作流程
  • 三、部署 KVM 虚拟化平台
    • 3.1 宿主机最低配置
    • 3.2 环境优化
      • ① 关闭 DNS 反向解析
      • ② 将镜像光盘设置为自动挂载
      • ③ 设置本地源和网络源
      • ④ 关闭防火墙和安全防护
    • 3.3 安装 KVM 基本组件
      • ① 安装基本组件
      • ② 检测 CPU 是否支持虚拟化
      • ③ 查看 KVM 模块是否以安装
    • 3.4 设置 KVM 网络
    • 3.5 KVM 部署与管理
    • 3.6 使用虚拟管理器管理虚拟机

一、虚拟化技术

1.1 概述

将一台服务器资源逻辑分片成多个相互独立的空间,从而提高计算机整体的工作效率
举例:

在Windows系统中虚拟化出多个操作系统,每个操作系统运行的服务不同,例如Nginx+Tomcat,实现一台服务器部署集群

1.2 类型

① 全虚拟化

将物理硬件资源通过VMM软件的方式虚拟化,然后统一分配调用
全虚拟化的运行速度要快于硬件模拟,但是性能不如裸机,因为VMM软件(需要占用一些资源)

② 半虚拟化

类似于全虚拟化技术,但是需要更改系统内核才能实现虚拟化
半虚拟化性能可以接近于裸机上的性能

③ 直通

能直接调用硬件资源

1.3 特点

优势 劣势
能够集中化管理 前期费用高额
提高硬件利用率 降低硬件利用率
能够动态调整资源 更大的错误影响面
高可靠 安全性

二、KVM

2.1 概述

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

2.2 原理

  • KVM驱动提供处理器、内存的虚拟化,以及客户机I/O的拦截
  • Guest的I/O被拦截后,交给Qemu处理
  • Qemu利用接口libkvm调用(ioctl)虚拟机设备接口/dev/kvm来分配资源、管理、维护虚拟机

2.3 虚拟化架构

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

2.4 工作流程

  1. 用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式
  2. KVM 驱动为虚拟机创建虚拟 CPU 和虚拟内存,然后执行
  3. VMLAU-NCH 指令进入客户模式,装载 Guest OS 并运行
  4. Guest OS 运行过程中如果发生异常,则暂停 Guest OS 的运行并保存当前状态同时退出到内核模式来处理这些异常
  5. 内核模式处理这些异常时如果不需要 I/O 则处理完成后重新进入客户模式
  6. 如果需要 I/O 则进入到用户模式,则由 Qemu 来处理 I/O,处理完成后进入内核模式,再进入客户模式

三、部署 KVM 虚拟化平台

3.1 宿主机最低配置

CPU 内存 硬盘 网卡 操作系统
2核2线程 8G 100G 单网卡 CentOS 7

3.2 环境优化

① 关闭 DNS 反向解析

cd /etc/ssh
cp ssh_config{,.bak}
vim ssh_config#115行
#将注释去除并修改为no
UseDNS nosystemctl restart sshd

② 将镜像光盘设置为自动挂载

echo "/dev/cdrom /mnt iso9660 defaults 0 0" >> /etc/fstab
mount -a
df -hT

③ 设置本地源和网络源

cd /etc/yum.repos.d/
mkdir repo_bak;
mv *.repo repo_bak;
wget -nc http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo CentOS-Base.repo
echo "
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
" > local.repo;yum clean all && yum makecache

④ 关闭防火墙和安全防护

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3.3 安装 KVM 基本组件

① 安装基本组件

安装图形化界面

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|svm)'

③ 查看 KVM 模块是否以安装

lsmod | grep kvm

3.4 设置 KVM 网络

KVM网络的两种模式

  1. NAT:默认认设置,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络
  2. 网桥:这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持(一般有线网卡都支持)

下面我们使用Bridge网桥模式进行部署

vim /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=P98632e8-9e37-499e-af39-897cf7a3b59e
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0                 #设置为网桥模式,关联br0网卡vim /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=192.168.0.10
NETMASK=255.255.255.0
GATEWAY=192.168.0.2service network restart

3.5 KVM 部署与管理

mkdir -p /data_kvm/iso
mkdir -p /data_kvm/store
#创建KVM存储和镜像数据的目录将centos7镜像文件上传至/data_kvm/iso,推荐winscp

3.6 使用虚拟管理器管理虚拟机

  1. 创建存储池(ISO、STORE)
  2. 添加存储卷
  3. 创建虚拟机
virt-manager














KVM 虚拟化技术 | 虚拟化平台部署相关推荐

  1. [由零开始] 容器虚拟化技术和自动化部署-Docker

    伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中. 部署.交付.运行 传统来看,虚拟化(vm)既可以通过硬件模拟来实现,也可以通过操作系统软件来实现.而容器技术则 更为优雅,它充分利 ...

  2. 云计算之虚拟化技术概述(KVM/Xen/Hyper-V/VMware)

    文章目录 虚拟化技术 什么是虚拟化 服务器虚拟化 cpu的虚拟化 内存虚拟化管理 硬盘的虚拟化 网络虚拟化 IO虚拟化 Intel虚拟化技术 主流的虚拟化技术 虚拟化技术对比 KVM Xen Hype ...

  3. 编译安装KVM虚拟化技术

    目录 一.虚拟化技术 二.虚拟化的历史 2.1 Xen和KVM的区别 三.虚拟化的类型 四.虚拟化的优劣势 4.1 优势 4.2 劣势 五.KVM简介 六.KVM架构及原理 七.KVM原理 八.安装虚 ...

  4. 虚拟化技术比较:OpenStack、KVM、VMWare和Docker

    一.虚拟化 1.什么是虚拟化 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内 ...

  5. 计算机处理io和cpu,虚拟化技术原理(CPU、内存、IO)

    虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一. 云计算的云端系统, 其实质上就是一个大型的分布式系统. 虚拟化通过在一个物理平台上虚拟出更多的虚拟平台, 而其中 ...

  6. 从虚拟机到容器,详谈各种服务虚拟化技术及其应用场景

    前言 近几年容器(Container).Kubernetes等技术在数据中心.云计算.各互联网公司的业务服务中得到广泛应用,和20世纪60年代就兴起的虚拟机(Virtual Machine,VM)技术 ...

  7. 聊聊 Docker 和 虚拟化技术

    参考docker 运行效率_这么火的Docker,到底是什么?_魔王不造反的博客-CSDN博客 什么是Docker? 上周二,陈工收到领导的工作指示,需要他把.net开发的网站和php开发的网站安装在 ...

  8. k8s入门之虚拟化技术基本概念

    1.为什么要学习kubernetes? 以k8s为核心的云原生技术正在吃掉整个世界:无论是传统企业,互联网企业就是数字化转型:就是把服务迁移到云原生平台上面:kubernetes一定是未来企业架构唯一 ...

  9. Xen和虚拟化技术学习指南

    1. 引言 现代计算机具有足够强大的能力来利用技术支持多个虚拟机(VM: virtual machines),并且在每个虚拟机上各自运行单独的操作系统实例.这直接导致了虚拟机技术发展的又一个春天.在本 ...

最新文章

  1. 2021世界人工智能大会最高奖项——卓越人工智能引领者奖(Super AI Leader,简称SAIL奖)在大会开幕式揭晓...
  2. python不读第一行和第一列-python 第一个
  3. write() ,read();
  4. hive hql文档_30分钟入门 Hive SQL(HQL 入门篇)
  5. 三层架构项目如何发布_以k8s集群管理为例,大牛教你如何设计优秀项目架构
  6. C++学习笔记:(一)面向对象 类与对象
  7. Android之自定义控件入门
  8. Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap
  9. webrtc静音检测
  10. 如何选择RabbitMQ和Kafka
  11. plsql口令过期_Oracle 11g中密码过期问题详解
  12. 关于Python的那些话
  13. innobackupex: ibbackup failed at /usr/bin/innobackupex line 2560.
  14. python可以爬wind的数据_Python:爬取上市公司公告-Wind-CSMAR
  15. 普适计算Topic推荐-AMiner
  16. 【每日最爱一句】2013.07.24
  17. 使用echarts的3D地图中的map3D与scatter3D混合使用时出现坐标位移的情况
  18. IT行业招聘技巧--渠道篇
  19. 1.MySQL数据库 2.SQL语句
  20. 思岚科技邀您体验智能黑科技 届时将惊现明星大咖!

热门文章

  1. Real-time human pose recognition in parts from single depth images 中文翻译【译】【中译】微软kinect中用的算法
  2. 十四届全国大学生数学竞赛
  3. debian查看linux语言环境,如何在Debian中安装桌面和中文环境
  4. C语言IP地址比较(IPv4/IPv6)
  5. 【Microsoft Azure 的1024种玩法】四十九.在Azure中使用Azure VirtualMachines 搭建Microsoft SharePoint 2016
  6. 电力防垂钓闪光警示牌
  7. 微信小程序中高清图片替换加载策略
  8. 2022年高压电工考试技巧及高压电工复审考试
  9. 求一个任意实数c的算术平方根_LeetCode 题解 | 69. X 的平方根
  10. python psutil模块_python之psutil模块(获取系统性能数据)