您的当前位置:首页正文

Xen原理——精选推荐

2021-07-21 来源:个人技术集锦
Xen原理

⽬录:

1. Xen的简介

1.1 Xen的⼤体结构1.2 Xen对VM的称呼

1.3 Xen对CPU和内存的虚拟化过程1.4 Xen对IO设备的虚拟化过程1.5 Linux Kernel对Xen的⽀持1.6 Xen版本发布简史1.7 Xen的⼯具栈1.8 XenStore

1.9 虚拟化中的四种⽹络模型1.10 Xen的安全问题导读2. Xen的安装及配置⽂件说明

2.1.1 在CentOS6.6上运⾏Xen的条件2.1.2 Xen的配置

2.2.1 Xen 启动DomU的配置⽂件说明

2.2.1.1 如何创建⼀个Xen PV模式的VM 【注:HVM模式的VM创建参见试验部分】3. 使⽤libvirt实现Xen虚拟机的图形管理

4. PV DomU的根⽂件系统可以以多种不同的⽅式安置提⽰:

  Xen仅建议学习其原理,不建议花时间学习具体使⽤.

若希望了解具体使⽤参考: https://pan.baidu.com/s/1A77aJdoBK7CPIF7FVngudQ  查看此⽂件需要使⽤Cherrytree⽂档编辑器查看

1. Xen的简介

  Xen是⼀个开源的可直接运⾏于硬件层之上的虚拟化软件,它可在传统虚拟技术极度不友好的X86架构上也有上佳的表现它是英国剑桥⼤学开发的开源虚拟化软件,它的初衷是在⼀台物理机上运⾏上百台虚拟机;

  Xen的设计⼗分精巧,它属于虚拟化type-I ,因为Xen实际是⼀个简化版的Hypervisor层;相对于Type-II类型的基于Host的虚拟化(如:VMwareWorkstattion),其性能相对会较好;Xen仅对CPU和Memory直接接管,⽽其它IO硬件驱动则由其上运⾏的第⼀个虚拟机来提供⽀持.这样做的原因是: Xen⽆法为众多IO设备开发驱动,⽽硬件设备的开发商也不会专为Xen提供驱动,因此Xen采⽤了这样⼀种特别的设计⽅式。

  Xen默认认为⾃⼰是直接运⾏于硬件层之上的虚拟化软件,并且可以直接驱动CPU和内存,需注意CPU和内存是所有想要运⾏的操作系统必须能直接⽀持的,但Xen为保证⾃⾝的⼩巧,它并没有提供虚拟机的管理接⼝,因此它采⽤了⼀种独特的⽅式,先运⾏⼀台特权虚拟机,且这台VM必须⽀持Kernel的修改,因此选择开源的Linux做为特权VM是最合适的,这样也可⽅便采⽤Linux所⽀持的⽅式来开发虚拟机管理接⼝,实现与Xen Hypervisor层直接交互来完成为VM分配CPU和内存资源 及 创建、删除、停⽌、启动VM的管理接⼝;通常这台特权虚拟机⼀定会采⽤当前⽐较流⾏的Linux发⾏版,因为它能⽀持更多IO硬件设备,如:⽹卡,磁盘,显卡,声卡等; 到⽬前为⽌,NetBSD, GNU/Linux, FreeBSD和Plan9,OpenSolaris等系统已经⽀持已半虚拟化⽅式运⾏在Xen的DomU中;⽬前Xen已经⽀持x86,x86_64和ARM等平台,并正在向IA64、PPC移植。移植到其他平台从技术上是可⾏的,未来有可能会实现。

  Xen虚拟机⽀持在不停⽌的情况下在多个物理主机之间实时迁移。在操作过程中,虚拟机在没有停⽌⼯作的情况下内存被反复的复制到⽬标机器。虚拟机在最终⽬的地开始执⾏之前,会有⼀次60-300毫秒的⾮常短暂的暂停以执⾏最终的同步化,给⼈⽆缝迁移的感觉。类似的技术被⽤来暂停⼀台正在运⾏的虚拟机到磁盘,并切换到另外⼀台,第⼀台虚拟机在以后可以恢复。

1.1 Xen的⼤体结构:

 Xen的组成分为三部分:

  (1) 硬件层之上的Xen Hypervisor层:负责直接驱动CPU和Memory这些基础硬件,

   为其它所有虚拟机提供CPU、内存、Interrupt(中断)管理,并且还提供了HyperCall的调⽤。

  (2) 第⼀个虚拟机: 此虚拟机在Xen中称为特权虚拟机: 它有整个虚拟化环境的访问权,并负责创建⽤户级虚拟机,   并为其分配I/O设备资源.它的Kernel是经过特别修改的VM,它可以直接访问IO硬件也可访问其它⽤户VM。  (3) 其它众多虚拟机: 这些虚拟就是⽤户级虚拟机: 它们是实际提供给⽤户使⽤的虚拟机,也是相关隔离的VM。   需要注意:Xen⽀持三种虚拟化,当然此处的虚拟化特指CPU的半虚拟化或完成虚拟化.  <1> Para-Virtualization(半虚拟化): 在这种虚拟化中,CPU不要求⽀持HVM特性,

    但GuestOS的Kernel必须允许被修改.否则将⽆法⽀持该GuestOS运⾏在DomU中。

    这是因为必须让GuestOS知道⾃⼰是运⾏在虚拟化环境中,这样它在进⾏特权指令操作硬件时,    会直接发起HyperCall向Xen Hypervisor发起请求来完成所谓的硬件操作。    在PV技术下,能够运⾏在DomU上的OS包括:      Linux, NetBSD, FreeBSD, OpenSolaris

  <2> HVM(基于硬件的完全虚拟化): 此种虚拟化需要借助于Intel的VT-x 或 AMD的AMD-v 的HVM技术    及Qemu的IO硬件模拟,才能⽀持GuestOS的kernel不修改,就可直接被DomU⽀持。

    这是因为Xen Hypervisor是运⾏在CPU的环-1上的,GuestOS的kernel是运⾏在CPU的环0上,GuestOS

    向环0上发起的所有假特权指令调⽤都由CPU直接捕获,并交由环-1上的Xen Hypervisor处理,最后由Xen代其执⾏

    这样DomU若发起关机指令时,Xen仅会切断该GuestOS的电源,⽽不会影响其它GuestOS。    在HVM技术下,能够运⾏在DomU上的OS包括: 所有⽀持X86架构的OS.

  <3> PV on HVM: I/O设备半虚拟化运⾏,CPU运⾏于HVM模式

    此中⽅式是为了解决HVM⽅式中IO设备也必须完全模拟⽽带来的性能低下问题;通过让CPU进⾏    完全虚拟化,⽽I/O设备则采⽤在GuestOS中安装相应的IO驱动实现IO的半虚拟化的⽅式来提⾼效率。    在PV on HVM的技术下,能够运⾏在DomU上的OS包括:    只要OS能驱动PV接⼝类型的IO设备,即可.1.2 Xen对VM的称呼:

  Xen对VM统称为Domain.

  第⼀台特权VM,在Xen中通常称为: Domain0,简称为Dom0, 别名: Privileged Domain.

  其它后续⽤户级VM,在Xen中称为: Domain1,Domain2,...., 它们有⼀个统称为DomU,别名:Unprivileged Domain.

    

1.3 Xen对CPU和内存的虚拟化过程:

  Xen在给VM提供CPU的虚拟化时,它采⽤的也是在Xen hypervisor层启动⼀个线程,并将这些线程映射到某个物理核⼼上,当然通过DomU的配置⽂件中的cpus可以指定将这些模拟CPU的线程绑定到某⼏个物理核⼼上;⽽内存的虚拟化则是内存页的映射,将物理内存上多个连续或不连续的内存页映射给VM,让VM看来这就是⼀个完整的连续的内存空间.

1.4 Xen对IO设备的虚拟化过程:

  当启动⼀个⽤户VM(DomU)时, 该VM所需的CPU和内存都有Xen Hypervisor提供,⽽它若需要使⽤IO设备时,则向特权VM发起请求,特权VM(Dom0)会为该⽤户VM创建⼀个模拟的硬件设备线程,并运⾏于特权VM的⽤户空间,当⽤户VM向该IO硬件发起调⽤时,特权VM上相应的模拟设备接收请求并将其转化为特权VM对IO硬件的操作,交给特权VM的内核来代为完成其操作。这⾥需注意这些虚拟IO硬件需要由Qemu来模拟,Xen本⾝并没有提供相应的模拟功能。(注:特权VM的CPU和内存也是有Xen Hypervisor提供.)

  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 的虚拟机环境。

  

  半虚拟化的IO设备:它与模拟最⼤不同是DomU知道⾃⼰是运⾏在虚拟化环境中的,并且知道这个磁盘不是真正的磁盘它只是Xen模拟的⼀个磁盘前端驱动(Disk Frontend),它要写数据时,直接将数据交给Disk Frontend,⽽不再去调⽤磁盘驱动进⾏数据编码,当特权VM端的Disk backend收到来⾃DomU的数据时,也是直接转给特权VM-Kernel,由其直接调⽤物理磁盘驱动来对这些原始数据进⾏处理并写⼊磁盘。摘录补充:

  Xen2.0之后,引⼊了分离设备驱动模式。该模式在每个⽤户域中建⽴前端(front end)设备,在特权域(Dom0)中建⽴后端(back end)设备。所有的⽤户域操作系统像使⽤普通设备⼀样向前端设备发送请求,⽽前端设备通过IO请求描述符(IO descripror ring)和设备通道(devicechannel)将这些请求以及⽤户域的⾝份信息发送到处于特权域中的后端设备。这种体系将控制信息传递和数据传递分开处理。

  半虚拟化客户机(Domain U PV)的PV Block Driver接收到要向本地磁盘写⼊数据的请求,然后通过Xen Hypervisor将⾃⼰与Domain

0共享的本地内存中的数据写⼊到本地磁盘中。在Domain 0 和半虚拟化Domain U之间存在事件通道(我的理解:Device Channel包含EventChannel),这个通道允许它们之间通过存在于Xen Hypervisor内的异步中断来进⾏通信。Domain 0将会接收到⼀个来⾃于Xen Hypervisor的系统中断,并触发Domain 0中的Block Backend驱动程序去访问本地系统内容,并从⾃⼰与半虚拟化客户机的共享内存中读取适合的数据块后,随即被写⼊到本地磁盘的指定位置中。

  

  但⽆论采⽤模拟或半虚拟化最终都是对物理磁盘的操作,假如当前只有⼀个物理磁盘,众多⽤户VM都在进⾏⼤量的读写请求,此时,为了避免⽤户VM⽆限制的向特权VM发起请求,特权VM中采⽤⼀个环状缓存区,每到⼀个IO请求,就先将其塞⼊这个环状缓冲区的槽位中,若缓冲区满了,就会告诉⽤户VM IO设备繁忙。当然其它各种IO设备⼤致都采⽤这种机制来控制。

1.5 Linux Kernel对Xen的⽀持:

  》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中.1.6 Xen版本发布简史:

  10年4⽉Xen4.0.0发布,改进后Xen的DomU最⼤可⽀持虚拟CPU 64颗,Xen主机可⽀持1TB内存和128颗物理CPU,磁盘可⽀持快照和克隆; HVM客户机⽀持虚拟内存页共享;

  11年4⽉发布的Xen4.1版后,xm/xend开始被提⽰废弃,xl这个更轻量级的Xen VM管理⼯具逐渐成为主流.  15年为⽌已经发布Xen4.5版本.⽬前yum源可⽤的最新版Xen是4.6.1版的(

1.7 Xen的⼯具栈:

  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完成相关操作.

    

1.8 XenStore:

  为各Domain之间提供共享信息存储的空间,同时它也是⼀个有着层级结构的名称空间数据库;它运⾏于Dom0上,由Dom0直接管理,它⽀持事务和原⼦操作。XenStore通常⽤来控制DomU中设备的机制,并通过多种⽅式对其进⾏访问。  摘录补充():

  XenStore是Xen提供的⼀个域间共享的存储系统,它以字符串形式存放了管理程序和前、后端驱动程序的配置信息。Dom0管理所有的数据,⽽DomU通过共享内存,向Dom0请求与⾃⼰相关的键值,以此实现域间通信。Xen提供了多种接⼝⽤来操作XenStore:命令⾏的xenstore-*命令、⽤户空间的xs_系列函数、内核的XenBus接⼝,都可以⽤来⽅便地操作XenStore的数据。

1.9 虚拟化中的四种⽹络模型

  在虚拟化环境中虚拟⽹络是⼗分重要但⼜⽐较难,需要特别注意;

  在Linux中实现虚拟⽹络的⽅法中⽐较常⽤的⼯具有两个:bridge-utils 和 openvswitch,它们创建的虚拟⽹络设备是不能相互使⽤的,⽐如:bridge-utils创建的桥设备,openvswitch是⽆法识别的。  ⽤下图来做简单说明

    

1.10 Xen的安全问题导读  补充见附件:

2. Xen的安装及配置⽂件说明

  2.1.1 在CentOS6.6上运⾏Xen的条件:  ⽅式⼀:

    (1) 编译3.0以上版本的内核,启动对Dom0的⽀持.    (2) 编译xen程序  ⽅式⼆:

    使⽤相关Xen运⾏环境快速部署的项⽬:

    (1) xen4contos : 这是Xen官⽅提供的开源项⽬。      xen环境部署的RPM包镜像站:     (2) xen made easy

  2.1.2 Xen的配置:   (1) 修改grub.conf

    # Xen是直接运⾏于硬件层之上的,因此必须修改grub.conf,⼿动添加以下参数:

    title Xen Server Linux 3.7.4    root (hd0,0)

    kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin

    module /vmlinuz-3.7.4-1.el6xen.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUNKS LANG=en_US.UTF-8         rd_LVM_LV=vg0/swap rd_NO_MDSYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_DM         KEYBOARDTYPE=pc KEYTABLE=us rd_LVM_LV=vg0/root rhgb quiet    module /initramfs-3.7.4-1.el6xen.x86_64.img

  注: kernel 必须指定xen*.gz为启动的内核, dom0_mem:设定Dom0启动后可以使⽤的内存⼤⼩,    cpufreq: 设定由Xen来管理CPU, dom0_max_vcpus: 设定Dom0可以使⽤多少颗CPU,

    dom0_vcpus_pin: 将Dom0固定在系统启动后,分配给它的CPU上,以避免它去抢占其它物理CPU核⼼,这样其它物理核⼼就可以分配给DomU来使⽤了。  详细参数查看:    

  2.2.1 Xen 启动DomU的配置⽂件说明    xl list : #⾸先需要了解的第⼀个命令.    xen VM的常见状态:      r : running      b: block(阻塞)

      p: pause(暂停): 类似与睡眠.      s: stop

      c: crash(崩溃)

      d: dying, 正在关闭的过程中.

  2.2.1.1 如何创建⼀个Xen PV模式的VM:

    1. Kernel 和 initrd或initramfs :这些LinuxKernel⽂件必须要有,但可以不在DomU上,它们可以在Dom0上.    2. DomU内核模块(即:/lib/modules/`uname -r`): 这些就需要在DomU根⽂件系统中存储了。    3. 根⽂件系统

    4. swap设备: 若条件充⾜也可以提供.

  以上四步的内容必须定义在DomU的配置⽂件中.

  注: xl 和 xm启动DomU的配置⽂件是存在⼀些不同的.  对于xl命令创建VM所需的配置⽂件说明可查看:  man xl.cfg

    # 注: man xl.conf #这是对xl命令所使⽤的配置⽂件.

  xl.cfg的配置⽂件参数说明:    name : 域的唯⼀名.

    builder: 指明VM的类型,generic:创建PV类型的VM; HVM:创建HVM类型的VM    vcpus: 指定CPU个数.

    maxvcpus:指定最⼤可使⽤CPU的个数,这些CPU可在需要是⼿动启动。    cpus: 指定VM的vcpu线程可以运⾏在哪些物理核⼼列表上.

      #如:cpus=\"0-3,5,^1\" 这表⽰:VCPU可运⾏在0,2,3,5上,但不能运⾏在1上.

      #建议将vCPU绑定到固定的物理核⼼上,这样可减少vCPU线程在多个物理核⼼上切换.    memory: 指定DomU启动时预分配的内存⼤⼩[单位:M]    maxmem: 指定最⼤给DomU分配的内存⼤⼩. [单位:M]    on_poweroff: 指定DomU关机时,实际采⽤的动作.    destroy: 直接将DomU断电关机.    restart: 重启

    rename-restart: 改名后重启

    preserve: 将这个DomU保存,以便下次再启动。

    coredump-destroy: 将DomU的运⾏中的内核数据备份出来后,再关机。    coredump-restart: 先备份内核数据,再重启.    on_reboot: 重启DomU时实际采⽤的动作。    on_crash: 当DomU崩溃后,实际采⽤的动作。    uuid: DomU的UUID,⾮必须.    disk:指定DomU的磁盘列表

      如: disk=[ \"/img/disk/DomU1.img\" , \"/dev/sda3\" , ...]    vif : 指定DomU的⽹卡列表

      如: vif=[ \"NET_SPEC_STRING\" , \"NET_SPEC_STRING\" , ...]    vfb: 指定DomU的显⽰器, vfb:virtual frame buffer(虚拟帧缓冲)

      如: vfb=[ \"VFB_SPEC_STRING\" , \"VFB_SPEC_STRING\" ,...]    pci :指定DomU的PCI设备列表.

      如:pci=[ \"PCI_SPEC_STRING\" , \"PCI_SPEC_STRING\" ,...]  PV模型的专⽤指令:

    kernel : 指定内核⽂件路径,此路径为Dom0的路径.

    ramdisk: 指定initrd或initramfs⽂件的路径.

    root: 指定根⽂件系统. 此参数仅与kernel和ramdisk⼀起使⽤,因为,kernel和ramdisk都是在      Dom0上的,并没有grub.conf来告诉kernel根⽂件系统在哪⾥,因此这⾥需要指定。    extra: 与root参数类似,它是指定kernel启动时的其它参数的.

  # 以上4个参数⽤于kernel⽂件在Dom0上, 下⾯固定格式⽤于DomU有⾃⾝的Kernel⽂件.

    bootloader=\"pygrub\": 若DomU使⽤⾃⼰的kernel和ramdisk,则此时需要⼀个Dom0中的

             应⽤程序来实现其bootloader功能。这个不⽤指定root,因为,DomU的启动所需的             所有⽂件都在⾃⼰的镜像⽂件中,它可以从grub.conf中指定根⽂件系统的位置.    注:

      # 让DomU通过⽹络之间安装操作系统,需要注意:

      # kernel 和 ramdisk所需要的⽂件必须是:安装光盘⽬录下/isolinux/{vmlinuz,initrd.img}      kernel=\"/images/kernel/vmlinuz\"      ramdisk=\"/images/kernel/initrd.img\"

      extra=\"ks=http://1.1.1.1/centos6.6_x86_64.ks\" #注:给内核传递的ks⽂件。   另注:

    cloud-init*.rpm⼯具包可以将安装的OS中的特有信息(如:MAC, 磁盘信息等)删除,并且可以在下次启动时,      ⾃动⽣成这些信息.是制作云模板OS镜像的⼯具。

  磁盘参数的指定⽅式:

    xl⽅式创建VM时,磁盘指定格式: http://xenbits.xen.org/docs/unstable/misc/xl-disk-configuration.txt    [, [,[,[]]]]

      target: 表⽰磁盘映像⽂件或设备⽂件路径:        如: /images/xen/linux.img          /dev/vg-xen/lv-linux      format: 表⽰磁盘的格式:

        如: raw、qcow2..等,具体格式可查看: qemu-img --help |grep 'Supported formats'

      vdev: 指定添加的虚拟磁盘被DomU识别为何种类型的磁盘; ⽀持:hd, sd, xvd(xen-vritual-disk)        注: 指定是需要写成: sda 或 sdb等,即要指定这是第⼏块磁盘.      access: 访问权限,除CDROM为'r'只读外,其它都为'rw'

   ⽰例:

    disk=[\"/images/xen/linux.img,qcow2,xvda,rw\      # 使⽤Dom0中物理磁盘分区做为DomU的存储空间    disk=['/dev/vg-data/lv-bbox,raw,xvda,rw']

  创建虚拟磁盘⽂件:

    #注qemu-img创建的磁盘映像⽂件是采⽤稀疏磁盘格式创建的.因此⽤:du -sh linux.img 可看到其⼤⼩为0.      qemu-img create -f raw -o size=2G /images/xen/linux.img

  创建虚拟⽹络接⼝:

    #虚拟⽹卡的创建直接在配置⽂件中使⽤vif指定即可。

    #格式: vif=[ \"NET_SPEC_STRING\" , \"NET_SPEC_STRING\" , ...]        NET_SPEC_STRING:的格式如下:        key=value    #key包含以下⼏个:

     》mac :指定⽹卡的MAC地址,注:MAC地址必须以:00:16:3e 开头,这是IANA分配给Xen的MAC⼚商前缀.     》bridge: 指定此⽹卡要桥接到Dom0上的那个桥设备上.     》model: 指定模拟⽹卡的芯⽚类型:[rtl8139 |e1000]

     》vifname:指定在Dom0中显⽰的接⼝名, 注: 在DomU中显⽰还是eth0...

     》script: DomU在创建⽹络接⼝时,预先执⾏的脚本.注: 此脚本的路径也是Dom0上的路径.     》ip:指定要注⼊DomU中的IP地址。     》rate: 指定⽹卡的设备速率.      如: rate=10Mb/s

        rate=1MB/s@20ms #20毫秒内只能传输1M/0.02s=20000字节/20ms

  图形窗⼝的启⽤:

   可直接修改DomU的启动配置⽂件,并在其中添加:

    (1) vfb=['sdl=1'] #这是直接在本地启动⼀个VNC窗⼝来输出DomU的图形桌⾯,且只能本地连接.    (2)Dom0上启动⼀个VNC进程,并监听在5900端⼝上,可通过密码连接.

     vfb=['vnc=1,vnclisten=0.0.0.0,vncpasswd=123456,vncunused=1,vncdisplay=:1']

     #注: vncunused: 为⾮0值,则表⽰vncserver监听在⼤于5900的第⼀个没被占⽤的端⼝上.

     # vncdisplay: VNC显⽰号,默认为当前域的ID,当前域的VNC服务器将监听在5900+此显⽰号的端⼝上.     vfb=[ 'sdl=1,xauthority=/home/bozo/.Xauthority,display=:1' ]      #注:xauthority:表⽰认证密码⽂件。      # display:

3. 使⽤libvirt实现Xen虚拟机的图形管理

  #需要安装的包

  yum install libvirt libvirt-deamon-xen virt-manager python-virtinst libvirt-client

    注: virt-manager: 是图形管理VM的接⼝界⾯,类似与VMware,可创建、启动、停⽌等      python-virtinst: 此⼯具提供了virt-install命令⾏管理VM的接⼝.      libvirt-client: 提供了⼀个virsh命令来管理VM。

  service libvirtd start    #要使⽤libvirt⼯具集,此服务必须⾸先启动.

  virsh dumpxml busybox #将busybox的信息输出为virsh的可⽤的xml配置⽂件,可修改此⽂件做模板来创建新VM实例.

4. PV DomU的根⽂件系统可以以多种不同的⽅式安置: (1) 虚拟磁盘映像⽂件  (a)⽅便制作成通⽤模板

    当⽤qemu-img创建好⼀个虚拟磁盘映像⽂件,并向其中安装好OS后,可以使⽤cloud-init这种⼯具对其进⾏修改,去除其中OS的唯⼀性的数据信息(如:MAC地址等),需要注意的是,磁盘映像⽂件实际上是由标准格式的并且在其上创建完⽂件系统后,就可以通过FS的API接⼝在不挂载的情况下对其中的⽂件进⾏修改.  

  (b)⽅便实现实时迁移

    1. 将模板映像⽂件放置于FTP/NFS/Samba等共享存储上,且有多台Xen Hypervisor:     场景⼀: 需要快速创建⼀台VM.

      假如当前业务中MySQL的从库读压⼒过⼤,需要扩容,此时就可以直接通过⾃⾏开发的脚本⼯具来判断     当前那个Xen Hypervisor更空闲,然后,直接下载从共享存储上下载⼀个模板磁盘映像,直接就可以启动起来.     并且这是配置好的从库模板,启动后它可以直接连接到主库等等.     

     场景⼆: 快速迁移

      假如当前某台Xen Hypervisor的CPU、Memory或其他资源突然升⾼,此时,可直接将该Xen Hypervisor上     某些VM的内存数据导出到共享存储上,然后直接在另⼀台⽐较宽裕的Xen Hypervisor上,下载模板映像⽂

     件并直接将该共享存储上导出的内存数据与模板映像⽂件关联,就可恢复到此Xen Hypervisor上实现快速迁移。    

    2.分布式⽂件系统上存储磁盘映像⽂件,且有多台Xen Hypervisor:     场景⼀: 故障快速恢复

      假如当前Xen Hypervisor上运⾏了多台VM,但Xen Hypervisor所在物理机突然故障,这时,我们完全可以直接     将分布式存储系统上的磁盘映像⽂件直接让正常的Xen Hypervisor接管,已实现快速迁移.

     场景⼆:快速迁移

      如上⾯场景⼆类似,但此处我们⽆需在下模板磁盘映像⽂件,直接dump出运⾏中VM的内存数据到共享存储上     就可以直接在另⼀台Xen Hypervisor上启动起来。

  (2) 使⽤Dom0上空闲的物理磁盘分区  (3) 使⽤Dom0上空闲的逻辑卷

  (4) 使⽤iSCSI设备提供的块级别⽹络⽂件系统 或 分布式⽂件系统。  (5) ⽹络⽂件系统,如: NFS, Samba

因篇幅问题不能全部显示,请点此查看更多更全内容

Top