![]() |
LINUX |
XENの設定
・xen-4.1.2-rc1-preの設定と仮想マシンの起動
・完全仮想化ではなく、準仮想化のマシン構成です
・memoryの割り当てに注意、Xen本体のメモリ使用量を考慮する
・コンソール画面 (CUI) で全ての設定をします
・xen-4.1からxmツールに似たxlツールができました
・xmツールとxlツールの共通部分がxencommonsにまとめられていて
・xmツールを使う場合は、xencommonsとxendを起動する必要があります
・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します
・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます
関連サイト| :xenのマニュアル (http://wiki.xensource.com/xenwiki/XenDocs) |
参照ファイル:パッケージの追加
:最初の設定 (Xen)
:glibcの設定
:Xenのビルド
:iptablesのインストール
インストール環境| :OS | CentOS 5.6 |
| :Xen | 4.1.2-rc1-pre |
| :selinux | disabled |
| :インストール先 | |
| :作業 | /etc |
| :言語 | LANG=en_US.UTF-8 |
| :ユーザー | rootで実行 |
・メンテナンスは一般ユーザから行います
ドメイン0 (制御OS) の設定
xendomainsの修正・デフォルト設定では、起動スクリプトは restoreモードで起動します
・起動に失敗した場合、saveファイル、lockファイルを削除します
・終了時にsaveしない場合、下記オプションを修正します
:/etc/sysconfig/xendomains
・省略
#XENDOMAINS_SAVE=/var/lib/xen/save XENDOMAINS_SAVE=""
・省略
#XENDOMAINS_RESTORE=true XENDOMAINS_RESTORE=false
・省略
xend-config.sxpの修正・http接続を無効にする
・ドメイン0に割り当てる最小メモリ量の設定 (grub.confに合わせる)
・keymapをjaにする (有効?)
:/etc/xen/xend-config.sxp
・省略
(xend-http-server no)
・省略
(network-script network-bridge) (vif-script vif-bridge)
(dom0-min-mem 128) (enable-dom0-ballooning no)
・省略
(keymap 'ja')
・省略
xl.confの修正・kernelでdom0のメモリを割り当てている場合
:/etc/xen/xl.conf
・省略
autoballoon=0
・省略
Xen-guestのための設定ファイルの作製・複数のguestの場合はxmexample2を使います
[root@earth:~]
# cp /etc/xen/xmexample2 /etc/xen/auto/jupiter
# cp /etc/xen/xmexample2 /etc/xen/auto/saturn
:/etc/xen/auto/jupiter
・最初に起動するものをvmid=1に設定しています
・ドメイン0の起動後に"# xm info"でfreeのメモリ容量を確認
・vifの仮想macアドレスは適当に決める (ただし スタイルを間違えないこと)
・mac=00:16:3eの部分はxenの正式に取得したアドレスなのでそのまま使う
・xlツールで起動する場合、diskの/dev/XEN/Wan01のように/devが必要です
・xmツールでも問題ないので、/devを付けたまま使います
・自分の環境に合わせて読みかえて下さい
・紫色部分 "xm console IDナンバー"で応答がない場合に設定
vmid=1
def vmid_check(var, val):
val = int(val)
if val <= 0:
raise ValueError
return val
xm_vars.var('vmid',
use="Virtual machine id. Integer greater than 0.",
check=vmid_check)
xm_vars.check()
kernel = "/boot/vmlinuz-2.6.18.8-xen" ramdisk = "/boot/initrd-2.6.18.8-xen.img" memory = 620 name = "jupiter" vcpus = 1
vif = [ 'mac=00:16:3e:00:00:21' ]
disk = [ 'phy:/dev/XEN/Wan01,hda1,w','phy:/dev/XEN/Wan02,hda2,w','phy:/dev/XEN/Wan03,hda3,w' ]
ip="192.168.0.21" netmask="255.255.255.0" gateway="192.168.0.1" hostname= "jupiter.528p.com"
root = "/dev/hda1 ro"
extra = "xencons=tty console=tty1"
:/etc/xen/auto/saturn
vmid=2
def vmid_check(var, val):
val = int(val)
if val <= 0:
raise ValueError
return val
xm_vars.var('vmid',
use="Virtual machine id. Integer greater than 0.",
check=vmid_check)
xm_vars.check()
kernel = "/boot/vmlinuz-2.6.18.8-xen" ramdisk = "/boot/initrd-2.6.18.8-xen.img" memory = 252 name = "saturn" vcpus = 1
vif = [ 'mac=00:16:3e:00:00:22' ]
disk = [ 'phy:/dev/XEN/Lan01,hda1,w','phy:/dev/XEN/Lan02,hda2,w','phy:/dev/XEN/Lan03,hda3,w' ]
ip="192.168.0.22" netmask="255.255.255.0" gateway="192.168.0.1" hostname= "saturn.528p.com"
root = "/dev/hda1 ro"
extra = "xencons=tty console=tty1"
ドメインU (ゲストOS) の設定・xenのモデュ−ルをkernel構築時に (可能なものは) 静的に組み込んでいます
xen用のglibcライブラリを認識させる・glibcの設定を参照
・ゲストOSを単独で起動させて行なうか、ドメインUとして起動後に行う
ドメインU用のモデュールのコピー・ドメインUの / ディレクトリをマウントして操作します
・自分の設定環境に合わせます
[root@earth:~]
# mount /dev/XEN/Wan01 /mnt
# cp -a /lib/modules/2.6.18.8-xen /mnt/lib/modules
# umount /mnt
[root@earth:~]
# mount /dev/XEN/Lan01 /mnt
# cp -a /lib/modules/2.6.18.8-xen /mnt/lib/modules
# umount /mnt
selinuxの無効化・ドメインUの / ディレクトリをマウントして操作します
[root@earth:~]
# mount /dev/XEN/Wan01 /mnt
# vi /mnt/etc/selinux/config
・下記参照
# umount /mnt
[root@earth:~]
# mount /dev/XEN/Lan01 /mnt
# vi /mnt/etc/selinux/config
・下記参照
# umount /mnt
:/mnt/etc/selinux/config
SELINUX=disabled
fstabの修正・ドメインUの / ディレクトリをマウントして操作します
・単独で起動する場合に必要なfstabを別名で保存しておきます
・単独で起動する場合はdomain0からmountしてファイルを置き換えます
[root@earth:~]
# mount /dev/XEN/Wan01 /mnt
# cp /mnt/etc/fstab /mnt/etc/fstab-Wan01
# vi /mnt/etc/fstab
・下記参照(public)
# umount /mnt
[root@earth:~]
# mount /dev/XEN/Lan01 /mnt
# cp /mnt/etc/fstab /mnt/etc/fstab-Lan01
# vi /mnt/etc/fstab
・下記参照(private)
# umount /mnt
:/mnt/etc/fstab
・ドメインU (public)
/dev/hda1 / ext3 defaults 1 1 /dev/hda3 /home ext3 defaults 1 2 #LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /dev/hda2 swap swap defaults 0 0 #/dev/XEN/Top02 swap swap defaults 0 0
・ドメインU (private)
/dev/hda1 / ext3 defaults 1 1 /dev/hda3 /home ext3 defaults 1 2 #LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /dev/hda2 swap swap defaults 0 0 #/dev/XEN/Top02 swap swap defaults 0 0 #/dev/XEN/Wan02 swap swap defaults 0 0
ifcfg-eth0の修正・ドメインUの / ディレクトリをマウントして操作します
・macアドレス(HWADDR)の指定を無効にします
・単独で起動する場合もそのまま使用します
[root@earth:~]
# mount /dev/XEN/Wan01 /mnt
# vi /mnt/etc/sysconfig/network-scripts/ifcfg-eth0
・下記参照(public)
# umount /mnt
[root@earth:~]
# mount /dev/XEN/Lan01 /mnt
# vi /mnt/etc/sysconfig/network-scripts/ifcfg-eth0
・下記参照(private)
# umount /mnt
:/mnt/etc/sysconfig/network-scripts/ifcfg-eth0
・ドメインU (public)
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
#HWADDR=XX:XX:XX:XX:XX:XX
IPADDR=192.168.0.21
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
・ドメインU (private)
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
#HWADDR=YY:YY:YY:YY:YY:YY
IPADDR=192.168.0.22
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
haltスクリプトの修正・ドメインUの / ディレクトリをマウントして操作します
・ドメインUのクロックはドメイン0が管理をしています
・shutdownスクリプトでCMOSへの書込みを止めます
[root@earth:~]
# mount /dev/XEN/Wan01 /mnt
# vi /mnt/etc/rc.d/init.d/halt
・下記参照
# umount /mnt
[root@earth:~]
# mount /dev/XEN/Lan01 /mnt
# vi /mnt/etc/rc.d/init.d/halt
・下記参照
# umount /mnt
:/mnt/etc/rc.d/init.d/halt
・省略
#[ -x /sbin/hwclock ] && action $"Syncing \ #hardware clock to system time" /sbin/hwclock $CLOCKFLAGS
・省略
Xenの起動と確認・xlツールでvif-bridgeがうまく読み込めないので、しばらくはxmツールを使います
・iptablesのインストール・設定の後に起動します
・iptablesの設定をしない場合は、iptablesを止めておきます
ドメイン0 (制御OS) の起動・xen用に設定されたgrub.confで "linux-2.6.18.8-xen" を起動します
xend (制御デーモン) の起動・xencommonsの起動でdomain-0が起動しますが、xendも起動します(xmを使う)
・自動起動スクリプトで起動します
[root@earth:~]
# service xencommons start
# service xend start
・起動しているdomainのリストを表示します
# xm list
・起動しているdomainの情報を表示します
・free memoryの情報を得ます
# xm info
・xmのコマンドオプションは?
# xm help
・デーモンの停止
・ドメインUの停止には時間が掛かります
・xm list で確認してから、xendを停止します
# xm list # service xend stop
ドメインU (ゲストOS) の起動・xmツールで起動します
・起動されれば jupiterへのログイン画面が表示されます
・ドメイン0の管理画面に戻る場合は Ctrl+]キーを押します
[root@earth:~]
# xm create -c /etc/xen/auto/jupiter
・Ctrl+]キーを押してドメイン0の管理画面に戻る
・ドメインのlistを表示して確認
# xm list
・ドメインUへのコンソールログイン (ゲストドメイン名)
# xm console jupiter
・または (ゲストドメインのID)
# xm console 1
・ドメインUの停止 (ゲストドメイン名)
# xm shutdown jupiter
・または (ゲストドメインのID)
# xm shutdown 1
・ドメインUの強制終了 (ゲストドメインのID)
# xm destory 1
・自動起動スクリプトからの起動
・/etc/xen/autoに存在するファイルを読み込んで起動
[root@earth:~]
# service xendomains start
・ドメインのlistを表示して確認
# xm list
・自動起動スクリプトからの停止
・xendomainsを修正しています(下記参照)
・xm list で確認します
# service xendomains stop # xm list
xenの自動起動を設定します・xen-4.1.* からxen-watchdog,xencommons起動スクリプトが追加されています
・このサーバの環境では、xen-watchdogは使用しません
[root@earth:~]
# chkconfig --add xencommons
# chkconfig --add xend
# chkconfig --add xendomains
xendomainsスクリプトの修正・stopルーティーンがおかしいのでxen-3.4.2と比較して、修正しています
・ー部分 を +部分 にエディタで修正します(ー+は書き込まない)
・(xendを起動) xmツールを使用した場合のみ有効です
:/etc/rc.d/init.d/xendomains
--- xendomains 2011-03-13 08:49:57.000000000 +0900 +++ xendomains-new 2011-03-13 10:58:49.000000000 +0900 @@ -204,11 +204,11 @@ rdnames() parseln() { - if [[ "$1" =~ '(domain' ]]; then + if [[ "$1" =~ '\(domain' ]]; then name=;id= - else if [[ "$1" =~ '(name' ]]; then + else if [[ "$1" =~ '\(name' ]]; then name=$(echo $1 | sed -e 's/^.*(name \(.*\))$/\1/') - else if [[ "$1" =~ '(domid' ]]; then + else if [[ "$1" =~ '\(domid' ]]; then id=$(echo $1 | sed -e 's/^.*(domid \(.*\))$/\1/') fi; fi; fi
xlツールを使いたい場合・bridgeモードの場合network-bridgeスクリプトを起動しておく
・起動
# service xencommons start # /etc/xen/scripts/network-bridge start # xl create -c /etc/xen/auto/jupiter
・終了
# xl shutdown jupiter # /etc/xen/scripts/network-bridge stop # service xencommons stop
![]() |
Copyright(c) 528p.com All Rights Reserved. |

