![]() |
LINUX |
XENの設定
・xen-4.2.1の設定と仮想マシンの起動
・完全仮想化ではなく、準仮想化のマシン構成です
・memoryの割り当てに注意、Xen本体のメモリ使用量を考慮する
・コンソール画面 (CUI) で全ての設定をします
・xen-4.1から"xm" ツールに似た"xl" ツールができました
・"xm" と "xl" ツールの共通部分がxencommonsにまとめられていて
・"xm" ツールを使う場合、xencommonsとxendを起動する必要があります
・"xm" ツールは推奨されません、将来はサポートされない予定です
・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します
・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

:xenのマニュアル (http://wiki.xen.org/wiki/Xen_4.2_Man_Pages) |

:パッケージの追加
:最初の設定 (Xen)
:glibcの設定
:Xenのビルド
:iptablesのインストール

:OS | CentOS 6.9 |
:Xen | 4.2.1 |
:selinux | disabled |
:インストール先 | |
:作業 | /etc /mnt |
:言語 | LANG=en_US.UTF-8 |
:ユーザー | rootで実行 |
・メンテナンスは一般ユーザから行います


・"xm" ツールは推奨されませんが、"xm" ツールの使用を想定しています
・デフォルト設定では、起動スクリプトは restoreモードで起動します
・起動に失敗した場合、saveファイル、lockファイルを削除します
・終了時にsaveしない場合、下記オプションを修正します
:/etc/sysconfig/xendomains
・省略
#XENDOMAINS_SAVE=/var/lib/xen/save XENDOMAINS_SAVE=""
・省略
#XENDOMAINS_RESTORE=true XENDOMAINS_RESTORE=false
・省略

・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 180) (enable-dom0-ballooning no)
・省略
(keymap 'ja')
・省略

・kernelでdom0のメモリを割り当てている場合
:/etc/xen/xl.conf
・省略
autoballoon=0
・省略

・複数の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の正式に取得したアドレスなのでそのまま使う
・diskでsda*を使用するとドメイン0とコンフリクトする場合があります
・自分の環境に合わせて読みかえて下さい
・紫色部分 "xm create"で起動が中断する場合に設定
・xencons=ttyが優先され、consoleログインでttyが使われます
・console=xvc0のみを設定すると、consoleログインでxvcが使われます
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.32.43-xs1.6.10xen" ramdisk = "/boot/initramfs-2.6.32.43-xs1.6.10xen.img" memory = 1024 name = "jupiter" vcpus = 1
vif = [ 'mac=00:16:3e:00:00:21' ]
disk = [ 'phy:/dev/mapper/XEN-Wan01,xvda1,w','phy:/dev/mapper/XEN-Wan02,xvda2,w','phy:/dev/mapper/XEN-Wan03,xvda3,w' ]
ip="192.168.0.21" netmask="255.255.255.0" gateway="192.168.0.1" hostname= "jupiter.528p.com"
root = "/dev/xvda1 ro"
extra = "xencons=tty console=xvc0"
:/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.32.43-xs1.6.10xen" ramdisk = "initramfs-2.6.32.43-xs1.6.10xen.img" memory = 320 name = "saturn" vcpus = 1
vif = [ 'mac=00:16:3e:00:00:22' ]
disk = [ 'phy:/dev/mapper/XEN-Lan01,xvda1,w','phy:/dev/mapper/XEN-Lan02,xvda2,w','phy:/dev/mapper/XEN-Lan03,xvda3,w' ]
ip="192.168.0.22" netmask="255.255.255.0" gateway="192.168.0.1" hostname= "saturn.528p.com"
root = "/dev/xvda1 ro"
extra = "xencons=tty console=xvc0"

・"xm" ツールは推奨されませんが、"xm" ツールの使用を想定しています
・xenのモデュ−ルをkernel構築時に (可能なものは) 静的に組み込んでいます

・glibcの設定を参照
・ゲストOSを単独で起動させて行なうか、ドメインUとして起動後に行う

・ドメインUの / ディレクトリをマウントして操作します
・yesコマンドでnoを出力して上書きコピーを否定します
・自分の設定環境に合わせます
[root@earth:~]
# mount /dev/mapper/XEN-Wan01 /mnt
# cp -a /lib/modules/2.6.32.43-xs1.6.10xen /mnt/lib/modules
# yes no | cp -a /lib/firmware/* /mnt/lib/firmware
# umount /mnt
[root@earth:~]
# mount /dev/mapper/XEN-Lan01 /mnt
# cp -a /lib/modules/2.6.32.43-xs1.6.10xen /mnt/lib/modules
# yes no | cp -a /lib/firmware/* /mnt/lib/firmware
# umount /mnt

・ドメインUの / ディレクトリをマウントして操作します
[root@earth:~]
# mount /dev/mapper/XEN-Wan01 /mnt
# vi /mnt/etc/selinux/config
・下記参照
# umount /mnt
[root@earth:~]
# mount /dev/mapper/XEN-Lan01 /mnt
# vi /mnt/etc/selinux/config
・下記参照
# umount /mnt
:/mnt/etc/selinux/config
・省略
SELINUX=disabled
・省略

・ドメインUの / ディレクトリをマウントして操作します
・単独で起動する場合に必要なfstabを別名で保存しておきます
・単独で起動する場合はdomain0からmountしてファイルを置き換えます
[root@earth:~]
# mount /dev/mapper/XEN-Wan01 /mnt
# cp /mnt/etc/fstab /mnt/etc/fstab-Wan01
# vi /mnt/etc/fstab
・下記参照(public)
# umount /mnt
[root@earth:~]
# mount /dev/mapper/XEN-Lan01 /mnt
# cp /mnt/etc/fstab /mnt/etc/fstab-Lan01
# vi /mnt/etc/fstab
・下記参照(private)
# umount /mnt
:/mnt/etc/fstab
・ドメインU (public)
/dev/xvda1 / ext4 defaults 1 1 /dev/xvda3 /home ext4 defaults 1 2 #/dev/sda1 /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/xvda2 swap swap defaults 0 0 #/dev/mapper/XEN-Top02 swap swap defaults 0 0
・ドメインU (private)
/dev/xvda1 / ext4 defaults 1 1 /dev/xvda3 /home ext4 defaults 1 2 #/dev/sda1 /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/xvda2 swap swap defaults 0 0 #/dev/mapper/XEN-Top02 swap swap defaults 0 0 #/dev/mapper/XEN-Wan02 swap swap defaults 0 0

・ドメイン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"
#HWADDR="XX:XX:XX:XX:XX:XX"
ONBOOT="yes"
BOOTPROTO="static"
BROADCAST="192.168.0.255"
IPADDR="192.168.0.21"
NETMASK="255.255.255.0"
NETWORK="192.168.0.0"
TYPE="Ethernet"
USERCTL="no"
PEERDNS="no"
・ドメインU (private)
DEVICE="eth0"
#HWADDR="YY:YY:YY:YY:YY:YY"
ONBOOT="yes"
BOOTPROTO="static"
BROADCAST="192.168.0.255"
IPADDR="192.168.0.22"
NETMASK="255.255.255.0"
NETWORK="192.168.0.0"
TYPE="Ethernet"
USERCTL="no"
PEERDNS="no"

:/etc/rc.d/init.d/halt
・haltスクリプトが終了時にCMOSへの書込みをします
・CentOS 6.9 では"/dev/rtc"の存在をチェックします
・ドメインUでは"/dev/rtc"がつくられないので
・CMOSへの書込みをキャンセルします
・省略
[ -x /sbin/hwclock -a -e /dev/rtc ] && action $"Syncing hardware clock to system time" /sbin/hwclock --systohc
・省略

・iptablesのインストール・設定の後に起動します
・iptablesの設定をしない場合は、iptablesを止めておきます

・xen用に設定されたgrub.confで "vmlinuz-2.6.32.43-xs1.6.10xen" を起動します

・/etc/sysconfig/xencommonsで指定した場合のみ、qemuを起動します
:/etc/rc.d/init.d/xencommons
・省略
# echo Starting QEMU as disk backend for dom0 # test -z "$QEMU_XEN" && QEMU_XEN=/usr/lib/xen/bin/qemu-system-i386 # $QEMU_XEN -xen-domid 0 -xen-attach -name dom0 -nographic -M xenpv -daemonize -monitor /dev/null if test -n "$QEMU_XEN" ; then echo Starting QEMU as disk backend for dom0 $QEMU_XEN -xen-domid 0 -xen-attach -name dom0 -nographic -M xenpv -daemonize -monitor /dev/null fi }
・省略

・xencommonsの起動でdomain-0が起動し、"xl"ツールが使えます
・xendの起動で"xm"ツールが使え、"xl"ツールが使えなくなります
・自動起動スクリプトで起動します
[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

・"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
・xendomains スクリプトからの起動と停止
・xendomainsは"xm" ツールが使える場合、"xm" ツールで起動します
・"xm" ツールが使えない場合、"xl" ツールで起動します
・/etc/xen/autoに存在するファイルを読み込んでいます
[root@earth:~]
・自動起動スクリプトからの起動
# service xendomains start
・ドメインのlistを表示して確認
# xm list
・自動起動スクリプトからの停止
・ドメインUが複数の場合、ドメイン名がうまく表示されない
# service xendomains stop
・ドメインのlistを表示して確認
# xm list

・xen-4.1.* からxen-watchdog,xencommons起動スクリプトが追加されています
・このサーバの環境では、xen-watchdogは使用しません
[root@earth:~]
# chkconfig --add xencommons
# chkconfig --add xend
# chkconfig --add xendomains
:/étc/rc.d/init.d/xendomains (参考)
・停止処理で表示がおかしくなる場合 (205行目を修正)
done }
#LIST_GREP='((domain\|(domid\|(name\|^{$\|"name":\|"domid":' LIST_GREP='^(domain\|(domid\|(name\|^{$\|"name":\|"domid":' parseln() { if [[ "$1" =~ '(domain' ]] || [[ "$1" = "{" ]]; then

・bridgeモードの場合、network-bridgeスクリプトを起動しておきます
・物理ネットワークインターフェイス(例 先頭にpが付いた peth0 )を起動し、
・eth0が(スイッチングハブのように動作する)ブリッジインターフェイスとなり
・仮想マシン(ドメインU)へネットワークを提供します

・xl.confからvifタイプを読み出し、対応するnetworkスクリプトを起動します
:/étc/rc.d/init.d/xenifset (root root 755)
#!/bin/bash # # chkconfig: 2345 98 01 # description: Xen network interface start/stop script. #
if [ -f /etc/xen/xl.conf ] ; then . /etc/xen/xl.conf else vifscript=vif-bridge fi
if [ "$vifscript" = "" ] ; then vifscript=vif-bridge fi
viftype=$(echo "$vifscript" | cut -f2 -d -)
case "$1" in start) echo "network-$viftype script" Start /etc/xen/scripts/network-$viftype start ;; stop) echo "network-$viftype script" Stop /etc/xen/scripts/network-$viftype stop ;; status) echo "network-$viftype script" Status /etc/xen/scripts/network-$viftype status RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|status}" RETVAL=2 [ "$1" = 'usage' ] && RETVAL=0 esac
exit $RETVAL

[root@earth:~]
# service xencommons start
# /etc/xen/scripts/network-bridge start
・または、自動起動スクリプト(xenifset)で起動します
[root@earth:~]
# service xencommons start
# service xenifset start
・起動しているdomainのリストを表示します
# xl list
・インターフェースの情報を表示します
# brctl show
・起動しているdomainの情報を表示します
・free memoryの情報を得ます
# xl info
・xlのコマンドオプションは?
# xl help
・物理ネットワークインターフェイスをeth0に戻します
・ドメインUの停止には時間が掛かります
・xl list で確認してから、xenbridgeを停止します
# xl list # service xenifset stop

・"xl" ツールで起動します
・設定ファイルはxmツール用のものを兼用します(下記参照)
・起動されれば jupiterへのログイン画面が表示されます
・ドメイン0の管理画面に戻る場合は Ctrl+]キーを押します
[root@earth:~]
# xl create -c /etc/xen/auto/jupiter
・Ctrl+]キーを押してドメイン0の管理画面に戻る
・ドメインのlistを表示して確認
# xl list
・インターフェースの情報を表示します
# brctl show
・ドメインUへのコンソールログイン (ゲストドメイン名)
# xl console jupiter
・または (ゲストドメインのID)
# xl console 1
・ドメインUの停止 (ゲストドメイン名)
# xl shutdown jupiter
・または (ゲストドメインのID)
# xl shutdown 1
・ドメインUの強制終了 (ゲストドメインのID)
# xl destory 1
:/etc/xen/auto/jupiter ("xl"ツール用)
・vmidのチェック部分を全てコメント行にします
#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()
・xendomains スクリプトからの起動と停止
・xendomainsは"xm" ツールが使える場合、"xm" ツールで起動します
・"xm" ツールが使えない場合、"xl" ツールで起動します
・/etc/xen/autoに存在するファイルを読み込んでいます
[root@earth:~]
・自動起動スクリプトからの起動
# service xendomains start
・ドメインのlistを表示して確認
# xl list
・自動起動スクリプトからの停止
・ドメインUが複数の場合、ドメイン名がうまく表示されない
# service xendomains stop
・ドメインのlistを表示して確認
# xl list
![]() |
Copyright(c) 528p.com All Rights Reserved. |