虚拟化介绍、以及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
下一篇 2017-03-08

相关推荐

  • Lnmp安装脚本

    1、源码编译安装LNMP架构环境; 此题略 此链接为安装nginx时,编译参数和各个模块和第三方模块的介绍,十分丰富,安装前可以参考学习 https://www.nginx.com/resources/admin-guide/installing-nginx-open-source/ 2、编写一个脚本完成以下功能:    (1)、一键搭建…

    Linux干货 2016-12-05
  • 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost /]# who | cut -d ‘ ‘ -f 1  | sort -u root user1 或: [root@localhost /]# who | cut -d ‘ ‘ -…

    Linux干货 2017-02-24
  • echo address

    echo address

    Linux干货 2016-08-08
  • 马哥linux 0728作业

    1,软链接和硬链接的区别 硬链接有以下特性 1)文件有相同的 inode 及 data block; 2)只能对已存在的文件进行创建; 3)不能交叉文件系统进行硬链接的创建; 4)不能对目录进行创建,只可对文件创建; 5)删除一个硬链接文件并不影响其他有相同 inode 号的文件。 而软链接有一下特性 1)软链接有自己的文件属性及权限等; 2)可对不存在的文…

    Linux干货 2016-08-04
  • ACL权限详解

    1.ACL简介 2.前期准备 3.ACL的基本操作:添加和修改 4.ACL的其他功能:删除和覆盖 5.目录的默认ACL 6.备份和恢复ACL 7.结束语 1.ACL简介 用户权限管理始终是Linux系统管理中最重要的环节。大家对Linux/Unix的UGO权限管理方式一定不陌生,还有最常用的chmod命令。为了实现一些比较复杂的权限管理,往往不得不创建很多的…

    Linux干货 2017-03-11
  • 软链接,硬链接区别

    软硬链接涉及文件系统inode, 区分于inode号,硬链接inode号与链接文件相同,且创建链接不占空间.而软链接占名称字节个空间,且inode号与链接文件不同; 两者查找inode号命令都可查找inode号,命令为ls -i,如需查找本目录要加d; 在创建链接环境上,硬链接只能在同分区创建一个,不能跨分区创建;而软链接可以跨分区创建多个链接文件且可以多个…

    Linux干货 2016-10-20

评论列表(1条)

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

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