My Reserches / Xen3.1.0


My Reserches

INDEX

実行環境

  • Debian GNU/Linux 4.0 (etch)
    • マシン1:Linux 2.6.18-5-486 i686 GNU/Linux
    • マシン2:Linux 2.6.18-5-686 i686 GNU/Linux

必要なパッケージ

ドキュメントに書いてあったパッケージ

バイナリからインストールする場合

  • iprouteとbridge-utilsの2つでだいたいインストールできる

ソースからインストールする場合

パッケージ名そのとき追加でインストールされたパッケージ
iprouteiproute, libatm1
bridge-utils
udev
gccloginutils, cpp, cpp-4.1, gcc, gcc-4.1, libssp0
make
zlib1g-devlibc6-dev, linux-kernel-headers, zlib1g-dev
python
python-devpython-dev, python2.4-dev
(python-twsited)libgdk-pixbuf2 libglade0 libglib1.2 libgtk1.2 libgtk1.2-common libxi6 libxml1 python-crypto python-glade-1.2 python-gtk-1.2 python-twisted-bin python-twisted-conch python-twisted-core python-twisted-lore python-twisted-mail python-twisted-names python-twisted-news python-twisted-runner python-twisted-web python-twisted-words python-zopeinterface
bzip2
(libcurl3)
(libcurl3-dev)
libssl-dev
libx11-devlibx11-6, libx11-data, libx11-dev, libxau-dev, libxau6, libxdmcp-dev, libxdmcp6, libxext-dev, libxext6, x11-common, x11proto-core-dev, x11proto-input-dev, x11proto-kb-dev, x11proto-xext-dev, xtrans-dev
gettext
libncurses-dev
latex-make
ptex-binfontconfig-config, libexpat1, libfontconfig1, libfreetype6, libjpeg62, libkpathsea4, libpoppler0c2, libt1-5, libxaw7, libxmu6, ptex-base, ptex-bin, tetex-base, tetex-bin, tetex-extra, ttf-dejavu
graphviz-devgraphviz, graphviz-dev, libltdl3, libltdl3-dev, libperl5.8, tcl8.4, tk8.4

ドキュメントには書いてないけど、(たぶん)必要なパッケージ

  • デフォルトでインストールされているらしいが...一応
    パッケージ名そのとき追加でインストールされたパッケージ
    initramfs-tools

インストール

準備

sudoersの編集

  • /etc/sudoersの設定(以下の行を追加)
  • やるとsudoで色々できる
    <アカウント名>   ALL=(ALL) ALL

パッケージの準備

# sudo apt-get install iproute (..略..) graphviz-dev initramfs-tools

ソースのダウンロード

ソースからのインストール

ダンロードしたファイルを解凍

$ tar xvf xen-3.1.0-src.tgz
  • ダーッと文字が出る

コンパイル

$ cd xen-3.1.0-src (解凍したディレクトリに移動)
$ sudo make world
  • 約1時間かかる
  • ここでは、以下のことを行っている
    • Build Xen.
    • Build the control tools, including xend.
    • Download (if necessary) and unpack the Linux 2.6 source code, and patch it for use with Xen.
    • Build a Linux kernel to use in domain 0 and a smaller unprivileged kernel, which can be used for unprivileged virtual machines.

インストール

$ sudo make install
  • 約20分くらいかかる
  • ここでは、xen-3.1.0-src/dist/install 内のカーネルやらモジュールなどを適当な場所にコピーしている

initrdイメージの作成

  • さらに、RAMDiskを作成する(追加しなくてはいけないモジュールがあるらしいので以下のことを行なう(README参照))
    • まず追加するモジュールを記述する
      • /etc/initramfs-tools/modulesを以下のように編集
        # List of modules that you want to include in your initramfs.
        #
        # Syntax:  module_name [args ...]
        #
        # You must run update-initramfs(8) to effect this change.
        #
        # Examples:
        #
        # raid1
        # sd_mod
        aacraid
        sd_mod
        scsi_mod
        #followings are optional modules
        netfs
        nfslock
        fan
        thermal
    • モジュールの依存関係のファイルを作成
      $ sudo depmod 2.6.18-xen
      • バージョン2.6.18などの値は/lib/modules/内のディレクトリ名を見て確認するとよい
    • initrイメージの作成
      $ sudo /usr/sbin/mkinitramfs -o /boot/initrd.img-2.6.18-xen 2.6.18-xen
    • 注意 (Xenと2週間格闘する羽目になったのはコイツのせい涙)
      • READMEなどでは以下のように書いてあるが、今回はDebian(etch)なのでmkinitrdではなくmkinitramfsを使用したほうがよい
        # depmod 2.6.16-xen
        # mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.16-xen.img 2.6.16-xen
    • 参考URL

GRUBの設定

  • /boot/grub/menu.lstに以下を追加
    title          Xen 3.1.0 / Debian GNU/Linux, kernel 2.6.18-xen
    kernel         /boot/xen-3.1.gz
    root           (hd0,0)
    module         /boot/vmlinuz-2.6.18-xen root=/dev/hda1 ro console=tty0
    module         /boot/initrd.img-2.6.18-xen

その他の設定

  • 現在のThread Local Storage(TLS)では、Xenが許可されてない方法でセグメント(cf.ページング)を行うため、パフォーマンスが落ちるらしい。そのため、TLSを無効にする。
    • TLSの無効
      $ sudo mv /lib/tls /lib/tls.disabled
    • 有効にする場合は以下のコマンドを打てばよい
      $ sudo mv /lib/tls.disabled /lib/tls

Domain0(ホストOS)の起動

  • rebootしてGRUB画面でさっきGRUBで設定した以下のタイトルを選択すればよい
    Xen 3.1.0 / Debian GNU/Linux, kernel 2.6.18-xen

DomainUの起動と設定

DomainUの起動

xendの起動

  • Domain0上でXenをサービスを使用するためにはXenのデーモンを動かす必要がある
    $ sudo /usr/sbin/xend start

DomainUの起動

  • 先程作ったDomainU用の設定ファイルからDomainUを起動(生成)
    $ sudo /usr/sbin/xm create /xen/dom0/xconfig

基本操作

操作内容
xm list動作しているOSを確認(domain-idの確認によく使う)
xm console <domain-id><domain-id>のコンソールへ切替
xm reboot <domain-id><domain-id>の再起動
xm shutdown <domain-id><domain-id>のシャットダウン
Ctrl + []]Domain0へコンソールを戻す

DomainUのネットワークの設定(Debian系の場合)

  • /etc/network/interfaceを編集
    • 例1) DHCPを使用
      auto lo eth0
      iface lo inet loopback
      iface eth0 inet dhcp
    • 例2) staticなIPを使用
      auto lo eth0
      iface lo inet loopback
      iface eth0 inet static
         address  192.168.10.151
         netmask  255.255.255.0
         gateway  192.168.10.254
         broadcast  192.168.10.255

備考

  • ネットワークがdom0のそとへいけないとき、dom0を再起動すると繋がる場合がある

ssh

  • authorized_keys
  • root login = yes (/etc/xen/xend-config.sxp)

network

fstab


/etc/hosts

  • 127.0.0.1 localhost

xend-config.sxp

  • bridge = eth1

NFS

  • nfs-common
  • /lib/module/のコピー

Migration

準備

移動先での設定

  • 移動先のマシンがマイグレーションを受け付ける設定をする必要がある
    • /etc/xen/xend-config.sxpを編集(以下の値を設定する)
      (xend-relocation-server yes)
      (xend-relocation-port 8002)
      (xend-relocation-address '')
      (xend-relocation-hosts-allow '')
    • 以下のコマンドでデーモンを再起動
      # xend restart
    • 以上は、セキュリティーの観点ではよろしくないので適宜、設定する

NFSの設定

FAQ