linuxxen命令 linux命令 !

创建新的虚拟机Xen使用命令行问题,怎么解决(1) 启动 Xend 时出现错误 ImportError: /usr /lib/python/xen/lowlevel/acm.so: undefined symbol: Py_InitModule4
(2) 使用 virt-install 创建Xen虚拟机时出现错误:ERROR virDomainCreateLinux() failed XML描述 domain 不是良好linuxxen命令的格式或者无效
(3) virt-manager 中连接虚拟机管理者Dom 0时出现错误:虚拟机管理者连接失败 libvirtError: virConnectOpenReadOnly() failed
(4) virt-install 安装虚拟机是出现错误:ERROR无法连接到 'localhost:8000': 拒绝连接
(5) virt-manager 安装Xen虚拟机连接网络时nat和桥接设备均为空linuxxen命令,无法选择linuxxen命令,安装不能继续
(6) virt-manager 或者 virt-install 安装虚拟机系统过程中出现错误:
'libvirt.libvirtError virDomainCreateLinux() failed POST操作失败: (xend.err 'Device 0 (vif) could not be connected. Hotplug scripts not working.
(7)半虚拟化安装linuxxen命令,选择nat上网方式、IP配置使用 DHCP 方式时,虚拟机系统安装过程卡在 TCP/IP 配置界面,停滞不前
怎样在Linux CentOS上安装XEN及虚拟机要在XenServer主机上安装一台虚拟机有三种方法——从顶部的菜单栏安装;在AC上部右击主机安装;从AC上部的任务栏安装 。当选择安装虚拟机时,在标签窗口会出现第五个标签——“安装XenVM” 。然后,在AC的下部 , 会问用户使用什么虚拟机名,占用多大虚拟CPU,分配多大初始内存,以及使用什么模板安装虚拟机 。用户也可以更改虚拟机的初始虚拟硬盘大小和添加额外的虚拟硬盘 。此外,用户还可以选择虚拟机是否连接到主机服务器的物理光驱或使用ISO镜像 。在AC的右下角底部,点击“安装”标签以完成虚拟机设置 。AC底部会切换到“历史”标签,显示呈递到主机服务器命令队列的“安装XenVM”命令 。
现在,XenVM安装完成 。从AC上部的列表中选择虚拟机,任务栏中的任务会发生变化,有些任务仅适用于虚拟机 , 如重启或关闭 。和选中XenServer主机一样,选中虚拟机时下方也会显示一个标签窗口 , 而且标签也差不多:“摘要”、“性能”和“历史” 。
“摘要”标签显示虚拟机配置的子操作系统(guest OS)类型,虚拟硬件配置——虚拟CPU、内存、虚拟硬盘,以及虚拟机CD-ROM的配置和网口设置 。“性能”标签显示虚拟机CPU使用的详细信息 。如果虚拟机OS中安装了XenVM工具包,“性能”标签还会显示更多的性能信息 。和主机服务器的“历史”标签相似,虚拟机的“历史”标签显示虚拟机或用户在虚拟机所发生的事件列表 。
主机服务器有一个“文本控制台”标签,而虚拟机上有一个“图形控制台”标签,位于“摘要”和“性能”之间 。此标签显示控制台与指定虚拟机的连接 。它之所以被称为“图形控制台”是因为安装在虚拟机上的guest OS可能是Windows(使用的是图形用户界面)或安装了Xen的Linux系统 。
安装guest OS
在虚拟机上安装子操作系统还是有必要的 。要完成这个操作 , 只需在主机服务器的光驱插入Windows Server 2003安装CD,或是复制一个ISO镜像文件到XenServer主机 。为了让ISO镜像文件在XenServer AC中可见 , 必须将此文件复制到主机服务器的这个路径下:"/opt/xensource/packages/iso/." 。例如,复制Windows Server 2003安装CD的ISO镜像到主机服务器的"microsoft_windows_server_2003_standard_edition_sp1.iso" 。
要用ISO镜像文件来安装guest OS,只需在AC的上部选择VM,然后在底部点击VM的“摘要”标签 , 右边显示区会有一个标为“配置”的部分 。找到“CD-ROM”部分 , 点击“磁盘”下方的条目,会出现一个下拉选项框 。选项框中有拷贝到主机服务器的ISO镜像文件,选中这个文件然后点击右下角的“应用” 。选择虚拟机的“图形控制台”,点击上方任务栏的“重启”任务,重新启动虚拟机 。Xen AC会询问用户是否确定重启虚拟机,选择确定即可 。虚拟机重启时会从ISO镜像启动,进入Windows安装程序 。和在物理服务器上安装Windows一样,一步一步按照提示安装即可 。安装完成后,就可以安装XenVM工具包了 。
安装XenVM工具包
安装XenTools package的第一步就是为虚拟机安装XenTools package的ISO镜像,具体过程和安装Windows安装程序的ISO镜像一样 。唯一不同的是,ISO镜像文件名取为"xswindrivers.iso." 。安装好XenTools package的ISO镜像后,Windows gue
如何安装XEN对于Fedora系统linuxxen命令,它的程序包管理器是yumlinuxxen命令,将用它从预编译好的程序包来安装Xen 。实际上,使用yum安装Xen是一件相当轻松的工作,具体过程如下所示:
1、通过下列命令来安装Xen 内核和有关软件:
yum install kernel-xen xen
这一命令将下载并安装以下程序包及其依赖包:
lkernel-xen:该程序包存放的是主机操作系统和客户操作系统以及系统管理程序所用的Xen内核 。
lxen:该程序包存放的是跟Xen系统管理程序交互的用户空间工具 。
lbridge-utils :该程序包存放的是用于配置以太网桥的实用程序,以太网桥的作用是将多个以太网设备连在一起 。
llibvirt :该程序包存放的是一个C库,它提供了使用Xen框架所需的应用编程接口API。
llibvirt-python :该程序包存放的是一个Python 模块 , 有了它就可以让Python 应用程序使用libvirt提供的Xen框架应用编程接口 。
lPython-virtinst :该程序包存放的是一个Python 模块,该模块使用libvirt在虚拟机内安装Fedora /Red Hat Enterprise Linux。
lXen-libs :该程序包存放的是Xen的管理程序所需的程序库 。
如何使用Linux命令创建快照逐个字节进行快照
在Xen里创建快照的一种方法是在保存虚拟机当前状态后使用Linux dd 。这包括以下步骤:
1.使用xm save命令禁用当前的虚拟机状态并将其写入磁盘文件 。这只把机器状态写入一个文件linuxxen命令,不是用于Xen磁盘文件或分区的当前状态 。使用名称linux01这样做linuxxen命令,用xm save linux01 linux01.sav 。注意这个命令将停止虚拟机 。
2.现在使用dd将磁盘镜像文件的当前状态转存到一个备份文件 。下面的例子将为LVM逻辑卷:
dd if=/dev/xenvols/linux01_root of=/data/xen_linux01_root.img
3.使用xm restore命令重新启动虚拟机 。
这种解决方案的主要缺点在于耗时 。dd命令逐个字节地对虚拟机磁盘文件进行复制,因此需要消费大量时间 。所以这种方案不是非常实用 。
LVM方法
在Linux里,Logical Volume Manager(LVM)也能用于创建快照,它比先前的磁盘文件方法节省linuxxen命令了许多时间 。这种方法意味着你的虚拟机使用LVM逻辑卷作为存储后端,与使用虚拟磁盘文件形成对比 。由于这个逻辑卷,你接下来需要创建快照 。这个快照是一种备份 , 只包含当时进行快照时所改变的元数据和块 。当你通过元数据使用dd制作快照副本时,你通常在原始卷上制作原始块的快照,不需要重新激活原始卷 。通过这种方式,能大幅度减少创建快照的时间 。步骤如下:
1.使用xm save命令保存虚拟机当前状态,并写入磁盘文件:
xm save linux01 linux01.sav
2.假定你已经有一个LVM逻辑卷用来作为你虚拟机的存储后端,使用下面的命令对这个卷进行快照 。比较好的准则是使用在原始逻辑卷里所分配磁盘空间的10%作为快照卷的大?。?
lvcreate -s -L 1G -n linux01-snap /dev/xenvols/linux01
3.由于现在你已经在LVM快照里保存了虚拟机的状态,你能重新启动虚拟机 , 显著减少虚拟机的停机时间:
xm restore linux01-sav
4.使用dd创建虚拟机快照并写入一个镜像文件 。由于要使用快照复制所有虚拟机分配的磁盘块,这将花费很长时间:
dd if=/dev/xenvols/linux01-snap of=/data/xen01.img
5.不要忘记在最后一步移除快照 。这很重要,因为快照最终将被完全覆盖而导致快照不能用 。这样的问题是将阻止你从原始卷重新启动 , 因此不要忘记这最后一步:
lvremove /dev/xenvols/linux01-snap
目前,没有任何一种Linux版本提供了在开源Xen堆栈里创建虚拟机快照的方法,在本文中,我们学习了使用标准Linux工具,如LVM和dd命令来创建快照 。
这样你就学会如何用Linux命令创建快照了 。
xen跟linux是什么关系linux是一个操作系统,xen是一个虚拟软件 , 运行在linux上 。
xen可以在物理机的linux虚拟出若干操作系统,虚拟linux和windows都可以 。
虚拟出来的系统相对独立,共享cpu资源 , 独占内存和硬盘 。
【重识云原生】第2.3节——主流虚拟化技术之XenXen知识地图:
Xen是由剑桥大学计算机实验室开发的一个开源项目,是一个开源的可直接运行于硬件层之上的虚拟化软件 , 它属于type-I型虚拟化系统,支持万贯虚拟化和超虚拟化,以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台 。
Xen仅对CPU和Memory直接接管,而其它IO硬件驱动则由其上运行的第一个虚拟机来提供支持,它能够在计算机硬件上并发的运行多个客户操作系统(Guest OS) 。支持x86、x86-64、安腾( Itanium)、Power PC和ARM多种处理器,因此Xen可以在大量的计算设备上运行,目前Xen支持Linux、NetBSD、FreeBSD、Solaris、 Windows和其他常用的操作系统作为客户操作系统在其管理程序上运行 。
Xen默认认为自己是直接运行于硬件层之上的虚拟化软件(即Xen Hypervisor层) , 并且可以直接驱动CPU和内存 , 需注意CPU和内存是所有想要运行的操作系统必须能直接支持的,但Xen为保证自身的小巧,它并没有提供虚拟机的管理接口,因此它采用了一种独特的方式,先运行一台特权虚拟机(即Domain 0),且这台VM必须支持Kernel的修改,因此选择开源的Linux做为特权VM是最合适的,这样也可方便采用Linux所支持的方式来开发虚拟机管理接口,实现与Xen Hypervisor层直接交互来完成为VM分配CPU和内存资源及创建、删除、停止、启动VM的管理接口 。通常这台特权虚拟机一定会采用当前比较流行的Linux发行版,因为它能支持更多IO硬件设备,如:网卡 , 磁盘,显卡,声卡等;到目前为止,NetBSD,GNU/Linux,FreeBSD和Plan 9 , OpenSolaris等系统已经支持已半虚拟化方式运行在Xen的DomU中 。目前Xen已经支持x86、x86_64和ARM等平台,并正在向IA64、PPC移植 。移植到其他平台从技术上是可行的,未来有可能会实现 。
Xen虚拟机支持在不停止的情况下在多个物理主机之间实时迁移 。在操作过程中,虚拟机在没有停止工作的情况下内存被反复地复制到目标机器 。虚拟机在最终目的地开始执行之前,会有一次60-300毫秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉 。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后可以恢复 。
如上图所示,Xen虚拟环境由三部分组件组成:
XEN Hypervisor
Xen Hypervisor 是介于操作系统和硬件之间的一个软件抽象层 。它负责在各个虚拟机之间进行CPU调度和内存分配 。Xen Hypervisor不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行 。Xen Hypervisor不会处理网络、存储设备、视频以及其他 I/O 。
Domain 0 Guest
Domain 0是特权域,是一个修改过的Linux kernel , 是唯一运行在 Xen Hypervisor之上的虚拟机 , 它拥有访问物理 I/O 资源的权限 , 同时和系统上运行的其他虚拟机(Domain U: PV and HVM Guest)进行交互 。Domain 0需要在其它Domain启动之前启动 。
Domain 0 中有两个驱动 Network Backend Driver 和 Block Backend Driver,它们分别用来处理来自 Domain U 的网络和本地磁盘请求 。Network Backend Driver与本地网络硬件直接通信 , 以此来处理来自于Domain U所有虚拟机访问网络设备的请求;Block Backend Drive与本地存储设备进行通信,以此来处理来自于Domain U的磁盘数据读写的请求 。
Domain U Guest(Dom U)
Domain U没有直接访问物理硬件的权限(Domain U的"U"是来自于英文单词 unprivileged,是指没有权限的) , 但Domain 0有 。
运行在 Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为“Domain U PV Guests” , 其上运行着被修改过内核的操作系统,如 Linux、Solaris、FreeBSD 等其它 UNIX 操作系统 。
所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统 , 如 Windows 等 。
Domain U PV Guest 中也包括两个驱动“PV Network Driver”和“PV Block Driver” , 它们分别也是用来处理发送网络和本地磁盘请求用的,这与 Domain 0 中的两个驱动是相对应的 。
Xen对虚拟机的虚拟化分为两大类,半虚拟化(Para virtualization)和完全虚拟化(Hardware VirtualMachine) 。
半虚拟化(Paravirtualization)有些资料称为“超虚拟化”,简称为PV , 是Xen主导的虚拟化技术 。这种技术允许虚拟机操作系统感知到自己运行在Xen Hypervisor上而不是直接运行在硬件上,同时也可以识别出其他运行在相同环境中的客户虚拟机 。
在Xen Hypervisor上运行的半虚拟化的操作系统,为了调用系统管理程序(Xen Hypervisor) , 要有选择地修改操作系统 , 然而却不需要修改操作系统上运行的应用程序 。由于 Xen 需要修改操作系统内核,所以您不能直接让当前的 Linux 内核在 Xen 系统管理程序中运行,除非它已经移植到了Xen 架构 。不过 , 如果当前系统可以使用新的已经移植到 Xen 架构的Linux 内核,那么您就可以不加修改地运行现有的系统 。
完全虚拟化(Hardware Virtual Machine)又称“硬件虚拟化”,简称HVM,是指运行在虚拟环境上的虚拟机在运行过程中始终感觉自己是直接运行在硬件之上的,并且感知不到在相同硬件环境下运行着其他虚拟机的虚拟技术 。此种虚拟化需要借助于Intel的VT-x 或 AMD的AMD-v 等硬件辅助虚拟化技术(详细技术原理参见1.5.1节)及Qemu的IO硬件模拟技术,才能支持GuestOS的kernel不修改,就可直接被DomU支持 。
在Xen Hypervisor运行的完全虚拟化虚拟机,所运行的操作系统都是标准的操作系统,即:无需任何修改的操作系统版本 。同时也需要提供特殊的硬件设备 。
值的注意的是 , 在Xen上虚拟的Windows虚拟机必须采用完全虚拟化技术 。
为了提高性能,完全虚拟化的Guests可以使用特殊的半虚拟设备驱动程序(PVHVM或PV-on-HVM驱动) 。这些驱动程序在HVM环境下优化你的 PV驱动,模拟的磁盘和网络IO旁路运行 , 从而让你的PV在HVM中有更好的性能 。这意味着你在用户窗口操作方面可以得到最佳的性能 。
注意,Xen项目PV(半虚拟化)的Guest自动使用PV驱动,因此不需要这些驱动程序,因为你已经自动使用优化的驱动程序 。PVHVM只会在HVM(全虚拟化)guest虚拟机中需要 。
Xen 的 VMM ( Xen Hypervisor ) 位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域 Domain)之间的相互隔离 。Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为Domain 0,而其余的域则称为Domain U 。
Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API 。Domain 0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与 Xen 提供的管理 API 交互,并通过用户模式下的管理工具来管理 Xen 的虚拟机环境 。
Xen2.0之后,引入了分离设备驱动模式 。该模式在每个用户域中建立前端(front end)设备,在特权域(Dom0)中建立后端(back end)设备 。所有的用户域操作系统像使用普通设备一样向前端设备发送请求,而前端设备通过IO请求描述符(IO descripror ring)和设备通道(device channel)将这些请求以及用户域的身份信息发送到处于特权域中的后端设备 。这种体系将控制信息传递和数据传递分开处理 。
在Xen体系结构设计中,后端设备运行的特权域被赋予一个特有的名字---隔离设备域(Isolation Device Domain, IDD),而在实际设计中,IDD 就处在Dom0中 。所有的真实硬件访问都由特权域的后端设备调用本地设备驱动 (native device driver)发起 。前端设备的设计十分简单,只需要完成数据的转发操作,由于它们不是真实的设备驱动程序,所以也不用进行请求调度操作 。而运行在IDD中的后端设备,可以利用Linux的现有设备驱动来完成硬件访问,需要增加的只是IO请求的桥接功能---能完成任务的分发和回送 。
1)半虚拟化技术实现原理
采用半虚拟化技术的虚拟机操作系统能够识别到自己是运行在Xen Hypervisor而非直接运行于硬件之上 , 并且也可以识别到在相同的机器上运行的其他虚拟机系统 。而且运行的操作系统都需要进行相应的修改 。
半虚拟化客户机(Domain U PV Guests)包含两个用于操作网络和磁盘的驱动程序,PV Network Driver 和PV Block Driver 。
PV Network Driver负责为Domain U提供网络访问功能 。PV Block Driver负责为Domain U提供磁盘操作功能 。
2)完全虚拟化技术实现原理
完全虚拟化客户机(Domain U HVM Guests)运行的是标准版本的操作系统,因此其操作系统中不存在半虚拟化驱动程序(PV Driver),但是在每个完全虚拟化客户机都会在Domain 0中存在一个特殊的精灵程序,称作:Qemu-DM , Qemu-DM帮助完全虚拟化客户机(Domain U HVM Guest)获取网络和磁盘的访问操作 。
完全虚拟化客户机必须和在普通硬件环境下一样进行初始化 , 所以需要在其中加入一个特殊的软件Xen virtual firmware,来模拟操作系统启动时所需要的BIOS 。
开源社区中将一系列的Linux精灵程序分类为“管理”和“控制”两大类 。这些服务支撑着整个虚拟环境的管理和控制操作,并且存在于Domain 0虚拟机中 。
下面将对直接服务进行详细的描述 。
注:为了清晰的描述Xen的运行流程,画图时将精灵程序放在Domain 0外部来描述,但事实上所有精灵程序都存在于Domain 0 之中 。
1)Xend
Xend精灵线程是一个Python应用程序,它作为Xen环境的系统管理员 。它利用Libxenctrl类库向Xen Hypervisor发出请求 。
所有Xend处理的请求都是由XM工具使用XML RPC接口发送过来的 。
2)Xm
用于将用户输入通过XML RPC接口传递到Xend中的命令行工具 。
3)Xenstored
Xenstored精灵程序用于维护注册信息,这些信息包括内存和在连接Domain 0和所有其他Domain U之间的事件通道 。Domain 0虚拟机利用这些注册信息来与系统中其他虚拟机建立设备通道 , 即帮助Domain U虚拟机访问硬件资源 。
4)Libxenctrl
Libxenctrl是C程序类库,用于让Xend具有通过Domain 0与Xen Hypervisor进行交互的能力 。在Domain 0中存在一个特殊的驱动程序称作privcmd,它将请求发送给Hypervisor 。
5)Qemu-DM
在Xen环境下,每个完全虚拟化虚拟机都需要拥有自己的Qemu精灵程序 。Qemu-DM处理在Xen环境下完全虚拟化客户机所能允许执行的所有关于网络 和磁盘请求和操作 。Qemu程序必须存在于Hypervisor之外同时又需要访问网络和I/O , 所以Qemu-DM必须存在于Domain 0 中(参见前面章节对Domain 0 的描述) 。
未来版本的Xen中,一种新的工具Stub-DM将会提供一系列对所有完全虚拟化客户机都可用的服务,以此来替代需要在每个虚拟机上都生成一个Qemu的逻辑 。
6)Xen Virtual Firmware
Xen Virtual Firmware是被嵌入到所有完全虚拟化客户机中的虚拟BIOS系统,来确保所有客户操作系统在正常启动操作中接收到标准的启动指令集并提供标准的软件兼容环境 。
根据前几章节所述,Xen Hypervisor不负责处理网络和磁盘请求 , 因此半虚拟化客户机(Domain U PV)必须通过Domain 0 与Xen Hypervisor进行通信,从而完成网络和磁盘的操作请求 。下面以半虚拟化客户机(Domain U PV)执行向本地磁盘写入数据为例描述Domain 0与Domain U PV的交互过程 。
半虚拟化客户机(Domain U PV)的PV Block Driver接收到要向本地磁盘写入数据的请求 , 然后通过Xen Hypervisor将与Domain 0共享的本地内存中的数据写入到本地磁盘中 。在Domain 0 和半虚拟化Domain U之间存在事件通道,这个通道允许它们之间通过存在于Xen Hypervisor内的异步中断来进行通信 。Domain 0将会接收到一个来自于Xen Hypervisor的系统中断,并触发Domain 0中的Block Backend驱动程序去访问本地系统内容,并从与半虚拟化客户机的共享内存中读取适合的数据块 。从共享内存中读取的数据随后被写入到本地磁盘的指定位置中 。
上图中所显示的事件通道是直接连接Domain 0 和Domain U PV是为了清晰和简单的描述系统是如何运行的 。但事实上,事件通道(Event Channel)运行于Xen Hypervisor中,并在Xenstored中注册特定的系统中断 , 以此来让Domain 0 和Domain U PV能够通过本地内存快速的共享信息 。
Xen在给VM提供CPU的虚拟化时,它采用的也是在Xen hypervisor层启动一个线程,并将这些线程映射到某个物理核心上 , 当然通过DomU的配置文件中的cpus可以指定将这些模拟CPU的线程绑定到某几个物理核心上;而内存的虚拟化则是内存页的映射,将物理内存上多个连续或不连续的内存页映射给VM , 让VM看来这就是一个完整的连续的内存空间 。
当启动一个用户VM(DomU)时,该VM所需的CPU和内存都由Xen Hypervisor提供,而它若需要使用IO设备时,则向特权VM(即Dom0)发起请求,特权VM会为该用户VM创建一个模拟的硬件设备线程,并运行于特权VM的用户空间,当用户VM向该IO硬件发起调用时,特权VM上相应的模拟设备接收请求并将其转化为特权VM对IO硬件的操作,交给特权VM的内核来代为完成其操作 。这里需注意这些虚拟IO硬件需要由Qemu来模拟 , Xen本身并没有提供相应的模拟功能 。(注:特权VM的CPU和内存也是有Xen Hypervisor提供)
1)Qemu模拟IO设备(完全虚拟化方式)
Qemu模拟IO设备(完全虚拟化方式):假如用户VM向特权VM请求磁盘,特权VM可以将一个分区、文件等,通过Qemu将其模拟成一个磁盘设备,就拿文件来说,特权VM先创建一个映像文件,再通过Qemu为该文件模拟一个磁盘控制器芯片;然后,将其映射到用户VM上,当然模拟的这个磁盘控制器芯片一定是一个最常见的,用户VM的Kernel一定支持的,但需注意:模拟的磁盘可能会与实际的物理磁盘不同,因为要尽可能兼容 。这样一来用户VM假如要写数据到磁盘的过程如下:
用户VM-APP---用户VM-Kernel调用虚拟磁盘的驱动进行写数据前的准备(如:数据写入到磁盘中的扇区位置/数据编码等)---
用户VM-Kernel将编码后的信息发给特权VM的模拟磁盘进程---
特权VM的模拟磁盘进程再将编号信息还原后发给特权VM-kernel---
特权VM-kernel调用真实物理磁盘的驱动对数据进行写前准备---最后磁盘驱动调度磁盘完成写入
摘录补充:()
Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API 。Domain 0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件 , Xen 提供的管理 API 可与其交互 , 并通过用户模式下的管理工具(如:xm/xend、xl等)来管理 Xen 的虚拟机环境 。
2)半虚拟化IO设备
半虚拟化的IO设备:它与模拟最大不同是DomU知道自己是运行在虚拟化环境中的,并且知道这个磁盘不是真正的磁盘,它只是Xen模拟的一个磁盘前端驱动(Disk Frontend),它要写数据时,直接将数据交给Disk Frontend,而不再去调用磁盘驱动进行数据编码,当特权VM端的Disk backend收到来自DomU的数据时,也是直接转给特权VM-Kernel,由其直接调用物理磁盘驱动来对这些原始数据进行处理并写入磁盘 。
摘录补充:()
Xen2.0之后,引入了分离设备驱动模式 。该模式在每个用户域中建立前端(front end)设备 , 在特权域(Dom0)中建立后端(back end)设备 。所有的用户域操作系统像使用普通设备一样向前端设备发送请求,而前端设备通过IO请求描述符(IO descripror ring)和设备通道(device channel)将这些请求以及用户域的身份信息发送到处于特权域中的后端设备 。这种体系将控制信息传递和数据传递分开处理(类似云计算中常说的控制面与数据面分离设计) 。
半虚拟化客户机(Domain U PV)的PV Block Driver接收到要向本地磁盘写入数据的请求,然后通过Xen Hypervisor将自己与Domain 0共享的本地内存中的数据写入到本地磁盘中 。在Domain 0 和半虚拟化Domain U之间存在事件通道,这个通道允许它们之间通过存在于Xen Hypervisor内的异步中断来进行通信 。Domain 0将会接收到一个来自于Xen Hypervisor的系统中断,并触发Domain 0中的Block Backend驱动程序去访问本地系统内容 , 并从自己与半虚拟化客户机的共享内存中读取适合的数据块后,随即被写入到本地磁盘的指定位置中 。
但无论采用模拟或半虚拟化最终都是对物理磁盘的操作,假如当前只有一个物理磁盘,众多用户VM都在进行大量的读写请求 , 此时,为了避免用户VM无限制的向特权VM发起请求,特权VM中采用一个环状缓存区,每到一个IO请求 , 就先将其塞入这个环状缓冲区的槽位中 , 若缓冲区满了,就会告诉用户VM IO设备繁忙 。当然其它各种IO设备大致都采用这种机制来控制 。
在虚拟化环境中虚拟网络是十分重要但又比较难,需要特别注意;
在Linux中实现虚拟网络的方法中比较常用的工具有两个:bridge-utils 和 openvswitch,它们创建的虚拟网络设备是不能相互使用的,比如:bridge-utils创建的桥设备,openvswitch是无法识别的 。
用下图来做简单说明:
1)Bridge模式
Xend启动时流程:
1、创建虚拟网桥 xenbr0;
2、停止物理网卡 eth0;
3、物理网卡 eth0 的 MAC 地址和 IP 地址被复制到虚拟网卡 veth0;
4、物理网卡 eth0 重命名为 peth0;
5、Veth0 重命名为 eth0;
6、Peth0 的 MAC 地址更改( FE:FF:FF:FF:FF:FF ),ARP 功能关闭;
7、连接 peth0、vif0.0 到网桥 xenbr0
8、启动 peth0、vif0.0、xenbr0
Domain U 启动时的流程:
1、vifdomainID.0 连接到 xenbr0
2、启动vifdomainID.0
2)Route 模式
Xend启动时的流程:
1、开启Domain 0的IP Forward 。
Domain U启动时的流程:
1、创建 vifdomainID.0 , dom U eth0的IP地址被拷贝到vifdomainID 。
2、启动 vifdomainID.0 。
3、为domU的配置文件中指向虚拟接口vif.0分配的IP地址增加静态路由 。
3)NAT模式
NAT 模式会使用虚拟局域网 virbr0
安装了Xen的Linux机器,在Dom 0中能看到以下几类网卡(网络接口设备 ):
(X , Y都为数字)
pethY
ethY
xenbrY
virbrY
vifX.Y(X为DomaiID,Y表示该虚拟网卡是该Domain的第几块虚拟网卡)
vethY (一般在Xend启动完成以后就不存在了)
xend : 这是Xen Hypervisor的Dom0上运行的服务,此服务用来监控xm命令发来的指令,并完成相应的动作 。
xm : Xen Management,用来管理VM的创建、删除、启动、快照、删除、停止等的管理工具 。
xl : 这是一个基于libxenlight库的一个轻量级VM管理工具 , 它从Xen4.1开始出现,从4.3以后,它被作为主要的VM管理工具,而xm这个重量级管理工具开始被提示废弃.以下为xm、xl的对比图:
xl 和 xm都需要调用libxenlight , 但xl不需要运行任何服务,它可直接调用libxenlight完成相关操作 。
xe/XAPI,是xend的一个API管理接口,通常用于Xen Cloud环境中:Xen Server, XCP
virsh/ libvirt : 这是Redhat发起开发的一套用于管理众多不同类别的VM的管理工具 。
virsh : 这是一个命令行工具
libvirt: 则是一个lib库, libvirtd守护进程用于监听virsh命令操作,并调用lbvirt完成相关操作.
10年4月Xen4.0.0发布 , 改进后Xen的DomU最大可支持虚拟CPU 64颗,Xen主机可支持1TB内存和128颗物理CPU,磁盘可支持快照和克?。籋VM客户机支持虚拟内存页共享;
11年4月发布的Xen4.1版后 , xm/xend开始被提示废弃,xl这个更轻量级的Xen VM管理工具逐渐成为主流 。
15年为止已经发布Xen4.5版本,目前yum源可用的最新版Xen是4.6.1版的() 。
Linux2.6.37:kernel开始对Xen进行支持,并加其加入到Kernel中 。
Linux3.0:Kernel开始对Xen的关键部分进行优化 。
RHEL对Xen的支持概况:
Redhat系列对Xen的支持情况:
RHEL5.7 ~ 及以前版本:默认的企业虚拟化技术为Xen 。
但Redhat提供了两种内核:
kernel-... :这是仅允许RHEL系统的内核 , 不能运行在DomU中 。
kernel-xen.. :这是需要部署XenServer时,使用的Kernel版本 。
RHEL6 ~ 及以后版本:默认支持KVM(收购自以色列的一款虚拟化工具),并且不在对Xen做任何支持,但允许自己运行在DomU中 。
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3_weixin_30784501的博客-CSDN博客
云计算技术 — 云计算技术发展编年史_烟云的计算-CSDN博客_云计算编年史
虚拟化技术原理(CPU、内存、IO)_joneslee的博客-CSDN博客_虚拟化原理
五种主流的虚拟化技术_远有青山-CSDN博客_虚拟化技术
Xen原理
Xen原理 - 张朝锋 - 博客园
Xen虚拟化技术原理_IT人生活的技术博客_51CTO博客
Xen虚拟化基本原理详解
Xen虚拟化基本原理详解 - stardsd - 博客园
Xen工作原理_为幸福写歌的博客-CSDN博客_xen原理
Xen_百度百科
【linuxxen命令 linux命令 !】linuxxen命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux命令 !、linuxxen命令的信息别忘了在本站进行查找喔 。

    推荐阅读