虚拟化是构建云计算基础架构不可或缺的关键技术之一,云计算的云端系统,其实质上就是一个大型的KVM分布式系统,虚拟化通过在一个物理平台上虚拟出更多的虚拟平台,而其中的每一个虚拟平台则可以作为独立的终端加入云端的分布式系统.比起直接使川物理平台,虚拟化在资源的有效利用,动态调配和高可靠性方而有着巨大的优势.利用虚拟化,企业不必抛弃现有的基础架构即可构建全新的信息基础架构,从而更加充分地利用原有的IT投资,可以说虚拟化是云计算不可缺少的重要组件.

本小结内容将主要介绍一下KVM虚拟机的一些原理性的东西,包括常用的虚拟化软件厂商等,KVM章节所有内容参考KVM虚拟化技术-实战与原理解析这本书,文中的内容均为个人随笔与总结,没有任何商业目的,只为工作方便使用.

虚拟化其实是一个广义上的术语,它是指计算机系统在虚拟的环境上运行,而不是真是主机,主要目的是为了简化管理,优化资源的解决方案,打个比方你现在有一台64核的主机,但是你的主机资源并不会全部利用起来,想一下会不会造成资源的浪费呢,在这里虚拟化就起到了至关重要的作用啦,它可以轻易地分配我们的主机资源避免浪费等.

在X86平台虚拟化技术中,新引入的虚拟化层通常称为虚拟机监控器 (Vutual Machine Monitor VMM),也叫做Hypervisor虚拟机监控器运行的环境,也就是真实的物理平台,称之为宿主机.而虚拟出来的平台通常称为客户机,里向运行的系统对应地也称为客户机操作系统.

虚拟化技术有很多种实现方式,比如软件虚拟化和硬件虚拟化,再比如全虚拟化和半虚拟化,接下来我们就看了解一下各种虚拟化的优缺点吧.

软件虚拟化与硬件虚拟化

软件虚拟化: 软件虚拟化,就是在现有的物理平台上,实现对物理平台访问的截获和模拟,常见的软件虚拟机例如QEMU,它是通过纯软件来仿真x86平台处理器的取指、解码和执行,客户机的指令并不在物理平台上直接执行,由于所有的指令都是软件模拟的,因此性能往往比较差,但是可以在同一平台上模拟不同架构平台的虚拟机.

而VMWare的软件虚拟化则使用了动态二进制翻译的技术,虚拟机监控机在可控制的范围内,允许客户机的指令在物理平台下直接运行.但是,客户机指令在运行前会被虚拟机监控机扫描,其中突破虚拟机监控机限制的指令会被动态替换为可以在物理平台上直接运行的安全指令,或者替换为对虚拟机监控器的软件调用这样做的好处是比纯软件模拟性能有大幅的提升,但是也同时失去了跨平台虚拟化的能力.

硬件虚拟化: 硬件虚拟化,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,甚至有的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升整体性能,由于硬件虚拟化,无需进行二进制转换,减少了性能上的开销,极大的简化了VMM设计,进而使得VMM能够按通用标准进行编写,性能更加强大.

但是需要注意的是,硬件虚拟化是一整套解决方案,完整的情况下需要使用CPU,主板芯片组,BIOS和软件的支持,缺一不可,只有全部买齐交够了钱,才能够发挥硬件虚拟化的全部性能.

半虚拟化与全虚拟化对比

半虚拟化: 软件虚拟化可以在缺乏硬件虚拟化支持的平台上完全通过VMM软件来实现对各个虚拟机的监控,以保证它们之间彼此独立和隔离,但是付出的代价是软件的复杂度增加性能上损失了,本质上来说,半虚拟化弱化了对虚拟机特殊指令的被动截获要求,将其转化成客户机操作系统的主动通知,但是半虚拟化要通过修改操作系统源代码来实现主动通知.

Xen 就是一个开源半虚拟化技术的一个例子,操作系统作为虚拟服务器在Xen-Hypervisor上运行之前,它必须在内核层面进行某些改变.因此Xen适用于BSD、Linux、Solaris及其他开源操作系统,但不适合 Windows 这些币闭源的的操作系统进行虚拟化处理,因为它们不公开源代码,所以无法修改其内核.

全虚拟化: 与半虚拟化技术不同,全虚拟化为客户机提供了完整的虚拟化X86平台,包括处理器内存和外设,支持任何可以在物理机上运行的操作平台和系统,也无需对操作平台和系统进行任何修改即可实现运行,为虚拟机平台提供了最大的灵活性,这也是全虚拟化无可比拟的优势所在.

近年来随着硬件虚拟化技术的产生,运行于Intel平台的全虚拟化性能已经超越了半虚拟化产品,这一点在x64平台操作系统上表现的更出色,可以语言在将来,全虚拟化必将成为主流的存在趋势.

KVM虚拟化系统简介

KVM 的全称是(Kernel Virtual Machine 内核虚拟机),KVM虚拟机最初是由一个以色列的创业公司Qumranet开发的,作为他们的VDI产品的虚拟机,2006年10月KVM模块的源代码被正式接纳进入Linux Kermel成为内核源代码的一部分、作为一个功能和成熟度都逊于Xen的项目,在这么快的时间内被内核社区接纳,主要原因在于:在虚拟化方兴未艾的同时,内核社区急于将虚拟化的支持包含在内,但是Xen取代内核自身的管理系统资源的架构引起了内核开发人员的不满和抵触,此时KVM就是首选的产品,在2008年RedHat出资1亿700美金收购了Qumranet,从此KVM在RHEL6以后的系统上默认替代了Xen成为了,RedHat的默认虚拟化产品.

KVM功能概述

KVM是基于虚拟化扩展(Intel VT或AMD-V)的x86硬件,是Linux系统完全原生的全虚拟化解决方案,部分的半虚拟化支持,主要是通过半虚拟网络驱动程序的形式用于Linux和Windows客户机系统的,KVM目前设计为通过可加载的内核模块,支持广泛的客户机操作系统,比如 Linux、BSD、Windows、Solaris、RcactOS和AROS Rcsearch operating Systcm.

但需要注意的是,KVM本身不执行任何模拟,需要用户空间程序通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的I/O,并将它的视频显示到宿主机器的屏幕上.

KVM的发展前景

尽管 KVM 是一个相对较新的虚拟机管理程序,但是诞生不久就被 Linux 社区接纳,成为随 Linux 内核发布的轻量级模块,与 Linux 内核集成,使 KVM 可以直接获益于最新的 Linux 内核开发成果,比如更好的进程调度支持、更广泛物理硬件平台的驱动、更高的代码质量,等等.

作为相对较新的虚拟化方案,KVM一直没有成熟的工具可用于管理KVM服务器和客户机,不过现在随着libvirt、virt-manager等工具和OpenStack等云计算平台的逐渐完善,KvM管理工具在易用性方面的劣势已经逐渐被克服.

另外,KVM仍然可以改进虚拟网络的支持、虚拟存储支持、增强的安全性、高可用性、容错性、电源管理、HPC实时支持、虚拟 CPU可伸缩性、跨供应商兼容性、科技可移植性等方面,不过现在KVM开发者社区比较活跃,也有不少大公司的高级工程师参与开发,我们有理由相信很多功能都会在不远的将来得到完善.

安装并配置KVM

1.首先宿主机必须是Linux系统,然后通过YUM仓库,快速安装KVM管理工具.

[root@localhost ~]# yum install -y qemu-kvm libvirt virt-install bridge-utils

Package 10:qemu-kvm-1.5.3-160.el7.x86_64 already installed and latest version
Package libvirt-4.5.0-10.el7_6.3.x86_64 already installed and latest version
Package virt-install-1.5.0-1.el7.noarch already installed and latest version
Package bridge-utils-1.5-9.el7.x86_64 already installed and latest version
Nothing to do

2.安装完毕之后,检查一下KVM模块是否已经加载到系统,并设置开机自启动.

[root@localhost ~]# lsmod |grep "kvm"
kvm_intel             174841  0
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm

[root@localhost ~]# ln -s /usr/libexec/qemu-kvm /sbin/
[root@localhost ~]# systemctl restart libvirtd
[root@localhost ~]# systemctl enable libvirtd

3.配置一个网桥设备,用于远程连接到本主机内的虚拟机.

[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost ~]# vim ifcfg-br0

TYPE=Bridge
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114

[root@localhost ~]# reboot

KVM虚拟化概述与安装的更多相关文章

  1. kvm 虚拟化概述及 virt-manager 安装虚拟机

    一.KVM定义 基于内核的虚拟机(英语:Kernel-based Virtual Machine,简称KVM),是一种用于Linux内核中的虚拟化基础设施. KVM眼下支持Intel VT及AMD-V ...

  2. KVM虚拟化简介及安装

    kvm是基于图形化的linux操作的 安装图形化界面的知识点: 磁盘空间有两个词: 精简置备:我先在我系统里面去声明我要一个50G的空间,但是呢,我不会把50G都分给你,你用多少,我分给你多少,但是做 ...

  3. KVM -> 虚拟化简介&虚拟机安装_01

    什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU.内存.磁盘空间.网络适配器等),予以抽象.转换后呈现 ...

  4. 安装配置KVM虚拟化

    安装KVM虚拟化 KVM需要硬件⽀持, 所以需要开启虚拟化⽀持 硬件设备直接在BIOS设置开启CPU虚拟化 个⼈电脑同样进⼊BIOS开启虚拟化⽀持 VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技 ...

  5. Linux中安装配置KVM虚拟化

    KVM 概述: KVM 即 Kernel-based Virtual Machine 基于内核的虚拟机. KVM,是一个开源的系统虚拟化模块,自 Linux 2.6.20 之后集成在 Linux 的各 ...

  6. centos vmware centos6.6 64位 kvm虚拟化安装配置 第四十二节课

    centos vmware centos6.6 64位 kvm虚拟化安装配置     第四十二节课 上半节课 下半节课 f

  7. KVM虚拟化主机安装

    KVM虚拟化主机安装 最小化安装CentOS6.X或者CentOS7.X,RHEL6.X以上系列建议建议选择安装最小虚拟化主机 如果要安装桌面可以先选择最小化虚拟主机,再选择Gnome桌面包 安装过程 ...

  8. kvm虚拟化学习笔记(三)之windows kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  9. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

随机推荐

  1. crm--分页

    1. 给数据库添加数据 试图函数  (book表,含有title和price列) # 给数据库添加数据def index(request): book_list = [] for i in range ...

  2. PEP8 规范

    Python PEP8 编码规范中文版   原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style ...

  3. 微信小程序发送ajax

    微信小程序通过 wx.request发送ajax请求 1. GET wx.request({ url: app.globalData.pubSiteUrl + 'user-information/ge ...

  4. C51汇编典型代码&一些org-mode技巧

    C51汇编典型代码&一些org-mode技巧 文档存放 具体内容可见存放的数据. 下面主要介绍关键代码. ASM 部分 1;; LCD数据发送========================= ...

  5. Yii2.0 解决“the requested URL was not found on this server”问题

    在你下了 Yii 框架,配置完路由 urlManager 后,路由访问页面会报错“the requested URL was not found on this server”,url类似于这种“ht ...

  6. form表单上传图片文件

    import os def upload(request): if request.method == 'GET': img_list = models.Img.objects.all() retur ...

  7. GUI学习之二——PyQt控件初识

    一.控件概念 控件是一个程序界面上的各个独立的元素, 它具备用户点击.接收用户输入.展示不同内容.存放其他控件等功能. 二.控件分类 常用的控件按功能可以分为以下几种类 按钮 QPushButton— ...

  8. Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输

    一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...

  9. WCF系列_WCF影响客户端导出Excel文件的实现

    需求:WCF搭建服务端提供导出并下载Excel文件接口,客户端使用ajax发起请求,浏览器直接下载Excel文件. 难点:WCF中并没有HttpContext对象,因此,服务端总是获取不到HttpCo ...

  10. sql语句性能优化

    需要的准备知识 1最左前缀匹配 mysql会一直向右匹配直到遇到范围查询(>.<.between.like)就停止匹配, 对于where条件 a = 1 and b> 2 and c ...