本文共 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-managerkvm依赖于你的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/