2008/09/21

Ubuntu 8.04 Server(amd64)でXenを動かしてみる

引っ越しやら転職やらで忙しくしていたので、7.04のXenサーバーは使わなくなっていました。そこでまっさらなPCにUbuntu 8.04 Server amd64版を入れたところにXenを構成してみました。リリースされて随分経つのでUbuntu 8.04でXenを稼働させる事には大勢の先達がいらっしゃいます。
今回はその試行錯誤の結果を利用させてもらい、非常に簡単に立ち上げる事ができました。ほんの少しだけ自分なりの工夫を入れてXenでゲストOSを立ち上げる過程のメモを残します。

Ubuntu 8.04 Server amd64版を入れてからの大まかな流れは次のようになりました。

  1. "apt-get update", "apt-get upgrade"による最新版への更新
  2. /etc/modulesを編集してloopデバイスを増殖
  3. "shutdown -r now"による再起動
  4. "apt-get install ubuntu-xen-server"によるXen関連パッケージの一括導入
  5. Xenが有効になったカーネルで起動するため、再び再起動
  6. /etc/xen-tools/xen-tools.confの編集
  7. /usr/bin/xen-create-imageコマンドの修正
  8. xen-create-imageコマンドによるゲストOSイメージの導入
  9. xm createコマンドによるゲストOSの起動

Xenカーネルで起動するまで

まずはまともなUbuntuサーバーとして稼働するように最新版のパッケージに更新します。

$ sudo apt-get update
$ sudo apt-get upgrade
続いてloopデバイスの数を増やすために/etc/modulesファイルを編集します。 "loop"としか書かれていない行を編集して次のようにします。
$ grep loop /etc/modules
loop max_loop=256
upgradeの結果、kernelも新しいものが導入されていたりするので念のため再起動します。
$ sudo shutdown -r now
起動しきたら再びログインし、Xen関連のパッケージを導入します。
$ sudo apt-get install ubuntu-xen-server
無事に起動したらまた再起動します。
$ sudo shutdown -r now

ゲストOSを作る前の手続き

Xenのバージョンがかわり、結果として落とし穴が増えているようです。 試行錯誤の結果は残しませんが、次のようなところではまりました。

  • cfgファイル中でディスクイメージファイルを指定する方法が"file"から"tap:aio"に変更になった点
  • ディスクデバイス名が"sda"から"xvda"に変更になった点
  • シリアルデバイスファイルが"tty1"から”xvc0”に変更になった点
まずは作業を簡素化するために/etc/xen-tools/xen-tools.confを編集し、よく使う値を設定してしまいます。追加した設定行は"dir","gateway","netmask","broadcast","serial_device"の5行。修正したのは"mirror"の1行だけです。変更前後のdiff出力を載せます。unified formatじゃない方が見易いですよね。
$ diff /etc/xen-tools/xen-tools.conf.20080921 /etc/xen-tools/xen-tools.conf
45c45
< # dir = /home/xen
---
> dir = /home/xen
163,165c163,165
< # gateway   = 192.168.1.1
< # netmask   = 255.255.255.0
< # broadcast = 192.168.1.255
---
> gateway   = 192.168.1.1
> netmask   = 255.255.255.0
> broadcast = 192.168.1.255
214c214
< mirror = http://ftp.us.debian.org/debian/
---
> mirror = http://ftp.jp.debian.org/debian/
258c258
< # serial_device = xvc0
---
> serial_device = xvc0
"serial_device"の設定は必ず設定しなければなりません。 これをしないとゲストOSの起動時にコンソールに接続することができなくなります。 まぁsshdは起動しているのでdisk.imgをマウントしてrootにパスワードを設定するか、パスワードなしでのログインを許可すればネットワーク接続できるので、何とかなりますけれど。
さて続いては /usr/bin/xen-create-image コマンドの修正。なぜなら後からcfgファイルを編集して"file:"を"tap:aio:"に変換するのが面倒だから。なのでこれは"serial_device"行の編集と同じで必須ではないです。
変更内容は以下の通りですが、最初の":"(コロン)が削除されるようなので、少し変な感じになっています。
$ diff /usr/bin/xen-create-image.20080921  /usr/bin/xen-create-image

2411c2411
<         $partition->{'imagetype'} = 'file:';
---
>         $partition->{'imagetype'} = 'tap::aio';

ゲストOSの作成と起動

いろいろな試行錯誤の結果が xen-tools.conf と xen-create-image の修正に含まれているため、ここの作業は簡単です。
ここではホスト名を"xen63"、IPアドレスを"192.168.1.63"として、イメージの作成と起動は次のように行なえます。

$ sudo xen-create-image --hostname xen63 --debootstrap --ip 192.168.1.63
$ sudo xm create -c /etc/xen/xen63.cfg
後からxmのコンソールに接続したい場合には:
$ sudo xm console xen63
不具合があって強制終了したい場合には:
$ sudo xm shutdown xen63
"xm shutdown"では終了できず、"xm list"で延々と表示されてしまう向きには:
$ sudo xm destroy xen63
こんな感じで作業完了です。

0 件のコメント: