がらくたネット


XEN(ゼン)

XEN(ゼン)

Xenについてお勉強中…

環境:CentOS 5.x

物理メモリ4GB搭載機でお勉強中だが…メモリ表示に疑問あり

kernel /proc/meminfo
2.6.18-128.7.1.el5PAE 4153060 kB
2.6.18-128.7.1.el5xen 3756032 kB
2.6.18-128.7.1.el5xen(x86_64) 3714048 kB

この差、397028 kBはなんなのだろうか?ざっくり384MB分が消えてるように見える。Dom0で利用されているのかと思ってみるがどうなんだろうか?

CentOS5のxenカーネルはPAEをサポートしているし、xenのdmesgでも認識されている

# xm dmesg
...
(XEN) System RAM: 4094MB (4192700kB)
...
(XEN) PAE enabled, limit: 16 GB
...
(XEN) elf_xen_parse_note: PAE_MODE = "yes"
...
(XEN)  Xen  kernel: 32-bit, PAE, lsb
(XEN)  Dom0 kernel: 32-bit, PAE, lsb, paddr 0xc0400000 -> 0xc07d7000

x86_64環境でも試してみたけども同様の状態です。こんなものなんだろうか?

Xen自体のインストール

  1. CentOS5.2を普通にインストール
  2. yum updateで最新にする
  3. rebootして適用
  4. yum groupinstall Virtualization
  5. yum install kernel-xen-devel
  6. vi /boot/grub.confでXen Kernelが起動するように修正
  7. rebootして適用

Xenの内容

  • ドメイン0 ホストOSに該当。Xenの制御ホスト
  • ドメインU ゲストOSに該当

xenインストール後
loとeth0だけだったものがlo,eth0,peth0,vif0.0,virbr0,xenbr0となる
virbr0には192.168.122.1が付与される
xenbr0のport1にvif0.0、port2にpeth0がbindingされているみたい

[root@ ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.feffffffffff       no              peth0
                                                        vif0.0
GuestOSのInterfaceもxenbr0にBridgeされるようだ

準仮想化の場合、vifX.0が増えていく
完全仮想化の場合、tapXが増えてvifX.0が増えていく

Xenのネットワークは3種類

  • ブリッジモード
  • ルーティングモード
  • NATモード

規定ではブリッジモードとなっている
xenbr0はDom0起動時に/etc/xen/scripts/network-bridgeで定義
xend起動時に呼び出される
Dom0のVifX.YはXがDomUのID番号、YがDomU内のインターフェース通し番号となる
DomUが停止されるとDom0側のVifX.Yも停止し一覧から消える
Dom0のVif0.0はDom0のインターフェースとなる

不要なブリッジインターフェースの削除

libvirtをインストールすると自動的にブリッジインターフェースvirbr0が作成される
このインターフェースには192.168.122.1が割り当てられDHCPとDNS Proxyが稼動している
さらにiptableにルールが追加される
邪魔だ…で削除方法

# virsh net-autostart default --disable
# reboot
これできれいさっぱり8-)

Xenのファイル、コマンド

ファイル説明
/etc/xenxenの設定ファイル群
/etc/xen/<GuestOS名>GuestOSの設定ファイル
/var/lib/xen/imagesxenのイメージファイル格納ディレクトリ
/etc/xen/autoこの下にある設定ファイル分をxendomainsサービスが自動的に起動する
コマンド説明
xm listxenで認識されているDomainリストを表示
xm create <仮想ホスト名>/etc/xen以下に保存されている仮想ホストを起動
xm shutdown <仮想ホスト名>仮想ホストを停止、VifX.Yもなくなる
xm console <仮想ホスト名>仮想ホストのコンソールに接続
virt-installGuestOS作成コマンド
virt-viewer <GuestOS名>GuestOSのコンソールにVNCクライアントを使って接続
virt-manager仮想マシンマネージャー、GUIツール
virt-clone仮想マシンのクローン作成
virt-imageXMLファイルから仮想マシンを作成

完全仮想化のGuestOSを作成するにはGUIで接続しておく必要あり
つまりVNCにてHostOSのGUIコンソールに接続してから作成する必要がある
GuestOSの箱を作成した後、virt-viewer経由でインストールするから

GuestOSのインストール

GuestOSのインストールはコンソールからvirt-installを利用するのだが
インストールソースをhttpで取得するのでは非常に遅い
インストールDVDがあればそれを利用するのが楽かもです
ということで下準備…

下準備

  1. DVDからisoを作成
    # mkdir /usr/local/src/iso
    # cd /usr/local/src/iso
    # dd if=/dev/cdrom of=centos5.2.iso
  2. isoファイルをマウント
    # mkdir /mnt/iso
    # mount -t iso9660 -o loop /usr/local/src/centos.5.2.iso /mnt/iso
  3. Apacheをインストール
    # yum install httpd-devel
    # vi /etc/httpd/conf.d/iso.conf
    Alias /iso "/mnt/iso"
  4. Apacheを起動
    # service httpd start

GuestOSインストール with LocalApache

ローカルApacheの/iso/を利用してインストールしてみる

  1. virt-installでインストール開始
    # cd
    # virt-install --nographic
    完全仮想化のゲストがいいですか (yes または no)? これは修正不要のオペレーティングシステムの実行を可能にします。 no
     仮想マシンの名前は何ですか? <ホスト名>
     どれだけの RAM を割り当てますか (メガバイト単位で)? 1000
     What would you like to use as the disk (file path)? /var/lib/xen/images/<ホスト名>.img
     どの位の大きさのディスク (/var/lib/xen/images/vm011.img) にしたいですか(ギガバイト単位で)? 50
     インストール場所は何ですか? http://<Dom0のIPアドレス>/iso
    
    ...後はテキストコンソールでのCentOS5.2インストールに従う
  2. Dom0に戻るのはctrl+]を押す
  3. インストール完了後、Apacheを停止
    # service httpd stop

自動起動設定

GuestOSをxend起動時に自動的に起動させるにはDomU用の設定ファイルのシンボリックリンクを 自動起動ディレクトリに作成する

# cd /etc/xen
# ln -s /etc/xen/<仮想マシン名> /etc/xen/auto/<仮想マシン名>