Xen的入门到放弃
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
Xen 是一个
开放源代码虚拟机监视器(VMM),由
剑桥大学的"Ina Pratt"和"Keir Fraser"的2个研究员在“Xenoserver”项目中共同开发。 它的虚拟化实现方式是:Type-I型。也就是说 一个主机不需要安装操作系统,只需要在这个硬件安装一个“Xen hypervisor”,然后可以在这个“Xen hypervisor”上安装安装多个硬件。
一.Xen Hypervisor简介
Xen本身的主要目的是致力于在单个物理机器上可以跑起来多大128个甚至是更多的虚拟机。在单个的物理节点上,Xen早些年的实现是基于半虚拟化的技术(当时并没有出现硬件辅助虚拟化技术。),相比当时完全虚拟化的方式而言,大致只是损失整个硬件平台的5%左右的性能,而典型情况下只有2%的损失,最多不会超过8%。
Xen本身只负责管理CPU和内存。也就是说所有的I/O设备Xen既不负责驱动,也不负责管理。他的各种I/O功能都是由Dom0来实现的。
1.Dom0(用于I/O控制平台,console.)
简单的讲,Xen在虚拟化环境中,用域来描述各个虚拟机,每个域(Domain)都有其ID等属性,所以所Domain0只是虚拟机的一个编号,表示第一个虚拟机。通常我们习惯简写成Dom0。Dom0是运行在Xen Hypervisor上独特的一个虚拟机,也被称之特权域,其(Dom0)内核是经过特殊修改的Linux内核,其能够直接访问硬件的I/O资源,但是不能访问CPU。Dom0的I/O资源还可以为其他的非特权域中的虚拟机(即Dom1m,Dom2,....统称为DomU)实例提供交互的。所以,其他域(DomU)都没有直接访问硬件I/O的权限。但Dom0具备了。并且DomU中的各个虚拟机之间的I/O设备彼此访问时高度隔离的。所以我们可以说DomU中的虚拟机调用CPU,内存,中断都是通过Xen Hypervisor来实现的。调用I/O设备都是通过Dom0来实现的。
二.Xen的工作模式
1..Para Virt:半虚拟化,主要是指对CPU,,I/O设备的半虚拟化。()
2.Full Virt:完全虚拟化,依赖于CPU支持HVM(硬件辅助虚拟化)[引入QEMU模拟软件。]
通过模拟的方式提供I/O硬件设备的,因此所有的DomU看到的硬件驱动都是通过QEMU模拟出来的,它不是真实存在的。

3.PV on HVM :CPU完全虚拟化,但I/O采用半虚拟化。
有别于完全虚拟化,I/O设备并没有通过QEMU模拟实现,I/O部分仍然采用半虚拟化。只不过半虚拟化有一个要求,因在半虚拟化在各个DOMU当中不是常见的普通硬件,而是Xen虚拟出来硬件,要想使用这些硬件,需要我们自己安装驱动程序,其实Linux操作系统已经将部分驱动整合到内核之中,但是Windwos并没有。所以我们在xen虚拟化场景中安装的是Windows的话。需要安装专门的驱动程序。
三,xen的使用方式
1.xen hypervisor(工具栈:xm/xend)
硬件:——>安装linux发行版 --> 安装xen -->修改grub,配置其内核为xen,而不再使用源linux的内核(linux的内核和initramfs文件被当作xen的模块)-->从新编译linux内核,使得其能够运行于Dom0 --> 重启系统
DomU:在Dom0使用工具(xm/xl)创建虚拟机-->启动虚拟机-->安装操作系统
2.xenserver(工具栈:xl)
一个提供了完备的自我独立管理工具和界面的发行版本。Xen后来被citrix收购了,其被当成一个商业化产品,但后来发现没有竞争力,于是将其开源啦。但是其和VMware 还是没有较好的竞争优势。xenserver部署起来更为简便
3.xcp:xen云平台(xen cloud platform,工具栈:xapi/xe)
找一堆物理机,在这些物理上装一个统一的软件层,让他们可以互相通信,在这个统一的软件层上提供一个管理工具,基于这个管理工具就可以创建虚拟机了这就是所谓的云。
扩展小知识:
以上的三种方式在运维起有些繁琐,红帽又推出了:libvirt:virsh/libvirtd,virtmanager(图形界面)几款管理工具。
四.xen云平台工作机制
1.虚拟机的运行
在一堆物理服务器上安装软件使得这些硬件可以互相通信,通过这个软件层提供一个管理工具让用户可以创建,删除虚拟机,以及在虚拟机做任何的配置操作等等。至于创建之后运行在具体哪台服务器上是动态分配的(尤其平台自行调度),那个服务器空闲就在那个服务器上运行。
每一个虚拟机实例,它运行操作系统其实就是依赖一个磁盘映像文件,当一个服务正在运行在一个物理节点的服务,当这个服务宕机之后,这个虚拟机不用关机,实时迁移到另外的一个物理机器上去,并不会中断虚拟机。
2.虚拟机的存储
找一个服务器,里面存放着各种操作系统的映像文件模板(映像文件是分布式存储),当我们创业一个虚拟机的时候,它就会去这个服务器找相应的模板到物理机(node)上去运行。只要你的贷款足够大,可能只要5s就能将文件镜像下载下来。当虚拟机关闭时,临时的虚拟机文件在物理节点会被删除,当下一次启动虚拟机时,还是去存储映像的服务器找相应的文件启动即可。
如上图,当我们启动一个虚拟机的时候,我们需要在映像服务器上照当相应的虚拟机文件,将其调度到Xen平台上,读取虚拟机的配置文件后在node2上运行,并在node2上生成一个临时虚拟机文件,当虚拟机被关闭时,node2会删除这个临时文件,当下一次在要启动这个虚拟机的时候,发现这些node(物理机)上并没有相应的虚拟机,这个是还是重复之前的流程,重新选取心的node运行虚拟机。
当虚拟机关闭后,虚拟机的临时文件会被删除,这个时候大家可能会关心数据存放在哪里呢?嘿嘿~莫慌,其实有一个专门的存储卷,也可能是一个专门的存储服务器(我们公司用的是爱数的存储)。
3.虚拟机的迁移
要想实时迁移就得用到共享存储,也就是说映像文件存放在共享存储里面,这样才能实现试试迁移,当然也得用到分布式存储,这个分布式存储的依然是存放映像文件,只不过这个分布式存储存放的是运行中的映像文件,之前的那个是存放映像模板的。
4.Xen的入门到放弃
在redhat在5.x版本把Xen整合的Linux内核中,经过多次测试发现没有问题,从那是开始Linux发型版本就开始提供了2个linux版本内核,一个是正常版本的,一个是用在Xen上的。但是好景不长,2008年,REDHAT公司收购了一家以色列的一家公司,这家公司主要负责开发KVM虚拟机,在redhat5.6版本开始引入KVM,直到5.8版本开始有了KVM和Xen的并驾齐驱。到readhat6.x以后,Xen开始讲Xen淘汰掉,只保留了KVM。
- CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
- [精品书单] C#/.NET 学习之路——从入门到放弃
C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...
- OpenStack从入门到放弃
OpenStack从入门到放弃 目录: 为何选择云计算/云计算之前遇到的问题 什么是云计算 云服务模式 云应用形式 传统应用与云感知应用 openstack及其相关组件介绍 flat/vlan/gre ...
- 绕过校园网的共享限制 win10搭建VPN服务器实现--从入门到放弃
一.开篇立论= =.. 上次说到博主在电脑上搭建了代理服务器来绕过天翼客户端的共享限制,然而经过实际测试还不够完美,所以本着生命不息,折腾不止的精神,我又开始研究搭建vpn服务器= =... (上次的 ...
- 《区块链:从入门到放弃》之obc安装步骤
obc安装步骤 朋友们可能会好奇,厨师不研究菜谱怎么改研究兵法了,哈哈,我原本是app出身,最近被安排去预研区块链和比特币技术,2个月下来,颇有斩获.期间得到IBM的CC同学指导我一步一步安装obc的 ...
- win10搭建代理服务器实现绕过校园网的共享限制--从入门到放弃
博主所在学校特别坑爹,校园网被电信一家垄断了,而且最恶心的还是电信要求一条网线只能供一台电脑上网,不许接路由器共享网络= =- (还有电信2M价格是380+每年,20m是500每年,而且网速都很慢= ...
- WPF从入门到放弃系列第二章 XAML
本文是作者学习WPF从入门到放弃过程中的一些总结,主要内容都是对学习过程中拜读的文章的整理归纳. 参考资料 XAML 概述 (WPF):https://msdn.microsoft.com/zh-cn ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃
1,以前的博客也写了两篇关于Dagger2,但是感觉自己使用的时候还是云里雾里的,更不谈各位来看博客的同学了,所以今天打算和大家再一次的入坑试试,最后一次了,保证最后一次了. 2,接入项目 在项目的G ...
- Android -- 带你从源码角度领悟Dagger2入门到放弃(二)
1,接着我们上一篇继续介绍,在上一篇我们介绍了简单的@Inject和@Component的结合使用,现在我们继续以老师和学生的例子,我们知道学生上课的时候都会有书籍来辅助听课,先来看看我们之前的Stu ...
随机推荐
- 查看电脑保存的wifi密码
查看电脑保存的wifi密码 查看电脑链接过的WiFinetsh wlan show profile 查看wifi的密码netsh wlan show profile name=8888 key=cle ...
- github 学习心得
https://github.com/kongxiangyu/test 通过本次实验,学会了如何使用github来管理代码.如果是开源的项目,通过网站托管方式进行统一管理,当然是非常棒的,并且有很多功 ...
- Mac+Docker环境下xdebug的配置
由于容器化的需要,前几天我本地也换成了docker环境.就研究了一下docker环境下phpstorm和xdebug的配置. http://www.mmfei.com/?p=453 这个博客给出了一个 ...
- PAT 1057 数零壹
https://pintia.cn/problem-sets/994805260223102976/problems/994805270914383872 给定一串长度不超过 105 的字符串, ...
- [转帖]ASP.NET的版本?
ASP.NET的版本? https://www.cnblogs.com/guogangj/p/8526365.html 问题源于这么一本书: <ASP.NET 4 解密(卷1)>,这本书大 ...
- App WebView实例化
a,高级设置里的环境变量 jdk的配置 b,下载Google的sdk,里面直接包含eclipse 1,新建一个项目 2,起个名字 3,设么走不做,next 4,只操作选择显示的三种方式 5,next什 ...
- MongoDB导入导出以及数据库备份以及.dat数据
1.导出工具:mongoexport 1.概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...
- js 实现List
js 实现List 列表是一组有序的数据.每个列表中的数据项称为元素.在 JavaScript 中,列表中的元素可以是任意数据类型. 我们可以根据数组的特性来实现List. List 抽象数据类型定义 ...
- BZOJ3585&3339mex——主席树
题目描述 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. 输入 第一行n,m.第二行为n个数.从第三行开始,每行一个询问l,r. 输出 一行一个 ...
- BZOJ3899 仙人掌树的同构(圆方树+哈希)
考虑建出圆方树.显然只有同一个点相连的某些子树同构会产生贡献.以重心为根后(若有两个任取一个即可),就只需要处理子树内部了. 如果子树的根是圆点,其相连的同构子树可以任意交换,方案数乘上同构子树数量的 ...