株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

社内検証用Oracle VM環境 を 3.1.xから 3.2.2に移行しました

弊社のx86系プラットフォーム検証環境はOracle VMをベースに構築しています。

上のエントリで書いたとおり、DELL PowerEdge T320という超お値打ちなサーバを見つけ、新規に購入したので、これを機に社内検証用Oracle VM環境 を 3.1.xから 3.2.2に移行しました。(下画面は Oracle VM Server 3.2.2で取得したxentop -fの実行結果。Xen 4.1.30ベースであることがわかります)

ovm322_xentop.jpg

Oracle VM環境をバージョンアップする方法として、マニュアル等で紹介されているバージョンアップ手順に従う方法と、新規に環境をゼロから構築して既存のVMを展開する方法の2つがあります。今回は以下の理由から、新規に環境をゼロから構築して既存のVMを展開する方法を使用することにしました。(過去のバージョンアップでも同様の手順を踏んでいます。)

  • Oracle VMをサポート対象外の使用方法で使用しており、標準のバージョンアップ手順が機能しないことが予想されること
  • 万が一標準のバージョンアップ手順に従った作業の中で、万が一トラブルが発生した場合、サポートを購入していないことから、トラブルシュートに手間取ることが予期されること
  • VM以外の設定(Oracle VM Serverの設定, Oracle VM Managerの設定)は、比較的項目、作業が少なく、再実施してもさほど手間ではないこと

Oracle VM 環境を構築されたことがある方であれば、お分かりかと思いますが、Oracle VM Server, Oracle VM Managerのインストール、設定はさほど面倒なものではありません。このため、問題は既存のVMを新しい環境に展開する点になります。弊社検証環境では、既存のVMをtar.gzで圧縮してバックアップしているため、これを展開し、新しい環境に併せて若干修正することで完了します。基本的には以下の作業が必要になります。

  • tar --sparse -zxvf [VMのtar.gzバックアップ]
  • VM構成ファイル vm.cfg に含まれる 環境依存情報の修正

上記の作業は比較的単純なものですが、すべてのVMに対して実施するのは面倒ですし、ミスを誘発する可能性もあります。実際、弊社検証環境には現在 45 のVMが存在しています。サポート業務を行う関係上、多くのバージョン、バリエーションの環境を保持しておく必要があるため、これだけ多くのVMがある形になっています。

[root@csov32s1 log]# vmlist |wc -l
45
[root@csov32s1 log]# vmlist
/OVS/1/l63x64b/vm.cfg         <= Oracle Database シングル (Oracle Linux 6.3)
/OVS/1/RAC_la205re/vm.cfg.1   <= Oracle Real Application Cluster 10.2.0.5
/OVS/1/RAC_la205re/vm.cfg.2
/OVS/1/RAC_lb106rw/vm.cfg.1   <= Oracle Real Application Cluster 11.1.0.6
/OVS/1/RAC_lb106rw/vm.cfg.2
/OVS/1/RAC_lb107re/vm.cfg.1   <= Oracle Real Application Cluster 11.1.0.7
/OVS/1/RAC_lb107re/vm.cfg.2
/OVS/1/RAC_lb201re/vm.cfg.1   <= Oracle Real Application Cluster 11.2.0.1
/OVS/1/RAC_lb201re/vm.cfg.2
/OVS/1/RAC_lb201ru/vm.cfg.1   <= Oracle Real Application Cluster 11.2.0.1
/OVS/1/RAC_lb201ru/vm.cfg.2
/OVS/1/RAC_lb202ru/vm.cfg.1   <= Oracle Real Application Cluster 11.2.0.2
/OVS/1/RAC_lb202ru/vm.cfg.2
/OVS/1/RAC_lb203ru/vm.cfg.1   <= Oracle Real Application Cluster 11.2.0.3
/OVS/1/RAC_lb203ru/vm.cfg.2
/OVS/2/l54x64a/vm.cfg         <= Oracle Database シングル (Oracle Linux 5.4)
/OVS/2/l54x64b/vm.cfg         <= Oracle Database シングル (Oracle Linux 5.4)
/OVS/2/l63x64a/vm.cfg         <= Oracle Database シングル (Oracle Linux 6.3)
/OVS/2/lb201rst/vm.cfg        <= Oracle Restart 11.2.0.1
/OVS/2/lb202rst/vm.cfg        <= Oracle Restart 11.2.0.2
/OVS/2/RAC_l54sdbx/vm.cfg.1   <= Oracle Real Application Cluster サンドボックス環境
/OVS/2/RAC_l54sdbx/vm.cfg.2
/OVS/2/RAC_l54sdbx/vm.cfg.3
/OVS/2/RAC_l54sdbx/vm.cfg.4
/OVS/2/RAC_la204ru/vm.cfg.1   <= Oracle Real Application Cluster 10.2.0.4
/OVS/2/RAC_la204ru/vm.cfg.2
/OVS/2/RAC_lb203on/vm.cfg.1   <= Oracle RAC One Node 11.2.0.3
/OVS/2/RAC_lb203on/vm.cfg.2   
/OVS/2/RAC_lb203on/vm.cfg.3
/OVS/2/RAC_lb203on/vm.cfg.4
/OVS/3/AVDF_lc10f/vm.cfg.1    <= Oracle Database Firewall 12.1
/OVS/3/AVDF_lc10f/vm.cfg.2
/OVS/3/AVDF_lc10f/vm.cfg.3
/OVS/3/AVDF_lc10f/vm.cfg.4
/OVS/3/c58xxx1/vm.cfg         
/OVS/3/c58my1/vm.cfg          <= MySQL
/OVS/3/c58my2/vm.cfg          <= MySQL
/OVS/3/l54dg1/vm.cfg          <= Oracle DataGuard
/OVS/3/la205gr1/vm.cfg        <= Oracle Enterprise Manager Grid Control 10.2.0.5
/OVS/3/la205gr2/vm.cfg
/OVS/3/lc101cc1/vm.cfg        <= Oracle Enterprise Manager Cloud Control 12.1.0.1
/OVS/3/lc102cc1/vm.cfg        <= Oracle Enterprise Manager Cloud Control 12.1.0.2
/OVS/3/xxx_xxf342/vm.cfg.0
/OVS/3/xxx_xxf342/vm.cfg.1
/OVS/3/xxx_xxf342/vm.cfg.2

移行作業のなかで面倒なのは「VM構成ファイル vm.cfg に含まれる 環境依存情報の修正」する作業なので、 vm.cfgをテンプレート化し、環境依存情報をコマンド1つでinjectできるようにしています。具体的には、以下のようなテンプレートを作成しておき、環境固有の変数値でテンプレート展開して、vm.cfgを作成するようにしています。

[root@csov32s1 log]# cat /OVS/1/RAC_la205re/vm.cfg.IN.1
name = '${VMMODIFIER}${VMMAINNAME}${VMNUM}'
uuid = '${UUID}'
vcpus = 1
memory = 2048
disk = [
'file:${VMROOT}/${VMMAINNAME}${VMNUM}_System.img,xvda,w',
   : 
'file:${VMROOT}/\${VMMAINNAME}_10G_spare2.img,xvdy,w!',
'file:${VMROOT}/\${VMMAINNAME}_10G_spare3.img,xvdz,w!',
]
vif = [
 'mac=xx:xx:xx:xx:${HEXMAC}:00,bridge=${BRIDGE_INTRA}',
 'mac=xx:xx:xx:xx:${HEXMAC}:01,bridge=${BRIDGE_VMPRIV1}',
 'mac=xx:xx:xx:xx:${HEXMAC}:02,bridge=${BRIDGE_VMPUB2}',
 'mac=xx:xx:xx:xx:${HEXMAC}:03,bridge=${BRIDGE_VMPUB3}',
 'mac=xx:xx:xx:xx:${HEXMAC}:04,bridge=${BRIDGE_VMPUB1}',
]
vif_other_config = []
vfb = ['type=vnc, vncunused=0, vnclisten=0.0.0.0, vncdisplay=${VNCPORT},keymap=ja']

bootloader = '/usr/bin/pygrub'
on_reboot = 'restart'
on_poweroff = 'destroy'
on_crash = 'restart'
[root@csov32s1 log]# vmupdatecfg /OVS/1/RAC_la205re/vm.cfg.IN.1
[root@csov32s1 log]# cat /OVS/1/RAC_la205re/vm.cfg.1
name = 'VM066_la205re1'
uuid = '6008a060-0b56-485b-beed-07b0b474689e'
vcpus = 1
memory = 2048
disk = [
'file:/OVS/1/RAC_la205re/la205re1_System.img,xvda,w',
'file:/OVS/1/RAC_la205re/la205re1_Swap.img,xvdb,w',
  : 

このような作業が比較的短時間で、比較的ミスが少なくできるのは、コマンドラインによる操作とスクリプトによる省力化のおかげです。(やっぱり GUI は好きになれません)

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ