一个 Xen 虚拟化环境包括一组项目,它们一起工作来提供虚拟化环境:
Xen hypervisor;
dom0;
domain management and control,域的管理和控制;
domU PV 客户机;
domU HVM 客户机。
它们之间的关系参见:
http://www.chenyajun.com/2009/03/01/xen-virtualization-model-explored/
hypervisor 是操作系统以下硬件以上的一个软件抽象。负责 CPU 调度,虚拟机内存分配。hypervisor 不仅为虚拟机抽象硬件,也要控制虚拟机的执行。它对于网络、存储设备和其它 IO 功能等一无所知。
dom0
是一个修改的 linux 内核,是一个运行在 xen hypervisor 之上的独特虚拟机,对访问物理 IO 和其它 domu 虚拟机具有特殊的权利。 xen 虚拟环境需要 dom0 在其它任何虚拟机之前先启动。
在 dom0 中包括的驱动用来支持 domu 的网络和本地磁盘请求,包括Network Backend Driver 和 the Block Backend Driver。
domU
所有运行在 Xen hypervisor 上的半虚拟化客户机被称为 domain U PV 客户机,可以运行修改过的Linux,Solaris,FreeBSD 和其它操作系统。所有运行在 Xen hypervisor 之上的完全虚拟化的客户机被称为 Domain U HVM 客户机,运行标准的 windows 或者其它未修改的操作系统。
DomU PV 客户机意识到它不直接访问到硬件,认识到其它的虚拟机运行在同样的机器上。DomU HVM Guest 不会意识到它在和其它虚拟机共享硬件资源。
一个 domU PV 客户机包含用于网络和磁盘访问的 2 种驱动,PV Network Driver 和 PV Block Driver。
一个 domU HVM 客户机没有那种 PV 驱动;取而代之的是在 dom0 下对每个 HVM 有一个特别的守护进程:qemu-dm。它支持 domU HVM 客户机来进行网络和磁盘访问请求。
domU HVM 客户机必须进行一些初始化,加载一些软件模块(固件)来模拟 BIOS 。
dom 的管理和控制
一系列的 Linux 进程被归类为 dom 管理和控制工具,它们被用来进行 dom 0 内虚拟机的管理和控制。
xend
Xend 是一个 python 应用,它是 Xen 环境的系统管理器。它调节 libxenctrl 来向 hypervisor 请求,所有经由 Xend 的请求通过 xm 工具用 xml-rpc 接口发起。
xm
命令行工具,接收用户输入通过 xml rpc 传递到 Xend。
Xenstored
这个维护在 dom0 和 domU 之间的内存和事件通道等的信息。
libxenctrl
一个 C 库提供 Xend 和 Xen hypervisor 通过 dom0 对话的能力。在 dom0 中,privcmd 分发请求到 hypervisor。
Qemu-dm
每个 HVM 客户机要求有自己的 Qemu 守护进程。这个工具处理所有来自 domU HVM 完全虚拟化的客户机的网络和磁盘请求。Qemu 必须存在于 Xen hypervisor 之外,因为它必须能访问 dom0 中的网络和IO。
Xen 虚拟固件
一个虚拟的 BIOS 插入到每个 domU HVM 客户机中,保证操作系统接收到在正常启动过程中各种标准的启动指令。
dom0 和 domU 之间的通讯
Xen hypervisor 不用来支持网络或者磁盘请求,因此一个 domU 通过 hypervisor 向 dom0 通信来进行磁盘或者网络请求。
domU PV 客户机块设备驱动接收到磁盘写请求时,它将通过 Xen hypervisor 写数据到和 dom0 共享的一块本地内存。在 dom0 和 domU PV 客户机之间存在一个事件通道允许它们使用 Xen hypervisor 的异步域间中断来通信。dom0 将接收到一个来自 hypervisor 的中断引起 PV Block Backend Driver 来访问本地系统内存读取 domU PV 客户机共享内存中的块。共享内存中的数据然后被写到本地磁盘。
如前所描述,后端驱动(backend driver)运行在特权域,前端驱动(frontend driver)运行在非特权域。非特权的客户端发出设备请求到前端驱动。前端驱动然后和运行在特权域中的后端驱动通信。特权域将请求排队向实际物理硬件请求。
前端和后端驱动的通信通过使用 XenBus 的系统内存来完成,这是一个用来共享事件通道和生产者/消费者的环缓冲。为了避免昂贵的数据拷贝,XenBus 通过简单映射来完成。比如当要写数据到磁盘或者通过网络发送数据,一个属于非特权域的缓存可能被映射到特权域。同样,要从磁盘读数据或者接收来自网络的数据,一个由特权域控制的缓存可以被映射到非特权域。
这种通信通过 XenStore 来建立。当前端驱动启动时,它使用 XenStore 来建立一个共享内存池和与后端驱动通信的事件通道。在连接建立以后,前端和后端将请求或者响应放置到共享内存中通过事件通道向彼此发送通知。XenStore 向后端和前端驱动提供了对这种连接的可见性。
桥接、路由和 NAT
Xen 提供了 3 种虚拟网络模型来供客户机访问物理设备——桥接、路由和 NAT。在桥接模式中,虚拟网络接口(vif)在外部局域网是可见的,在路由模型中,vif 在外部局域网是不可见的,但是 IP 是可见的。在 NAT 模型中,vif 在外部局域网不可见,它也没有一个外部可见的 IP 地址。
在桥接模式下, brctl 工具被用来创建软件方式的桥接接口,一个物理网络接口然后附加到桥上。Xen 客户机域的后端 vif 能被附加到这个桥上。当桥接口接收到来自物理接口的包时,物理网络接口将依据各域的虚拟网卡的 MAC 地址转发它们到不同的域上。
在路由模型下将使用 iptables 机制来进行路由。由物理接口所收到的所有的包将被驱动域的网络 IP 层所处理。驱动域(dom0)查找路由表条目并将包转发到不同的客户机 IP 地址。在路由模式下,驱动域连接 2 个不同的网段:内部由客户机使用的网段和连接外部网络的网段。
在驱动域作为一个 NAT 网关时,驱动域仍然作为一个路由器,但是更进一步映射一个它自己的 IP 地址和端口到一个客户机的 IP 地址和端口。客户机的 IP 地址隐藏在驱动域后面对外部网络不可见。
Linux 防火墙提供了 iptables ,而 bridge-utils 则提供了 etables 来进行基本的 MAC 地址过滤。也可以指定一个物理网卡给一个域使用。
下图是个桥接的例子。
veth0、vif0.0 是 dom0 的网络接口。veth0 被重命名为 eth0。xenbr0 接口是软桥接接口。vif1.0 是运行的客户机的后端网络接口。
peth0、xenbr0、vif0.0、vif1.0 都共享同样的 MAC 地址 FE:FF:FF:FF:FF:FF,它是以太网的广播地址。这意味着实际的网络接口、dom0 的回环接口、客户机的后端接口都向 xenbr0 广播。当物理网卡接收到包时,它直接发送到桥接接口 xenbr0,这个桥接接口通过包的 MAC 地址决定将包转发到哪个域的后端接口。因此 peth0 不需要 IP,只需要 MAC 地址。物理接口的原先 IP 已经被告知给 eth0——驱动域的虚拟前端接口。xenbr0 通过 MAC 地址是 00:11:25:F6:15:22 或者是 00:16:3e:45:e7:12 来决定包转发到 eth0 或者 vif1.0。客户域相应的前端接口被命名为 eth0。从 dom0 的角度看,客户机中 eth0 实际是 vif1.0。
brctl 命令的显示:
[user@Dom0]# brctl show bridge name bridge id STP enabled interfaces xenbr0 8000.feffffffffff no vif1.0 peth0 vif0.0
分享到:
相关推荐
Xen 的网络配置可以分为两种:桥接网络(Bridge Network)和路由网络(Routed Network)。在桥接网络中,所有的 OS 共享同一个物理网卡,而在路由网络中,每个 OS 都可以拥有独立的 IP 地址和网卡。 在 Xen 环境下...
其中,eth0和peth0分别代表虚拟和物理网络接口,vif设备是虚拟接口,virbr0是QEMU的NAT桥接设备,xenbr0则是一个通用的Xen桥接设备。 **Step 1: 虚拟还是实体** 在Xen中,网络设备分为实体(Physical)和虚拟...
虽然本文未详细列出Xen的具体网络模式,但可以推测Xen支持类似VMware的网络配置选项,包括但不限于桥接模式、NAT模式和仅主机模式。Xen的网络配置通常更为灵活,能够更好地支持高级网络功能和配置需求。 #### 3. ...
在 Xen 中,网络设置涉及到前端驱动和后端驱动的交互,以及虚拟网络模型的选择,如桥接、路由和NAT。 后端驱动运行在特权域(也称为Domain 0或dom0),这是一个拥有完全硬件访问权限的特殊虚拟机。前端驱动则运行在...
同时,为了确保网络功能正常,需要检查和配置网络接口,例如设置桥接网络以实现虚拟机与物理网络的通信。 在开发环节,了解Xen的API和编程模型至关重要,这涉及到如何编写能在Xen环境中运行的客体操作系统(Guest ...
1. **网络配置**: Xen 支持多种网络模型,如桥接、网络地址转换(NAT)和路由。通常,你会创建一个网络桥接设备,让虚拟机可以直接连接到物理网络。 2. **存储配置**: Xen 支持本地磁盘、网络存储(如 iSCSI 或 NFS...
这部分涵盖了网络配置、存储管理(如Xen的块设备驱动和网络桥接)、资源调度策略,以及高可用性设置等关键话题。同时,还会涉及安全方面,如如何设置防火墙规则,以及保护虚拟机免受攻击的措施。 对于源码爱好者,...
1. 配置网络:Xen需要一个桥接网络来让虚拟机访问物理网络。可以创建一个新的桥接接口,如`virbr0`,并将其与物理网卡绑定。 2. 开启Xen服务:`chkconfig xencommons on` 和 `chkconfig xend on`,确保Xen服务在启动...
这个命令会创建一个名为`test1`的虚拟机,分配512MB内存,1个CPU核心,10GB磁盘空间,并连接到`xenbr0`桥接网络。操作系统ISO镜像将通过HTTP从指定的CentOS镜像源下载。 完成这些步骤后,你就成功地使用yum安装了...
2. **网络配置**:设置虚拟机的网络连接,包括桥接、路由和NAT。`xen.xenapi.VM.set_networks()`允许为虚拟机指定网络接口。 3. **存储管理**:处理虚拟磁盘的创建、删除和挂载。`xen.xenapi.VM.set_VBDs()`可以...
- **网络模式**:支持桥接模式、NAT模式等多种网络配置方案。 - **虚拟交换机**:通过Xen提供的虚拟交换机功能,实现虚拟机之间的通信。 #### 九、高级虚拟机配置 - **定制内核**:对于半虚拟化(PV)虚拟机,可以...
5. **网络配置**:可以使用桥接、NAT或路由模式进行网络设置,使虚拟机能够访问外部网络。 6. **存储配置**:Xen支持本地磁盘、网络存储(如iSCSI、NFS)以及块设备共享。 7. **动态调整资源**:通过Xen管理工具,...
- Xen支持多种网络配置方式,如桥接模式、NAT模式等。 - 理解每种模式的工作原理和应用场景,有助于更好地配置网络。 **4. 迁移** - Xen支持存储迁移、冷迁移和热迁移等操作,增强了虚拟机的灵活性和可用性。 #...
在Xen环境中,网桥将宿主机的物理网络接口与虚拟机的虚拟网络接口桥接,使虚拟机能够像独立的物理机器一样访问网络。 **设置步骤** 1. **启用并配置网桥服务** 在SUSE中,我们通常使用`ifcfg-bridge`文件来配置...
例如,网络可以配置为桥接模式或NAT模式,存储可以使用本地硬盘、网络存储(如NFS、iSCSI)或块设备,内存分配则需要根据虚拟机的工作负载进行合理规划。 5. **创建虚拟机(VM)**:创建虚拟机包括选择合适的操作...
4. **网络配置工具**:为了支持XEN中的网络配置,还需要安装`bridge-utils`和`iproute`包,这些包提供了用于设置网络桥接和路由的工具。 5. **热插拔支持**:文档中还提到了需要支持热插拔功能,这可以通过安装`...
Xen 使用 PV drivers 和 HVM drivers 实现网络虚拟化,提供灵活的网络配置,如桥接、NAT 和路由等。 9. **存储虚拟化** Xen 支持多种存储后端,包括本地磁盘、网络存储(如 iSCSI、FC)和分布式存储系统,以满足...
安装完成后,需要对Xen hypervisor进行配置,包括设置网络桥接、磁盘映射等。网络配置通常涉及桥接物理接口到一个虚拟桥,以使虚拟机能够访问外部网络。 接下来,我们将讨论Xen的虚拟机创建。创建Xen虚拟机涉及几个...
桥接模式使得虚拟机可以直接参与到物理网络中,如同一个独立的网络设备。如果选择桥接,配置文件会包含 `(network-script network-bridge)` 和 `(vif-script vif-bridge)`。 接下来,脚本询问用户为domain0(主...