博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019/7/17 虚拟化及kvm(02)
阅读量:3926 次
发布时间:2019-05-23

本文共 4716 字,大约阅读时间需要 15 分钟。

之前讲了一些虚拟化底层的一些系统知识

主机虚拟化是较为底层的
在这里插入图片描述
在这里插入图片描述
vwmare 之类的都属于主机虚拟化技术,主机级虚拟话技术有两种类型
1.一型虚拟化,在硬件接触之上,没有直接安装任何操作系统,而是直接安装虚拟机软件,所有的操作系统的都是虚拟机,没有任何操作系统是跑在硬件之上的,硬件上直接装了一个虚拟机软件,一般叫hypervisor;
hypervisor可以当作操作系统,有用户空间,用户空间是用来管理创建虚拟机的,hypervisor控制台
XEN英国剑桥大学发明的
这个虚拟机软件自己有一个控制台,在控制台之上可以创建和管理其他虚拟机
2.二型虚拟化,自己用的,在硬件平台上有一个host宿主机,在宿主机上装软件,vwmare,再去安装虚拟机实例,每一个虚拟机称为guest,虚拟机管理器通常是VMM,虚拟机监视器,
虚拟化技术,kvm
在这里插入图片描述
**xen是直接装 在硬件上的,hypervisor要去驱动硬件,需要驱动的一般 是IO设备,XEN是需要自己去驱动所有IO设备的,之所以说是奇葩,是因为它自己几乎不驱动任何IO设备,不驱动如何使用,
以centos为例,有一些硬件设备,在硬件设备上安装 linux,xen可以被当作软件一样安装在用户空间,装用户空间只能运行在宿主机上,所以安装完以后还需要另外一步,xen需要重启系统,一重启,内核就不能跑在硬件上了,接下来xen要取代内核,自己跑在硬件上,原来的内核被组织成第一个虚拟机,原来的用户空间就变成了虚拟机的用户空间,这个主机虽然现在变车了虚拟机,但是拥有特权,除了cpu和内存不能管理之外,所有IO设备都可以管理,
第一个虚拟机用的cpu和内存用的是hypervisor管理的,IO设备可以透传式方式管理的,
其他虚拟机所使用的IO设备都是模拟的,想使用网卡可以用软件做一个,真正自己的进程想要访问网卡,来发报文的时候,自己驱动模拟网卡,模拟网卡再传给前面的特权的虚拟机的内核,由这个内核驱动真正意义上的IO设备来发出去,但是这个虚拟机如果要使用cpu和内存,则是交给hypervisor,xen来处理
**
在这里插入图片描述
cpu的5大部件,cpu和内存有虚拟化技术来管理,但IO设备委托给第一个虚拟机来管理,第一个虚拟机称为特权虚拟机,DOM0,再xen虚拟化中,每个虚拟机称为domain,其他虚拟机统称为DOMU,任何一个非特权虚拟机,使用IO设备,是需要先交给DOM0来驱动的,如果想要使用cou和内存,则是交给xen来驱动
xen还有一个功能,允许每一个虚拟机知道自己运行再虚拟化环境中,不光是IO设备
centos6的内核2.6版本是不支持xen的,但是好在centos推出了升级版内核,只要升级一下即可
从3.0内核几,才收入内核
在这里插入图片描述
随着kvm的到来而改变,kvm是由以色列公司开发的,由了kvm,xen就不受待见了,红帽就不再支持了,但是红帽不干,centos社区可以做,xen结合centos做了虚拟化技术

kvm,把整个内核变成hypervisor,给原来主机作为虚拟机,对于服务器来讲,不要重启系统能立即实虚拟化方案,受欢迎,这叫做主机虚拟化

虚拟化的主要目的是用来,运行程序的,内核不会产生任何生产功能,真正生产功能是应用程序,跑很多应用程序的时候,为了应用程序不互相干扰,做出几个虚拟机,每个虚拟机的生命周期,跟其他程序之间不互相串联,按需创建,
当你需要再多个环境中测试,windows,linux,需要同时 测试 就需要用到虚拟机,更重要 的时候,有些应用程序需要跑在多机上,比如跑一个分布式的hadoop,只有一个操作系统是跑不了的,也需要一个虚拟机
底层是硬件,上面是内核,内核之上就是用户空间,应用程序都是在用户空间的,用户空间隔离一下即可,
一个内核之上多跑几个用户空间,共享同一个内核,
但是如果在一个内核空间中shutdown 关机,因此在内核加以支持,把有些功能隔离开来,创建出有很多功能隔离的空间
比如每一个用户空间都模拟出一个跟来,但是事实上,有一个跟是有特权的,能看到区全局对应的跟,其他用户空间是基于root
这种虚拟化叫容器,虚拟出来的不是内核空间,而只是用户空间,相比较前面的hypervisor,要轻量化的多,是接近于底层原生性能来运行的,性能损失极小,但隔离性每那么好,毕竟大小共享同一个内核,所以安全性不是特别的高,隔离性不是很好,但是性能确实很好,
解决方案有很多LHC,OPENVC,都属于容器级虚拟化,但是就是没有docker,docker可不是容器,docker只是容器管理器而已,docker只是让一个容器易用的补充功能而已,docker类似openstack和虚拟机的关系
在这里插入图片描述
在linux装window程序是没有任何问题的,有wine的包,这种称为程序级别虚拟化,

重点介绍主机级虚拟化,和程序级虚拟化

在这里插入图片描述
**虚拟化技术类型: 和常见的解决方案
主机虚拟化:xen, kvm, virtualbox, …
容器(用户空间隔离): lxc(LinuX Container), openvz, …
系统库虚拟化:wine, …
应用程序级虚拟化:jvm, pvm,…
**
主机虚拟化:
CPU:
模拟:emulation, 虚拟机的arch与物理平台的arch架构可以不相同,叫模拟,相同叫虚拟;qemu;
虚拟:virtualization
完全虚拟化(full-virt)(环0)
BT: 二进制转换 (软件)
HVM:硬件辅助的虚拟化(硬件)
半(准)虚拟化 (para-virt)
GuestOS得明确知道自己运行于虚拟化技术

内存:

MMU virtualization:
Intel: EPT, Extended Page Table
AMD: NPT, Nested Page Table

TLB virtualization:

tagged TLB

**IO:

Emulation 模拟 (软件)
Para-virtualization 半虚拟化(软件实现,但是让虚拟机知道运行在半虚拟化中)
IO-through:IO透传(不利于迁移) **在这里插入图片描述
主机虚拟化的类型:
TYPE-I:
于硬件级别直接运行hypervisor;
xen, vmware ESX/ESXI
TYPE-II:
于硬件级别运行一个OS(Host OS)宿主机,在宿主机上运行虚拟机管理器,而此OS上运行一个VMM;
vmware workstation, virtualbox, kvm
在这里插入图片描述
Linux目前流行的开源虚拟化技术解决方案:
主机虚拟化:xen, kvm, virtualbox
容器级:lxc, libcontainer(docker自己研发出的更轻量级虚拟化技术,弃用了LXC), runC(工业级标准的容器级,虚拟化), openvz,google的k8s就是容器编排框架最主流的
4种流行的容器技术,docker只是之一,
模拟器:qemu
在这里插入图片描述
kvm其实是由红帽扶持的,kvm核心只是一个内核模块,这个模块一旦在内核编译时编译了,被装入以后,输出一个伪设备文件,就能在用户空间使用管理工具,qemu-KVM
整个kvm’由两部分组成
KVM的组件:
kvm.ko:模块(负责内核空间的hypervis的实现)
API
qemu-kvm:用户空间的工具程序;(法国天才程序员,用1,2M代码实现模拟cpu和内存)
qemu-kvm is an open source virtualizer that provides hardware emulation for the KVM hypervisor.
1
(红帽联合另外一家公司研发了虚拟机管理程序) libvirt:Libvirt is a C toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). The main package includes the libvirtd server exporting the virtualization support.
这个命令行工具程序是C/S架构的
在这里插入图片描述
**C/S:
Client:
libvirt-client
virt-manager 图形化控制台
Daemon:(支持不同的虚拟化技术)
libvirt-daemon **
在这里插入图片描述
在这里插入图片描述
有一个图形化的工具
在这里插入图片描述
在这里插入图片描述
快速使用kvm技术:
# yum install libvirt-daemon-kvm qemu-kvm virt-manager
# modprobe kvm
# systemctl start libvirtd.service
# virsh iface-bridge INTERFACE BRIDGE_NAME
# virt-manager

kvm依赖于你的cpu硬件支持虚拟化才可以,如果能看到svm和vmx 就能判断cpu是支持硬件虚拟化的

在这里插入图片描述
在这里插入图片描述
**确保vwmare是勾上的,默认没勾,笔记本支持的话,但有可能bios是锁定的。勾选启动虚拟机,就可以使用kvm了
直接装入kvm,装完以后lsmod
kvm核心模块
kvm_intel硬件相关的模块
表示现在的主机已经支持kvm了,内核已经成为hypervis
**
在这里插入图片描述
验证方式很简单。/dev/kvm,会出现一个文件,如果是字符文件,就表示内核已经开始支持虚拟化了,内核已经成为hypervisor了
qemu-kvm,最底层的管理程序
在这里插入图片描述
qemu-kvm:用户空间的工具程序;实现辅助功能的用户空间管理工具
qemu-kvm is an open source virtualizer that provides hardware emulation for the KVM hypervisor.
在这里插入图片描述
先用图形化的方式看下

**快速使用kvm技术:	# yum install libvirt-daemon-kvm qemu-kvm virt-manager	# modprobe kvm 	# systemctl start libvirtd.service	# virsh iface-bridge INTERFACE BRIDGE_NAME	# virt-manager**

在这里插入图片描述

在这里插入图片描述
主配置文件
在这里插入图片描述
一个独立守护进程,一个非独立
在这里插入图片描述
可以直接启动,可以基于服务来输出API,所以可以用远程来实现所有的功能的,并不监听端口在这里插入图片描述
监听在virbr0:67
在这里插入图片描述
使用ifconfig应该能看到,多了 virbro0的桥,这是一个nat桥
凡是来自192.168.122.0网段的,目标地址不是本地的,都做地址伪装
在这里插入图片描述
也可以使用物理桥
在这里插入图片描述
有非常多的子命令
在这里插入图片描述
能创建桥接口,指明接口,指明桥叫什么名字才可以
在这里插入图片描述
启动失败了,但是实际上已经成功
在这里插入图片描述
在这里插入图片描述
这个接口就当做主机的接口了,物理网卡就变成交换机了,
在这里插入图片描述
这样就可以理解为桥创建好了,基于桥设备,就可以创建虚拟机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
还可以在安装之前设置
在这里插入图片描述
如果能连接到pxe就可以进行安装了
在这里插入图片描述
在这里插入图片描述
还可以导入现有磁盘镜像
在这里插入图片描述
服务器上有磁盘镜像,很小的操作系统cirros互联网上有
在这里插入图片描述
用于测试云环境常用的工具程序,cirrors
名字太长可以进行修改
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的选择只是做资源分配时的评判,借鉴标准
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
磁盘有镜像文件,,可以不用安装直接进行启动
在这里插入图片描述
sudo su - 可以切换拿到管理员账号
在这里插入图片描述

转载地址:http://rdkgn.baihongyu.com/

你可能感兴趣的文章
poj 3225 Help with Intervals(线段树+区间的交集,差集,补集,并集)好难的题目,一天了,真是纠结
查看>>
poj 1664 放苹果(递推,记忆化搜索)简单题
查看>>
poj 1436 Horizontally Visible Segments(线段树成段覆盖问题+简单hash),好题,覆盖问题想法较难
查看>>
hdu 3308 LCIS(线段树单点更新+区间合并)中等难度的题目
查看>>
poj 3042 Grazing on the Run(区间DP,三维DP)
查看>>
poj 1991 Turning in Homework(区间DP,大区间推出小区间的思想)好题,想法很独特
查看>>
codeforces 395 B1. iwiwi(待续)
查看>>
hdu 4283 You Are the One(区间DP)题目转换难,状态难,。。。
查看>>
poj 2299 Ultra-QuickSort(树状数组+离散化的题目)据说是简单题,不过还是觉得好难。。。
查看>>
poj 2352 Stars(简单树状数组)此题也可以用线段树来做
查看>>
树状数组详细解释
查看>>
hdu 1596 find the safest road(最短路求最大值的题目,有两种稍微不同的处理方式)
查看>>
poj 1195 Mobile phones(二维的树状数组)得好好看。。。
查看>>
poj 2481 Cows(树状数组)题目有陷阱,转换后与stars类似
查看>>
poj 3067 Japan(树状数组,注意题目向树状数组的转换)
查看>>
A. On Segment's Own Points
查看>>
codeforces 397B. On Corruption and Numbers
查看>>
问题 E : 坤哥的难题 (题目本来觉得很难,但是数据很水,居然简单的for就AC)
查看>>
问题 F : 8 (做了这道题目,我才发现原来汉语的题目是如此的难懂)
查看>>
SqlMapConfig.xml中的setting属性设置
查看>>