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

CentOS7部署KVM虚拟化环境之一架构介绍

本文介绍了CentOS7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。

----本文修改整理自网络,非本人原创。

虚拟化介绍

虚拟化(Virtualization)是一种资源管理技术,将计算机的各种试题资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。打破实体结构间的不可切割的障碍,使的用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

虚拟化技术中大多数人接触的最早且最多的应该就是虚拟机(Virtual Machine),它是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。所谓完整的计算机系统简单点解释就是一台含有CPU、内存、硬盘、显卡、网卡、光驱等设备的电脑,只是对于虚拟机来说这些设备都是通过软件模拟出来的。

全虚拟化和半虚拟化

全虚拟化(Full Virtualization)模拟出来的虚拟机中的操作系统是跟底层的硬件完全隔离的,虚拟机中的所有的硬件资源都是通过虚拟化软件基于硬件来模拟的,代表产品有VMware ESXIKVM

这样的好处就是每台虚拟机有一个完全独立和安全的运行环境,虚拟机中的操作系统也不需要做任何修改,并且易于迁移。在操作全虚拟化的虚拟机的时候,使用者并不知道这是一台虚拟机。

缺点就是由于虚拟机的资源全部都需要通过虚拟化软件来模拟,会损失一部分的性能。

半虚拟化(Para Virtualization的架构跟全虚拟化基本一样,但是为了提高性能和效率,需要修改虚拟机中的操作系统来集成一些虚拟化方面的代码,通过这种方法来减小虚拟化软件的负载。代表作有Microsoft的Hyper-VXEN

这样的好处就是虚拟化整体的性能会更好,因为修改后的虚拟机操作系统承载了部分虚拟化软件的工作,缺点就是由于要修改虚拟机的操作系统,用户是知道使用的环境是虚拟化环境,而且兼容性比较差,用户体验也比较麻烦(得去找集成过虚拟化代码的操作系统)。

Hypervisor介绍

Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。

Hypervisor分类

原生型(Native or Bare-metal)又称裸机型,Hypervisor作为一个很薄的操作系统(操作系统也是软件,只不过它是一个比较特殊的软件)直接运行在硬件之上来控制硬件资源并管理虚拟机。比较熟知的有VMware的ESXi和Microsoft的Hyper-V等。

宿主型(Hosted)又称托管型,Hypervisor运行在传统的操作系统上,同样可模拟出一整套虚拟硬件平台。比较熟知的为VMware的Workstation和Oracle的Virtual Box等。

从性能角度来看,不论原生型还是宿主型都会有性能损耗,但宿主型比原生型的损耗更大,所以企业生产环境中基本都使用的是原生型Hypervisor,宿主型的Hypervisor一般都用到实验或测试环境中。

KVM介绍

KVM(Kernel-based Virtual Machine)是一种基于Linux x86硬件平台的开源全虚拟化解决方案。KVM需要CPU的虚拟化指令集支持,如Intel的Intel VT(vmx指令集)或AMD的AMD-V(svm指令集)。

KVM作为Hypervisor,主要涵盖有两个重要组成部分,一个是Linux内核的KVM模块,另外一个是提供硬件仿真的QEMU(Quick Emulator)。 另外为了KVM整个虚拟化环境能够易于管理,还需要Libvirtd服务和基于Libvirt开发出来的管理工具。

KVM虚拟化体系结构

KVM作为Hypervisor,主要涵盖有两个重要组成部分,一个是Linux内核的KVM模块,另外一个是提供硬件仿真的QEMU(Quick Emulator)。 另外为了KVM整个虚拟化环境能够易于管理,还需要Libvirtd服务和基于Libvirt开发出来的管理工具。

技术分享

KVM模块

严格意义上讲,KVM仅仅只是一个Linux模块,他的主要功能在提供物理CPU到虚拟CPU的一个映射,提供虚拟机的硬件加速来提升虚拟机的性能。

KVM模块本身没办法作为一个Hypervisor模拟出一个完整的虚拟机,并且我们也没办法直接对Linux内核进行操作,所以需要借助其他的软件来进行,QEMU就扮演着一个这样的角色。

QEMU

QEMU本身就是一个宿主型的Hypervisor,就算是没有KVM他一样也可以通过模拟来创建和管理虚拟机。但是上面也提到过宿主型的Hypervisor在性能上损耗很大,所以QEMU又借助了KVM的模块来提升虚拟化的整体性能。

Libvirt

Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工具(virsh);libvirt本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API。libvirt的主要目标是为各种虚拟化工具提供一套方便、可靠的编程接口,用一种单一的方式管理多种不同的虚拟化提供方式。Libvirt也支持多种虚拟化平台如KVM, Xen, ESX和QEMU等

Libvirtd

Libvirtd是运行的在KVM主机上的一个服务端守护进程,为KVM以及它的虚拟机提供本地和远程的管理功能,基于Libvirt开发出来的管理工具可通过Libvirtd服务来管理整个KVM环境。Libvirt就是一堆标准的库文件,给多种虚拟化平台提供一个统一的编程接口,相当于管理工具需要基于Libvirt的标准接口来进行开发,在开发完成后的工具可支持多种虚拟化平台。而Libvirtd是一个在Host主机上运行着的守护进程,在管理工具和KVM之间起到一个桥梁的作用,管理工具可通过Libvirtd服务来管理整个虚拟化环境。

Virsh

virsh就是基于Libvirt开发的一个命令行的KVM管理工具,可以使用直接模式(Direct Mode)或交互模式(Interactive Mode)来实现虚拟机的管理,如创建、删除、启动、关闭等。

Virsh-Manager

Virt-Manager同样也是一个KVM管理工具,不过它是基于图形界面的。

CentOS 7部署KVM虚拟化环境之一架构介绍


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
author-avatar
北人南漂记
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有