虚拟化介绍、以及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

相关推荐

  • 磁盘及文件系统管理—第二篇

    挂载配置文件 每行定义一个要挂载的文件系统及相关属性     使用mount -a挂载/etc/fstab文件中所定义的文件系统     配置文件格式:         一共分为6个字段: &nbsp…

    Linux干货 2016-08-30
  • N22- 第五周

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost Packages]# grep -E "^(root|fedora|user1\>)" /etc/passwd | cut -d: -f…

    Linux干货 2016-11-21
  • N21-北京-兔锅-马哥教育网络班21期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。    who | cut -d' ' -f1 | uniq   2、取出最后登录到当前系统的用户的相关信息。    who | ta…

    系统运维 2016-07-07
  • nginx配置(二)

    ngx_http_gzip_module: The ngx_http_gzip_module module is a filter that compresses responses using the “gzip” method. This often helps to reduce the size of transmitted data by half…

    Linux干货 2017-05-08
  • 闲玩Xen

    简述理论 虚拟化的实现 模拟技术:模拟计算机的主要硬件硬件并协调工作,但是效率很低下,所以不常用 完全虚拟化:针对cpu的虚拟来分为,基于BT技术(Guset的特权指令在ring1,Host的特权指令在ring0,Guest的特权指令由Host的ring0来参与边翻译边执行)的完全虚拟化,基于HVM(硬件辅助,Guest的特权指令在ring0,Host的特权…

    Linux干货 2016-09-26
  • linux终端变量设置,文件系统,man使用说明,文件类型

    一、定义终端提示符的变量 export PS1=’\e[32m[\e[33m\u\e[31m@\e[35m\h\e[36m\t\e[34m\#\e[31m\s\e[37m\W\e[32m]\$ ‘  `]# export 是个命令      PS1指终端提示符变量    &n…

    Linux干货 2016-11-02

评论列表(1条)

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

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