ラベル Xen の投稿を表示しています。 すべての投稿を表示
ラベル Xen の投稿を表示しています。 すべての投稿を表示

2008/12/14

Xenソースコード英単語

Linuxカーネルソースコードが元になっているが,細部が結構異なっている.
コメントとかで使われている単語の意味をメモ・

【Xen単語】
crank: クランクを回す,不安定な
expiry: 満期,終了
idler: 怠け者
tickle: 満足させる

2008/11/25

Xenインストール(仮): ドメインUネットワーク設定

先輩によるとゲストUのネットワークが接続できなかった理由は
iptableが自分宛ではないパケットを廃棄しているために
ゲストUへのパケットをフォワーディングしてなかったっぽい.

[iptablesの状態表示]
# chkconfig --list | grep iptables

[ドメイン0とドメインUのiptablesをoffにする]
# chkconfig iptables off
# service iptables restart

※リスタートが失敗する場合は再起動

[その他]
当然ながらドメイン0のネットワークが正しく動いてないと,
ドメインUのネットワークも動かない.


【参考資料】
第3回 Xenによる仮想環境のネットワーク構築:ITpro

Xenoprof: Xenのパフォーマンスカウンタ

OProfile はカーネルも含めたシステム全体のプロファイリングを行うもの.
XenoprofはOProfileの拡張.

xenoprofを使うためには圧縮されていない,XenとLinuxのカーネルイメージが必要
(/boot/xen-syms-[version]とXenのコンパイルツリーのトップにあるvmlinux)

vmlinuxとvmlinuzは別物.
vmlinuzはvmlinuxを圧縮したもの?
展開の仕方は不明.

// OProfileを有効にする
# make menuconfig


Instrumentation Support --->
[*] Profiling support (EXPERIMENTAL)
OProfile system profiling (EXPERIMENTAL)

上記がチェックされていることを確認し,再コンパイル.

[opcontrol]
Active domains

--passive-domains
データを取るドメインUのIDを指定する.


[opreport]
opreport event:[EVENT]
指定したイベントのプロファイルのみ表示する.

opreport cpu:[number]
指定したCPUのプロファイルのみ表示する.


// Reference
[OProfile]
OProfileとは
Benchmark-OProfile - PukiWiki
Omicron OProfile
OProfileを使ってCPUプロファイリングをとる

OProfile documentation
OProfile manual

[xenoprof]
Opensource.hp.com - Welcome

[xenperf]
Linux Virtualization Guides - Xen 3.0 User Guide - Xen Build Options
Xen/Xen Tools/xenperf - PukiWiki

http://prdownloads.sourceforge.net/oprofile/oprofile-0.9.4.tar.gz

2008/11/23

Xen: VMの管理コマンド

動作中のVM一覧の表示
# xm list

VMの設定ファイルに従ってドメインを作成
# xm create [VM設定ファイル]-c: 作ったVMのコンソールを起動

VMのシャットダウン(-eで全VM対象)# xm shutdown [ドメインID or ドメイン名]

VMの強制終了(-eで全VM対象)
# xm destroy

動作中のVMのコンソールを使う
# xm console [ドメインID or ドメイン名 or コンソール番号]
動作中のVMのVCPU一覧の表示
# xm vcpu-list

CPU Affinityを設定する
# xm vcpu-pin [ドメインID vcpu pcpu]指定ドメインのVCPUを,指定の物理CPUでのみ動作させる.
全てのCPUを指定するときは,"all"を指定する.
カンマで区切ることで複数のCPUを指定することもできる.

e.g.) domUのvcpu 0をpcpu 0 or 1で動かす
# xm vcpu-pin domU 0 0,1

e.g.) domUの全VCPUを任意の物理CPUで動かす
# xm vcpu-pin domU all all

VMに割り当てるメモリを変更する.
# xm mem-set ドメインID メモリ容量(MB)

ログの表示
# xm dmesg

【参考】
仮想化技術の大本命「Xen」を使ってみよう ~ Xen対応カスタムカーネル構築編 ~
第4回 動的に仮想マシンを移動し,可用性を向上:ITpro
xmコマンドのオプション
Manpage of DMESG
@IT:実践! Xenで実現するサーバ統合(1)
xm(1): Xen management user interface - Linux man page

2008/11/19

Xenインストール2.5:ドメイン0ネットワーク設定

Xenのドメイン0が起動するようになったものの,
ドメイン0でネットワークに繋がらない状態になってしまいました.

先輩によると,原因はネットワークドライバが古かったことのようです.
intelから新しいドライバをダウンロード,インストールすることで解決した模様.
※追記:再インストールしてたらやり方がわかりました


[※補足:ネットワークインターフェースの型番を調べる方法]
ネットワーク設定ファイル
/etc/sysconfig/network-script/ifcfg-eth0
にネットワークコントローラの型番(今回は82566DM-2)が書いてある.
intelのドライバダウンロードページから型番検索で
対応するドライバ(e1000e-0.4.1.12.tar.gz)が見つかる.


[ドライバのインストール]
ドライバ解凍後にできるe1000e-0.4.1.12/srcで

# make

# make install

これだけだと"eth0が見つかりません"とかエラーメッセージが出る.
lsmodしてもネットワークドライバ(e1000e)が見つからない.
make installだけだとinsmodされないらしく,insmodしたらネットワークにつながった.
システム起動時にドライバを読み込むようにするには

/etc/modprobe.conf

を修正する必要がある.

alias eth0 e1000e

を追加すると起動時にドライバを読み込んでくれる.

※追記
# modprobe e1000e
で上記の操作をしてくれる?


[※ネットワーク設定ファイルの場所]
/etc/sysconfig/network-scripts/ifcfg-eth0


[ネットワークサービスのリスタートコマンド]
# service network restart

[起動スクリプトでネットワークがonになっているかを確認]
# chkconfig --list network

onになっていなければ

# chkconfig network on
[ネットワークインターフェースが認識されないとき]
# service network restart# xend restart

それでもだめなら再起動


[※追記]
カーネルを更新するとドライバもmakeとmake installし直す必要があるっぽい.


【参考】
Linux技術トレーニング 基本管理コース II 第1章 カーネル

2008/11/12

Xenインストール2:ドメイン0構築

Xenのインストール.
dom0を構築して起動するまで.


// 初期RAMディスクの作成
depmodで作成したカーネルモジュールの依存関係リストからmkinitrdで,起動用の初期RAMディスクを作成する.

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

モジュールが足りていないためにmkinitrdが失敗する場合はLinuxカーネルからモジュールをコピーする.今回は
/lib/modules/2.6.xxx/kernel/drivers/
から
ata, message, scsi, usb
下にあるモジュールを
/lib/modules/2.6.xx-xen0/kernel/drivers/
にコピーした.

[設定確認(PAEが有効時のみ)]
menuconfigで
Processor type and features -> High Memory Support (4GB) ->
( ) off
( ) 4GB
(X) 64GB

になっていることを確認.


// パッケージ更新
Xenのデーモン(xend等)はpythonで書かれているので,
pythonをインストール/アップデートしておく.


// ブートローダの設定
/boot/grub/menu.lst
に下記を追加してXenを起動するようにする.
menu.lst は grub.conf へのシンボリックリンクになっている.

title Xen 3.3 / XenLinux 2.6.18.8
root (hd0,0)
kernel /xen.gz console=vga
module /vmlinuz-2.6.18.8-xen ro root=/dev/VolGroup00/LogVol00 rhgb console=tty0
module /initrd-2.6.18.8-xen.img

※rootのパスは環境により異なる.この場合はLVMを使っている. /etc/fstab を見ればルートのパスが書いてある.カーネルモジュールの場所が通常のカーネルと同じならroot指定をコピペすればおっけー.XenのREADME通りにパスを設定すると動かないので要注意.
※カーネル,モジュールの指定はパーティションの定義によって異なる./boot が定義されていれば/boot からのパスを書くが,定義されていない場合は /boot を含む絶対パスを書く.
/boot が定義されているかは menu.lst のコメントを見ればわかる.

[捕捉]
FDDが無いときBIOSで有効になっていると,ゲストOS起動中に下記のエラーが出て起動に時間がかかる.
end_request: I/O error, dev fd0, sector 0
よって,FDDが無い場合はBIOSでFDDを無効にしておいた方が良い.



ここで一旦再起動する.



// Xenツール
xenが起動してdom0が立ち上がったものの,xendが起動できない.

下記コマンドを実行してからXenツールをリビルドするとうまくいくよ.
という記事を発見したので早速やってみる.


$ rm -fr /usr/lib/python/xen/
$ rm -fr /usr/lib/python2.5/site-packages/xen/

$ cd [Xenソースを展開したディレクトリ]/xen-[version]/tools
$ make
$ make install


// xendの起動・設定
# xend start
# xm list
# chkconfig xend on

ドメインのリストが出た!!
というわけで,無事にdom0とxendが動きました.めでたしめでたし.
次はdomUを作成して動かします.


// Reference
xen-3.2のインストール手順
Xen3.0環境構築中のエラー
Xen環境作成メモ(その2)

2008/10/22

Xenインストール1: Xenカーネルコンパイル(追記:11/14)

Fedoraのインストールと設定が終わったので,Xenのインストール開始 .

[Xenソースのダウンロード]
http://xenbits.xensource.com/
http://www.xen.org/products/xen_source.html
から,最新版のXen (現時点では3.4.2)をダウンロードする.
http://bits.xensource.com/oss-xen/release/3.4.2/xen-3.4.2.tar.gz

# wget [xen source url]
# tar xvzf xen-[version].tar.gz

[Xenのコンパイルの準備]
解凍した xen-[version]/tools/check フォルダ内で

# ./chk build
# ./chk install

を実行すると不足しているパッケージを確認できる.
不足している場合はyumでinstall or updateする.

[不足パッケージ]
エラーメッセージだけだと何のパッケージが足りてないのかわかりづらいのでメモ.
./chk build でx11_develがNG -> libX11-devel が不足
./chk install でbrctlがNG -> bridge-utils が不足
make時に libgcrypt-devel が不足
tools のmake時に dv86 が不足

[mercurialのインストール]
バージョン管理ツールがないとLinuxカーネルソースの取得ができないようなので,mercurialというツールをインストールする.しかし,デフォルトのレポジトリではmercuriusはインストールできないそうなのでRPMFORGEというレポジトリを登録しまっす.
これを登録するとyumでインストールできるパッケージが増えるらしい.

http://dag.wieers.com/rpm/packages/rpmforge-release/
から対応するLinuxカーネルのrpm
(rpmforge-release-0.3.6-1.fc3.rf.[i386 or x86_64].rpm)をDL.
Fedoraは3までしか無かったけどインストール出来たのでいっか.
http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
もダウンロードして

# rpm --import RPM-GPG-KEY.dag.txt
# rpm -Uvh rpmforge-release-[version].rpm

これでRPMFORGEがyumで使えるようになる.ただし,常にこれを有効にするとパッケージが出すぎて邪魔なので,使いたいときだけ有効にできるようにする.
/etc/yum.repos.d/rpmforge.repo
enabled = 1enabled = 0にする.

# perl -p -i -e 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo

RPMFORGEを有効にしたいときは,yumのオプションに
--enablerepo=rpmforge
をくっつける.

前準備が終わったので,RPMFORGEを有効にしてmercurialをインストールする.

# yum --enablerepo=rpmforge install mercurial -y


[mercurialを使ってカーネルソースを取得]
Xenのソースを展開したディレクトリの親ディレクトリでやるといいそうな.

hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg


[Xenのmake]
デフォルトのまま make world を実行するとエラーが出る(インクルードファイルへのパスが通っていない) ので,Xenソースディレクトリ直下にあるConfig.mkに
EXTRA_PREFIX ?= /usr/lib/gcc/i386-redhat-linux/4.3.0
を追加(gcc/以下は環境によって異なる),これを追加することで,その下の

ifneq ($(EXTRA_PREFIX),)
EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBLEAFDIR)
endif
の部分でEXTRA_PREFIX内のincludeファイルを読み込んでくれる.

# make world
(PAEを有効にする場合は,オプションとしてXEN_TARGET_X86_PAE=yを指定する

makeが成功すると,Xenバイナリ(xen.gz)とdomain 0,domain Uのどちらでも使えるLinuxカーネルとモジュール(vmlinuz-2.6.xx-xen)が生成される.

"linux/compiler.hが見つかりません"
というエラーが出たものの,これは無視していいらしいので先へ.
Config.mkに下を足しておくとエラーがでなくなる?
EXTRA_INCLUDES +=
/usr/src/kernels/2.6.25-14.fc9.i686/include
※入れたら別のところで怒られたのでこれは入れない方がよさげ

# make install
生成したXenバイナリとLinuxカーネルを /boot にインストールする.

※補足
Config.mkのDESTDIRを書き換えると,出力先を変更できる.
makeコマンドはデフォルトだとvmlinuz-2.6.xx-xenという名前でビルドする.
これは,make時にKERNELS=kernelnameを指定することで変更できる.
例えば,
KERNELS="linux-2.6-xen0 linux-2.6-xenU"
を指定すると,domain 0とdomain Uに,それぞれ必要なモジュールだけを含んだ
カーネルを二つ生成する.
# make KERNELS="linux-2.6-xen0 linux-2.6-xenU" world
# make KERNELS="linux-2.6-xen0 linux-2.6-xenU" install

worldを付けるとエラーになる?

※捕捉2
KERNELSでコンパイルするカーネルを指定する代わりに
xen3.3.0/build-linux-2.6.18-xen*_x86_32
ディレクトリでmakeしてもいい.更新する場合は
# make clean
# make && make modules
# make install && make modules_install
モジュールの依存関係とinitrdの更新も忘れずに
# depmod 2.6.18.8-xen0
# mkinitrd (Xenインストール2を参照)

※補足3
.configファイルはドメイン0はデフォルトでも大丈夫だった
ドメインUのときは,色々デバイスが足りてなかったっぽい?
ドメイン0のコンフィグファイルをコピーして使った方が安全?
# cd /***/xen3.3.0/build-linux-2.6.18-xenU_x86_32
# /bin/cp -av /***/xen3.3.0/build-linux-2.6.18-xen0_x86_32 ./
# make oldconfig
# make menuconfig
Xen --->
[ ] Privileged Guest (domain 0)
にする.


とりあえずXenのコンパイルはここまで.
次はブートの設定とかをやります.


【参考】
Xen 3.3.0 README
- 所々嘘が書かれてたりするので気をつけましょう

Xen環境作成メモ(その1)

Xen特集 Xenのインストール VA Linux Systems Japan
- Xenのコンパイルオプションの一覧

2008/10/20

書評:Xen 3.0による仮想化サーバの構築

タイトル通りの内容.Xenの仕組み,Xenの動かし方,Domainの構築方法,仮想化サーバの構築方法等について記述している.

これから開発環境としてXenを使うことになりそうなのでお世話になりそうな本.