Xen ExpressをマルチOS環境へ引っ越す
XenとVMwareを使い分けるたびに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の筈だ。