2010年09月

コンピュータ関連のことを、出来る時に、出来ることだけ。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【Xen4.0の導入】の記事一覧へ




次は準仮想化でのDomainU構築と行きたいところですが、せっかくインストールしたWindows7を試してみたい気持ちもありまして、少々セットアップを行いました。

セットアップと言っても、ネットワークの設定とリモートデスクトップの設定をしただけですが、長年WindowsXPに慣れ親しんできたので、どこに設定画面があるのか全く分からず・・・以外と手こずってしまったので、備忘録もかねて書いてみます。

1.ネットワークの設定
ネットワークの設定を行って、DomainU内のWindows7と直接通信が出来るようにします。

「Xen4.0の導入-xendの設定」で出てきた「/etc/xen/xend-config.sxp」に、「network-script」という設定値があり、デフォルトで「network-bridge」に設定されています。
(network-script network-bridge)


この設定だと、Domain0の物理NICとDomainUの仮想NICが、仮想ブリッジにより接続されることになります。
Domain0もDomainUも1つのスイッチ(スイッチングハブ)に接続されているイメージですね。

そのため、DomainU内ではDomain0と同一セグメントのIPアドレスを設定すれば、DomainUと直接ネットワークで通信することが可能になります。

DomainUを起動した時点で、仮想ブリッジへの接続は自動的に行われるため、Windows7のネットワーク設定を行います。


(1)DomainU(Windows7)を起動しVNCで接続、ログインしてデスクトップ画面を表示。
(2)「スタート」ボタンをクリックし、「コントロール パネル」をクリック。
(3)「ネットワークとインターネット」カテゴリから「ネットワークの状態とタスクの表示」をクリック。
(4)「ローカル エリア接続」をクリックし、「プロパティ」をクリック。
07-01

(5)「インターネット プロトコル バージョン 4 (TCP/IPv4)」を選択し、「プロパティ」をクリック。
07-02

(6)「IP アドレス」「サブネット マスク」「デフォルト ゲートウェイ」「優先 DNS サーバー」「代替 DNS サーバー」を設定する。
07-03
※実際には値を入れます。


2.リモート デスクトップの設定
Windows等のGUI画面にはVNCで接続することができますが、リモート デスクトップの設定を行えば、さらに快適に操作することが出来ます。
ちなみに、リモート デスクトップのサーバーになれるのは、Windows7のProfessional以上です。念のため。

(1)「スタート」ボタンをクリックし、「コンピューター」を右クリックして「プロパティー」をクリック。
(2)ウィンドウ左側の「リモートの設定」をクリック。
(3)「リモート デスクトップ」カテゴリの中の設定を、「このコンピューターへの接続を許可しない」から「リモート デスクトップを実行しているコンピューターからの接続を許可する」に変更します。
07-04

※クライアント側もWindows7の場合は、一番下を選択したほうが良いようです。

3.iptablesの設定
仮想化ドメイン(ドメインU)のセットアップの「4.DomainUにOSをインストール」の時にiptablesを停止しましたが、そのままにするのもどうかと思うので、リモートデスクトップから接続できるようにiptablesを設定します。

Domain0にログインし、viでiptablesの設定ファイルを変更。

# vi /etc/sysconfig/iptables


# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -p tcp --dport 3389 -j ACCEPT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
下線部分を追記します。リモートデスクトップ接続のポート3389を空けています。

変更したらiptablesを起動。
# /etc/init.d/iptables start


エントリが追加されている事を確認。
# iptables -L

Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Firewall-1-INPUT (2 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ms-wbt-server
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp any
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere anywhere udp dpt:ipp
ACCEPT tcp -- anywhere anywhere tcp dpt:ipp
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
[root@iss ~]#
下線部分が追加されていることを確認。



以上の設定を行って、別のWindowsXP端末からDomainUのWindows7に接続すると、問題なく接続することができました!
07-05




スポンサーサイト
【Xen4.0の導入】の記事一覧へ




前回のWindows7の問題発生の話です。

■問題発生!
あの後Windows7のインストールは成功し、しばらくは問題なく稼動していました。
ついでに評価版のWindowsServer2008もインストールしましたが問題なし。

ところが、次のステップの準仮想化ドメイン構築でいろいろと試行錯誤している際、ふとWindows7を起動してみると、異常にパフォーマンスが悪くなっていました。起動も遅く(ログオン画面がでるまで10分位?)、マウス動作さえままなりません。Windows7ではリモートデスクトップサービスの設定以外、特に設定変更やアプリインストールなどは行っていないのに、です。

Windows7上でタスクマネージャを見てみると、CPU使用率が常に100%になっている状態でした。
また、WindowsServer2008でも同様の問題が起こりました。


■ざっくり対応
WindowsUpdateにより、自動的に更新されたプログラムが悪影響を及ぼしているのではと思い、Windows7と2008の再インストールを試みましたが、インストール途中で「ドライバが見つからない」とのエラーが出てしまい続行できません。

それでは準仮想化ドメインの構築中にxenに対して問題のある操作をしてしまったのかと思い、ネイティブLinuxのインストールからやり直しましたが、やはりWindows7インストールの段階でドライバが無いと言われてしまい、全く原因不明の状況に。


ググっても全く情報が出てこないので、これは本気で取り組まないとと思った矢先、念のため再度Windows7のインストールを試してみると、問題なくインストールできてしまいました。

まったくもって????な状態です・・・

Windows7起動中
こんな風に、ちゃんと動いてます


■今度起きたら・・・
とりあえず現時点の状態(Windows7インストールに成功した状態)を保存するため、Windows7をインストールしたDomainUのLVをコピー。
# dd if=/dev/VolGroup00/LogVol02 of=/dev/VolGroup00/LogVol03

※LogVol03は、予めLogVol02と同サイズのLVをlvcreateで作成しておいたもの。

その他/etc/xen以下のxen設定ファイルをバックアップ。
# tar -czvf ./xenconf_backup_20100920.tar.gz /etc/xen/



あと、ターミナルソフト(Poderosa使ってます)の設定で自動的にログが取られるようにしました。いままでこのソフトで、自動でログ取る方法調べてなかった(ToT)めんどくさがっちゃダメですね~

次に発生したときは、少なくとも次の4パターンくらいには原因が特定できるようにします。
(1)xen構築時の問題(ビルド時の設定やxend設定ファイルなど)
(2)DomainUの設定ファイルの問題
(3)DomainU内部の問題(Windows7で問題のある設定や操作を行った)
(4)準仮想化ドメイン構築時に何か問題のある操作を行った。


■備忘録
この事象の対処しているうちに、xen関連のコマンドをよく使ったので、忘れないようにメモします。
・xm create -f
 DomainUの起動
・xm list
 起動中のDomainの確認
・xm shutdown
 Domainの停止。IDはxm listで確認
・xm info
 xenの構成情報を表示
・xm top
 各Domainの使用リソースをリアルタイム表示



よくわかんないけど問題は「解消」したので、次に進みます~
決して「解決」はしてないけどね。


【Xen4.0の導入】の記事一覧へ




いよいよDomainUの設定を行なって動作確認をします。

こちらによると、先ずは完全仮想化ドメインを構築し、それを必要に応じて準仮想化ドメインに変更した方が簡単との事。

なるほど~ということでまずは完全仮想化ドメインを構築することにしました。
完全仮想化ならWindowsもインストール出来るので、Zinoに付属のWindows7を入れてみます。

ちなみにWindowsは準仮想化にする事は出来ませんので!念のため。


1.LVの作成
DomainUに割り当てるディスク領域を確保します。
CentOSのインストール時に空き領域を残していたVG「VolGroup00」に24GBのLV「LogVol02」を作成。
# lvcreate -L 24G -n LogVol02 VolGroup00


単一のファイルを仮想HDDにする事もできますが、スナップショットを取得できるLVにしました。スナップショットなら短い停止時間でバックアップを取得出来るので便利です。


2.vncクライアントの準備
Windowsをインストールするには当然GUIが必要です。DomainUはvncを使って画面を表示することができます。

Domain0にXを導入しているならローカルからvncviewerで接続できますが、私はX入れてないので、別のWindows端末からUltraVNCを使って接続します。


3.設定ファイルの作成と編集
DomainU用の設定ファイルを作成します。
/etc/xen/にサンプルの設定ファイルが多数用意されてますので、その内のxmexample.hvmをコピーして変更します。
# cp xmexample.hvm sample.hvm


以下の項目を変更しました。
□memory = 1536
メモリの割り当て量を設定します。

□name = "sample"
仮想マシンの名前を設定します。

□uuid = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
DomainUを識別するIDです。uuidgenコマンドで生成します。同一のuuidを持つDomainUを複数起動する事は出来ません。

□disk = [ 'phy:/dev/VolGroup00/LogVol02,hda,w', 'phy:/dev/cdrom,ioemu:hdc:cdrom,r' ]
仮想化ドメインで使用するディスクの設定です。
ドメイン0の/dev/VolGroup00/LogVol02を仮想化ドメインのhdaに設定。
ドメイン0の/dev/cdromを仮想化ドメインのhdc(cdrom)に設定。

□boot="dca"
ブート時の読込み順を設定します。
(a: floppy, c: hard disk, d: cd-rom)です。
WindowsのインストールCDからインストールするので、cd-romを最初に読み込むように設定。

□vnclisten="192.168.0.1"
vncが待ちうけするIPアドレスを設定。
デフォルトの127.0.0.1ではローカルからしか接続できないため、ネットワークに接続しているNICのIPアドレスを設定。

□vncdisplay=10
vncが待ちうけするディスプレイ番号を指定。
ディスプレイ番号+5900がポート番号になります。
UltraVNCから接続する場合は、ディスプレイ番号指定だと192.168.0.1:10、ポート番号指定だと192.168.0.1::5910になります。

□vncpasswd='password'
VNCで接続する場合のパスワードを設定。

□usb=1
□usbdevice='tablet'
デフォルト設定だと非常にマウスが使いにくいです。具体的には、マウスカーソルとVNC上のマウスカーソルがずれてしまいます。移動量だけを送信しているからでしょうか?
tabletにすると、端末上のマウスカーソルに追いついてくるので、断然使いやすくなります。

□keymap='ja'
キーマップをjaにします。


4.DomainUにOSをインストール
一通り設定したら、いよいよWindows7をインストールします。
VNCで接続するにはファイアウォールが邪魔ですので、停止します。
# /etc/init.d/iptables stop


もちろん停止するのではなく、起動したまま必要なポートのみ空けるべきですが、テスト中ということで停止しました。(長いことiptablesいじってなかったから設定方法を忘れただけですが・・・)

先ほど作成した設定ファイルを使って、DomainUを起動します。
# xm create -f sample.hvm


すかさず端末からUltraVNCで接続。
上手く接続できれば、通常のWindows7のインストールと同様です。
Windows7インストール


Windows7のインストールは簡単ですよね♪


といいたいところだったのですが、ここで問題発生・・・続きは次回です~
【Xen4.0の導入】の記事一覧へ




次にxendの設定を行います。


1.NICドライバのインストール
その前に、私の環境では、Xenカーネルで起動するとネットワークが使えなくなりました。

どうやらZinoのNIC(Broadcom BCM57780)のドライバtg3.koを、Xenカーネルがうまくロード出来ないようです。
そこで、最新版のtg3.koをXenカーネル用にビルドし、置き換えると解決しました。以下手順です。


通常のカーネルで起動し直します。
# shutdown -r now


Linux用のドライバlinux-3.110g.zipは別の端末でダウンロードし、scp等で転送しました。

rpmbuildを行うためにrpm-buildパッケージをインストール
# yum -y install rpm-build


ここで再起動し、xenカーネルで起動します。


ダウンロードしたzipを展開し、rpmファイルのあるディレクトリに移動します。
# unzip linux-3.110g.zip
# cd Server/Linux/Driver/


後はREADME通りに操作します。

READMEどおりにSRPMをインストールしようとすると、ディレクトリが無いというエラーが出るので、先に作成。
# mkdir -p /usr/src/redhat


rpmを実行。
# rpm -ivh tg3-3.110g-1.src.rpm


展開先に移動し、READMEに沿って、rpm-buildを実行。引数にXenカーネルのバージョンを入れます。
# cd /usr/src/redhat/
# rpmbuild -bb SPECS/tg3.spec --define "2.6.18.8-xen"



ビルドされたtg3.koでドライバを置き換えます。
# cp -p /usr/src/redhat/BUILD/tg3-3.110g/tg3.ko /lib/modules/2.6.18.8-xen/kernel/drivers/net/tg3.ko


ドライバをロードします。置き換えする前はエラーが出ましたが、置き換え後は成功します。
# modprobe tg3.ko


ネットワークを再起動すると、eth0が使用できるようになりました!
# /etc/init.d/network restart



2.xendの設定
ここの記述を参考に、xendの設定ファイル/etc/xen/xend-config.sxpの設定を行います。

いままで勘違いしていたのですが、xendはxenハイパーバイザそのものではなく、ハイパーバイザとのやり取りを仲介するデーモンとのこと。


「network-script」の値が重要みたいですが、デフォルトで問題なさそうでしたので、何も変えていません。

ログの設定、vncの設定、unix socketの設定などいろいろ出来るようですので、後々再検討したいです。



次からいよいよDomainUの構築にはいります~~
【Xen4.0の導入】の記事一覧へ




いよいよXenハイパーバイザをインストールします。

正確には、XenハイパーバイザとDomain0用のLinuxカーネルをビルド&インストールし、初期設定を行います(あってる?)。

インターネットに接続されている事が前提ですね。


1.パッケージのアップデート
まず、yumコマンドでインストールされているパッケージを最新にアップデートします。
# yum -y update



2.必要パッケージのインストール
Xenのビルドおよび稼働に必要なパッケージをインストールします。

必要なパッケージはREADMEファイルに書いてありますが、それだけではビルドが止まってしまったので、Try&Errorを繰り返して何とか判明。

yumコマンドでインストールしました。
# yum -y install acpid acpitool bridge-utils crypto-utils dev86 expat-devel gcc iasl libX11-devel mercurial ncurses ncurses-devel openssl openssl-devel python python-devel tetex-latex texinfo transfig uuidd virt-manager zlib zlib-devel


まとめてインストールすると、何故かmercurialだけエラーが出たので、個別にインストール。
# yum -y install mercurial


その後問題が出てないので、原因は追求してません。

その他gitが必要ですが、gitはCentOSのデフォルトのリポジトリには入ってないようなので、rpm-forgeのrpmをダウンロードしてインストール後、yumコマンドを実行します。


3.Xenのビルド
環境が整ったら、いよいよXenをビルドします。

wgetコマンドでソースコードをダウンロードし、解凍。
# wget http://bits.xensource.com/oss-xen/release/4.0.0/xen-4.0.0.tar.gz
# tar xvf xen-4.0.0.tar.gz
# cd xen-4.0.0


xenをビルドします。
# make world KERNELS="linux-2.6-xen"


ハイパーバイザと、Domain0、DomainU兼用のカーネルがビルドされます。
READMEによると、「KERNELS="linux-2.6-xen0 linux-2.6-xenU"」とすれば、Domain0専用、DomainU専用のカーネルを一度にビルドできるようですが、試していません。

KERNELS="linux-2.6-xen"引数なしでビルドすると、2.6.31.13のカーネルがビルドされます。
ビルドは成功しましたが、その後のmkinitrdでエラーが発生。
エラーを回避して無理やりinitrdを作成しましたが、kernel panicが発生して全く起動せず。
KERNELS="linux-2.6-xen"をつけてビルドされる2.6.18.8で、ようやく起動するようになりました。

なぜダメだったのかは不明。この辺理解しないといけないですね・・・


ビルド中、設定の問い合わせがありますが、全てデフォルトのままとしました。
理解が進んだら設定値も見直したいと思います。

Load all symbols for debugging/kksymoops (KALLSYMS) [Y/?] (NEW) y
Generic input layer (needed for keyboard, mouse, ...) (INPUT) [Y/?] (NEW) y
Mouse interface (INPUT_MOUSEDEV) [Y/?] (NEW) y
Keyboards (INPUT_KEYBOARD) [Y/?] (NEW) y
Serial I/O support (SERIO) [Y/?] (NEW) y
Virtual terminal (VT) [Y/?] (NEW) y
VGA text console (VGA_CONSOLE) [Y/?] (NEW) y
IP-over-InfiniBand debugging (INFINIBAND_IPOIB_DEBUG) [Y/?] (NEW) y
/proc file system support (PROC_FS) [Y/?] (NEW) y



エラーが発生せずにプロンプトに戻れば、ビルド完了です。


4.Xenのインストール
xenをインストールします。
# make install KERNELS="linux-2.6-xen"


完了したら、/bootにファイルが配置されていることを確認します。
# cd /boot
# ls -ltr


以下のファイルが作成されています。
・xen-syms-4.0.0
・xen-4.0.0.gz
・vmlinuz-2.6.18.8-xen
・config-2.6.18.8-xen
・System.map-2.6.18.8-xen
その他、シンボリックリンクが3つ作成されますが、すべてxen-4.0.0.gzへのリンクです。


5.initrdファイルを作成
initrd(初期RAMディスク)を作成します。
READMEに書いてある通りで問題ありません。

depmod 2.6.18.8-xen
# mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18.8-xen.img 2.6.18.8-xen



6.grubの設定
/boot/grub/grub.confを設定し、インストールされたハイパーバイザとLinuxカーネルから起動するように設定します。
# vi /boot/grug/grub.conf


(1)タイムアウト時間を変更
timeout 5

timeout 10

(2)起動時にカーネルを選択するメニューを表示
hiddenmenu

#hiddenmenu

(3)xenハイパーバイザから起動する設定
末尾に追加します。
title CentOS (vmlinuz-2.6.18.8-xen4.0)
root (hd0,0)
kernel /xen-4.0.0.gz dom0_mem=256M
module /vmlinuz-2.6.18.8-xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18.8-xen.img

下線部でDomain0が使用するメモリ量を指定します。指定しないと、Domain0が常にメモリを最大まで利用してしまうようです。

「default」を変更すれば、起動時に選択せずともxenハイパーバイザから起動するようになりますが、正常に動くことを確認してからにします。


再起動し、grubで「CentOS (vmlinuz-2.6.18.8-xen4.0)」を選択します。

無事にCentOSが起動すれば、インストール成功です。


次は「3.xendの設定」です~
【Xen4.0の導入】の記事一覧へ




Xen特集 Xenのインストールによると、通常のLinuxディストリビューション上でXenハイパーバイザをインストールし、そのディストリビューション自身をハイパーバイザ上でDomain0として動作するよう設定するそうです。

なのでまず「通常の」Linuxディストリビューションをインストールします。
ここでは使い慣れてるCentOS 5.5を使いました。別にDebianでもubuntoでも良いみたいですけどね。


CentOSのインストール自体はカンタンですが、途中で迷った所もあったので、そこを書きます。


・ディスク領域の設定
仮想マシンのストレージには、ファイルを割り当てるか、パーティションを割り当てるかどちらかになります。正確には外部ディスクを割り当てる事も出来るみたいですが、個人でそれはキツイ(笑)。

/dev/sda1 ext3  100M   /boot
/dev/sda2 LVM PV 476835MB VolGroup00用
VolGroup00    476832MB
 LogVol00 ext3 10240MB  /
 LogVol01 swap 5952



パーティション(というかLV)を割り当てるつもりなので、VGに未割り当て領域を残してます。

・追加パッケージ
パッケージは一切追加しません。具体的には、デフォルトでチェックが入っている「Desktop - Gnome」のチェックを外します。
ドメインUでWindowsを稼働させる時に、ローカルから画面を確認できるGUIがあった方が良いかとも思いましたが、ほとんどリモートでしか接続しないので、割り切ってGUI無しにしました。


その他は適当に設定して、DVD1枚でインストール完了!

次は「2.Xenハイパーバイザのインストール」です。
前の記事に書いたように、まずは仮想化環境をいろいろ試してみようと思います。
まずはソースコードからのXen4.0セットアップを♪


実はそのまえに、XenServerやXen3のパッケージ版なども試して、仮想マシンが動くことまでは確認しました。
非常にお手軽!便利ですねぇ
ただお手軽なのはありがたいんですが、お手軽すぎて何も考える必要がなく、仕組みがほとんど理解できず(T^T)


なるべく仕組みを理解したいのと、リリースからあまり日が経っていなくて、チャレンジしがいがあると思いまして。



という訳でXen4.0です。


主に参考にしたサイトはこちら
VA Linux Systems Japan 「Xen特集 仮想化とは」

Xen3の情報ですが、アーキテクチャから構築方法まで、親切にまとまってます。

その他、いろんなブログを参考にさせて頂きました。感謝!


□ハード環境です
チップセット:AMD 780G
CPU:AMD Athlon X2 6850e
メモリ:DDR2-SDRAM 2GB x 2
HDD:SATA HDD 500GB
NIC:Broadcom BCM57780

□ソフトウェア環境、OSとXenです。
OS:CentOS 5.5
Xen:4.0.0

□手順を大まかに・・・
1.ネイティブLinuxのインストール

2.Xenハイパーバイザのインストール


3.xendの設定

4.仮想化ドメイン(ドメインU)のセットアップ

  └問題発生、DomainUのWin7が異常に遅い!


続きます~(`∇´ゞ
次回は1.から!

 | Copyright © ふたごパパのサーバ構築日記 All rights reserved. | 

 / Template by 無料ブログ テンプレート カスタマイズ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。