![]() |
LINUX |
XENの設定
*xen-4.0.1-rc1の設定と仮想マシンの起動
*完全仮想化ではなく、準仮想化のマシン構成です
*memoryの割り当てに注意、Xen本体のメモリ使用量を考慮する
*コンソール画面 (CUI) で全ての設定をします
**以降はコメントです
*ソースの取得、削除は省略します
*エディタ、ファイラーの操作は省略します
*ソースを展開したら説明文 (英文) を読みましょう
*Enterキーを省略します
*ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
*設定ファイルで "#" で始まる行はコメントとして解釈されます
関連サイト| :xenのマニュアル (http://wiki.xensource.com/xenwiki/XenDocs) |
参照ファイル:パッケージの追加
:最初の設定 (Xen)
:glibcの設定
:Xenのビルド
:iptablesのインストール
インストール環境| :OS | CentOS 5.5 |
| :Xen | 4.0.1-rc1 |
| :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
*省略
vif-common.sh*vif-bridgeスクリプトで読み込まれます
*xendomainsの起動で新しいvifデバイスの設定が追加されます
:/etc/xen/scripts/vif-common.sh
*省略
frob_iptable()
{
if [ "$command" == "online" ]
then
local c="-I"
else
local c="-D"
fi
iptables "$c" FORWARD -m physdev --physdev-in "$vif" "$@" -j ACCEPT \
2>/dev/null &&
iptables "$c" FORWARD -m state --state RELATED,ESTABLISHED -m physdev \
--physdev-out "$vif" -j ACCEPT 2>/dev/null
if [ "$command" == "online" -a $? -ne 0 ]
then
log err "iptables setup failed. This may affect guest networking."
fi
}
*省略
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)
*省略
(keymap 'ja')
*省略
Xen-guestのための設定ファイルの作製*複数のguestの場合はxmexample2を使います
# 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のメモリ容量を確認
*仮想macアドレスは適当に決める (ただし スタイルを間違えないこと)
*mac=00:16:3eの部分はxenの正式に取得したアドレスなのでそのまま使う
*自分の環境に合わせて読みかえて下さい
*紫色部分 "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:XEN/Wan01,hda1,w','phy:XEN/Wan02,hda2,w','phy: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:XEN/Lan01,hda1,w','phy:XEN/Lan02,hda2,w','phy: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の / ディレクトリをマウントして操作します
*自分の設定環境に合わせます
# mount /dev/XEN/Wan01 /mnt # cp -a /lib/modules/2.6.18.8-xen /mnt/lib/modules # umount /mnt # mount /dev/XEN/Lan01 /mnt # cp -a /lib/modules/2.6.18.8-xen /mnt/lib/modules # umount /mnt
selinuxの無効化:/mnt/etc/selinux/config
*ドメインUの / ディレクトリをマウントして操作します (省略)
SELINUX=disabled
fstabの修正:/mnt/etc/fstab
*ドメインUの / ディレクトリをマウントして操作します (省略)
*単独で起動する場合に必要なfstabを別名で保存しておきます
*単独で起動する場合はdomain0からmountしてファイルを書き換えます
*ドメイン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の修正:/mnt/etc/sysconfig/network-scripts/ifcfg-eth0
*ドメインUの / ディレクトリをマウントして操作します (省略)
*macアドレスの指定を無効にします
*ドメイン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スクリプトの修正:/mnt/etc/rc.d/init.d/halt
*ドメインUの / ディレクトリをマウントして操作します (省略)
*ドメインUのクロックはドメイン0が管理をしています
*shutdownスクリプトでCMOSへの書込みを止めます
#[ -x /sbin/hwclock ] && action $"Syncing \ #hardware clock to system time" /sbin/hwclock $CLOCKFLAGS
Xenの起動と確認*iptablesのインストール・設定の後に起動します
*iptablesの設定をしない場合は、iptablesを止めておきます
ドメイン0 (制御OS) の起動*xen用に設定されたgrub.confで "linux-2.6.18.8-xen" を起動します
xend (制御デーモン) の起動*自動起動スクリプトで起動します
# service xend start
*起動しているdomainのリストを表示します
# xm list
*起動しているdomainの情報を表示します
*free memoryの情報を得ます
# xm info
*xmのコマンドオプションは?
# xm help --long
*デーモンの停止
*ドメインUの停止には時間が掛かります
*xm list コマンドで確認してから、xendを停止します
# xm list # service xend stop
ドメインU (ゲストOS) の起動*xenのコマンドで起動します
*起動されれば jupiterへのログイン画面が表示されます
*ドメイン0の管理画面に戻る場合は Ctrl+]キーを押します
# 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に存在するファイルを読み込んで起動
# service xendomains start
*自動起動スクリプトからの停止
*xendomainsを修正しています(下記参照)
*xm list コマンドで確認します
# service xendomains stop # xm list
xenの自動起動を設定します# chkconfig --add xend # chkconfig --add xendomains
*私的にはxen-kernel起動後、serviceコマンドで手動で起動 (確認のため)
*緊急のサーバ停止に対応するために自動停止のみ設定しておく
# chkconfig --add xend # chkconfig --add xendomains # chkconfig --level 345 xend off # chkconfig --level 345 xendomains off
xendomainsスクリプトの修正*stopルーティーンがおかしいのでxen-3.4.2と比較して、修正しています
*ー部分 を +部分 にエディタで修正します(ー+は書き込まない)
:/etc/rc.d/init.d/xendomains
--- xendomains 2010-05-27 21:48:24.000000000 +0900 +++ xendomains-new 2010-05-27 21:47:57.000000000 +0900 @@ -183,11 +183,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
![]() |
Copyright(c) 528p.com All Rights Reserved. |

