オレンジのトップページ

2009年3月14日土曜日

CentOS-Xen

RedHat5/CentOS5のCentOS-Xenの手順を復習しておく。ASCII社での導入事例 http://ascii.jp/elem/000/000/212/212112/summary.html?ml は面白い。



インストール時に選択するパッケージは3つ・GNOME
・仮想化
・ベース

インストール時の設定・SElinuxを無効に。ファイアウォール(iptables)もお好みで無効に。
・「システムクロックでUTCを使用」は有効に。仮想マシンのハイパーバイザー側では、実マシンをUTCで使っておいた方が無難。インストール後変更したい場合は /etc/sysconfig/clock が HWCLOCK="--localtime" なっているので、 HWCLOCK="-u" へ変更すると 実マシンでUTCがセットされる。
・IPv6は無効

インストール後に追加するパッケージ・httpd (OSのISOイメージのマウントに必要)
・system-config-lvm (今回LVMに仮想マシンのストレージを作成するが、このツールがあるとLVMをビジュアル的に確認できて楽しい(笑) )



仮想マシンの作成

まず ストレージを用意する。 LVMで8G程度作った。LVMの操作については こちら http://pantora.net/pages/linux/lvm/1/ のページがわかりやすい。


lvcreate -L 8G -n LogVol03 VolGroup00


ゲストOSのインストールイメージをISOファイルで用意し、 /var/backup/xxxxx.iso に置く。 mount -o loop ISOファイル名 /mnt/iso としてマウントし、 ln -s /mnt/iso /var/www/html/iso とシンボリックリンクを張る。 そしてhttpd を起動。 ノートパソコンなどから http://IPアドレス/iso でアクセスし、インストールイメージの内容が見れるかどうか確認しておく。 このへんの方法は http://wingse.blog57.fc2.com/blog-entry-123.html のページを参考にした。



こまで準備ができたら

(GUIで virt-manager を使って設定する場合 )
アプリケーション メニュー→システムツール→仮想マシンマネージャ を起動。

・完全仮想化 と 準仮想化 の選択は 当然 準仮想化 を選択
・「ストレージ」には 先ほど用意した LVMボリュームを指定する。 /dev/VolGroup00/LogVol03
・「インストールメディアのURL」には http://IPアドレス/iso

そのほかは先のハイパーバイザ側と同じオプションでインストールを完了させる。



(CUIで virt-install を使って設定する場合 )

# virt-install

--------------------------------------------------------------------------------------------------------------------
仮想マシンの名前は何ですか? system2

 どれだけの RAM を割り当てますか (メガバイト単位で)? 256

 What would you like to use as the disk (file path)? /dev/VolGroup00/LogVol04

 グラフィックサポートを有効にしたいですか? (yes または no) no

 インストール場所は何ですか? http://192.168.168.20/iso



インストールを開始しています...

--------------------------------------------------------------------------------------------------------------------


ここから ターミナルが仮想コンソールになる。 ゲストを終了すると、virt-install プログラムは仮想コンソール を離す。 virt-install コマンドはこのへん (http://www.asahi-net.or.jp/~aa4t-nngk/xen.html#guestvirtinstall) とか、このへん参考に。 (http://www.os-museum.com/linux/xen/xen310f8remote/xen310f8remote.htm



ゲストインストール後の設定

・IPv6を無効にする(必須)
ゲストOSに CentOS5.x を使う場合、 ゲストOS側でリブートすると確実に再起動に失敗する罠。再起動を繰り返して立ち上がらない。 ログを見ていると IIPv6 over IPv4 の処理で落ちているので ホスト側とゲスト側両方で IPv6を無効にしておく。

インストール時に IPv6 を使わない設定にしていも /etc/modprobe.conf  は書き換えてくれず IPv6が有効になっているので次のように修正すること。 この手順は http://pooh.gr.jp/item-4933.html のページを参考にした。

/etc/sysconfig/network
NETWORKING_IPV6=no

/etc/modprobe.conf
alias net-pf-10 off



仮想マシンの管理、自動起動コマンドの作成

毎回 仮想マシンマネージャ を使って起動など 管理するのは面倒なので コマンドラインから行える用準備する。 手順についてはこちらの ThinkIT のページ http://www.thinkit.co.jp/free/article/0706/10/4/ を参考にした。

<準備>
仮想マシンの名前は今回 system1 です。 仮想マシンが立ち上がった状態で 
virsh dumpxml system1 > /etc/xen/system1.xml
そして、 <console tty・・・> の行を削除、<graphics・・・>の行は <graphics type='vnc'/> と修正しておく。

<主なコマンド>
起動: virsh /etc/xen/system1.xml start
一覧: virsh list
終了: virsh shutdown (数字)
強制終了: virsh destroy (数字)

<自動起動コマンドの作成>
ThinkITの sample1.sh をそのまま書き換えて作った。 動作チェック後 /etc/rc.local に登録して 自動起動させる。


sample1.shの内容

#!/bin/bash

VMNAME=rhel5
IPADDRESS=192.168.0.100
VMFILE=/etc/xen/rhel5.xml
TIMEOUT=600
STATE=1

virsh create $VMFILE > /dev/null 2>&1
rc=$?
[ $rc -ne 0 ] && exit $STATE

before=$(date +%s)
now=$(date +%s)

while [ $((now - before)) -le $TIMEOUT ]
do
  ping -c 1 $IPADDRESS > /dev/null 2>&1
  rc=$?
  if [ $rc -eq 0 ]; then
    STATE=0
    break
  fi

  now=$(date +%s)
done

exit $STATE