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 ...
随机推荐
- 20135337——Linux实践二:模块
一.编译&生成&测试&删除 1.编写模块代码,查看如下 gedit 1.c(编写) cat 1.c(查看) MODULE_AUTHOR("Z") MODUL ...
- Zookeeper 3.4.8分布式安装
1.机器信息 五台centos 64位机器 2.集群规划 Server Name Hadoop Cluster Zookeeper Ensemble HBase Cluster Hadoop01 ...
- PHP预防跨站脚本(XSS)攻击且不影响html代码显示效果
什么是XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往 ...
- 【转帖】ARM的两种不同的CPU docker 应该也是支持arm的
armel和armhf区别选择 知识经验 3年前 (2014-11-07) 20603浏览 1评论 目录 fpu单元 armel与armhf 安装armel和armhf arm-linux-gn ...
- reshape、shuffle、save_weights
#-*- coding: utf-8 -*- import pandas as pd from random import shuffle import matplotlib.pyplot as pl ...
- JUC-Condition线程通信
1,Codition接口描述了可能会与锁有关联的条件变量.这些变量在用法上与使用Object.wait访问的隐式监视器类似. 但提供了更强大的功能,需要指出的是,单个lock可能与多个conditio ...
- codeforces445A
DZY Loves Chessboard CodeForces - 445A DZY 喜欢棋盘,他很享受棋盘上的游戏. 他有一个 n 行和 m 列的棋盘.棋盘上的某些单元格是坏的位置,其他的是好的位置 ...
- liunx速查
文件和目录 Linux 主要目录速查表 /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目 ...
- Django-website 程序案例系列-1 最简单的web服务器
templates:html模板文件夹下面建立文件login.html <!DOCTYPE html> <html lang="en"> <head& ...
- JSP 和 Servlet 的工作原理和生命周期
JSP的英文名叫Java Server Pages,翻译为中文是Java服务器页面的意思,其底层就是一个简化的Servlet设计,是由sum公司主导参与建立的一种动态网页技术标准.Servlet 就是 ...