仮想環境
2008年08月04日
現状見解
6回に分けてまとめて来た「PhenomにXen環境構築(n/n)」シリーズ。
こう決断した。
2,3か月置いてみる
先日、本blog読者一人が
設定成功する事を楽しみにしている人が居る事を知った。
その人にとっても残念な結果となってしまった…。
- アーキテクチャが新し過ぎた
- Xenが未対応の可能性
- 諸事情により時間が無くなった
年末にでももう一度挑戦予定。
それまで、しばし活動休止!
平 初 長谷川 猛 宮本 久仁男 大島 孝子
翔泳社
売り上げランキング: 114545
翔泳社
売り上げランキング: 114545
2008年07月29日
PhenomにXen環境構築(5/n) DomainUが正常起動しないの続き
DomainUの状態を確認したい。
xen-utilsのコマンドで確認が可能。
- /usr/bin/xenstore-list <path>
- Domainの属性名表示
- 概要表示
- 「ls -1 <path>」の様なもの
- /usr/bin/xenstore-ls <path>
- Domainの属性名と属性値をツリー表示
- 詳細表示
- 「snmpwalk <path>」の様なもの
- xenstore-listで表示対象を絞り込んでから実行するのが良い
/usr/bin/xenstore-list実行結果例
$ sudo xenstore-list / tool vm local
$ sudo xenstore-list /local domain
$ sudo xenstore-list /local/domain 0 3
$ sudo xenstore-list /local/domain/3 vm device device-misc console image store control memory cpu name domid serial ...
/usr/bin/xenstore-ls実行結果例
$ sudo xenstore-ls / | head tool = "" xenstored = "" vm = "" 00000000-0000-0000-0000-000000000000 = "" on_xend_stop = "ignore" shadow_memory = "0" uuid = "00000000-0000-0000-0000-000000000000" on_reboot = "restart" image = "(linux (kernel ))" ostype = "linux" .....※DomainUが複数あると大量に表示されるので注意
あらかじめxenstore-listで表示対象を絞り込んでから実行するのが良い。
これでも解決には至らない。
まだ調査は続くのであった。
平 初 長谷川 猛 宮本 久仁男 大島 孝子
翔泳社
売り上げランキング: 124204
翔泳社
売り上げランキング: 124204
2008年07月28日
PhenomにXen環境構築(4/n) 一歩前進。xendは正常起動した。しかし… の続編
残念なエントリしか書けない日々はウンザリする。
DomainUのイメージ作成は成功した。
$ sudo xen-create-image --dhcp --hostname=centos5 --install-method=rinse --dist=centos-5そして、いよいよ起動させて、しばらくすると変な挙動に気付く。
$ sudo xm create /etc/xen/domains/centos5.cfg Using config file "/etc/xen/domains/centos5.cfg". Started domain centos5バックグラウンドで起動しているはず。
console指定して接続してみようとすると…
$ sudo xm console centos5このまま無反応。
期待する動作は、DomainUのttyを捕まえる事。
しかし、いつまで経っても無反応。
ttyの設定不足疑惑
動作しない報告を幾つか確認してみた。
それら報告では下記作業で動作するようになったそうだ。
- Domain0の/etc/securettyに「xvc0」と「hvc0」を追加
- /etc/xen/domains/centos5.cfgに「extra='xencons=tty1'」を追加
何故だ、何故なんだ…
その他動作しない原因として疑った項目
きっと無駄。
そう分かっていても可能性のある事を消去して行く。
- カーネルのバージョン
- DomainUのディストリビューション
しかし…DomainUは起動して来ない。
次回へ続く。
平 初 長谷川 猛 宮本 久仁男 大島 孝子
翔泳社
売り上げランキング: 109704
翔泳社
売り上げランキング: 109704
2008年07月24日
PhenomにXen環境構築(3/n) 実は駄目だった…の続き
挙動不審の原因判明。
複数Xenが混在していたから
混在時のバージョン毎挙動まとめ
Xen3.2、Xen3.1、Xen3.0がインストールされている状況とする。
- Xen3.2
- OS起動失敗
- boot時に異常終了
- 「Multiboot-moduleほげほげ」と言うメッセージが一瞬表示されるだけ
- ※混在の有無に関わらず異常終了
- Xen3.1
- OS起動成功
- xendが起動しない
- ログには「Premission denied when trying to init xend」
- Xen3.0
- OS起動成功
- xendは起動する
- しかしpeth0が無い
何ともゴチャゴチャな状況。
この時は複数バージョンが混在していても問題ないと思い込んでいた。
晴れ間が見えた
暗中模索の中、とにかく何かヒントが無いか探し回った。
そして見つけた。
Premission denied when trying to init xendより
I just ran into this myself. In my case, the issue was mixing a xen 3.1 hypervisor with xen 3.2 utilities. Make sure you are booting off the correct kernel in grub.... mine somehow ended up pointed at the 3.1 hypervisor as the default!
おや…?
xen-hypervisor3.1とxen-utils-3.2の混在時にこの現象が起きるらしい。
どのバージョンを使うか検討
第一候補はXen3.1
- Xen3.2は前述の通り起動すらしないので問題外
- Xen3.1は起動の可能性を秘めている
- Xen3.0はXen3.1が駄目だった場合に採用
Ubuntu Server 8.04 + Xen3.1
いよいよ検証作業。
- 非Xenカーネルで起動
- 不要パッケージ(Xen3.2とXen3.0)をapt-get removeする
- システム再起動
- Xen3.1なカーネルを選択して起動
ドキドキしながら起動を見守った…
xendが正常起動している!!
- xendの正常起動を確認
- peth0の存在を確認
そして、また新たな問題が発生したのだった…
次回へつづく。
平 初 長谷川 猛 宮本 久仁男 大島 孝子
翔泳社
売り上げランキング: 37506
翔泳社
売り上げランキング: 37506
2008年07月23日
イキナリ結論
PhenomにはXen3.1を使え
apt-get祭りの後、再起動すると正常に起動しなかった。
原因を探るべく、幾つか検証して行った。
- とりあえずapt-get大会
- bootに失敗
- Multiboot-modeほげほげほげ と一瞬出て再起動がかかる
- linux-image-2.6.24-19-xenが原因であると仮定
- linux-image-2.6.24-16-xenを確認 →boot失敗
- linux-image-2.6.24-18-xenを確認 →boot失敗
- ⇒もしかしたらカーネルは白?
- Xen-3.2原因であると仮定
- xen-hypervisor-3.1とxen-utils-3.1をインストール
- Xen 3.1 / Linux 2.6.24でboot確認 →成功
- ⇒原因はXen 3.2である事が分かった
よって、Xen-3.2を正常に起動させる方法を追求しないものとする。
Xen関連パッケージ
下記組合せでDomain-0が無事に起動している。
axsh@maria:/proc$ dpkg --get-selections | grep xen libxen3.1 install linux-image-2.6.24-19-xen install linux-image-xen install linux-restricted-modules-2.6.24-19-xen install linux-restricted-modules-xen install linux-ubuntu-modules-2.6.24-19-xen install python-xen-3.1 install xen-hypervisor-3.1 install xen-shell install xen-tools install xen-utils-3.1 install
さて、次はDomain-Uの構築と動作検証だ。
平 初 長谷川 猛 宮本 久仁男 大島 孝子
翔泳社
売り上げランキング: 23248
翔泳社
売り上げランキング: 23248
サーバ環境
- model name
- AMD Phenom(tm) 9950 Quad-Core Processor
- cpu MHz
- 2600.086
- cache size
- 512 KB
- Memory
- 7988296 kB (2Gx4)
- HDD
- ST3500320AS (500Gx2)
- RAID
- ソフトウェアRAID1
2008年06月26日
引退させたいサーバを引退させる1つの解決策
古いマシンでサービス中のコンテンツが存在する。
もう、何年も前のサーバだ。
昨今のマシンであれば仮想環境で運用させられる。
Xenへ移行させてしまおう。
そんな事例を聞いた事が無い…気がする。
まずはやってみよう。
軽い乗りで移行作業が進められた。
作業概要
古いサーバ側
- 論理移転用ディスクイメージdisk.img作成
- 作成したイメージdisk.imgをマウント
- 「/」からrsyncしてレプリカを作成
- rsync済のdisk.imgを移転先へ転送
- 受け入れ用DomainUを構築しておく
- 古いサーバ側で生成したイメージをdisk.imgとして配置
- DomainUを起動
いざ、論理移転
dfで容量を確認。
30G以内だったので、今回は30Gとする。
# cd /tmp # mkdir xen # cd xen # df # dd if=/dev/zero of=disk.img count=$((1024 * 30)) bs=1Mext3でフォーマット
# mkfs.ext3 disk.imgdisk.imgをマウント
# mount -t ext3 -o loop ./disk.img /mnt/looprsyncで「/」から同期。
この時、disk.imgは同期対象外とする。
# cd / # rsync -Hax / /mnt/loop --exclude tmp/xen/disk.img # umount /mnt/loopXen環境サーバへイメージファイルを転送
# scp tmp/xen/disk.img $(remote):/tmp/.方法は何でも良い。
今回はxen-create-imageで環境を構築して、disk.imgを入れ替えた
$ sudo xen-create-image --ip=192.0.2.21 --netmask=255.255.255.0 --gateway=192.0.2.1 --broadcast=192.0.2.255 --hostname=skel --size=2Gb --memory=256Mb --swap=1024Mbdisk.imgを入れ替える
$ cd /home/xen/domains/skel $ sudo mv -i /tmp/disk.img ./.一時的にdisk.imgをマウント
$ sudo mkdir /mnt/loop $ sudo mount -o loop disk.img /mnt/loopchroot(chrootしなくても良い。必須作業ではない。)
$ sudo chroot /mnt/loop /bin/bashゴッソリ書き換えてしまう。
swapと「/」パーティションである事が前提
# vi /etc/fstab proc /proc proc defaults 0 0 /dev/sda1 none swap sw 0 0 /dev/sda2 / ext3 noatime,nodiratime,errors=remount-ro 0 1Xen環境にあわせる
# vi /etc/network/interfaces不要なので2〜6はコメントアウト
# cp -p /etc/inittab /tmp/inittab.$$ # vi /etc/inittab # diff /tmp/inittab.$$ /etc/inittab < 2:23:respawn:/sbin/getty 38400 tty2 < 3:23:respawn:/sbin/getty 38400 tty3 < 4:23:respawn:/sbin/getty 38400 tty4 < 5:23:respawn:/sbin/getty 38400 tty5 < 6:23:respawn:/sbin/getty 38400 tty6 --- > #2:23:respawn:/sbin/getty 38400 tty2 > #3:23:respawn:/sbin/getty 38400 tty3 > #4:23:respawn:/sbin/getty 38400 tty4 > #5:23:respawn:/sbin/getty 38400 tty5 > #6:23:respawn:/sbin/getty 38400 tty6chrootから抜ける
# exitDomainUを起動
$ sudo xm create /etc/xen/domains/skel.cfg -c起動して来る事を確認出来たら作業完了。
無事に引退。振り返り
Xenは便利でお手軽だ。
- 静かになった
- サーバ稼動時はファンとディスクが五月蝿かった。
- パフォーマンス向上
- 嬉しい誤算
- よく考えてみると、ハードウェアが良くなったから当たり前か。
あくしゅでは積極的にXenを使って開発して行く。
開発環境だけでなく、本番環境共にXenで良いと思う。
面白い検証データが取れたら随時公開予定。
2008年06月25日
/etc/xen-tools/xen-tools.confの内容
何となく落ち着いた設定がこれ。
あとは必要に応じてxen-create-imageのオプションを指定する。
$ egrep -v '^#|^$' /etc/xen-tools/xen-tools.conf dir = /home/xen install-method = debootstrap size = 8Gb # Disk image size. memory = 256Mb # Memory size swap = 128Mb # Swap size fs = ext3 # use the EXT3 filesystem for the disk image. dist = etch # Default distribution to install. image = sparse # Specify sparse vs. full disk images. kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` arch=i386 mirror = http://ftp.us.debian.org/debian/ ext3_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro xfs_options = defaults reiser_options = defaults output = /etc/xen/domains
Software Design (ソフトウエア デザイン) 2008年 05月号 [雑誌]
posted with amazlet at 08.06.25
技術評論社
2008年06月23日
DebianにCentOS4の仮想環境を作ろう
コマンドが異常終了した。
$ sudo xen-create-image --install-method rinse --dist centos-4 --hostname centos4
早速ログ確認すると、
何てこった…参照先が存在しない。
どこかに設定ファイルがあるはずなので探してみる。
debian$ cd /etc/ debian$ grep http://anorien.csc.warwick.ac.uk/ -r . -l 2>/dev/null ./rinse/rinse.confなるほど。
ミラーサイト設定を変更
$ cd /etc/rinse $ sudo cp -pi rinse.conf rinse.conf.0 $ sudo vi rinse.conf
$ diff rinse.conf.0 rinse.conf 14,15c14,15 < mirror = http://anorien.csc.warwick.ac.uk/mirrors/centOS/4.6/os/i386/CentOS/RPMS/ < mirror.amd64 = http://anorien.csc.warwick.ac.uk/mirrors/CentOS/4.6/os/x86_64/CentOS/RPMS/ --- > mirror = http://ftp.riken.jp/Linux/centos/4.6/os/i386/CentOS/RPMS/ > mirror.amd64 = http://ftp.riken.jp/Linux/centos/4.6/os/x86_64/CentOS/RPMS/ 19,20c19,20 < mirror = http://anorien.csc.warwick.ac.uk/mirrors/centos/5/os/i386/CentOS/ < mirror.amd64 = http://anorien.csc.warwick.ac.uk/mirrors/centos/5/os/x86_64/CentOS/ --- > mirror = http://ftp.riken.jp/Linux/centos/5/os/i386/CentOS/ > mirror.amd64 = http://ftp.riken.jp/Linux/centos/5/os/x86_64/CentOS/これで上手く行った。
まとめ
環境
- Domain0がDebian
- DomainUをCentOSとする場合
- つまり、install-methodをrinseとする場合
解決方法
- /var/log/xen-tools/を確認
- ミラー先に問題がある場合は/etc/rinse/rinse.confを変更
- 再度xen-create-imageを実行して確認

![Software Design (ソフトウエア デザイン) 2008年 05月号 [雑誌]](http://ecx.images-amazon.com/images/I/51jslKZeOwL._SL160_.jpg)