虚拟化介绍、以及kvm

什么是虚拟化?

在计算机领域中虚拟化,和我们平时说的虚拟化并没有什么两样,说白了就是一个虚拟出来的东西罢了,并不是真实存在的。

虚拟化的历史

虚拟化早在20实际60年代末,由IBM开发被命名为vmm(Virtual Machine Monitor)虚拟机监视器的软件,我们知道那时候工艺技术并不发达,电脑也不像现在这样属于每家每户的标配,IBM为了解决电脑使用的问题,就开发了此软件,用于将一台大型计算机硬件虚拟分为多个计算机,以提供多用户对计算机的使用。

虚拟化介绍、以及kvm

此图是一个标准虚拟化场景,硬件上方安装一个操作系统(我们成为宿主机),由操作系统上安装一个软件(我们称之为Hypervisor)创建出多个虚拟机(我们成为来宾主机),guest主机如果发起系统调用等特权指令的操作会被hypervisor接收,并转换后交给host实现系统调用。

虚拟化的分类

半虚拟化:虚拟机明确的知道自己运行与虚拟机中,发起的所有系统调用被称作为hypercall,由hypercall直接向硬件发出指令。

虚拟化介绍、以及kvm

完全虚拟化:又被称为硬件辅助的虚拟化,其实还有一种被称之为模拟化的东西,模拟化是什么呢?就是guest所有设备都是通过hypervisor模拟出来的,底层硬件和guest的硬件甚至可以完全不一样,但是这样就会多个上面提到的指令转换的过程,这样性能就大大被降低。为了解决这个问题,一些硬件厂商直接在硬件上提供了一些技术支持,例如我们知道cpu有个叫做运行环的概念,用户空间的指令在环3上运行,如果有对硬件的操作,都是通过发起系统调用,由内核操作硬件来完成这类型的指令,是在环0上执行,支持硬件辅助的cpu会虚拟出一个叫环-1的东西,我们host的内核从此就在环-1上呆着了,cpu上的指令集依然在环0上,这时候如果guest发出一个系统调用,就会直接被cpu捕获,再由cpu激活运行在环-1上的host内核来执行,这样一来是不是就比前面说的模拟化性能大大提升啊~。(当然在这里只提到了cpu的虚拟化,甚至cpu的MMU和TLB的虚拟化都没提到,还有内存的虚拟化,IO的虚拟化,这里就不多做介绍了

另外其实还有很多种虚拟化的分类,例如我们使用的tomcat 应用级别的虚拟化,还有现在的容器虚拟化(只隔离用户空间,多个用户空间共享内核空间)等等,但这些不是今天我们所说的重点。

看了对半虚拟化和完全虚拟化,如果我描述正常的话,相信你已经有个一点点概念了,半虚拟化无疑是运行性能应该是最好的,但是需要修改guest上的内核,以让他知道自己运行在虚拟机的环境中,但是这又很难实现,毕竟修改内核也不是谁都会玩的虚拟化介绍、以及kvm,再说了有些系统闭源你根本没法修改~。所以一般都使用的完全虚拟化类型。

再说kvm之前还必须提一下一个重要的软件qemu,qemu本身是一款模拟软件,可以模拟出各种硬件,xen和kvm都是依赖于qemu,IO设备一般有qemu模拟,cpu和内存一般就基于硬件辅助技术虚拟出来,qemu同时也是一款管理工具,但自身是一个比较底层的工具,底层也就意味着不好用。。。



kvm介绍

kvm有一家以色列的公司Qumranet开发,但后来被红帽收购,已经被收录至内核之中,想使用,我们直接在内核中加载此模块,在用工具进行管理即可。

kvm依赖hvm硬件需要支持虚拟化技术,也就是我们上面提到的硬件辅助

kvm的管理工具

qemu:我们上文中提到的,但太过底层,所以不好用。

libvirt:有红帽牵头提出的项目,为所有虚拟化的场景中提供一个通用层,可管理所有虚拟化场景中的主机,但本身是作为一个守护进程运行在host主机上,所以较为重量级。

libvirt提供了几个工具virsh 命令行管理工具,具有重多的子命令,用于管理guest(例如添加内存大小啊)好在帮助很好查看,后文介绍,virt-install guest的管理工具用于创建guest主机等操作,另外还提供了一个图形化的管理工具virt-manager,用于创建管理guest。

接着来看如何使用

虚拟化介绍、以及kvm

在vmwaer中勾选此项,并启动系统。

[root@localhost ~]# cat /proc/cpuinfo            #进入系统后,查看cpu信息

虚拟化介绍、以及kvm

确保cpu支持虚拟化技术 intel为vmx  amd为svm

[root@localhost ~]# modinfo kvm            #查看当前系统是否有kvm模块,如果有模块的响应信息就代表OK了

[root@localhost ~]# modprobe kvm_intel        #装载此模块

[root@localhost ~]# ls /dev/kvm             #可以看到在设备目录下有个叫kvm的设备。
/dev/kvm

至此。。我们的kvm装完了,接着提供工具管理它就好。

[root@localhost ~]# yum install  libvirt                #安装libvirt

[root@localhost ~]# systemctl start libvirtd            #启动服务

[root@localhost ~]# yum install virt-manager        #安装图形化管理工具

着执行virt-manager就可以直接启用图形化接口了,记得要安装linux图形界面才行,如果还要远程打开图形化窗口记得ssh -X重新登录(我这使用-X一直登录不了,就直接在虚拟机上截图看看吧)。

虚拟化介绍、以及kvm

看到这里有没有很熟悉的感觉~,就跟我们用的vmwaer差不多,除了丑了点,接着就可以添加虚拟机,等等做修改处理了。

virsh的使用

virsh –help  可以看到有非常多的子命令,并且后面也有简单的描述,比如我想使用attach-disk添加磁盘的命令,那么使用virsh attach-disk –help 就可以看到具体使用格式,以及支持的选项。

具体的就不演示了

到这里其实还有不少问题,比如网络,磁盘,的虚拟化,用qemu-img模拟出一个磁盘,网络的虚拟化等等。

自己本来也并未完全吸收,这里就不过多介绍了,不然就成了门外汉在这指手画脚闹笑话了,以后了解了,能组织出自己的语言,再来介绍。

另外自我认为,想要学习虚拟化的使用,难得不在部署上,在虚拟化的背后有太多的理论知识,那才是重点,就像开篇标红出说的,了解那些才能真真知道虚拟化具体是咋回事,此篇就当写着玩好了~~~



原创文章,作者:N24_Ghost,如若转载,请注明出处:http://www.178linux.com/70784

(0)
N24_GhostN24_Ghost
上一篇 2017-03-08 14:33
下一篇 2017-03-08 15:11

相关推荐

  • Linux之启动和内核管理

     Linux之启动和内核管理     本文主要包括以下内容一  CentOS 5和6的启动流程二  服务管理三  Grub管理四  自制Linux五  启动排错六  编译安装内核   Linux组成Linux: kernel+rootfskernel: 进程管…

    Linux干货 2016-09-15
  • 文件的查找作业

    1、查找/var目录下属主为root,且属组为mail的所有文件 2、查找/var目录下不属于root、lp、gdm的、所有文件 3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件 4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件 5、查找/etc目录下大于1M且类型为普通文件的所有文件 6、查找/…

    Linux干货 2016-08-15
  • LAMP快速部署及LAMP组合深入讲解-2

      lamp SQL 数据管理模型:层次模型、网状模型、关系模型数据分类:结构化数据、半结构化数据、非结构化数据 关系模型 数据库:一个方案、一个项目 二维关系: 表:row, column 索引:index 视图:view SQL接口:Structured Query Language;类似于OS的shell接口;也提供编程功能; ANSI: S…

    2017-06-04
  • 第五周

    1、简述rpm与yum命令的常见选项,并举例
    2、自建yum仓库,分别为网络源和本地源
    3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
    4、简述sed常用操作命令,并举例

    Linux干货 2017-12-30
  • centos查看和修改文件权限

      查看权限在终端输入:  ls -l xxx.xxx (xxx.xxx是文件名)那么就会出现相类似的信息,主要都是这些:-rw-r–r–其中: 最前面那个 – 代表的是文件类型中间那三个 rw- 代表的是所有者(user)然后那三个 r– 代表的是组群(group)最后那三个 r–   …

    2017-11-26
  • iptables

    iptables简介   iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。 iptables基础   规则(rules)其实就是网络管理员预定义的条…

    Linux干货 2017-02-16

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-13 23:23

    赞,有很多自己思考的地方~另外可以看下zstack~