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 ...
随机推荐
- 小学四则运算APP 第三阶段冲刺
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android=" ...
- C++中struct 和 class的区别
首先,C++中类的定义,从狭义上理解,就是我们使用的class类型.从广义上,类就是定义了一个新的类型和新的作用域,它具有成员函数和成员数据. 而对广义类定义的实现分为两种,一种是使用struct实现 ...
- iOS GCD中级篇 - dispatch_semaphore(信号量)的理解及使用
理解这个概念之前,先抛出一个问题 问题描述: 假设现在系统有两个空闲资源可以被利用,但同一时间却有三个线程要进行访问,这种情况下,该如何处理呢? 或者 我们要下载很多图片,并发异步进行,每个下载都会开 ...
- windows的cmd下的find命令比bash(win10下的Ubuntu的bash)下的grep比较
同样的一个catalina文件,windows的cmd下的find命令比bash下的grep要慢,windows确实占下风啊
- Linux shell 菜鸟学习笔记....
20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...
- 流程控制之if判断,while循环,for循环
if判断? 什么是if判断? 判断一个条件如果成立则做...不成立则... 为什么要有判断? 让计算机像人一样具备判断的能力 如何用if判断 if 条件1: code1 code2 cod ...
- python自然语言处理函数库nltk从入门到精通
1. 关于Python安装的补充 若在ubuntu系统中同时安装了Python2和python3,则输入python或python2命令打开python2.x版本的控制台:输入python3命令打开p ...
- jquery html 獲取或設置
jquery提供操作html元素的屬性和內容的強大方法. DOM就是獨立于平台和語言的界面,允許程序和腳本動態訪問和改變DOM的內容,結構和樣式. 獲取內容:text(),html(),val(),a ...
- cordic——sincos
phase format :scaled radians,归化到多少pi roundmode :nearest even 近似值 coarse rotation: selected-pi——pi.no ...
- Django-website 程序案例系列-7 创建多对多关系表
创建多对多关系表: 方式一:一共三张表其中有一张中间表需要手工建立(建议使用第一种方式自定制程度高) class Host(models.Model): hostname = models.CharF ...