Xenとは何かなんてメタなネタは省略。「とにかく動かしてみよう」という事で、実際の設定をメモ。
「既存コンテンツの移植」が最終目的だが、とりあえず今はゼロからの構築。
Debian etch。子ドメインもetchで、これ用に取り寄せた。最終的にはWindows XPなども狙っているが面倒なのは間違いないだろうから、まずは一番簡単なLinuxでいく。
カーネルの交換が伴う。よってカーネルを改造している人(あ、ウチ改造してる@@;)、プロプライエタリなドライバを使っている人(あ、うちNVidiaだ@@;)は問題が起きる可能性がある。注意するか、問題のない別のマシンでやろう。
なお、 Xen仕様カーネルパッケージはちゃんと4GB以上を認識する ようですので安心してトライしよう。さすが :D
# apt-get install xen-linux-system-2.6.18-6-xen-686 libc6-xen xen-tools bridge-utils
今回は必要ないが、完全なエミュをするならば xen-ioemuがいるらしい。WindowsとかXenに対応してないので必要ですな。
# apt-get install xen-ioemu-3.0.3-1
さてこれで再起動、と言いたいがネットワーク設定をする。これは必須ではない。また私個人的にハマった地雷についても一点紹介したい。
/etc/xen/xend-config.sxpをいじる。以下を探して設定する!
たとえば、まずはこれ。
(network-script network-bridge) ←コメントになってるのを外す。 # (network-script network-dummy) ←有効になってるのをコメントにする!
次にネットワーク設定だ。/etc/xen-tools/xen-tools.conf をいじる。
DHCPを使うなら、ここ。
dhcp = 1
固定IPなら、ここを操作しておくと楽だ。
gateway = 192.168.0.1 netmask = 255.255.255.0
さて、ここで地雷の話をしよう。
うちはどうしてもネットワークが有効にならず困ったのだけど、理由は簡単だった。試した環境は散々テストを繰り返した機体で、eth0がなくてeth7が動いてるという変な設定だったからだ。これをeth0にしたらあっさり動いた。たぶんどこかで決め打ちがあるんでしょうがその調査は後回し ;)
(2008/11/19補記・ (network-script 'network-bridge netdev=eth7') でOKだったのかもしれない。未検証)
最後に、以下を設定して閉じよう。本当はいらないのだけど、いちいち作成の時に —passwordなんたらと呪文を唱えるのも面倒ですね。
passwd = 1
リソースはどうする?Xenするサーバならリソースはたくさんあるだろうって事で、うちは少し調整。
size = 4Gb # Disk image size. memory = 256Mb # Memory size swap = 256Mb # Swap size # noswap = 1 # Don't use swap at all for the new system. fs = ext3 # use the EXT3 filesystem for the disk image. dist = etch # Default distribution to install.
なお、reiserfs等を使う時はこれ用のパッケージがXenホスト側に必要だ。逆にいうと簡単なのは現時点ext3のままって事だね :D
ああ、あとウチの設定ではlookbackで使う事を前提にしてあるので、やったのはインストール先だけなんだが……
dir = /home/xen
LVMを使うなら、こうする。しかしこれは私は使ってないので検証はご随意に。
lvm = skx-vg
うちはDebianなので、debootstrapをもちろん使う。簡単なほうがいいね!
debootstrap = 1
カーネルのバージョンが古かったら直しておこう。
kernel = /boot/vmlinuz-2.6.18-6-xen-686 initrd = /boot/initrd.img-2.6.18-6-xen-686
さて、これでいよいよimage作成、そして動作だ!
ちなみにIPなんだけど、ブリッジ設定をしているので現在ホストのいるセグメントの空きIPを指定すればOK。そのまま普通にアクセスできるよ :D
さて、名前は適当でいいが、ほげとかフーバーではかわいくない。ここはエルヴィンとでもしておこう(なんで^^;)
# xen-create-image --ip 192.168.0.116 --hostname erwin : (うだうだと色々でてくる) : rootのパスワードを聞かれる #
んで、いよいよ立ち上げる。-cはコンソール。今使ってるコンソールが/dev/consoleとして動く。
# xm create erwin.cfg -c
よしよし、外からも見てみようか。
# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 3783 2 r----- 10123.9 erwin 1 256 1 -b---- 5.4 #
おお :D
ホストが起動した時に自動起動させたい。以下のようにしよう。
# cd /etc/xen/ # mkdir auto # cd auto # ln -s ../erwin.cfg .
これで、/etc/init.d/xendomains restart とかすると起動してくれる。
しかしXenクライアントドメインの起動って速いな。BIOSメニューとかの色々が介在しなと、というのはこういう事か。
とりあえずXenが動いたので、あとは色々試してみよう。パフォーマンスがよければ予備機は常時Xenとしたいね。動的にリソース割り当て変更とか、やりたい事がいっぱいある。
何がしたいかというと「使いたい環境があればいちいち再起動するのではなく、少しリソースを切り出して該当OSを仮想で走らせる」ようにしたい。
たとえばWindows。自宅で私的にWindowsが必要になる事なんて普通まずないけど、必要になる事もあるかもしれない。でも切り替えのたびにいちいち再起動したくないし、ネイティブに組み込んで余計な問題が起きるのも避けたい。マルチブートなんて簡単ではあるけれど、マイクロソフト絡みのマルチブートでいい事があった記憶がまったくない。
こういう時に仮想環境は役立つと思ってます。