Xen ExpressをマルチOS環境へ引っ越す

XenVMwareを使い分けるたびにHDDを交換するのは面倒くさい。ということで、「Fedoraのダブルインストール」で紹介したHDDのパーティション /dev/sda5へ引っ越すことを試みた。(結果的には失敗、というか未だ完全には出来ていない。否、出来た。最終的にXenの環境は他のHDDへ引っ越せたを参照)

手順の概要だけ記しておこう。

Xenをインストールしたディスクにはルートファイルシステム(/dev/sda1)をバックアップする目的としてまったく同じ大きさの /dev/sda2が作られている。インストールした直後はmkfsもしていない状態だった。ここ使ってルートファイルシステムをtarすると共に、イメージバックアップをとっておく。

まず、適当なLiveCDで立ち上げる(わたしの場合は手近にあったFedora 7のLiveCDを使った)。次にrootでログインして、

# mkfs /dev/sda2
# mkdir /mnt1 /mnt2
# mount /dev/sda1 /mnt1
# mount /dev/sda2 /mnt2
# cd /mnt1
# tar zpcf /mnt2/XenRootFS.tar.gz .
# umount /mnt1
# umount /mnt2

これで作ったtarファイルをネットワーク経由などで他のマシンにコピーしておく。
次に、念のためにルートのバックアップを作っておく。

# dd if=/dev/sda1 of=/dev/sda2 ob=8016372
# mount /dev/sda1 /mnt1
# mount /dev/sda2 /mnt2
# ls /mnt1 /mnt2
# shutdown now

ちなみにsda1はシリンダ1〜499、sda2はシリンダ400〜998のそれぞれ499シリンダ、約4Gバイトなっている。残りは /dev/sda3としてXenのStorage Repositoryに割当てられている。

次にHDDをマルチOS用のものと交換してVMware(/dev/sda7)を指定してブート。Xen用に確保していた(/dev/sda5、VMwareで起動しているときは /foreign にマウントしてある)パーティションに先程取ったtarファイルを使ってファイルシステムを再現する。(パーティションの構成に関してはFedoraのダブルインストールを参照のこと。)まず、ネットワーク上のサーバに退避しておいたtarファイルを/homeにコピーしてくる。次にそれを展開していく。

# cd /foreign
# rm -rf *
# tar zxvpf /home/XenRootFS.tar.gz

次に/foreign/etc/fstabを次のように変更する。オリジナルのfstabは次の通り:

LABEL=/-main    /         ext3     defaults   1  1
/var/swap/swap.001          swap      swap   defaults   0  0
none        /dev/pts  devpts defaults   0  0
none        /dev/shm  tmpfs  defaults   0  0
none        /proc     proc   defaults   0  0
none        /sys      sysfs  defaults   0  0

これを次のように変更する:

/dev/sda5		/			ext3	defaults	1 1
/dev/sda2		/boot			ext3	defaults	1 2
/dev/sda7		/foreign		ext3	defaults	1 2
/dev/sda6		/home			ext3	defaults	1 2
none			/dev/pts		devpts	defaults	0 0
none			/dev/shm		tmpfs	defaults	0 0
none			/proc			proc	defaults	0 0
none			/sys			sysfs	defaults	0 0
/dev/sda3		swap			swap	defaults	0 0

次にブート関連のファイルを設定する。Xenはルートファイルシステム内の/bootにファイルを格納しているが、引っ越す環境では/dev/sda2を/bootにマウントしているのでファイルをコピーする必要がある。

# cd /foreign/boot
# cp *-2.6.16.38-* /boot
# cp xen-3.0.4.1* /boot

LinuxカーネルのバージョンやXenのバージョンは適宜合わせてコピーする。
次に、grub.confを変更する。/boot/grub/grub.confに次のエントリーを追加する。

title XenServer
	root (hd0,1)
	kernel /xen-3.0.4.1.gz dom0_mem=524288 lowmem_emergency_pool=16M crashkernel=32M@32M
	module /vmlinuz-2.6.16.38-xs3.2.0.531.3960xen root=/dev/sda5 ro console=tty0
	module /initrd-2.6.16.38-xs3.2.0.531.3960xen.img

これで「XenServer」をしていして立ち上げればOKの筈だ。