Xen4.0

コンピュータ関連のことを、出来る時に、出来ることだけ。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Xen4.0ではまだまだやりたい事はあるのですが、仕事でVMWare使う可能性が出てきたので、今度はVMWareを試してみます。

ちなみにXen4.0でやりたかった事は以下の通り。
・ライブマイグレーション
・複数の仮想ブリッジの使用
・VGAパススルー(現マシンは非対応)
・PCIパススルー
・PtoV
・完全仮想化ドメインと準仮想化ドメインのパフォーマンス比較

機会があったらまたやりたいです。
スポンサーサイト
【Xen4.0の導入】の記事一覧へ



完全仮想化ドメインは稼働させる事が出来たので、次に準仮想化ドメインをセットアップします。

そもそも準仮想化ドメインとは何か?をおさらいです。

Para-virtualized domain。PVドメインと略することもあります。エミュレーションのオーバヘッドを最小限におさえるために、新たに定義した仮想マシン環境を提供するドメインです。このドメイン上でOSを動作させるためには、Xen環境が再定義したハードウェア環境にあわせてOSを修正する必要があります。代わりに、このドメイン上のゲストOSは高効率で動作します。
(引用:VA Linux Systems Japan 「Xenのインストール」-「準仮想化ドメイン」)

また、準仮想化ドメインで使用するカーネルはXen用にビルドされたカーネル(Xenカーネル)です。
Xenハイパーバイザのインストールの際にビルドしたものは、Domain0とDomainU兼用のXenカーネルですので、それをそのまま使用します。


手順としては、Linuxディストリビューションを完全仮想化ドメインにインストールし、その後カーネルをXenカーネルに置き換えます。ディストリビューションには、ドメイン0と同じくCentOS 5.5を使用しました。

1.ディスク領域の確保
まずは完全仮想化の時と同様、論理ボリューム(LV)を確保します。
lvcreate -L 4G -n LogVol99 VolGroup00


2.完全仮想化ドメイン用設定ファイルの作成
完全仮想化ドメイン用のドメイン設定ファイルを作成します。
xmexample.hvmをベースに、以下の値を変更しました。詳しくは完全仮想化ドメインのセットアップを参照してください。

memory
name
uuid
disk
boot
vnclisten
vncdisplay
keymap


3.Linuxディストリビューションのインストールと設定
ネイティブLinuxのディストリビューションをインストールします。
追加パッケージは無しにしました。論理ボリューム管理(LVM)を使用すると、Domain0とDomainUで2重にLVMを使用することになるため、使用しません。

□ディスクの設定画面
CentOSInstall

ディストリビューションのインストールは、問題なく完了です。
その後VNCで接続し、ネットワークの設定を行っておきます。


4.Xenカーネルの配置
ドメイン0のカーネル関連ファイルとカーネルジュールを、ドメインUにコピーします。

[Domain0での操作]
・Xenカーネル関連ファイルとそのモジュールをアーカイブ
cd /root/
tar zPcvf boot_2.6.18.8-xen.tar.gz /boot/*2.6.18.8*
tar zPcvf modules_2.6.18.8-xen.tar.gz /lib/modules/2.6.18.8-xen/


・アーカイブしたファイルをDomainUにコピー
scp *2.6.18.8* <DomainU>:/root/

※<DomainU>にはDomainUのIPアドレスが入ります。

[DomainUでの操作]
・DomainUでアーカイブを展開
cd /root/
tar zPxvf boot_2.6.18.8-xen.tar.gz
tar zPxvf modules_2.6.18.8-xen.tar.gz


5.initrdファイルの作成
「4.Xenカーネルの配置」でDomain0からDomainUにコピーしたinitrdファイルはDomain0用に作成したものです。
Domain0はLVM環境、DomainUは非LVM環境であるため、同じinitrdではDomainUを起動できません。
理由は「ふかふかの部屋」の「3. 仮想マシン起動時に "Volume group "VolGroup00" not found"」で解説されていらっしゃいました。

そのため、DomainUでinitrdを作成します。
[DomainUでの操作]
cd /root/
depmod 2.6.18.8-xen
mkinitrd /boot/initrd-2.6.18.8-xenU.img 2.6.18.8-xen


さらにそれをDomain0にコピーします。
scp ./initrd-2.6.18.8-xenU.img <Domain0>:/root/

※<Domain0>にはDomain0のIPアドレスが入ります。

ここで一旦ドメインUをシャットダウンします。


6.準仮想化ドメイン用の設定ファイルを作成
ドメイン0で準仮想化ドメイン用のサンプル設定ファイルを作成します。
xmexample1を元に、設定値を変更しています。

□kernel = "/boot/vmlinuz-2.6.18.8-xen"
□ramdisk = "/boot/initrd-2.6.18.8-xenU.img"
Domain0上にあるカーネルイメージ及びinitrdイメージを指定します。

domUのカーネルイメージ及びinitrdイメージは、dom0からアクセスできる必要があります。それらがdomUのゲストOSのディスクイメージ上にある場合は、そのデータをdom0上へ持ってくる必要があります
(引用:VA Linux Systems Japan 「準仮想化ドメインの設定」)

「5.initrdファイルの作成」でDomainUのinitrdをDomain0にコピーしたのはこの為です。

□memory = 512
メモリの割り当て量を設定します。

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

□uuid = "xxxxxxxxxxxxx"
uuidgenコマンドで生成したuuidを設定します。

□vif = [ '', 'bridge=xenbr0' ]
仮想ブリッジxenbr0に接続します。コメントアウトを外しただけです。

□disk = [ 'phy:/dev/VolGroup00/LogVol99,hda,w', 'phy:/dev/cdrom,ioemu:hdc:cdrom,r' ]
ディスクの設定は、完全仮想化ドメインの際と同じです。

□vfb = [ 'vnc=1,vnclisten=192.168.0.1,vncdisplay=13' ]
vnc関連の設定を1つにまとめた設定です。意味は完全仮想化ドメインの際と変わりありません。

□root = "/dev/hda2 ro"
DomainUのルートデバイス(「/」のパーティション)を設定します。

□keymap='ja'
サンプル設定ファイルには無い項目ですが、無いとVNCで接続した際不便なので設定しました。


再度ドメインUを起動します。
xm create -f sample


起動後、DomainUがXen用のカーネルで動いていることが確認出来れば、準仮想化ドメインのセットアップは完了です♪
DomainU

さらっと書きましたが、1日1時間で1週間ほどかかってますwww
特にinitrd辺りは大変でした・・・
しばらく仕事がいそがしく更新できませんでした。

記事を見返してみると、どうも構成が分かりにくいので、カテゴリごとに記事一覧を作ってみることにしました。
画面左側の「記事一覧」からアクセスできます。



【Xen4.0の導入】

1.ネイティブLinuxのインストール

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

3.xendの設定

4.仮想化ドメイン(ドメインU)のセットアップ
  ├完全仮想化ドメインのセットアップ
  ├問題発生、DomainUのWin7が異常に遅い!
  ├DomainUのWindows7をセットアップ
  └準仮想化ドメインのセットアップ

5.一旦終了!


次は準仮想化ドメインのセットアップを行います。

【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の使用リソースをリアルタイム表示



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


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

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