Xenの原則

  内容:
1.はじめにXenの
1.1 Xenの一般的な構造
のために1.2のXen VM用語
CPUとメモリのプロセスの1.3 Xenの仮想化
1.4 Xenの仮想化プロセスIOデバイス
のXen 1.5のLinuxカーネルサポート
小史1.6のXenリリース
1.7 Xenのツールは、スタック
1.8のxenstore
で4ネットワークモデル1.9仮想化
のセキュリティ問題1.10のXenのはじめに
2. Xenのインストールと設定ファイルの説明
XenはCentOS6.6の上で動作2.1.1を
Xenの2.1.2の設定
2.2 0.1 DomUのプロファイルを開始Xenのコメント
VMのXen PVモードを作成する方法2.2.1.1 [注:VM HVMモードはテストセクションの作成を参照してください]
3. libvirtのXen仮想マシンのグラフィカルな管理を実装
4. PVのdomUのルート・ファイルをこのシステムは、多くの異なる方法で配置することができます

ヒント:

  Xenのが唯一のその原則を学ぶことが推奨され、特定の使用を学ぶために時間を取ることが推奨されていません。
       あなたは、参照の特定の使用をお知りになりたい場合は:https://pan.baidu.com/s/1A77aJdoBK7CPIF7FVngudQは、
  このファイルを表示Cherrytree文書エディタビューを使用する必要があります


はじめに1.のXen
  Xenは仮想化ソフトウェアのハードウェア層の上に直接実行することができ、オープンソースであり、それはまた、伝統的な仮想化技術で優れた性能を持つことができるが、それはケンブリッジ大学のオープンソースの仮想開発され、非常に非友好的なX86アーキテクチャですソフトウェアは、その本来の意図は、単一の物理マシン上の仮想マシンの数百を実行することです。
  Xenのデザインは非常にコンパクトで、Xenはハイパーバイザ層の簡易版が実際にあるので、それは、仮想化タイプ-Iに属し、タイプIIタイプに関してホストベースの仮想化(例:VMwareのWorkstattion)、その性能は比較的良好になります。Xenの唯一のCPUとメモリが引き継いで、その上で実行されている最初の仮想マシンによる他のIOのハードウェアドライバは、このようなサポートを提供する一方で。その理由は次のとおりです。XenはXenは、特別なデザインを使用していますので、IOデバイス、およびハードウェアの開発者は、Xenのドライブのために特別に提供することはありませんように多くの開発者を駆動することはできません。

  デフォルトのXenは、独自のXenを確保するために、それらは仮想化ソフトウェアのハードウェア層の上に直接実行されていると思うし、直接CPUとメモリを駆動することができ、CPUとメモリはオペレーティングシステムを実行したいすべてに注意を払うために必要とされる支援を指示できるようにする必要がありますが、小さな、それは仮想マシンの管理インターフェイスを提供していないので、それは特権VMとして、オープンソースのLinuxを選択し、この修正カーネルをサポートしなければならない特権仮想マシンを実行し、VMへのユニークなアプローチをとりますまた、Linuxの採用が都合がよいと思われる、最も適切には、仮想マシン管理インタフェースを開発する方法をサポートし、Xenのハイパーバイザ層は、CPUとメモリリソースの割り当てを完了し、VMを作成、削除、停止、VM管理インタフェースを起動するために、直接対話します。通常、この特権仮想マシンは、それのような多くのIOのハードウェア・デバイス、サポートしているので、より多くの人気のLinuxディストリビューションを採用する:ネットワークカード、ディスク、グラフィックカード、その上のサウンドカードとを、これまでのところ、NetBSDの、GNU / Linuxの、FreeBSDとプラン9、OpenSolarisの他のシステムがでDomUの中で準仮想化Xenの実行をサポートしてきた。現在、すでにXenののx86、x86_64版とARMのプラットフォームをサポートし、IA64にあり、PPC 移植。他のプラットフォームに移植され、将来的に達成される可能性があり、技術的に可能です。

  複数の物理ホスト間のノンストップライブマイグレーションの場合、Xen仮想マシンのサポート。動作時には、仮想マシンのメモリは動作を停止していない場合には、繰り返しターゲットマシンにコピーされます。仮想マシンのあなたが最終目的地を開始する前に、シームレスな移行の印象を与え、最終的に同期を実行するには60から300ミリ秒の非常に短い休止時間があるでしょう。同様の技術は、ディスクに実行中の仮想マシンを一時停止し、別のものに切り替えるために使用され、最初の仮想マシンは、後で復元することができます。

1.1一般的な構造のXen:
 3つの分割Xenの成分:
  (1)ハイパーバイザハードウェア層上のXen層中:とメモリCPUは、これらの基盤となるハードウェア直接駆動する責任があり、
   他のすべての仮想マシンのCPU、メモリ、インタラプト(割り込み)を提供経営陣は、また、コールハイパーコールを提供します。
  (2)第一の仮想マシン:それは全体の仮想化環境へのアクセス権を持っており、ユーザーレベルの仮想マシンを作成する責任があり、この特権でXenの仮想マシンの仮想マシンと呼ばれ
   、そこにI / Oデバイスのリソースを割り当てます。カーネルは、特別のVMは、それが直接IOは、他のユーザVMによってアクセス可能なハードウェアにアクセスすることができる修飾されています。
  (3)多数の他の仮想マシンの仮想のユーザレベルの仮想マシンである:それらは実際にユーザの仮想マシンに配信され、また、VMの関連単離であります。
   注:Xenの仮想化サポート3は、当然のことながら、特に仮想CPUが準仮想化または完全な場所仮想。
  準仮想化(準仮想化)<1>:この仮想化では、CPUが必要とされませんHVMサポート機能、
    しかし、GuestOSのカーネルは、それ以外の場合はDomUの中で実行さGuestOSをサポートしていません。変更することを許可しなければなりません。
    あなたがそれそう特権命令は、ハードウェアを操作すること、GuestOSは、仮想化環境で実行しているときに彼らは知っている必要があるためです、
    これは、直接、いわゆるハードウェア動作を完了するためのXenハイパーバイザへの要求を開始するハイパーコールを開始します。
    PVの技術では、OSのdomUであっ上で実行することができます:
      Linuxの、NetBSDの、FreeBSDでは、OpenSolarisの

  <2> HVM(完全にハードウェアベースの仮想化):仮想IntelのVT-xまたはAMD AMDの手段によって、この必要性を-v HVM技術
    とIOのハードウェアシミュレーションQEMUは、カーネルを変更しませんGuestOSをサポートするために、それが直接のdomUをサポートすることができます。
    Xenのハイパーバイザーは、CPUリング-1で実行されているので、これは、リング0 CPU上で、GuestOS実行中のカーネルGuestOS
    直接キャプチャリング0 CPUで通話を開始するために、すべての偽の特権命令をし、リングに引き渡さ-1ハイパーバイザーXenの上、最終的にはXenによるその代理が行わ上で
    開始された場合、それが唯一のXen GuestOSの電源を遮断し、他のGuestOSには影響しませんDomUのshutdownコマンドそう。
    HVMでは技術は、OSのdomUであっ上で実行することができます。X86アーキテクチャサポートされているすべてのOS

  <3>をHVM ON PV:I / Oデバイスは、実行中の準仮想化CPUモードHVMで実行されているが
    、本明細書HVMの実施形態を解決する方法でありますIOデバイスは、完全にシミュレートされなければならない悪いパフォーマンスをもたらし;にCPUによって
    完全仮想化、I / Oデバイスは、対応するIOドライバの実装をインストールするために使用されるGuestOSの効率を改善するために、IOの方法を準仮想化。
    HVM技術上のPVではOSのdomUであっ上で実行することができます
    限り、OSは、インターフェイスタイプPV IOデバイスを可能に駆動することができるよう。
VM 1.2 Xenの用語:
  XenはVMドメインと呼ばれる。
  第VM特権、一般のXenにいう:domain0のは、Dom0が、エイリアス:.特権ドメインと呼ばれる
  他のVM後続のユーザレベル、のXenにいいます。非特権ドメイン:ドメイン1、ドメイン2は、....、彼らは総称してのdomU、別名を持っています。

    

  1.3 Xenの仮想化プロセスのCPUとメモリ:
  XenのVM CPUの仮想化を提供するために、また、Xenハイパーバイザ層内のスレッドを開始するために使用され、そしてDomUのを通して、当然、物理コアにこれらのスレッドをマッピング構成ファイル内のCPUはCPUスレッド特定の物理コアにアナログ結合を指定することができ、仮想メモリページはメモリ、連続または不連続のメモリページの複数のマッピングされた物理メモリにマッピングされますVM、VM、完全な連続したメモリ空間であることを表示されるようにします。

1.4 Xenの仮想化プロセスIOデバイス:
  ユーザーがVM(DomUの)起動時に、VMのために必要なCPUとメモリは、Xenのハイパーバイザーを提供してきましたそれはIOデバイスの使用を必要とする場合、VMが特権に要求を開始し、特権VM(Dom0の)は、シミュレートハードウェア・デバイス・ユーザーVM、およびユーザ空間で実行するVM特権のスレッドを作成し、ときに、ユーザーVM IOハードウェアへ通話を開始するとき、アナログデバイスに対応するVMの権限は要求を受信し、その操作を完了するのにかかった特権VMカーネルへのVMの特権IOのハードウェアの動作に変換します。ここでは、これらの仮想IOのハードウェアに注意を払う必要がありQEMU、Xenの自身でエミュレートする必要があり、適切なアナログ機能を提供していません。(注:特権VMのCPUとメモリは、Xenハイパーバイザが提供さもある。)

  QEMUアナログIOデバイス(完全仮想化モード):ユーザーVMが特権VMにディスクを要求した場合、特権VMは、QEMU、それによって、パーティション、ファイルなどすることができディスクデバイスとしてモデル化、もちろん、このシミュレートされたディスクコントローラ、ユーザーのVMにマップ、イメージファイルを作成するには、特権VM、書類を取って、そのファイルのためのQEMU介してディスクコントローラチップをシミュレートチップは、いくつかのサポートVMカーネルの最も一般的なユーザーのいずれかでなければなりませんが、注意を払う必要があります:シミュレートされたディスクは、実際の物理ディスクと異なる場合があり、可能な限り互換性があるため。次のようにこのように、ディスクへのユーザーVM書き込みデータがある場合:
  ユーザーVM-APP --->ユーザーVM-カーネルドライバがデータを書き込むための仮想ディスク用に準備することができます呼び出します(例:ディスク/データ・コーディング上のセクタ位置などにデータを書き込む)--->
  VM-カーネルへのユーザー特権VMディスクシミュレーションプロセスに符号化された情報--->
  特権VM-カーネル--->復元するために送られた後、特権VMディスクシミュレーションプロセスID情報と
  データのための特権のコールVM-カーネル実際の物理ディスクドライブを--->最終スケジューリングディスクドライブディスクの書き込みが完了する前に準備を書きます。
抜粋サプリメント:( http://my.oschina.net/davehe/blog/94039?fromerr=mOuCyx6W
Xenは、ドメインへの抽象化レイヤを提供これは管理と仮想ハードウェアのAPIが含まれています。ドメイン0は、内部実デバイスドライバ(ネイティブデバイスドライバ)、物理ハードウェアへの直接アクセスを含有する、管理APIは、Xenが提供相互作用すること、および管理ツールのユーザ・モード:管理する(例えば、XM / xendを、XL、等) Xen仮想マシン環境。

  

    準仮想化IOデバイス:それは彼らが仮想化環境で実行されている知っている、これはそれだけのフロントエンド・ディスク・ドライブXenのシミュレーション(ディスクフロントエンド)で、実際のディスクのディスクではないことを知って、それを書くアナログのdomUとの最大の違いです物理によって直接呼び出すだけでなく、直接、特権VM-カーネルに再び特権VMディスクのバックエンドデータの端がDomUのから受信したときに、データ符号化のためのディスク・ドライブを呼び出すことなく、データ、ディスクフロントエンドに直接データ、、、ディスクドライブは、ディスクに書き込まれた生データとを処理します。
抜粋が追加さ:
  Xen2.0を分離装置駆動方式の導入後。モードのイネーブルデバイスドメイン(DOMO)後端(バックエンド)を確立するために、ユーザードメイン内の各デバイスのフロントエンド(フロントエンド)を設定します。すべてのユーザードメインのオペレーティングシステムの通常の装置をイネーブルにIO要求記述子(IOのdescriprorリング)とデバイス・チャネル(デバイスチャネル)を介してヘッドエンドに送信要求として使用され、フロントエンドは、これらの要求を送信し、ユーザードメインの識別情報であるようにバックエンド機器のドメイン。このようなシステムは、別々に情報転送とデータ転送を制御します。
  PVブロック用ドライバの準仮想化マシン(ドメインUのPV)は、データを書き込み、ドメイン0のXenハイパーバイザによってローカルディスクに専用のローカルメモリと共有データを書き込むには、ローカルディスクへの要求を受信します。イベントチャネルは、ドメイン0と準仮想化ドメインU(私は理解して:デバイスチャネルは、イベント・チャネルを含む)の間に存在する、チャネル間でそれらはのXenハイパーバイザー中断非同期存在によって通信することを可能にします。ドメイン0のXenハイパーバイザシステムからの1を受け取ることになりますが中断し、共有メモリからコンテンツにアクセスし、自分自身と準仮想化クライアントのデータ・ブロックのために読み取るために、ローカルシステムでブロックバックエンドドライバドメイン0をトリガーその後、後には、ローカルディスク上の指定した場所に書き込まれます。

  

     但无论采用模拟或半虚拟化最终都是对物理磁盘的操作,假如当前只有一个物理磁盘,众多用户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版的(http://mirrors.skyshe.cn/centos/6.7/virt/x86_64/xen-46/).

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中设备的机制,并通过多种方式对其进行访问。
  摘录补充(http://blog.chinaunix.net/uid-26299858-id-3134495.html):
  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包镜像站: http://mirrors.aliyun.com/centos/6.7/xen4/x86_64/
    (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来使用了。
  详细参数查看:
    http://xenbits.xen.org/docs/unstable/misc/xen-command-line.html

  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>, [<format>,[<vdev>,[<access>]]]]
      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", "/iso/CentOS6.7.iso,,hdc,devtype=cdrom"]
      # 使用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

おすすめ

転載: www.cnblogs.com/wn1m/p/11281702.html