[VM] Converting a PV vm back into an HVM vm

Oracle VMのベンチマークを実施してきたところ、準仮想化カーネルベースのVMを、普通のハードウェアとして起動する標準x86-64カーネルのVMに変換したくなりました。
最速の方法を見つけるには少々時間がかかりましたが、この手順を共有しようと思います。

PVカーネルはpygrubを使い、ParaVirtualカーネルイメージを使っています。これはVMイメージ仮想ディスク上にあります。このディスクイメージはブートセクタが存在しないためブートできません。VMを完全仮想化モードで再起動する場合、ディスクからのブートができないために仮想BIOSは起動できません。なので、まずやるべきことはVM構成ファイル(vm.cfg)のバックアップを取ってから以下のように編集をします。
もとのファイルに含まれる以下の記述を…
bootloader = '/usr/bin/pygrub'
このように変更します。
acpi = 1apic = 1builder = 'hvm'device_model = '/usr/lib/xen/bin/qemu-dm'kernel = '/usr/lib/xen/boot/hvmloader'
この後、ディスクファイルを書き換えます。
xvdディスクをhdディスクに変更し、インストールDVDのISOイメージをコピーします。今回のVMテンプレートの場合、Oracle Linux 5 Update 4ベースなので、Enterprise-R5-U4-Server-x86_64-dvd.isoをダウンロードし、CDデバイスとして追加します。以下の設定から…
disk = ['file:/ovs/OVM_EL5U4_X86_64_11202RAC_PVM/System.img,xvda,w','file:/ovs/OVM_EL5U4_X86_64_11202RAC_PVM/Oracle11202RAC_x86_64-xvdb.img,xvdb,w',]
次のように変更します。
isk = ['file:/ovs/OVM_EL5U4_X86_64_11202RAC_PVM/System.img,hda,w','file:/ovs/OVM_EL5U4_X86_64_11202RAC_PVM/Oracle11202RAC_x86_64-xvdb.img,hdb,w','file:/ovs/OVM_EL5U4_X86_64_11202RAC_PVM/Enterprise-R5-U4-Server-x86_64-dvd.iso,hdc:cdrom,r',]boot='d'
ネットワークデバイス(vifs)については、
vif = ['bridge=xenbr2,type=netfront']
から、以下のように変更します。
vif = ['bridge=xenbr2,type=ioemu']
次に、VM内への変更です。通常のカーネルRPMパッケージをコピーし、HVMモードで起動できるようにします。この例の場合、kernel-2.6.18-164.0.0.0.1.el5.x8664.rpm を /root にコピーしました。これを後で使います。

この時点で、VMをxmから起動し、vm.cfgを作成し、VNCコンソールを起動してvmコンソールに接続します。Oracle LinuxはISOイメージから起動してインストール画面に到達するので、再インストールではなく、既存システムのアップグレード(UPgrade existing)を選択します。VMはISOイメージと同じなので、実際には何をするわけでもなく、すぐに終了します。”再起動”ボタンが表示されても再起動せず、Alt+F2を押してコマンドプロンプトのコンソールに移り、以下のコマンドを実行します。
umount /mnt/sysimage/bootcd /mnt/sysimagechroot .mount /dev/hda1 (/bootパーティションが/dev/hda1の場合)export PATH=/sbin:$PATH
/etc/modprobe.conf を編集して、行頭に#を入れてxenモジュールをコメントアウトします。

続いて、grubをインストールします。/bootがhda1にある場合は、(hd0,0)と設定します。
$ grub
root (hd0,0)
setup (hd0)
exit grub
これでブートセクタができ、grubもインストールし、grub.confファイルもできました。続いて新しいカーネルをインストールします。
cd root (PVイメージの古い /root)
rpm -ivh (カーネルのRPMパッケージ)
このあと、vm.cfgから boot='d' の記述を削除もしくはコメントアウトし、VMを再起動すると、通常のgrubが立ち上がり、環境がロードされるはずです。

注意
ファイルシステムのラベルを使用する前提で記述しています。/etc/fstabでデバイスを使用している場合、再起動する前に名前を変更する必要があります。/dev/xvda ディスクを使っている場合、/dev/hda もしくは /dev/sda にする必要があります。

原文はこちら。
http://blogs.oracle.com/wim/2011/01/converting_a_pv_vm_back_into_a.html

0 件のコメント:

コメントを投稿