| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 基础必学,挑灯夜战KVM虚拟化技术 -> 正文阅读 |
|
[系统运维]基础必学,挑灯夜战KVM虚拟化技术 |
前言:什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。 ?由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。 一般所指的虚拟化资源包括计算能力和数据存储。 由于目前信息技术领域的很多企业都曾在宣传中将该企业的某种技术称为虚拟化技术,这些技术涵盖的范围可以从Java虚拟机技术到系统管理软件,这就使得准确的界定虚拟技术变得困难。因此各种相关学术论文在谈到虚拟技术时常常提到的便是如前面所提到的那个不严格的定义。 一、虚拟化的概述1.1、虚拟化产生的背景美国环境保护EPA报告中曾经统计过一组数据,EPA研究服务器和数据中心的能源效率时发现,实际上服务器只有5%的时间在工作,其他时间一直处于休眠状态。 ps:软件资源是没有硬件资源的性能高(稳定和效率)的(相同功能) 1.2、虚拟化技术通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统,应用程序都可以在独立的空间内运行二互不影响,从而提高计算机的工作效率。 例:1、在一个操作系统中(win10)模拟多个操作系统(centos、win10、sure),同时每个操作系统可以跑不同的服务(Nginx+Tomcat),从而实现一台宿主机搭建一个集群(从整体) 2、通过软件、应用程序的方式,来实现物理硬件功能 。ensp( 以软件形式实现物理设备的功能 (二层交换机、三层路由器、三层交换机等)) 1.3、虚拟化技术的发展1.3.1雏形:1961年 ,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每个时间片执行不同的工作,通过对这些时间片进行轮询,从而将一个CPU伪装成多个CPU 1972年,IBM正式将system370机的分时系统命名为虚拟机。 1990年,IBM推出的system390机支持逻辑分区(将一个CPU分为多份,相互独立,也就是逻辑分割) Xen:2003年问世,是一个外部的hypervisor/VMM程序(虚拟机管理程序),能够独立宿主机和给多个客户机分配资源 KVM:2007年问世,现已内置在kernel内核中的 Xen:支持的虚拟化技术:全虚拟化,半虚拟化 KVM:支持的虚拟化技术:全虚拟化 1.3.2、虚拟化类型全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用 使用的方法:使用hypervisor(VMM)软件,其原理是在底层硬件和服务器之间建立一个抽象层,而基于核心的虚拟机是面向Linux系统的开源产品hypervisor(VMM)可以捕捉CPU的指令,为指令访问硬件控制器和外设充当中介。 半虚拟化:需要修改操作系统 直通:直接使用物理硬件资源(需要支持,还不完善) 1.3.3、特性优势: ①集中化管理(远程管理、维护) ②提高硬件利用率(虚拟化特性)(物理资源利用率低-例如峰值,虚拟化解决了“空闲”容量) ③动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性) ④高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境) 劣势: ①前期高额费用(初期的硬件支持) ②降低硬件利用率(特定场景-例如极度吃资源的应用不一定适合虚拟化) ③更大的错误影响面(本地物理机down机会导致虚拟机不可用,同时可能虚拟机中文件全部破坏) ④实施配置复杂、管理复杂(管理人员运维、排障困难) ⑤一定的限制性(虚拟化技术涉及各种限制,必须与支持/兼容虚拟化的服务器、应用程序及供应商结合使用) ⑥安全性(虚拟化技术自身的安全隐患) 二、KVM简介2.1、广义KVMKVM (Kernel-based vritual Machine)--基于内核的虚拟机 KVM是基于虚拟化扩展的x86硬件的开源Linux原生的全虚拟化方案(要求cpu支持Intel-VT-x或AMD-V) KVM内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行 虚拟机被实现为常规的 Linux进程,由标准Linux调度程序进行调度; 虚拟机的每个虚拟CPU_被实现为一个常规的 Linux进程。这使得KMV能够使用Linux内核的已有功能 但KVM本身不执行任何模拟。需要客户空间程序(虚拟机)通过/dev/'kvm(此虚拟设备需要开起硬件辅助虚拟化才能看到)接口设置一个客户机虚拟服务器的地址空间, 并且由Qemu模拟I/o (ioctl)进行调度资源和维护管理 Libvirt: KVM的管理工具,除了可以管理KVwM这类vVwMM4,还可以管理Xen,VirtualBox,甚至openStack底层 Libvirt包含3个组件:后台daemon程序libvirtd、API库、命令行工具virsh 2.2、KVM原理1、Guest:客户机系统,包括CPU(vcpu)、内存、驱动(Console、网卡、I/O、设备驱动等),被kvm置于一种受限制的CPU模式下运行 2、KVM内核模块模拟处理器和内存以支持虚拟机运行 3、Qemu主要处理I/o以及为客户提供一个用户空间/dev/kvm 工具libvirt 来进行虚拟机管理 ioctl(定义)专用于设备输入输出操作的系统调用 l ibvirt: KVM管理工具 简单理解:
?2.3、KVM虚拟化架构/三种模式1、客户模式(guestos) : VM中的os为Guestos 客户机在操作系统中运行的模式,客户机分为内核模式和用户模式。 2、用户模式: 为用户提供虚拟机管理的用户空间工具以及代表用户执行I/o,gemu工作在此模式下(Qgemu的主要功能) 3、linux内核模式 模拟CPU、内存,实现客户模式切换,处理从客户模式的退出,KVM即运行在此模式下 2.4、KVM工作流程用户模式的Qemu 利用接口libkvm 通过 ioctl系统调用进入内核模式。 KW驱动为虚拟机创建虚拟CPU和虚拟内存,然后执行VMLAU ·NCH 指令进入客户模式,装载Guest OS 并运行。 Guest OS运行过程中如果发生异常,则暂停Guest OS的运行并保存当前状态同时退出到内核模式来处理这些异常. ?内核模式处理这些异常时如果不需要I/O则处理完成后重新进入客户模式。如果需要Ⅰ/O则进入到用户模式则由Qemu来处理I/O,处理完成后进入内核模式,再进入客户模式 2.5、虚拟化前与虚拟化后的对比虚拟化前:
虚拟化后:
对比: 操作系统方面(虚拟化前): LAMP架构中(以一台主机实现) Linux+Apache+MySQL+PHP 其中Apache与MySQL资源是共享的 如果架构要求服务间的安全性隔离比较高的话,Apache的页面和MySQL数据库的目录一定是不能相互碰面,如果Apache漏洞暴露出来,攻击者就可以Apache的进程访问到MySQL中的数据,这种就是严重的安全隐患 而想解决这种潜在危险,可以通过实现内核级别的隔离(使用虚拟化技术) 软硬件结合: 因为硬件和操作系统不兼容或者不支持,导致有些软、硬件功能无法正常使用(也是最难的问题)使用虚拟化,软硬件之间是会通过虚拟化层驱动进行隔离(调配)的, 只要虚拟化层可以识别软/硬件应用,就可以将软硬件结合使用 在同一个主机上运行多个应用程序通常会产生冲突 Apache和Nginx定位相同(80端口) 只能使用反向代理的方式进行分离,而同时如果在同一台机器使用这种方式,Apache和Nginx中重要的数据文件如果同时被泄露出去....而虚拟化可以隔离服务 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 18:54:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |