Xen 3.0.4(XenExpressのCentOS 5へのアップグレード)
XenExpress本体(XenServer)はCentOS 4.4をベースにしたOSですがGUI環境は付いていません。
CentOS 4.4とCentOS 5ではデスクトップ環境も異なっておりCentOS 5の方が操作性が向上しています。
ここでは既にCentOS 4.4のGUI環境を導入したXenExpress本体をCentOS 5にアップグレードする手順を紹介します。
CentOS 4.4のGUI環境を導入したXenExpressをCentOS 5にアップグレード(CentOS 5のインストールCDを使用したアップグレードインストール)では
XenExpress環境が一部破壊されたりXenExpressがバージョン固定で意識している共有ライブラリのバージョンが変わってしまうという事態が発生します。
※ここでの「破壊」とはCentOS 5へのアップグレード時にXenExpressが元々持っていたファイルが削除されたりすることを指します。
このためそれらの問題を回避する作業もアップグレード作業の一環として必要となります。
ここでは以下のステップが既に完了していることを前提にしています。
(1)XenExpress(XenServer)のインストール
(2)パーティション構成の変更(/usrに割当てるパーティション4として4GB以上を割当)
※GUI環境を導入した/dev/hda1の空き容量はyum clean allを実行しても460MB程度しかなくCentOS 5へのアップグレードインストールができません(2GB程度の空きは必要です)。
(3)XenServerへの日本語GNOME環境の導入
(4)XenServer管理コンソールのインストール
(5)ゲストOSのインストール
(6)vncクライアントのインストール
ここから先のCentOS 5へのアップグレードの流れは以下のようになります。
※CentOS 5付属の通常カーネルの利用は前提としていません。
- XenExpressのディレクトリバックップ
CentOS 5へのアップグレードで破壊されるディレクトリ(/boot, /dev, /lib/modules)のバックアップをここで取得しておきます。
- CentOS 5のアップグレードインストール
CentOS 5のインストールメディア(今回はDVD使用)によるCentOS 5へのアップグレードインストールを行います。
アップグレードインストールではパッケージの選択はできず、更にXenExpressの一部のディレクトリが破壊されます。
※XenExpressのデーモンの一部(xenagentd)の自動起動もできない状態になります。
- XenExpressのディレクトリ復旧
CentOS 5へのアップグレードインストールで破壊されたディレクトリを復旧します。
- パッケージの追加・変更と環境設定変更
一部のパッケージを追加・変更します。
またXenExpressを動作させるための設定を復旧させます。
1.事前に準備するもの
CentOS 5へのアップグレードにあたって必要となる以下のものを事前に準備しておきます。
- centos-release-4-4.2.i386.rpm
CentOS 5のインストーラにXenExpressがCentOS 4.4であると認識させるために必要なパッケージです。
※CentOSのミラーサイトやCentOS 4.4インストールメディアに含まれています。
- CentOS 5にアップグレード後のXenServerブートエラー回避用CentOS 4.4付属パッケージ
(1)hotplug-2004_04_01-7.7.i386.rpm
(2)initscripts-7.93.25.EL-1.centos4.i386.rpm
(3)hal-0.4.2-4.EL4.i386.rpm
(4)udev-039-10.15.EL4.i386.rpm
※これらのrpmパッケージはCentOSのミラーサイトやCentOS 4.4インストールメディアに含まれています。
- CentOS 5インストールメディア
XenExpressをCentOS 5にアップグレードインストールするために使用します。
- LiveCD
XenExpressからCentOS 5へのアップグレードインストール直後はXenExpressを正しくブートできません。
このためCentOS 5へのアップグレードインストールで破壊されたディレクトリを復旧するためにKNOPPIX等のLiveCDを使用します。
2.XenExpressのディレクトリバックップ
XenExpressをブートして/boot, /dev, /lib/modulesディレクトリをバックアップします。
アップグレードインストールで/boot, /dev, /lib/modulesディレクトリは次のようになります。
(1)/boot
/boot/vmlinuz-2.6-xenのリンク先の/boot/vmlinuz-2.6.16.38-xs3.2.0.531.3960xenが/boot/vmlinuz-2.6.18-8.el5xenに置き換わってしまいます。
(2)/dev
/devからMAKEDEV, initctl, null以外のものがすべて削除されてしまいます。
(3)/lib/modules
/lib/modules/2.6.16.38-xs3.2.0.531.3960xenにはextraとkernelしか残らず、重要なmodules.dep等のファイルが削除されます。
/boot, /dev, /lib/modulesディレクトリは以下のようにしてバックアップしておきます(xeorgのxeはXenExpressの頭文字を示しています)。
# cp -Ra /boot /boot.xeorg
# cp -Ra /dev /dev.xeorg
# cp -Ra /lib/modules /lib/modules.xeorg
3.XenExpressのCentOS 5へのアップグレードインストール準備
CentOS 5のインストーラにXenExpressがCentOS 4.4であると認識させるために必要なcentos-release-4-4.2.i386.rpmをインストールします。
XenExpressにはXenExpress用になったcentos-release-4-4.2.i386.rpmパッケージがインストールされています。
そのためrpmコマンドで--forceオプションを指定します。
# cp -a /etc/redhat-release /etc/redhat-release.xeorg
この/etc/redhat-release.xeorgの内容は「XenServer release 3.2.0-2004d (xenenterprise)」となっています。
# rpm --force -ivh centos-release-4-4.2.i386.rpm
これによって/etc/redhat-releaseの内容が「CentOS release 4.4 (Final)」となります。
これでXenExpressのCentOS 5へのアップグレードインストール準備が完了したのでXenExpressをシャットダウンします。
4.CentOS 5のアップグレードインストール実行
CentOS 5のアップグレードインストールの実行手順は以下の通りです。
- CentOS 5インストールメディア(CD/DVD)からのブート
boot:プロンプトでEnterを押し、「CD Found」画面では<Skip>応答でよいと思います。
- Language選択
Japanese(日本語)を選択します。
- キーボード選択
日本語を選択します。
- インストールの種類
CentOS 5のインストーラが/etc/redhat-releaseを確認して既にCentOS 4.4が入っていると認識します。
そこで新規の<インストール>なのか<既存インストールのアップグレード>なのかを選択する画面が表示されます。
ここでは<既存インストールのアップグレード>を選択します。
※インストール済みシステムとしては「CentOS 4.4」が表示されます。
- ブートローダの設定
CentOS 5のインストーラは「インストーラは現在システムで使用中のブートローダを検出できません。どうします?」と尋ねてきます。
ここではデフォルトの<ブートローダの更新をスキップ>を指定します。
このオプションを選択すると既存の/boot/grub/menu.lstの内容に今回インストールされるカーネル用の下記エントリが追加されます。
(1)CentOS (2.6.18-8.el5xen)
(2)CentOS-base (2.6.18-8.el5)
- パッケージのインストール
パッケージがインストールされます。
Xenカーネルパッケージ(kernel-xen-2.6.18-8.el5.i686)や通常カーネル(kernel-2.6.18-8.el5.i686:33MB)もインストールされます。
yumで使用するリポジトリもCentOS 5用に変更されます。
- インストール完了後の再起動
インストール完了後に<再起動>ボタンを押しますが正しくブートできませんのでPCの電源をOffにします。
【補足】
GRUBメニューで「CentOS-base」エントリを選択してブートするとブートエラーが出て自動リブートが繰り返されます。
また既存のXenServerエントリを選択してブートしても「module /boot/vmlinuz-2.6-xen」の部分で「Error 15: File not found」エラーとなり停止します。
これは/boot/vmlinuz-2.6-xenのリンク先の/boot/vmlinuz-2.6.16.38-xs3.2.0.531.3960xenが/boot/vmlinuz-2.6.18-8.el5xenに置き換わったことに起因します。
5.XenExpressのディレクトリ復旧
CentOS 5にアップグレードされたXenExpressはブートできないためCentOS 5へのアップグレードインストールで破壊されたディレクトリを復旧します。
XenServerをブートできるようにするディレクトリ復旧操作は以下の通りです。
- LiveCDからのブート
今回はKNOPPIX 5.1.1のブータブルDVDからブートしました。
ネットワークはここでは使用しません。
- Root Shellの起動
KNOPPIX 5.1.1のRoot Shellを起動します。
- ディレクトリ復旧
XenExpressのパーティションをマウントしてディレクトリを復旧します。
# mount /dev/hda1 /mnt ※S-ATAディスクの場合はmount /dev/sda1 /mnt
# mv /mnt/boot /mnt/boot.aftupg
# cp -Ra /mnt/boot.xeorg /mnt/boot
# mv /mnt/dev /mnt/dev.aftupg
# cp -Ra /mnt/dev.xeorg /mnt/dev
# mv /mnt/lib/modules /mnt/lib/modules.aftupg
# cp -Ra /mnt/lib/modules.xeorg /mnt/lib/modules
# mv /mnt/etc/redhat-release /mnt/etc/redhat-release.centos5
# cp -a /mnt/etc/redhat-release.xeorg /mnt/etc/redhat-release
# umount /mnt
【補足】
(1)/mnt/etc/sysconfig/selinux中のSELINUX=enforcingをSELINUX=disabledに変更する作業は後で行います。
- シャットダウン
ここでシャットダウンします。
6.パッケージの追加・変更と環境設定変更
CentOS 5にアップグレードしたXenExpress(XenServer)をブートすると以下のようなメッセージが表示されます。
(1)Starting udev: udevd[1136]: add _to rules: invalid KERNEL operation
これはudevパッケージが新しくなって/etc/udev/rules.d/にあるファイルの旧文法の記述をエラーとしていることを示しています。
(2)Loading crash kernel: Cannot open `ro': stream error
(3)Warning: Physical Volume /dev/hda3 is too large for underlying device
(4)Starting HAL daemon: hald: error while loading shared libraries: libdbus-glib-1.so.0: cannot open shared object file: No such file or direcory
ここではこれらのメッセージを抑止するためのパッケージの追加・変更と環境設定変更を行います。
またyumコマンドを使用してLVM管理ツールを導入します。
※yumコマンドはCentOS 5の最新リポジトリからパッケージをインストールしてくれます。
- XenServerブート
XenServerをブートするとネットワークも利用できるように復旧しています。
- 物理ボリューム用パーティションのパーティションタイプ変更
/dev/hda3はLVMでの物理ボリュームになっていますがそのパーティションタイプは83(Linux)のままで8e(Linux LVM)になっていません。
そのためCentOS 5にアップグレードしてブートすると「WARNING Physical volume /dev/hda3 is too large for underlying device」警告が表示されます。
そこで以下のようにして/dev/hda3のパーティションタイプを8e(Linux LVM)に変更します。
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Command (m for help): w
# reboot
- CentOS 4.4用パッケージの強制インストール
ブート時のエラー回避のためにCentOS 4.4用パッケージを次のように強制インストール(ダウングレード)します。
# rpm -ivh hotplug-2004_04_01-7.7.i386.rpm
# rpm -Uhv --nodeps --oldpackage initscripts-7.93.25.EL-1.centos4.i386.rpm
# rpm -Uhv --nodeps --oldpackage hal-0.4.2-4.EL4.i386.rpm
# rpm -Uhv --nodeps --oldpackage udev-039-10.15.EL4.i386.rpm
- xenagentd(Xenエージェントデーモン)起動失敗対策等のためのリンク設定
XenExpressではxenagentdは自動起動される設定になっています。
しかしCentOS 5へのアップグレードによってxenagentdの起動で必要となるlibssl.so.4とlibcrypto.so.4が削除されてしまいます。
このため以下のリンク設定を行います。
# ln -s /lib/libssl.so.0.9.8b /lib/libssl.so.4
# ln -s /lib/libcrypto.so.0.9.8b /lib/libcrypto.so.4
# ln -s /usr/lib/libdbus-glib-1.so.2.0.0 /usr/lib/libdbus-glib-1.so.0
- /etc/sysconfig/selinuxの設定変更
# vi /etc/sysconfig/selinux
SELINUX=enforcingをSELINUX=disabledに変更します。
# reboot
- ゲストOSの動作確認
ここまでの作業終了後、既にインストール済みのゲストOSが動作することを確認しておきます。
- rpmパッケージの追加インストール
yumコマンドを使用して論理ボリューム管理ツールを導入します(LVM確認がGUIで行えて便利です)。
# yum install system-config-lvm
7.ゲストOSの追加
CentOS 5にアップグレードしてDebianのテンプレートからSargeを追加インストールしてみました。
特に問題なくインストール/実行できました(ネットワーク利用も問題ありません)。
しかしP2Vで別のVine Linux 4.0を追加したところ新しい論理ボリュームの他にその論理ボリューム(中身は空)に入るべきファイルを格納したワークディレクトリも作成されました。
ワークディレクトリの内容をその論理ボリュームにコピーした後でワークディレクトリを削除するという方法でも対応できます。
※このワークディレクトリは/dev/hda1内にできるため/dev/hda1の容量圧迫回避のため一時的に/SR-xxx/imagesを/dev/hda3に移動してP2Vを実行します。
※SRはStorage Repositoryの頭文字です。