虚拟化介绍、以及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 find命令使用详则

    find命令 find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录欲文件。并且将查找到的子目录和文件全部进行显示。 语法 find(选项)(参数) 选项 -amin<分钟>:查找在指定时间曾被存取过的文件或者目录,单位以分钟计算; -ane…

    2017-08-03
  • LVM

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地…

    Linux干货 2016-12-17
  • Linux之账号管理

    Linux之账号管理 一、新增与删除用户:useradd,相关配置文件,passwd,usermod,userdel 在Linux登录系统时会输入账号和密码,所以创建用户也需要这两个数据。新建用户用useradd命令,密码的给予则用passwd命令。 useradd 1.添加新用户 -u: -u  uid username 创建用户时指定uid(如…

    2017-07-23
  • CentOS7 实现网卡绑定

    Bonding ;理念 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用 或者负载均衡。直接给两块网卡设置同一IP地址是不可以的 。通过bonding,虚拟一块网卡对外提供连接,物理网卡的 被修改为相同的MAC地址 banding工作模式 Mode 0 (balance-rr) 轮转(Round-robin)策略: 从头到尾顺序的在每一个slave 接…

    2017-12-19
  • sed和awk的用例及pam安全措施-第十五周

    总结sed和awk的详细用法; sed用法 sed(Stream EDitor)是一款流编辑器,用来对文本进行过滤与替换操作。其原理是:通过文件或管道读取文件内容,但是sed默认并不直接修改源文件,而是一次仅读取文件的一行至模式空间(pattern space)根据sed指令进行编辑并输出结果后清除模式空间,即所有的操作都是在模式空间中进行的。 语法格式 s…

    2017-06-05
  • 基础指令使用篇 Linux版

    回显,回声 echo echo hello > /dve/pts/1 打开图形界面 init 5   关闭图形界面 init 3 ctrl+alt+F1-6字符,F7图形界面 chvt 改变虚拟终端 chvt +数字 startx  图形的软件打开 poweroff centOS 6.8与7.2都正常关闭断电 hostname 显示…

    系统运维 2016-08-04

评论列表(1条)

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

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