热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

KVM详解(一)——KVM基础知识

今天继续给大家介绍Linux运维相关知识,本文主要内容是KVM的基础知识。一、虚拟化简介(一)虚拟化概述在计算机中,虚

今天继续给大家介绍Linux运维相关知识,本文主要内容是KVM的基础知识。


一、虚拟化简介


(一)虚拟化概述

在计算机中,虚拟化技术是一种资源管理技术,可以将计算机的各硬件资源(包括CPU、内存、磁盘、网络)等予以抽象,转换后呈现出来,以供用户更好的使用。系统虚拟化可以将底层物理设备、上层操作系统和软件之间分离,可以在一台物理设备上划分出多台机器。
虚拟化技术种类有很多,包括软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、虚拟机等等。


(二)虚拟化分类

对于在计算机上运行虚拟机而言,一个非常重要的问题时硬件的操控,计算机程序的运行离不开CPU、内存、磁盘等硬件的调用。在现代计算机体系结构中,这些对硬件的直接调用离不开操作系统的操控。一般情况下,不允许应用程序直接调用硬件。操作系统上一般运行着很多程序,当多个应用程序都要调用硬件时,为了防止之间的冲突与相互干扰,因此当应用程序向调用硬件资源服务时,必须通过操作系统。在硬件结构上,现代的CPU可以工作在两种模式上,即用户模式内核模式,计算机操作系统和计算机应用软件在本质上都是代码,也可以称之为指令。为了区别计算机操作系统和计算机应用软件,CPU将操作系统的指令设置为内核模式,将应用软件的操作指令设置为用户模式。对于CPU而言,会拒绝处于用户模式的指令对硬件的直接调用,这是从底层硬件上实现的,CPU将运行状态分为了ring0到ring3,ring0就代表了内核模式,ring3就代表了用户模式。
那么如果应用程序在执行过程中,如果要调用硬件,就会产生中断,此时该应用程序会放弃对CPU的接管,转而由操作系统控制CPU,这样,CPU就处于内核模式下了,这样就可以调用硬件了。总之,应用程序是处于用户模式的,对应用系统的调用要通过操作系统。
虚拟机对宿主机而言,在本质上也是一种应用程序,运行在虚拟机上的程序,要调用系统硬件时,就相当于虚拟机这个应用程序要调用硬件,这就带来了虚拟化技术的一个重要问题,根据虚拟化技术对这个问题的解决,我们把虚拟化技术分为了三种:
1、仿真虚拟化
仿真虚拟化的思想是借助虚拟机这一平台,将虚拟机操作系统要执行的内核态指令进行“翻译”,最后返回到虚拟机操作系统上。这一套过程需要异常捕捉和异常处理机制,因此速度较慢。虚拟机操作系统认为自己的特权指令执行正常,并不知道自身处于一个虚拟的环境中。在全虚拟化中,虚拟机的用户态执行具有和系统指令执行一样的速度,但是内核态的指令由于要进行处理,因此要花费较多的时间。
2、半虚拟化
半虚拟化的思想是修改虚拟机操作系统,使其指令运行在用户态模式上,将原来的内核态质量采用其他的方式代替。这样一来,虚拟机操作系统就明白自己是在虚拟系统上运行。这样做的缺点是需要修改虚拟机操作系统的内核,与其原有的内核等价,但是能够在用户态模式上运行。XEN是一种典型的半虚拟化技术,但是由于微软的windows操作系统没有这种修改后的内核,因此XEN只支持Linux,不支持Windows。
3、硬件虚拟化
硬件虚拟化,这需要CPU硬件厂商的支持,例如Intel的Intel-VT技术。CPU厂商需要将自己的CPU进行改变,在用户态和内核态的基础上,增加专门用于虚拟机运行的模式,使得虚拟机运行在这种模式上,从而可以直接执行内核态的程序。KVM就是处于硬件虚拟化的模式。


二、KVM简介

KVM,Kernel Virtual Machine的简写,即基于内核的虚拟机。自Linux2.6.20后集成在Linux的各种发行版本中,现已成为学术界的主流虚拟机之一。
KVM的虚拟化实现是使用Linux自身的调度器进行管理,核心源码较少。在KVM中,每一个虚拟机都是由Linux调度程序管理的标准进程。但是KVM虚拟化的实现需要硬件支持(比如Intel的VT技术和AMD的V技术),是基于硬件的完全虚拟化。
KVM官网网址为:https://www.linux-kvm.org/,其主页面如下所示:
在这里插入图片描述


三、QEMU简介

由于KVM使用了类似QEMU的仿模拟处理器,因此在最后我们再介绍一下QEMU。QEMU是由Fabrice Bellard所编写的一款模拟处理器软件,遵循GPL协议,在Linux平台上被广泛使用。QEMU具有跨平台、高速度的特性,其运行速度能够接近真实计算机的速度。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 职业道路的选择与建议
    职业道路的选择与建议2010-09-2621:31:53标签:职业感悟建议   [推送到技术圈]版权声明:原创作品,允许转载, ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
author-avatar
顺丰-03_457
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有