Oracle VM に関する検証 その4

投稿日: 2009年11月04日

<Oracle VM に関する検証 その4>
ペンネーム: カスクストレングス

前回は、仮想マシンを作成しゲストOSをインストールしてみました。
今回は、これまでご紹介できなかった Oracle VM を構築・運用する上で便利な
以下の機能に触れてみたいと思います。
– クローン
– テンプレートの保存
– Physical to Virtual
– Virtual to Virtual

また、最後に手動でディスクイメージを拡張する手順をご紹介します。

▼クローン

 クローンとは、既存の仮想マシンをコピーする機能です。
 別の Server Pool にコピーして他のユーザが使用できるようにしたり、ゲス
 トOSの設定変更前のバックアップとしてスナップショットを取る目的でも使
 用できます。
 一度に複数のコピー(最大10個)を作成することができ、コピー数と格納す
 る Server Pool や接頭辞などを指定して作成します。
 例えば、接頭辞に「ovmsv」と指定してクローンを行うと ovmsv1、ovmsv2、
 ovmsv3・・・ といった形でコピーが作成されます。
 
 筆者の環境では10GB程度の仮想マシンを1台コピーするの要した時間は、
 ほんの5分程度でした。

▼テンプレートの保存

 作成した仮想マシンをテンプレートとして保存し、これを基に仮想マシンを
 作成することができます。
 テンプレートは、/OVS/seed_pool/<テンプレート名> 配下に保存されます。
 中身は、基となった仮想マシンが設定を含めほぼそのまま保存されます。
 (MACアドレスなどの情報は保存されないようです。)

 こちらも筆者の環境では、10GB程度の仮想マシンからテンプレートを作成す
 るのに5分程度、またこのテンプレートから仮想マシンを作成するのに5分程
 度かかりました。
 かなりお手軽に出来ると思います。

▼Physical to Virtual

 Oracle VM では、物理マシンを仮想マシンへ変換する Physical to Virtual
 (P2V)による仮想マシンの作成がサポートされます。
 既存の環境を、仮想環境に移行する場合に使用します。

 P2Vによる仮想マシンの作成を行う際は、Oracle VM Server のインストール
 メディアから起動し、VM Manager を使用してネットワーク経由でインポー
 トを行う形になります。

▼Virtual to Virtual

 また、P2Vの他に Virtual to Virtual(V2V)による仮想環境の移行も可能
 です。具体的には VMware の仮想マシンを Oracle VM に変換することが出
 来ます。

 ご存知かもしれませんが、仮想化環境でOracle社のサポートを受けるには
 Oracle VM を採用する必要があります。
 既に VMware を使用されている方は多いと思いますので、ここでは VMware
 から Oracle VM へ V2V を行う手順をご紹介しようと思います。
 今回は、VMware Server で作成した仮想マシン(ゲストOSはRHEL5.3)を
 Oracle VM 環境に移行してみます。
 尚、作成した VMware の仮想マシンは、以下のような設定です。

               Processors : 1
                   Memory : 600MB
   Hard Disk 1 (SCSI 0:0) : 8.00 GB
        Network Adapter 1 : Bridged
        SCSI Controller 0 : LSI Logic

 V2V による変換を行う場合、仮想マシンの転送に FTP 若しくは HTTP を使
 用します。
 今回は、環境の都合で HTTP による転送を行ったため、WEB サーバを準備し
 Oracle VM からアクセス可能な場所に配置しました。

 ■WEBサーバ上に配置した VMware の仮想マシン
  Apacheを起動(apachectl start を実行)後 /var/www/html 配下に配置し
  ます。

  
  [root@server59 v2v]# pwd
  /var/www/html/v2v
  [root@server59 v2v]# ls -l
  total 2316524
  -rw-r--r-- 1 root root       8684 Nov  2 15:06 VirtualMachine.nvram
  -rw-r--r-- 1 root root 2369650688 Nov  2 15:06 VirtualMachine.vmdk
  -rw-r--r-- 1 root root          0 Nov  2 14:17 VirtualMachine.vmsd
  -rw-r--r-- 1 root root       2131 Nov  2 16:53 VirtualMachine.vmx
  -rw-r--r-- 1 root root        270 Nov  2 14:17 VirtualMachine.vmxf

 それでは、早速 V2V で変換を行ってみましょう。
 まず、Oracle VM Manager の「Resource」タブから「SelectedVirtual Machine
 Images」を選択し、「Import」ボタンをクリックします。
 「Source」には「Download from External Source (HTTP and FTP)」を選択
 します。
 マシンイメージの情報を入力する画面になるので、Server Pool など必要な
 情報を入力します。

 すると、マシンイメージの URL の入力を求められるので、VirtualMachine.vmx
 の URL を指定して仮想マシンのインポートを行います。
  (URLは任意ですが、参考までに筆者の構成では次の URL を指定しました。
    http://192.168.100.59/v2v/VirtualMachine.vmx )

 vmx ファイルを指定すると、自動的に V2V がおこなわれ、ステータスが
 「Importing(V2V):Running:Downloading VirtualMachine.vmx」となります。
 ダウンロードが終了すると、ステータスが「Pending」になるので、いつも
 のように「Approve」クリックして承認し使用可能な状態にします。

 変換された仮想マシンは、/OVS/running_pool 配下に配置されます。
 早速確認してみましょう。

 ■Oracle VM Server 上に V2V で配置された仮想マシン

  [root@ovmsv01 v2vtest01]# pwd
  /OVS/running_pool/v2vtest01
  
  [root@ovmsv01 v2vtest01]# ls -l
  total 8388610
  -rw-r--r-- 1 root root 8589934592 Nov  2 17:48 VirtualMachine.img
  -rw-rw-rw- 1 root root        518 Nov  2 17:14 vm.cfg
  -rw-rw-rw- 1 root root        455 Nov  2 17:12 vm.cfg.orig

 ディスクイメージが 8GB 既に確保されています。
 VMware では、必要に応じて領域を確保する設定も可能ですが、Oracle VM
 では必要な領域を先に確保します。
 VMware の感覚で使用しているとディスクがすぐに無くなってしまうので少
 し注意が必要かもしれません。

 VirtualMachine.vmx から変換された vm.cfg の一部を抜粋してみます。

  builder = 'hvm'
  memory = '600'
  name = 'v2vtest01'
  vcpus = 1
  vif = ['bridge=xenbr0,mac=00:16:3E:57:ED:92,type=ioemu']

 メモリや CPU数など設定が引継がれていますが、MACアドレスについては引
 継がれない様でした。MACアドレスを変更する場合は、vm.cfg を書換えます。
 また、V2V や P2V で作成された仮想マシンは、HVM(完全仮想化)となるよ
 うです。

さて、筆者は Oracle VM を使っていてディスクイメージの拡張が出来たらと
思う場面が多々ありました。最初から潤沢にディスクを用意できる環境なら良
いのですが、そうじゃない環境のでやりくりする場合これが出来るとかなり楽
になると思います。
既にディスクイメージの追加は簡単にできますが、将来 VM Manager からディ
スクイメージの拡張が簡単に出来るようになることを願いつつ、手動で拡張し
てみましょう。

▼ディスクイメージの拡張

 それでは先ほど V2V で作成したゲストマシンを使用してディスクイメージの
 拡張を行ってみましょう。
 まずは、ゲスト側で現在のサイズを確認します。確認出来たら、ゲストOSは
 停止しましょう。

  [root@V2V ~]# df -h
  Filesystem            Size  Used Avail Use% Mounted on
  /dev/mapper/VolGroup00-LogVol00
                        6.6G  2.1G  4.2G  33% /  ※1
  /dev/hda1              99M   12M   82M  13% /boot
  tmpfs                 296M     0  296M   0% /dev/shm

   ※1 今回はここを拡張します。

 次に VM Server 側でディスクイメージを拡張します。

  [root@ovmsv01 v2vtest01]# ls -lh VirtualMachine.img
  -rw-r--r-- 1 root root 8.0G Nov  2 18:39 VirtualMachine.img
  [root@ovmsv01 v2vtest01]# dd if=/dev/zero of=tmp.img bs=1024 count=1000000
  [root@ovmsv01 v2vtest01]# cat tmp.img >> VirtualMachine.img
  [root@ovmsv01 v2vtest01]# ls -lh *.img
  [root@ovmsv01 v2vtest01]# ls -lh VirtualMachine.img
  -rw-r--r-- 1 root root 9.0G Nov  2 18:51 VirtualMachine.img ※2

   ※2 1GB拡張されました。

 ループバックデバイスの設定をします。

  [root@ovmsv01 v2vtest01]# losetup -f
  /dev/loop0
  [root@ovmsv01 v2vtest01]# losetup /dev/loop0 VirtualMachine.img
  [root@ovmsv01 v2vtest01]# losetup -a
  /dev/loop0: [0803]:10313 (VirtualMachine.img)
  /dev/loop2: [000e]:5305 (/dev/cdrom)

 fdisk でサイズの変更を行います。
  (以下、誌面の都合で一部省略しています。)

  [root@ovmsv01 v2vtest01]# fdisk  /dev/loop0
  Command (m for help): p
  
        Device Boot      Start         End      Blocks   Id  System
  /dev/loop0p1   *           1          13      104391   83  Linux
  /dev/loop0p2              14        1044     8281507+  8e  Linux LVM

 /dev/loop0p2 をいったん削除してから再作成します。

  Command (m for help): d
  Partition number (1-4): 2
  
  Command (m for help): n
  Command action
     e   extended
     p   primary partition (1-4)
  p
  Partition number (1-4): 2
  First cylinder (14-1168, default 14):
  Using default value 14
  Last cylinder or +size or +sizeM or +sizeK (14-1168, default 1168):
  Using default value 1168

 /dev/loop0p2 のパーティションタイプを変更します。

  Command (m for help): t
  Partition number (1-4): 2
  Hex code (type L to list codes): 8e
  Changed system type of partition 2 to 8e (Linux LVM)
  Command (m for help): p
  
  Disk /dev/loop0: 9613 MB, 9613934592 bytes
  255 heads, 63 sectors/track, 1168 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  
        Device Boot      Start         End      Blocks   Id  System
  /dev/loop0p1   *           1          13      104391   83  Linux
  /dev/loop0p2              14        1168     9277537+  8e  Linux LVM
  
  Command (m for help): w

 ここからは、ゲスト側での作業になります。
 仮想マシンを起動し、物理ボリュームをリサイズします。

  [root@V2V ~]# pvscan
    PV /dev/hda2   VG VolGroup00   lvm2 [7.88 GB / 0    free]
    Total: 1 [7.88 GB] / in use: 1 [7.88 GB] / in no VG: 0 [0   ]
  [root@V2V ~]# pvresize  /dev/hda2
    Physical volume "/dev/hda2" changed
    1 physical volume(s) resized / 0 physical volume(s) not resized
  [root@V2V ~]# pvscan
    PV /dev/hda2   VG VolGroup00   lvm2 [8.84 GB / 992.00 MB free]
    Total: 1 [8.84 GB] / in use: 1 [8.84 GB] / in no VG: 0 [0   ]

 次に論理ボリュームを拡張します。
 1GB拡張を行おうとしましたが、領域が足りず失敗してしまいました。
 最初に dd コマンドでファイルを作成するときに、拡張したいサイズより
 若干余裕を持ったサイズを指定した方が良さそうです。

  [root@V2V ~]# lvscan
    ACTIVE            '/dev/VolGroup00/LogVol00' [6.72 GB] inherit
    ACTIVE            '/dev/VolGroup00/LogVol01' [1.16 GB] inherit
  
  [root@V2V ~]# lvresize -L +960M /dev/VolGroup00/LogVol00
    Extending logical volume LogVol00 to 7.69 GB
    Logical volume LogVol00 successfully resized

 最後にファイルシステムのサイズを変更します。

  [root@V2V ~]# resize2fs /dev/VolGroup00/LogVol00
  resize2fs 1.39 (29-May-2006)
  Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
  Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2015232 (4k) blocks.
  The filesystem on /dev/VolGroup00/LogVol00 is now 2015232 blocks long.

 確認してみましょう。

  [root@V2V ~]# df -h
  Filesystem            Size  Used Avail Use% Mounted on
  /dev/mapper/VolGroup00-LogVol00
                        7.5G  2.1G  5.1G  29% /
  /dev/hda1              99M   12M   82M  13% /boot
  tmpfs                 296M     0  296M   0% /dev/shm

 無事にディスクイメージの拡張が出来ました!
 Oracle VM についてはここまでです、ご購読ありがとうございました。

      急に寒くなってきましたね。          恵比寿より。