どうにか例のUSBのワイヤレスネットワークカードを使いたいということで、なんか方法は無いかと考えた。
思いついた。
仮想化。
仮想化するしかないだろ。
ということで、仮想化といえばxen。
使ったこと無いけどやってみようということで、レッツトライ。
まず、うちのサーバ機の簡単なディスク構成。
# df -h Filesystem サイズ 使用 残り 使用% マウント位置 /dev/md1 9.2G 1.1G 7.7G 13% / tmpfs 2.0G 0 2.0G 0% /lib/init/rw udev 10M 236K 9.8M 3% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm /dev/sdc1 230G 130G 89G 60% /backup /dev/md0 92M 62M 25M 72% /boot /dev/md2 46G 4.4G 40G 11% /data /dev/md3 92G 23G 65G 26% /home /dev/md6 3.7G 72M 3.5G 3% /tmp /dev/md4 19G 1.5G 16G 9% /usr /dev/md5 19G 3.5G 14G 20% /var
本当に簡単ですいません。
とりあえず、SATAのディスクが3本ついてて、sda, sdbでミラーリングしてます。
sdcがバックアップ用のディスクですはい。
じゃ、そういうことでxenのインスコ。
# aptitude install xen-linux-system-2.6.26-2-xen-amd64
さて。
とりあえずインストールはした。
んで再起動してxenカーネルをgrubのメニューから選んで起動してみる。
怒られた。
"error: you need to load multiboot kernel first"
だそうだ。
サーバ機はgrub2なので、/boot/grub/grub.cfgをみてみる。
他のカーネルと同じ起動オプションになっている。
ところが、調べてみるとどうもそれではダメなようだ。
まず、multibootでxenカーネルを起動し、そこからLinuxカーネルを起動する形になるようだ。
xenの仕組みを考えると自然な流れだ。
ということで、grub.cfgにエントリを追加してみる。
menuentry “Xen 3.2-1-amd64″ {
insmod raid mdraid
set root=(md0)
search –fs-uuid –set 60d0003a-83aa-419a-a5ca-3868822cc6e7
multiboot /xen-3.2-1-amd64.gz dom0_mem=3G
module /vmlinuz-2.6.26-2-xen-amd64 root=UUID=7d0cecc1-e020-4d48-9ba4-77190cb2424c ro quiet
module /initrd.img-2.6.26-2-xen-amd64
}
基本的にはgrub2が自動生成したメニューをちょこっといじくった感じだ。
linux行とinitrd行をmoduleにして、その前にmultibootでxenそのものをロードするように記述。
dom0_memでドメイン0で利用するメモリ量を指定している。
ちなみにドメイン0ってのはホストドメインで、ドメインUがゲストドメインとなる。
そして再起動。
こけた。
なんかダンプはいて死んでる。
いろいろと起動の仕方変えてみたけどやっぱりダメ。
そこで、sidじゃなくて枯れてるやつ使ってみようということで
# aptitude install xen-linux-system-2.6.18-6-xen-amd64
として設定してみたけど、Unknown Interruptとかいわれてやっぱり死ぬ。
何が原因だろうかと思って調べてみたところ、こんなのを見つけた。
XenServer currently does not support software RAID of Dom0.
あ、はい。
おもいっきりソフトウェアRAIDでミラーリングしてます。
mdraid使ってますはい。
これはあきらめるかと思ったが、ひらめいた。
ゲストにしたいと思っていた32bitのカーネルの方をホストにしてやればいいんじゃね?
ざ・逆転の発想。
ということで、まず、バックアップ用のディスクのサイズを縮めようか。
今めいいっぱい使ってるんで。
# umount /dev/sdc
# e2fsck -f /dev/sdc1
# resize2fs -p /dev/sdc1 230G
resize2fs 1.41.5 (23-Apr-2009)
Resizing the filesystem on /dev/sdc1 to 55050240 (4k) blocks.
Begin pass 2 (max = 192656)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 1864)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 61920)
Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/sdc1 is now 55050240 blocks long.
# fdisk /dev/sdc
# mount /dev/sdc1
ということで、縮小した。
ちなみにファイルシステムを縮小するときは先に実データを縮めて、fdiskでパーティション領域を調整、拡大するときはfdiskで拡張してから実データを拡張するという流れ。
さて、次にやることはと。
あいた領域にxenのドメイン0となるホストOSを入れるのか。
ということで、またfdiskたたいて領域確保。
どうせたいしたことやらないし既存の方からブートもできるから、swapと/しか切らない。
さて、インストールと参りますか。
BIOSでファーストブートのHDDをsdcに設定。
ということで、lenny i686インストール完了。
標準環境しか入れていない。
で、再起動が走ったわけだが、問題が発生。
grubが起動しない。
これはgrubをMBRにインストールを選んだときに、sdcじゃなくてsdaにいれやがったな。
sdaに変えたらやっぱり起動した。
とりあえず、
# grub-install /dev/sdc
# update-grub
ということでsdcからブートできるように。
既存のサーバ環境が起動できない罠にはまりかけたが、幸いミラーリングしておいたsdbのMBRにもgrub2を入れておいたので、そっちからブートできた。
既存の環境で立ち上げ直して、sdaのMBRをgrub2に戻す。
# grub-install /dev/sda
# update-grub
さて、本番のxen起動だ。
同様の手順で32bitバージョンの方にgrub2とxenをインストールして、grub2の設定を書き書きして起動する。
が。
起動しない。orz
同じようなエラーだ。
そこで、ふと、grub2じゃなくてgrubにしてみることにした。
# aptitude install grub
# grub-install /dev/sdc
# update-grub
すると。
title Xen 3.2-1-i386 / Debian GNU/Linux, kernel 2.6.26-2-xen-686
root (hd2,2)
kernel /boot/xen-3.2-1-i386.gz
module /boot/vmlinuz-2.6.26-2-xen-686 root=/dev/sdc3 ro console=tty0
module /boot/initrd.img-2.6.26-2-xen-686
なんか違う。
console=tty0ってのがついてる。
これで立ち上げてみると。
コター。
立ち上がった。
ちょっと待て。
もしかするとだな。
メインの方で再起動。
そしてgrub.cfgを書き換える。
menuentry "Xen 3.2-1-amd64" {
insmod raid mdraid
set root=(md0)
search --fs-uuid --set 60d0003a-83aa-419a-a5ca-3868822cc6e7
multiboot /xen-3.2-1-amd64.gz dom0_mem=3G
module /vmlinuz-2.6.26-2-xen-amd64 root=UUID=7d0cecc1-e020-4d48-9ba4-77190cb2424c
ro console=tty0
module /initrd.img-2.6.26-2-xen-amd64
}
再起動。
あ、はい。
こけました。
そこで、grub2からgrubに変更。
title Xen 3.2-1-amd64 / Debian GNU/Linux, kernel 2.6.26-2-xen-amd64
root (hd0,0)
kernel /xen-3.2-1-amd64.gz
module /vmlinuz-2.6.26-2-xen-amd64 root=/dev/md1 ro console=tty0
module /initrd.img-2.6.26-2-xen-amd64
うっほ。
起動した。
mdraid使ってても起動するじゃない。
ソフトウェアレイドいけるじゃない。
そこで、よーく眺めてもう一回grub2で挑戦。
menuentry “Xen with Debian GNU/Linux, linux 2.6.26-2-xen-amd64″ {
set root=(hd0,1)
multiboot /xen-3.2-1-amd64.gz
module /vmlinuz-2.6.26-2-xen-amd64 root=/dev/md1 ro console=tty0
module /initrd.img-2.6.26-2-xen-amd64
}
あ、はい。
無理です。
grub2やめます。
grubにします。
ってかはじめっからgrubだったら簡単にいけたんじゃん。
もう朝ですよ。
grub2とか2ついてるくせに劣化してるじゃん。
知ってたけど。
ということでxenをチェック。
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 3877 2 r—– 27.5
ミエルヨー。
ドメイン0ミエルヨー。
んじゃ、わざわざOS入れたけど無駄になったパーティションを使ってドメインUを作ろうじゃないか。
# aptitude install xen-tools
# vi /etc/xen-tools/xen-tools.conf
xen-tools.confの設定。
dir = /home/xen
install-method = debootstrap
size = 4Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # 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.
dist = lenny # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.gateway = 192.168.1.1
netmask = 255.255.255.0
broadcast = 192.168.1.255kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`arch=i386
#mirror = http://ftp.us.debian.org/debian/
mirror = http://ftp.jp.debian.org/debian/ext3_options = noatime,nodiratime,errors=remount-ro
ext2_options = noatime,nodiratime,errors=remount-ro
xfs_options = defaults
reiser_options = defaults
そして続き。
# mkdir /home/xen
# mount /dev/sdc3 /home/xen
# xen-create-image –ip 192.168.1.100 –hostname i386
WARNING
——-You appear to have a “dummy” vif-script, or network-script, setting
in the Xen configuration file /etc/xen/xend-config.sxp.Please fix this and restart Xend, or your guests will not be able to
use any networking!General Information
——————–
Hostname : i386
Distribution : lenny
Partitions : swap 128Mb (swap)
/ 4Gb (ext3)
Image type : sparse
Memory size : 128Mb
Kernel path : /boot/vmlinuz-2.6.26-2-xen-amd64
Initrd path : /boot/initrd.img-2.6.26-2-xen-amd64Networking Information
———————-
IP Address 1 : 192.168.1.100 [MAC: 00:16:3E:FD:7D:81]
Netmask : 255.255.255.0
Broadcast : 192.168.1.255
Gateway : 192.168.1.1Creating partition image: /home/xen/domains/i386/swap.img
DoneCreating swap on /home/xen/domains/i386/swap.img
DoneCreating partition image: /home/xen/domains/i386/disk.img
DoneCreating ext3 filesystem on /home/xen/domains/i386/disk.img
Done
Installation method: debootstrap
DoneRunning hooks
DoneNo role scripts were specified. Skipping
Creating Xen configuration file
Done
All doneLogfile produced at:
/var/log/xen-tools/i386.log
なんかwarningでてるな。
まあ後回し。
ドメインを作成してコンソールをみてみる。
# xm create i386.cfg
# xm console i386
なんかエラーでてるけど起動はしてるようだ。
んで、問題はコンソールにつながるにはつながるんだけど、固まる。
ついでにipみえてないんですよね。
IPはあのwarningなんだろうな。
ということで/etc/xen/xend-config.sxpをみてみる。
関係しそうなところをみて、コメントアウトしてxendを再起動。
(network-script network-bridge)
おお。ping通った。
で、コンソールはどうしたものか。
こういうときは作り直してみるに限る。
xen-toolsの設定を眺める。
気になるけどスルーしたところがあったので、そこを設定。
#
# If you’re using the lenny or later version of the Xen guest kernel you will
# need to make sure that you use ‘hvc0′ for the guest serial device,
# and ‘xvdX’ instead of ‘sdX’ for serial devices.
#
# You may specify the things to use here:
#
# serial_device = hvc0 #default
serial_device = hvc0
# serial_device = tty1
#
#disk_device = xvda #default
disk_device = xvda
# disk_device = sda
#
xendの方もどうやら(network-script network-dummy)は高度なネットワーク設定に使うようなので、とりあえずコメントアウト。
/etc/xen/i386.cfgと/home/xen/domains/i386を一回消して再度作成し直す。
が、エラー。
何事かと思って/var/log/xen-tools/i386.logを見ると。。。
ftp.jp.debian.orgが落ちてる。
仕方ないのでusで設定して再チャレンジ。
usも落ちてる。
っていうか、security.debian.orgも落ちてる。
おかしいだろと思ってgoogleにpingうつと帰ってこない。
あ、はい。
こっちのネットワークがなんかおかしくなったようです。
networkingを再起動したら直りました。
すいません。
で、作り直した。
再びcreateしてconsoleやったら。
Debian GNU/Linux 5.0 i386 hvc0
i386 login:
コター。
とりあえずrootでログインしてパスワード設定。
んで。
外部に接続が通っていない。
xendのブリッジがうまく機能していない模様。
っていうかxenbrがifconfigたたいても生まれてない。
pethとvifはいるんだけどxenbrがいないから、vifとpethがつながってない状況だ。
ああ。
朝。
もうダメだ。
時間的に無理。
今日はここまで。

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Void « Default
Life
Earth
Wind
Water
Fire
Light 
[...] 仮想化に挑戦 [...]