2012年12月31日月曜日

Oracle JeOSを使ってみる(4回目)

Oracle Linux の JeOSイメージからVMを作成してみます。
今回はもう少しカスタマイズしてみます。

modifyjeos にオプションを追加してみます。
  • -S →SWAPサイズを指定
  • -P →追加ディスクを指定(テンプレートに製品を追加するために使用)
  • -dir → VM構成ファイルを出力するディレクトリを指定。
  • -selinux →SELinuxの有効化/無効化を指定。

JeOSイメージからVM作成
[root@ovs11 ~]# modifyjeos -i EL52_i386_PVM_jeos -n EL52_vm4 \
> -mem 512 -cpu 1 \
> -S 512 -T 2048 \
> -P disk_u01.img 1024 /u01 \
> -dir /OVS/running_pool/EL52_vm4 \
> -selinux disabled
Please wait while VM image is being instantiated...
Depending on your system this can take a few minutes!
Processing disk_u01.img product image...
Mounting VM image...
Unmount VM image...
Resizing VM System image file...
Please wait while expanding the image file...
Please wait while expanding the filesystem...
Please wait while creating the swap partition...
Mounting VM image...
Mounting product image disk_u01.img...
Persisting mount point /u01 ...
Configuring SElinux for: disabled
Unmount VM image...
Successfully created JeOS image files...

[root@ovs11 ~]#

作成されたファイル

標準で作成される System.img、vm.cfg 以外に
-Pオプションで指定したdisk_u01.img ファイルが作成されています。
-dirで指定したディレクトリ(/OVS/running_pool/EL52_vm4)は自動作成されました。

[root@ovs11 ~]# ls -lh /OVS/running_pool/EL52_vm4
total 753M
-rw-r--r-- 1 root root 1.0G Dec 31 22:35 disk_u01.img
-rw-r--r-- 1 root root 2.1G Dec 31 22:36 System.img
-rw-r--r-- 1 root root  308 Dec 31 22:35 vm.cfg
ディスクイメージファイルは、実際に使用している領域のみが確保されています。
[root@ovs11 ~]# du -sh /OVS/running_pool/EL52_vm4/*
34M     /OVS/running_pool/EL52_vm4/disk_u01.img
719M    /OVS/running_pool/EL52_vm4/System.img
0       /OVS/running_pool/EL52_vm4/vm.cfg

設定ファイル(vm.cfg)のディスク指定は、-dir オプションの指定に関係なく
/OVS/seed_pool 配下になっています。
[root@ovs11 ~]# cat /OVS/running_pool/EL52_vm4/vm.cfg
bootloader = '/usr/bin/pygrub'
disk = ['file:/OVS/seed_pool/EL52_vm4/System.img,xvda,w',
        'file:/OVS/seed_pool/EL52_vm4/disk_u01.img,xvdb,w']
memory = '512'
name = 'EL52_vm4'
vcpus = 1
on_crash = 'restart'
on_reboot = 'restart'
vfb = ['type=vnc,vncunused=1,vnclisten=0.0.0.0']
vif = ['type=netfront']
 ディスクイメージファイルの指定は手動で変更します。
[root@ovs11 ~]# vi /OVS/running_pool/EL52_vm4/vm.cfg

disk = ['file:/OVS/seed_pool/EL52_vm4/System.img,xvda,w',
        'file:/OVS/seed_pool/EL52_vm4/disk_u01.img,xvdb,w']
↓(編集)
disk = ['file:/OVS/running_pool/EL52_vm4/System.img,xvda,w',
        'file:/OVS/running_pool/EL52_vm4/disk_u01.img,xvdb,w']

VMを起動して確認

VMを起動して、そのままコンソール接続(-c オプション) します。
[root@ovs11 ~]# xm create /OVS/running_pool/EL52_vm4/vm.cfg -c
Using config file "/OVS/running_pool/EL52_vm4/vm.cfg".

VMにログインして、カスタマイズした構成を確認してみます。

ディスク・パーティション構成
コマンドラインで指定したディスク(/u01とSWAP領域)が追加されています。
  • SWAP領域 → /dev/xvda3 として追加。
  • /u01 → /dev/xvdb1 として追加。
[root@localhost ~]# fdisk -l
Disk /dev/xvda: 2155 MB, 2155023360 bytes
255 heads, 63 sectors/track, 262 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1          12       96358+  83  Linux
/dev/xvda2              13         196     1477980   83  Linux
/dev/xvda3             197         262      530145   82  Linux swap / Solaris
Disk /dev/xvdb: 1073 MB, 1073741824 bytes
64 heads, 32 sectors/track, 1024 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1               2        1024     1047552   83  Linux
/u01はfstabに自動マウント設定が追記されています。マウント済みです。
[root@localhost ~]# cat /etc/fstab
LABEL=/          /          ext3    defaults        1 1
LABEL=/boot      /boot      ext3    defaults        1 2
tmpfs            /dev/shm   tmpfs   defaults        0 0
devpts           /dev/pts   devpts  gid=5,mode=620  0 0
sysfs            /sys       sysfs   defaults        0 0
proc             /proc      proc    defaults        0 0
LABEL=SWAP-VM    swap       swap    defaults        0 0
LABEL=disk_u01   /u01       ext3    defaults        1 2


[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda2            1.4G  493M  861M  37% /
/dev/xvda1             92M   11M   76M  13% /boot
tmpfs                 257M     0  257M   0% /dev/shm
/dev/xvdb1           1007M   18M  939M   2% /u01


(参考)
 [root@localhost ~]# blkid
/dev/xvda1: LABEL="/boot" UUID="a34cc519-2a2e-4c20-ae66-80e1f9a1154b" SEC_TYPE="ext2" TYPE="ext3"
/dev/xvda2: LABEL="/" UUID="df22f5b3-33d4-49a2-bd5f-753cb20afd34" SEC_TYPE="ext2" TYPE="ext3"
/dev/xvda3: LABEL="SWAP-VM" TYPE="swap"
/dev/xvdb1: LABEL="disk_u01" UUID="f47ad8cf-e785-41b8-b6e4-eddd9e6d8ebd" SEC_TYPE="ext2" TYPE="ext3"
スワップ情報
[root@localhost ~]# swapon -s
Filename        Type          Size    Used    Priority
/dev/xvda3      partition     530136  0       -1
SELinuxの設定
SELinuxもオプション指定どおり、無効になりました。
[root@localhost ~]# grep ^SELINUX= /etc/selinux/config
SELINUX=disabled
[root@localhost ~]# getenforce
Disabled

以上、JeOSイメージのカスタマイズでした。

2012年12月30日日曜日

Oracle JeOSを使ってみる(3回目)

Oracle Linux の JeOSイメージから、VMを作成してみます。


modifyjeos で JeOSイメージを編集した場合、
現在のディレクトリにファイル(System.imgとvm.cfg)が作成されます。

そのため、あらかじめVMを作成したいディレクトリを作成し、そこに移動しておきます。
作成場所は、OVSの標準的なVM配置場所である running_pool にします。
[root@ovs11 work]# cd /OVS/running_pool
[root@ovs11 running_pool]# mkdir EL52_vm1
[root@ovs11 running_pool]# cd EL52_vm1 

VMを作成します。
modifyjeosのオプションは、
  • -i →元にするJeOSイメージの名前。
  • -n →作成するVM名(もしくはVMテンプレート名)。ホスト名とは別のものです。
  • -cpu → VCPUの数
  • -mem →割り当てるメモリ容量(MB)
  • -T  → 仮想ディスクイメージ全体の容量(MB)
です。
[root@ovs11 EL52_vm1]# modifyjeos -i EL52_i386_PVM_jeos -n EL52_vm1 \
> -cpu 1 -mem 256 -T 2048
Please wait while VM image is being instantiated...
Depending on your system this can take a few minutes!
Mounting VM image...
Unmount VM image...
Resizing VM System image file...
Please wait while expanding the image file...
Please wait while expanding the filesystem...
Please wait while creating the swap partition...
Mounting VM image...
Configuring SElinux for: permissive
Unmount VM image...
Successfully created JeOS image files...
[root@ovs11 EL52_vm1]#
5分くらい待ったら完了しました。
VMを構成するファイル(System.imgとvm.cfg)が作成されています。
[root@ovs11 EL52_vm1]# ls -lh
total 735M
-rw-r--r-- 1 root root 2.1G Dec 30 20:53 System.img
-rw-r--r-- 1 root root 248 Dec 30 20:51 vm.cfg
自動生成される設定ファイルの内容です。
[root@ovs11 EL52_vm1]# cat vm.cfg
bootloader = '/usr/bin/pygrub'
disk = ['file:/OVS/seed_pool/EL52_vm1/System.img,xvda,w']
memory = '256'
name = 'EL52_vm1'
vcpus = 1
on_crash = 'restart'
on_reboot = 'restart'
vfb = ['type=vnc,vncunused=1,vnclisten=0.0.0.0']
vif = ['type=netfront']
デフォルトでは vm.cfg のディスクイメージファイルの指定が
/OVS/seed_pool ディレクトリ配下なので、
/OVS/running_pool 配下に書き換えます。
 [root@ovs11 EL52_vm1]# vi vm.cfg

disk = ['file:/OVS/seed_pool/EL52_vm1/System.img,xvda,w']
↓(書き換え)
disk = ['file:/OVS/running_pool/EL52_vm1/System.img,xvda,w']

作成したVMを起動してみます。
xm createコマンドに 「-c」 オプションをつけて
起動と同時に、VMにコンソール接続します。
[root@ovs11 EL52_vm1]# xm create vm.cfg -c

GRUBのOS選択画面が表示され、OSが起動する様子が見えます。



ゲストOSが起動したらログインします。
Enterprise Linux Enterprise Linux Server release 5.2 (Carthage)
Kernel 2.6.18-92.0.0.0.1.el5xen on an i686
localhost.localdomain login: root
Password: ★デフォルトのパスワードは「ovsroot」です。
[root@localhost ~]#
 VMの構成情報をゲスト側からも確認してみます。 VCPUは1つ割り当てられています。CPUのモデルは、物理CPUと同じものが表示されます。
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz
stepping : 7
cpu MHz : 1380.114
cache size : 6144 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu de tsc msr pae cx8 apic cmov pat clflush mmx fxsr sse sse2 nx constant_tsc up pni
bogomips : 3606.30
 メモリも、VMに割り当てた分だけ認識しています。。
[root@localhost ~]# free -m
             total  used  free  shared  buffers  cached
Mem:           256    96   159       0       18      31
-/+ buffers/cache:    46   209
Swap:            7     0     7

ディスクは全体容量が指定したサイズで、
 /(root) と /boot に分割されています。
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda2            1.9G  493M  1.4G  27% /
/dev/xvda1             92M   11M   76M  13% /boot
tmpfs                 129M     0  129M   0% /dev/shm
 仮想NICは eth0 として1つだけ作成されています。
[root@localhost ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:16:3E:70:C0:45
          inet addr:192.168.56.105  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::216:3eff:fe70:c045/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:56 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:9736 (9.5 KiB)  TX bytes:852 (852.0 b)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:696 (696.0 b)  TX bytes:696 (696.0 b)
sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
VMのコンソールから抜けたい場合は、
「 Ctrl + ] 」 キーを押します。 
以上、JeOSイメージからVMを作成する様子でした。

Oracle JeOSを使ってみる(2回目)

Oracle Linux の JeOSイメージをインストールしてみます。

JeOSイメージはRPM形式で提供されています。
使用したい Oracle Linux の JeOSイメージをOVSにインストールして、
modifyjeos でカスタマイズします。

Oracle Linuxの JeOSイメージも
ORACLEの e-Delibery からダウンロードします。(modifyjeosと同じ場所)
  • 「Cloudポータル」→「Oracle Linux/VM」を選択して、Linux/VM専用サイトへ。
  • パッケージを検索
    •  製品パックを選択: Oracle Linux
    •  プラットフォーム: 「x86 64bit」 もしくは 「x86 32bit」
  • 「Oracle Linux JeOS for Building Oracle VM Templates for XXX (?? bit) 」を選択
  • 使用したい Oracle Linux のバージョンのJeOSイメージをダウンロードします。
    「JeOS Oracle Linux X Update X ~」という名称です。
    Oracle Linux 5.x か 4.x のものしかありません。(OL6.xのJeOSはない)
    このRPMをインストールすると、PVM/HVM両方のJeOSテンプレートとして使用できます。

JeOSイメージのインストール

Oracle Linux 5.7 32bit のJeOSを、RPMでインストールしてみます。
[root@ovs11 work]# rpm -ivh ovm-el5u7-xvm-jeos-1.1.0-4.el5.i386.rpm
warning: ovm-el5u7-xvm-jeos-1.1.0-4.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:ovm-el5u7-xvm-jeos     ########################################### [100%]
インストールしたRPMの情報
[root@ovs11 work]# rpm -qi ovm-el5u7-xvm-jeos
Name : ovm-el5u7-xvm-jeos Relocations: (not relocatable)
Version : 1.1.0 Vendor: Oracle Corporation
Release : 4.el5 Build Date: Sat 10 Sep 2011 04:54:12 AM JST
Install Date: Sun 30 Dec 2012 01:08:04 PM JST Build Host: ca-build9.us.oracle.com
Group : Utilities Source RPM: ovm-el5u7-xvm-jeos-1.1.0-4.el5.src.rpm
Size : 185349129 License: Copyright 2007, 2011 Oracle. All rights reserved. See included EULA at /usr/share/doc/ovm-template-images/EULA for information on copying and redistribution.
Signature : DSA/SHA1, Sat 10 Sep 2011 04:59:01 AM JST, Key ID 66ced3de1e5e0159
Summary : Oracle Linux 5 Update 7 JeOS image for Oracle VM
Description :
Oracle Linux 5 Update 7 JeOS VM image for Oracle VM.
See the included EULA file for information on copying and redistribution.
RPMでインストールされたファイル
[root@ovs11 work]# rpm -ql ovm-el5u7-xvm-jeos
/usr/share/doc
/usr/share/doc/ovm-template-images
/usr/share/doc/ovm-template-images/EULA
/usr/share/doc/ovm-template-images/GPL
/var/lib/oraclevm-template/images
/var/lib/oraclevm-template/images/EL57_i386_xVM_jeos.img.bz2

modifyjeosの使い方
インストール済みのJeOSイメージは、modifyjeos で確認できます。
[root@ovs11 work]# modifyjeos -list
EL57_i386_HVM_jeos
EL57_i386_PVM_jeos

オプションなしで modifyjeos コマンドを実行すると、使用方法が表示されます。
[root@ovs11 work]# modifyjeos
modifyjeos version 1.1.0-17
Usage:
   modifyjeos { -i <VMImg> | -f <ImgFile> }
              [ -n <TmplName> ]
              [ { -a <AddLstF> -m <RPMDir> [ -m <RPMDir> ... ] } ]
              [ -p <PkgLstF> ]
              [ -e <DelLstF> ]
              [ { [ -I <RootPreSz> ] [ -R <RootPadSz> ] } | -T <TotalImgSz> ]
              [ -S <SwapSz> ]
              [ { -r <YUMRepoURI> [ <RepoKeyURI> ] } ... ]
              [ -l <DVDMntDir> ]
              [ -on <SvcList> ] [ -off <SvcList> ]
              [ -mem <MemSz> ]
              [ -cpu <NumCpu> ]
              [ -dir <TargetDir> ]
              [ { -P <ProdImg> <ProdSz> [<ProdMnt>] } ... ]
              [ -remove <ProdImg> ... ]
              [ -conf <ConfScr> ]
              [ -cln <CleanScr> ]
              [ { -pre-nochroot <PreScr> } ... ]
              [ { -pre <PreScr> } ... ]
              [ { -post-nochroot <PostScr> } ... ]
              [ { -post <PostScr> } ... ]
              [ -no-scripts ] [ -only-chroot-scripts ]
              [ -selinux <SElnxMode> ]
              [ -zero-out ] [ -zero-out-all ]
              [ -nogpg ]
              [ -relabelimg <ImgFile> <old label> <new label>
              [ -changelabel <old label> <new label>
              [ -copy <file|directory> <filename|directory path> ]
              [ -deletefile <file>
              [ -deletedir <directory>
              [ -list ]
where:
  ImgFile   : previously instantiated image file to configure.
  TmplName  : name of the template (defaults to the VMImg name).
  AddLstF   : file with names of RPMs to add.
  RPMDir    : directory with the RPMs to be installed.
              (Required when supplying the -a option)
  PkgLstF   : file with names of packages to add.
  DelLstF   : file with names of packages to erase.
  RootPreSz : size in MB to pad root before starting processing.
  RootPadSz : size in MB to pad root after all processing.
  TotalImgSz: size in MB for the image file.
  SwapSz    : required Swap partition size in MB.
  YUMRepoURI: baseurl for a YUM repository.
  RepoKeyURI: URI of the repository's key.
  DVDMntDir : top level dir where the OS DVD is available.
  SvcList   : comma sepearated list of init services to enable / disable.
  MemSz     : amount of memory to allocate for the VM in MB.
  NumCpu    : number of virtual cpu's assigned to the VM.
  TargetDir : directory where images will be created in.
  ProdImg   : name of the product image to create.
  ProdSz    : size of the product image in MB.
  ProdMnt   : optional mount point for product image.
  ConfScr   : name of the reconfig script (defaults to /u01/oracle-template.sh).
  CleanScr  : name of the cleanup script (defaults to /u01/template-cleanup.sh).
  PreScr    : name of the script to run before adding/erasing RPMs.
  PostScr   : name of the script to run after adding/erasing RPMs.
              NOTE: The -no-scripts option can be used to
                    administratively disable all script execution,
                    and the -only-chroot-scripts option can be used
                    to only allow script execution inside the chroot
                    environment.
  SElnxMode : SElinux mode (default is permissive), allowable options are:
                      enforcing, permissive or disabled
  VMImg     : one of the choices listed below:
                EL57_i386_HVM_jeos  ★RPMでインストール済みのJeOSイメージが表示される。
                EL57_i386_PVM_jeos

JeOSイメージを追加してみる
他のバージョンの Oracle Linux JeOSを追加するときも、RPMで追加します。
Oracle Linux 5.2 32bit のJeOSを追加してみます。
[root@ovs11 work]# rpm -ivh ovm-el5u2-xvm-jeos-1.1.0-1.el5.i386.rpm
warning: ovm-el5u2-xvm-jeos-1.1.0-1.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:ovm-el5u2-xvm-jeos     ########################################### [100%]

modifyjeos -list でも、追加したJeOSイメージが表示されるようになります。
[root@ovs11 work]# modifyjeos -list
EL52_i386_HVM_jeos ★RPMでインストール済みのJeOSイメージが表示される。
EL52_i386_PVM_jeos
EL57_i386_HVM_jeos
EL57_i386_PVM_jeos
以上、
JeOSイメージのインストールでした。

2012年12月29日土曜日

OVS on VirtualBox してみました(CPU仮想化支援機能なしでは無理)

Oracle VM Server on VirtualBoxをやってみました。
実際に構築してみると、

VirtualBoxをインストールするホストOSのPCは、
CPUの仮想化支援機能が必須でした。


仮想化支援機能が使用できなくてもOVSのインストールは正常終了しますが、
Xenを有効にした状態としてOVSを起動できませんでした。


駄目だった様子

まず、インストール直後にVMを起動すると
ホストOSが64bitなのでOVSデフォルトだと64bitカーネルで起動します。
 



デフォルトは、3行目の64bitカーネルです。



そこでGRUBで32bitカーネルを選択して起動したところ、
今度は起動途中でブラックアウトしてしまいました。

 
タイミングとしては「(Xen) Scrubbing Free RAM ...」というメッセージの直後だったので
GRUBの起動オプションに no-bootscrub をつけても改善しませんでした。



この画面の直後にブラックアウトします。



ためしに OVS 2.2.2、2.2.1、2.2.0 をインストールしてみましたが、
いずれのバージョンもも同様の現象でダメでした。

結局のところ、
Intel-VT が使用できる他のPCで試したら、OVSは問題なく起動できました。
ちなみに、使用しているCPUは Intel Core i3-2367M 1.40GHz です。


※ただしOVSではHVMサポートされていない状態でした。
Hypervisor running in 64 bit mode with NO Hardware Virtualization support.



以上、
OVS on VirtualBox ではCPU仮想化支援機能が必須 という話でした。

2012年12月28日金曜日

Oracle JeOSを使ってみる(1回目)

Oracle Linux JeOS を使ってみようと思います。
JeOSとは、Just enough Operating System の略で、
ちょうど十分なOS = 必要最低限構成(ソフトウェア導入)のOSのことです。
今日はJeOSテンプレートを使用するための下準備として、
ORACLEから提供されているJeOSのVMテンプレート構築ツール
Oracle Linux JeOS for Building Oracle VM Templates
をインストールします。


ソフトウェアの入手

ORACLEの e-delibery から、RPMをダウンロードします。

※OTNのアカウント(無償)を作成する必要があります。
  • 「Cloudポータル」→「Oracle Linux/VM」を選択して、Linux/VM専用サイトへ。
  • パッケージを検索
    • 製品パックを選択: Oracle Linux
    • プラットフォーム: x86 64bit もしくは x86 32bit
  • 「Oracle Linux JeOS for Building Oracle VM Templates for x86_64 (?? bit) 」を選択
  • 「JeOS Base x86 and x86_64」をDLします。 (V34619-01.zip 76KB)




インストール

DLしたファイルを、インストールするOracle VM ServerにFTP/SCPなどで転送します。
ファイルを解凍すると2つのRPMがあります。
  • ovm-modify-jeos-1.1.0-17.el5.noarch.rpm
  • ovm-template-config-1.1.0-8.el5.noarch.rpm
[root@ovs222e work]# ls -l
total 84
-rw-r--r-- 1 root root 78554 Nov 2 23:34 V34619-01.zip
[root@ovs222e work]# unzip V34619-01.zip
Archive: V34619-01.zip
inflating: ovm-modify-jeos-1.1.0-17.el5.noarch.rpm
creating: __MACOSX/
inflating: __MACOSX/._ovm-modify-jeos-1.1.0-17.el5.noarch.rpm
inflating: ovm-template-config-1.1.0-8.el5.noarch.rpm
inflating: __MACOSX/._ovm-template-config-1.1.0-8.el5.noarch.rpm
[root@ovs222e work]# ls -l
total 180
drwxrwxr-x 2 root root 4096 Sep 18 09:29 __MACOSX
-rw-r--r-- 1 root root 62011 Sep 18 09:20 ovm-modify-jeos-1.1.0-17.el5.noarch.rpm
-rw-r--r-- 1 root root 23091 Sep 9 2011 ovm-template-config-1.1.0-8.el5.noarch.rpm
-rw-r--r-- 1 root root 78554 Nov 2 23:34 V34619-01.zip
RPMを両方インストールします。
[root@ovs221e work]# rpm -ivh ovm*.rpm
warning: ovm-modify-jeos-1.1.0-17.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing... ########################################### [100%]
1:ovm-template-config ########################################### [ 50%]
2:ovm-modify-jeos ########################################### [100%]
インストールしたもの

ovm-template-config
Oracle VM テンプレート構成用のスクリプトです。
※OVSにインストールしたものの、これはテンプレートにしたいVMに入れればよい・・・
[root@ovs221e work]# rpm -qi ovm-template-config
Name        : ovm-template-config          Relocations: (not relocatable)
Version     : 1.1.0                             Vendor: Oracle Corporation
Release     : 8.el5                         Build Date: Sat 10 Sep 2011 03:44:16 AM JST
Install Date: Thu 27 Dec 2012 10:33:13 PM JST      Build Host: ca-build9.us.oracle.com
Group       : Utilities                     Source RPM: ovm-template-config-1.1.0-8.el5.src.rpm
Size        : 58494                            License: GPLv2
Signature   : DSA/SHA1, Sat 10 Sep 2011 03:44:29 AM JST, Key ID 66ced3de1e5e0159
URL         : http://oss.oracle.com/
Summary     : Oracle VM Template reconfiguration scripts
Description :
Configuration for Oracle VM Template boot.
[root@ovs221e work]# rpm -ql ovm-template-config
/etc/rc.d/init.d/oraclevm-template
/etc/sysconfig/oraclevm-template
/usr/lib
/usr/lib/oraclevm-template
/usr/lib/oraclevm-template/functions
/usr/sbin/oraclevm-template
/usr/share/doc/oraclevm-template
/usr/share/doc/oraclevm-template/AUTHORS
/usr/share/doc/oraclevm-template/COPYING
/var/lib/oraclevm-template
/var/lib/oraclevm-template/add.lst
/var/lib/oraclevm-template/erase.lst
ovm-modify-jeos
OracleVM Serverに配置したJeOSイメージを編集するスクリプトです。
[root@ovs221e work]# rpm -qi ovm-modify-jeos
Name        : ovm-modify-jeos              Relocations: (not relocatable)
Version     : 1.1.0                             Vendor: Oracle Corporation
Release     : 17.el5                        Build Date: Sat 04 Aug 2012 01:14:33 AM JST
Install Date: Thu 27 Dec 2012 10:33:13 PM JST      Build Host: ca-build56.us.oracle.com
Group       : Utilities                     Source RPM: ovm-modify-jeos-1.1.0-17.el5.src.rpm
Size        : 224704                           License: GPLv2
Signature   : DSA/SHA1, Sat 04 Aug 2012 01:14:37 AM JST, Key ID 66ced3de1e5e0159
URL         : http://oss.oracle.com/
Summary     : Oracle VM JeOS Image modify script
Description :
Script used to modify the base Oracle VM JeOS images. 
[root@ovs221e work]# rpm -ql ovm-modify-jeos
/usr/bin/modifyjeos
/usr/share
/usr/share/doc
/usr/share/doc/ovm-modify-jeos
/usr/share/doc/ovm-modify-jeos/AUTHORS
/usr/share/doc/ovm-modify-jeos/COPYING
/usr/share/doc/ovm-modify-jeos/modifyjeos.html
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/modifyjeos.8.gz
/var/lib/oraclevm-template
/var/lib/oraclevm-template/HVM.cfg
/var/lib/oraclevm-template/PVM.cfg
以上、
今回はJeOSテンプレートを使用するための下準備でした。(つづく)

2012年12月27日木曜日

OVSネットワークの話(6回目)

OVSのネットワーク接続 6回目です。

今回は、VMの仮想NICと、VMの仮想スイッチへの接続設定についてです。

Oracle VM Serverでの標準的なVMの設定ファイル名は、vm.cfg です。
この設定ファイルに、仮想NICの設定を記載しておきます。
※VMごとに、このファイルが存在します。

設定ファイル例(vm.cfg)
[root@ovs221e vm1]# cat vm.cfg
bootloader = '/usr/bin/pygrub'
keymap = 'ja'
on_reboot = 'restart'
on_crash = 'restart'
name = "vm1"
vcpus=1
memory = "128"
maxmem = "256"
uuid = "9347f79e-0b8d-42b0-9865-63056702e2e4"
disk = [
'file:/OVS/running_pool/vm1/System.img,xvda,w',
]
disk_other_config = []
vif = [
'mac=XX:XX:XX:XX:XX:56, bridge=xenbr0, type=netfront',
'mac=XX:XX:XX:XX:XX:4C, bridge=xenbr1, type=netfront',
]

この部分のうちNW設定は赤字の部分です。
VMはこのファイルの記載順で仮想NICを作成するので、下記の設定では
1つ目の仮想NIC(vifX.0)が xenbr0 に接続され、
2つ目の仮想NIC(vifX.1)が xenbr1 に接続されます。

「type=netfront」では、仮想NICの種類を指定しています。
OVSでは準仮想化ゲスト(Xenで一般的なVMの形式)の場合、
netfront準仮想化の仮想NICを使用します。
これは、デフォルトでもnetfrontになるため省略可能です。
vif = [
'mac=XX:XX:XX:XX:XX:56, bridge=xenbr0',
'mac=XX:XX:XX:XX:XX:4C, bridge=xenbr1',
]
 「type=netfront」では、仮想NICの種類を指定しています。
これは、デフォルトでもnetfrontになるため省略可能です。
OVSでは準仮想化ゲスト(Xenで一般的なVMの形式)の場合、
netfront準仮想化の仮想NICを使用します。
vif = [
'mac=XX:XX:XX:XX:XX:56, bridge=xenbr0',
'mac=XX:XX:XX:XX:XX:4C, bridge=xenbr1',
]
仮想NICが1つだけの場合は、下記のように1行だけ記載します。
vif = [
'mac=XX:XX:XX:XX:XX:56, bridge=xenbr0, type=netfront',
]
MACアドレス(mac=)を指定しない場合は、
VMを起動するたびにMACアドレスが自動生成されます。
※VMを起動しなおすたびにMACアドレスが変わってしまいます。
vif = [
'bridge=xenbr0, type=netfront',
'bridge=xenbr1, type=netfront',
]


以上、VMの仮想NIC設定と仮想スイッチ接続設定でした。

2012年12月26日水曜日

OVSネットワークの話(5回目)

今回は、仮想スイッチからVMの仮想NICを切断してみます。


仮想NICの見え方

Oracle VM Server(Xen)での仮想NICは、
Dom0での ifconfigコマンド で表示することができます。
名前は vifX.Y といった形式になります。
  • X の部分 → ドメインID(VMにつけられたID)
  • Y の部分 → VM内での通し番号(0~)
たとえば、ドメインID=2 のVMでは、
仮想NICの名前が vif2.0、vif2.1 ・・・ となります。
[root@ovs221e ~]# ifconfig | grep -e Link -e inet -e Metric
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:AB
          inet addr:192.168.4.221  Bcast:192.168.4.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe85:cab/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:B5
          inet6 addr: fe80::20c:29ff:fe85:cb5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
vif1.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
vif1.1    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
vif2.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
vif2.1    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
xenbr0    Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:AB
          inet addr:192.168.4.223  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe85:cab/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
xenbr1    Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:B5
          inet6 addr: fe80::20c:29ff:fe85:cb5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
VM上のゲストOSから見える eth0、eth1 は、Dom0 からは vifX.0、vifX.1 と見えます。





VMのNIC切断/接続

ためしに、VM2の1本目の仮想NIC(vif2.0)を、仮想スイッチから外してみます。
[root@ovs221e ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.XXXXXXXXXXab       no              vif2.0
                                                        vif1.0
                                                        eth0
xenbr1          8000.XXXXXXXXXXb5       no              vif2.1
                                                        vif1.1
                                                        eth1
 


 
仮想NICを、brctl コマンドで切断します。

[root@ovs221e ~]# brctl delif xenbr0 vif2.0

仮想NICが外れました。
[root@ovs221e ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.XXXXXXXXXXab       no              vif1.0
                                                        eth0
xenbr1          8000.XXXXXXXXXXb5       no              vif2.1
                                                        vif1.1
                                                        eth1
仮想NICを再接続してみます。
xenbr0 に、vif2.0 が接続されたことが確認できます。
[root@ovs221e ~]# brctl addif xenbr0 vif2.0
[root@ovs221e ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.XXXXXXXXXXab       no              vif2.0
                                                        vif1.0
                                                        eth0
xenbr1          8000.XXXXXXXXXXb5       no              vif2.1
                                                        vif1.1
                                                        eth1
ほかの仮想スイッチに接続してみる

ほかの仮想スイッチに接続することもできます。
隣の xenbr1 に VM2 の仮想NICを両方接続してみました。
[root@ovs221e ~]# brctl delif xenbr0 vif2.0
[root@ovs221e ~]# brctl addif xenbr1 vif2.0
[root@ovs221e ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.XXXXXXXXXXab       no              vif1.0
                                                        eth0
xenbr1          8000.XXXXXXXXXXb5       no              vif2.0
                                                        vif2.1
                                                        vif1.1
                                                        eth1



以上、仮想NICのつけはずしでした。

2012年12月25日火曜日

OVSネットワークの話(4回目)

OVSのネットワーク接続 4回目です。

今回は、VMを起動して
仮想NICが仮想スイッチに接続される様子を見ます。

まずは、VMが起動していない状態から始めます。



ここで、1つ目のVMを起動してみます。
「xm create」コマンドで、vm1/vm.cfgファイルをもとにVMを起動しています。
[root@ovs221e running_pool]# xm create vm1/vm.cfg
Using config file "./vm1/vm.cfg".
Started domain vm1 (id=1)

1つ目のVM「vm1」が起動しました。
[root@ovs221e running_pool]# xm list
Name          ID   Mem VCPUs      State   Time(s)
Domain-0       0   543     4     r-----    418.3
vm1            1   128     1     r-----      2.4

仮想スイッチを見てみると
xenbr0 に、vm1 の仮想NIC(vif1.0)が、
xenbr1 に、vm1 の仮想NIC(vif1.1)が接続されています。

[root@ovs221e running_pool]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.XXXXXXXXXXab       no              vif1.0
                                                        eth0
xenbr1          8000.XXXXXXXXXXb5       no              vif1.1
                                                        eth1


ここで、2つ目のVMを起動してみます。
[root@ovs221e running_pool]# xm create vm2/vm.cfg
Using config file "./vm2/vm.cfg".
Started domain vm2 (id=2)

2つ目のVM「vm2」が起動しました。
[root@ovs221e running_pool]# xm list
Name          ID   Mem VCPUs      State   Time(s)
Domain-0       0   543     4     r-----    419.3
vm1            1   128     1     -b----     13.8
vm2            2   128     1     -b----     14.2

仮想スイッチには、vm2 の仮想NICが接続されています。
[root@ovs221e running_pool]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.XXXXXXXXXXab       no              vif2.0
                                                        vif1.0
                                                        eth0
xenbr1          8000.XXXXXXXXXXb5       no              vif2.1
                                                        vif1.1
                                                        eth1
2つ目のVMも仮想スイッチに接続され、下記のようになりました。



以上、仮想スイッチに仮想NICが接続される様子でした。

2012年12月24日月曜日

OVSネットワークの話(3回目)

OVSのネットワーク接続 3回目です。

今回は、Dom0のNICと、仮想スイッチを見てみます。

今回の例にするOVSは、2つの物理NICを持っていて
前回のイメージと同じHW構成(下記)になっています。



まず、VMを起動しない(Dom0だけの)状態にしています。
この時点では、VMはDom0だけが接続されていてVMは未接続です。



Dom0にログインして、ifconfigコマンドを実行してみると、
Dom0自体が使用するNIC(eth0、eth1)と
仮想スイッチの役割をもつもの(xenbr0、xenbr1)が見えます。
※ここでは ovs221e というホスト名のOVS(Dom0)にログインしています。

[root@ovs221e ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:AB
          inet6 addr: fe80::20c:29ff:fe85:cab/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2343815 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1737020567 (1.6 GiB)  TX bytes:32139 (31.3 KiB)
eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:B5
          inet6 addr: fe80::20c:29ff:fe85:cb5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2351505 errors:0 dropped:0 overruns:0 frame:0
          TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1742208646 (1.6 GiB)  TX bytes:10008 (9.7 KiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:166 errors:0 dropped:0 overruns:0 frame:0
          TX packets:166 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:28004 (27.3 KiB)  TX bytes:28004 (27.3 KiB)
xenbr0    Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:AB ★仮想スイッチ1つ目
          inet addr:192.168.4.221  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe85:cab/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:45410 errors:0 dropped:0 overruns:0 frame:0
          TX packets:132 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5155527 (4.9 MiB)  TX bytes:25183 (24.5 KiB)
xenbr1    Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:B5 ★仮想スイッチ2つ目
          inet6 addr: fe80::20c:29ff:fe85:cb5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:45485 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:5175273 (4.9 MiB)  TX bytes:2609 (2.5 KiB)


次に、仮想スイッチ(ブリッジ)を brctl コマンドで見てみます。
Dom0の各NICが、それぞれ仮想スイッチに接続されているように見えます。
  • eth0 → xenbr0 に接続されている
  • eth1 → xenbr1 に接続されている
[root@ovs221e ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.XXXXXXXXXXab       no              eth0
xenbr1          8000.XXXXXXXXXXb5       no              eth1

まだ仮想スイッチにはDom0しか接続していませんが、
VMを起動すると各仮想スイッチ(xenbr0、xenbr1)に仮想NICが接続されていきます。


今回は以上です。
次は、VMの仮想NICを、仮想スイッチに接続してみます。

OEM12c書籍を読んでみた。

OEM12cの書籍を読んでみました。
Oracle Enterprise Manager 12cによるシステム運用ガイド 
篠田 典良 (著) 単行本: 297ページ
出版社: 富士通エフ・オー・エム (2012/04)
ISBN-10: 4893119508
ISBN-13: 978-4893119506

Oracle Enterprise Manager 12c は、
Oracle Databaseなどの統合管理ツールです。
この本で説明されているのは、Cloud Control と呼ばれる、
OracleDB付属のEM (DB Control) とは別の製品についてです。

これまでOEM(DB Controlも)をほとんど使用したことがなかったので、
こんなこともできるんだ、と思ったことをいくつか紹介します。
  • DBだけではなくWebLigic等のDB以外の製品も管理できる。
    基本的にOEM12cはプラグインで拡張する形式で、 いろいろな製品に対するプラグインがある。(P.35-、P.52-)
  • RAC各ノードのASMインスタンスは、まとめて1ターゲットとして監視できそう。(P.42)
  • 管理対象のエージェントが情報を上げる管理サービス(OMS)は複数台用意して負荷分散できるらしい。(P.31-)
  • OracleVMも管理可能。
    • 管理するためには Oracle Virtualizationプラグインを導入する必要がある。
      OMSにプラグイン追加するときは、一時的にOMSの停止が必要になる。(P169-) 
    • OEMからOracleVMを管理するときは、Oracle VM Manager(OVM)を経由する。
      直接OVSと連携できてもよい気が…(P.182-)
    • 「ゾーン」という概念あり。OVMのサーバプールをまとめている?
    • VMを管理することができるセルフサービスポータルが用意されている。
      標準で用意している仮想マシンサイズが
      Smallが CPU2/Mem4GB/Disk250GB
      Largeが CPU8/Mem16GB/Disk1000GB とあり、
      小サイズでもMem4GB/Disk250GB、大サイズだとDisk1000GBというのが微妙な気がした。
      (OracleDBやWebLogic用途を意識しているのでサイズ大きめ?)
約300ページ中、OracleDB自体の管理やチューニングについての機能説明は4分の1くらいしか占めておらず、DB管理だけでない万能システム(クラウド)管理ツールな感じがしました。
(実際使うとそこまで万能ではないのだろうとは思いますが)


以上、OEM書籍の感想でした。


OVSネットワークの話(2回目)

今回は前回のOVSネットワークの話の補足です。
仮想ネットワークを追加するときのイメージについてです。


Oracle VM Server(OVS)でVMを稼働させるときは、
仮想ネットワークを構成する必要があるので
  • 仮想ネットワークを構成するために、仮想スイッチの作成
  • VMを仮想スイッチに接続
する必要があります。


基本的な構成

OVSをインストールしたサーバに
物理的なネットワークポート(物理NIC)が1つだけある場合は、
下記のような構成になります。

基本的に、1つの物理NICが、1つの仮想スイッチと紐づきます。



このとき、VM(DomU)にインストールされているゲストOSからは
仮想スイッチ(xenbr0)を設定することができません。
Dom0からはxenbr0やVMの仮想NICがすべて見えるので、
仮想スイッチ自体の構成や、仮想スイッチとVMの仮想NICとの接続は
Dom0にログインして設定することになります。

実際にこの構成を取る場合は、OVSインストール時に自動的に
仮想スイッチが構成されます。(OVS 2.xの場合)


複数の仮想ネットワークを構成する場合

仮想ネットワークを複数作成することもできます。

OVSの外部から直接接続するネットワークを構成する場合は、
物理NICを追加する必要があります。
※これとは別に、VLANを作成する方法もあります。

物理NICを追加し仮想スイッチ(xenbr1)を追加することで
仮想ネットワークを追加することができます。 (下記の緑線の部分)



OVSの外部から直接接続する必要がないネットワーク(検証目的など)
を追加したい場合は、物理NICの代わりにダミーのNIC(dummy0)を追加しすることで
仮想ネットワークを追加することもできます。 (下記の黄線の部分)

たとえば、1台のOVS内で検証用Oracle RACを構築するとき、
インターコネクト用ネットワークを作成するためにこの方法を利用することがります。


以上、OVSネットワークの話(2回目)でした。

2012年12月23日日曜日

OVSネットワークの話(1回目)

Oracle VM Server(OVS) のネットワーク接続について考えてみようと思います。

たとえば、
サーバ2台あって、そこにクライアントPCがアクセスするとします。

物理環境であれば、かならず
2台のサーバがそれぞれNW機器(物理的なL2スイッチなど)に
接続されていることになります。
※実際にこんな簡単な状況はないですが・・・
 
イメージとしては下記のようになります。




ここで、
2台のサーバ両方を、Oracle VM Server で仮想化しようと考えてみます。
1台の物理サーバに、2台の仮想サーバ(VM)を稼働させることにします。

このとき、
2台両方のサーバが、1台の物理サーバの
ネットワークポートを共有して使う必要が発生します。

そのため、OVSで仮想させるVMをネットワークに接続する場合、
上記のような構成を実現するために
OVS内で仮想スイッチ(ブリッジ)を構成する必要があります。
 
イメージは、下記のような感じです。



  • 1台のOVSをインストールした物理サーバで、2台の仮想サーバ(DomUのゲストOS)が稼働。
  • それとは別に、Dom0(管理用のOS)も稼働することになる。
  • 3台の仮想サーバすべてをNWに接続するために、OVSは仮想スイッチを作成し、3つのVMすべてが接続される。

ちなみに、仮想スイッチは「ブリッジ」とも呼ばれます。
ブリッジとは、OSI参照モデルのレイヤ2(データリンク層)で動作するもので、
L2スイッチ(スイッチングハブ)と同様の動作をします。

もともとNW機器のスイッチは、ブリッジの進化形のようで、
ソフトウェア的なL2NW機器はブリッジと呼ばれます。

OVSやXen、KVMなど仮想ネットワークで
br0、xenbr0 といったbrが付くネーミングがされているのは
「bridge」を省略しているためです。


以上、OVSネットワークの入り口的な話でした。
これから、もう少し掘り下げていこうと思います。
 

2012年12月22日土曜日

サーバ仮想化を知らないとヤバい時代

今回は、個人的なボヤキです。

最近 思うのですが
「サーバ仮想化」は、すでに
知らないとヤバい部類の技術なのではないでしょうか。


サーバ仮想化の中核であるハイパーバイザ製品の機能は、
1台の物理マシン上に複数の仮想的なマシンを作成する
という数十年まえから存在するもので、その中でもx86系の仮想化は
数年前から実用されだして、今がちょうど旬な状態だと思います。
 
ただ、今の流行状態を過ぎた後、仮想化技術は
IT技術者にとっては、OSの仕組みや、TCP/IPのような
「概要は知っていて当然」的なものになりそうです。
(というかもうなっている気が・・・)


たとえば、
  • 仮想化専門ではないインフラ系の人が、
    当然のように 「今回のハイパーバイザはXXXで~」といった話をしたり
  • 開発系の人が設計レビュー中に「この機能は仮想化とは関係ないので~」
    といった話をしたり
  • 運用設計担当の人が「VMのスナップショットは1週間で削除して~」
    といった検討をしたり
といった状況は、すでに普通な光景ではないでしょうか。


IT初心者や、新人技術者にとっても、
「まず最初にかじるもの」の一つとして、これからは
簡単なプログラミングをしてみたり、
OSインストールをしてみたりといったことに加えて
  • 仮想マシンを作成してゲストOSをインストールしてみる
  • 仮想マシン上に検証環境を構築する
といったものが位置づけられていきそうです。

以上、
ちょっと最近おもうことでした。

2012年12月21日金曜日

Oracle VM 2.x は 32bit/64bitカーネル同梱です。

つまらない話ですが・・・

Oracle VM 2.x では、
Oracle VM Serverをインストールすると、
32bit用カーネルと、64bit用カーネル、両方のDom0が使用できます。


OVSでは、OSのブートローダーとして
一般的なLinux同様、GRUBを使用しています。

1つのインストールメディアで32bit/64bit
両方のカーネルが導入され、GRUBで起動時に選択できます。

マシン起動直後の、この画面で選択できます。



※画面は Oracle VM Server 2.2.2 のものです。

マシン起動後、何もしないと自動的にデフォルトのカーネルで起動されてしまうので、
何かキーをおすと上記の画面が表示されます。

ちなみに、一番下を選ぶと、Xenが無効の状態で起動します。

以上です。今日も地味な話でした。

2012年12月20日木曜日

失敗談: CPUの仮想化支援機能が使用できなかった。

今回は、軽い失敗談です。


私は ThinkPad X121e を使用しているのですが、
PCで仮想化支援機能を有効化できませんでした。
BIOSには Virtualization といったメニューはあるのですが、
残念ながら CPUの Intel Pentium 967 が仮想化対応していませんでした。
(安いモデルなもので・・・)

仮想化支援機能が使えな使えないケースは下記のような場合です。

ケース1
たとえば、CPUが Intel-VT に対応していたとしても
マザーボードが対応していなくて
いわゆるBIOS設定画面 で有効化できない
→結局 仮想化支援機能は使用できない。


ケース2
BIOSに仮想化関連の「Virtualization~」という
メニューがあり 有効化(Enableなど)はできるが
CPU自身に仮想化支援機能がなかった
→これも、仮想化支援機能は使用できない。



実際に困ること

仮想化支援機能がないとできないことはいろいろあると思いますが、
ちょっとお試し環境を作るためには、
64bitのVMを作成/起動できない というのが大問題です。

※これとは別に、
この機能がないため「普通にそのPCにインストールするとしても
ハイパーバイザ製品がほとんど使用できなくなる」
という問題もあります。(Intel-VT/AMD-Vがインストール要件のものが多いため)


たとえば、
  • Oracle VM 3.x
  • Windows Server 2008 R2
  • VMware ESXi 5.x
これらは 64bit 版しか提供されておらず、32bit はありません。

VirtualBoxなども含め、
仮想化ソフトウェア上で 64bit OSを使用するためには、
CPUの仮想化支援機能(Intel-VT、AMD-V)が必要になるようです。
有効化できない場合は、そもそも64bitVMが起動できません。
上記のように、最近は64bit版しかないソフトウェアが多く、
これは結構残念な状態になってしまいます。

仮想化まわりの検証用PCを選ぶときは、
  • CPUが仮想化対応しているか
  • BIOSに仮想化支援機能を有効化するメニューがあるか
を、両方確認しておきましょう。


ただの業務用PCとして普通にWeb閲覧/MS-Officeを使用するくらいであれば
気にならない部分ですが、仮想化製品を使用するとなると
仮想化支援機能はほぼ必須といえます。


以上、PCを用意するときは仮想化支援機能の有無に気を付けましょう。
という失敗談でした。

2012年12月16日日曜日

OVS on VirtualBox しようと思います。

突然ですが、Oracle VM Server の検証環境構築はじめます。

自宅に検証用のOVS環境があるのですが
DNSやゲートウェイになるVMを乗せはじめると、
停止するといろいろ面倒で困るようになってきました。


そこで、OVSを増築しようと思ったわけです。

ついでなので、自宅にまだない
Oracle VM Server on VirtualBox
環境を構築してみようと思います。


構想

ORACLEの仮想化ソフトウェアには下記2種があります。
  • ハイパーバイザ型の Oracle VM Server for x86/SPARC(OVS)
  • ホスト型の Oracle VM VirtualBox
それぞれ、OVSはサーバ仮想化、
VirtualBoxは検証やデスクトップ仮想化などと
想定されている用途が違います。


これから、
この2つを組み合わせて検証環境を作ってみたいと思います。
OVSで、いわゆるネステッドハイパーバイザ
と呼ばれる使い方をしてみます。

ホスト型仮想ソフトで作成したVM上に、
ハイパーバイザ型仮想化ソフトをインストールします。



OVS on VirtualBox の使い道

わざわざVirtualBoxでOVSを動かす必要があるのか? という
気もしますが


いくつか利用シーンを考えてみると
  • 何とかして検証環境を確保する必要がある
    (Oracle VM 2.x → 3.x の移行検証だったり
    コスト削減等の理由で必要数の環境を残しておけないなど)
  • 勉強会で、たくさんOVS環境が必要
    (10人それぞれに、など)
  • ちょっと移動中にOVSを触りたくなる
    (通勤/通学/出張/帰省)
意外と使い道がありそうです。


以上
OVS on VirtualBox をはじめる宣言でした。
  

2012年12月15日土曜日

Dom0からのメモリの見え方(絵的に)

ためしに、Dom0 からのメモリの見え方をビジュアル化してみました。

下記のような状況をイメージしてみます。
  • 物理サーバには 8GBのメモリを搭載しています。
  • Dom0 に 512MB を割り当て。
  • DomU(VM)に メモリ 1024MB を割り当て。


この時、Dom0 でメモリ容量を確認する一般的なLinuxコマンド(たとえばfree)を
実行したとしても 512MBとしかメモリ容量を認識できません。

 

ただし、ハイパーバイザに対して情報確認をするコマンド
(たとえばxmコマンド。xm list など)を実行すれば、全体容量を確認できます。

 

こうすれば、全体で 8GB あるメモリのうち、
Dom0 で 512MB 使用しているということがわかります。

Dom0 から他の VM のメモリ使用量(割り当て量)を確認するときも、
同様にハイパーバイザに向けたコマンド(これも xm コマンドなど)を実行します。

以上、Dom0からのメモリの見え方についてでした。

2012年12月14日金曜日

Dom0からのメモリの見え方について。

今日は、Dom0からのメモリの見え方についてです。

Oracle VM Server(OVS)として物理サーバに搭載しているメモリは、
Dom0がすべて使用してるようには見えません。

Dom0は、管理用ゲストOSとして他のVM(DomU)にメモリを割り当てる操作はできますが
基本的にDom0自身は
OVSからDom0用として割り当てられたメモリ容量だけを使用します。

Dom0自身のメモリの見え方

いま、8GBメモリを搭載しているOVSで、Dom0 に512MBメモリを割り当てています。

Dom0 起動時のメモリ割り当ては、GRUBで設定できます。
[root@ovs1 ~]# cat /etc/grub.conf
(省略)
title Oracle VM Server-ovs (xen-64-3.4.0 2.6.18-128.2.1.4.25.el5ovs)
        root (hd0,0)
        kernel /xen-64bit.gz dom0_mem=512M
        module /vmlinuz-2.6.18-128.2.1.4.25.el5xen ro root=UUID=f5ba5909-fc8a-4b5f-a0e9-19528fbc1fda
        module /initrd-2.6.18-128.2.1.4.25.el5xen.img

Dom0 でのfreeコマンドでは、512MB使用している様子が見えます。
[root@ovs1 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           512        470         41          0        131        136
-/+ buffers/cache:        202        309
Swap:         1027          0       1027

ドメイン(VM)一覧を見ても、512MBです。
[root@ovs1 ~]# xm list Domain-0
Name               ID   Mem VCPUs      State   Time(s)
Domain-0            0   512     2     r----- 473567.0

Dom0から、OVS全体のメモリ容量を見る

実際にOVSの物理サーバがどれくらいメモリを使用しているか確認するには、
xm infoやxm top といったXenハイパーバイザの情報を確認するコマンドを
使用する必要があります。

たとえば、xm info コマンドを実行すると、
この Dom0 の物理サーバが8GBの物理メモリを搭載していることがわかります。
この容量のうち512MBをDom0に割り当てていたわけです。
そして残りの容量を、他のVMに割り当てることができます。
[root@ovs1 ~]# xm info | grep -e total_memory -e free_memory
total_memory           : 8089
free_memory            : 1586

以上、Dom0 のメモリの見え方の話でした。

2012年12月13日木曜日

OVSでVCPUの様子を見る。

今日は、引き続きVCPUについてです。

実際にOVSではどのように見えるのか、
今回は物理CPU2つあるOVSで、2VCPUのVMの様子を見てみます。

環境は、Oracle VM Server 2.x です。
OVS 2.2.1 のDom0 にログインしています。
[root@ovs1 ~]# cat /etc/ovs-release
Oracle VM server release 2.2.1

Dom0内でコマンド(xm list)を実行してみるとVMの情報が表示されます。
ためしに、「Domain-0」と「169_OEL48_cdev1」というドメイン(VM)
に対して xm コマンドを実行してみると、VCPUs 列には、「2」と表示されています。
※「169_OEL48_cdev1」というVMはあらかじめ起動済みです。
[root@ovs1 ~]# xm list Domain-0 169_OEL48_cdev1
Name              ID   Mem VCPUs  State   Time(s)
Domain-0           0   512     2 r----- 472675.4
169_OEL48_cdev1  223   128     2 -b----     10.8

たとえVMを1つしか起動していないとしても、
OVS(Xen)では、必ずDom0も起動していることになるので
2VCPUのVMと一緒に、Dom0 の様子も見ています。
この環境では、Dom0にも、VCPUを2つ割り当てています。
※本当は、Dom0と「169_OEL48_cdev1」というVM 以外のVMも動いていますが、
わかりにくくなるのであえて非表示にしています。



まず、現在の物理CPUの割り当て状態を見てみます。
このコマンド(xm vcpu-list)では、VCPUごとに1行表示されます。
2つのVMに、それぞれ2VCPU割り当てているため4行表示されています。
[root@ovs1 ~]# xm vcpu-list Domain-0 169_OEL48_cdev1
Name              ID  VCPU   CPU State   Time(s) CPU Affinity
Domain-0           0     0     0   r--  278912.1 any cpu
Domain-0           0     1     0   -b-  193755.4 any cpu
169_OEL48_cdev1  223     0     0   -b-       1.7 any cpu
169_OEL48_cdev1  223     1     1   r--       0.5 any cpu

このときの状況を、図にすると下の「状況1」のようになります。



VCPUとCPU(物理CPU)の列を見ることで、
VMの仮想CPUが、どの物理CPUを使用しているか見ることができます。

「CPU Affinity」(CPU割り当て)の列が「any cpu」なので、
すべての物理CPUが、VCPUに対して割り当てられるようになっています。

Stateの意味は下記です。
  • r (running)
    →CPUが割り当てられてる状態です。
  • b (blocked)
    →CPUがブロック状態です。(IOを待っていたりして)

もう一度、CPUの割り当て状態を確認してみます。
そうすると、各VCPUの物理CPU割り当てが変化しています。
[root@ovs1 ~]# xm vcpu-list Domain-0 169_OEL48_cdev1
Name              ID  VCPU   CPU State   Time(s) CPU Affinity
Domain-0           0     0     0   -b-  278919.9 any cpu
Domain-0           0     1     1   r--  193763.4 any cpu
169_OEL48_cdev1  223     0     1   -b-       6.9 any cpu
169_OEL48_cdev1  223     1     0   r--       4.1 any cpu

この表示結果のときの状況を図にすると、下の「状況2」のようになります。



このようにVCPUと物理CPUが割り当てられていて、
絶えず状態が変化しています。

以上、OVSでのCPU割り当ての見え方でした。

2012年12月11日火曜日

VCPUの話。

今日は、仮想CPUの話です。

OVSなどのハイパーバイザ製品上で稼働するVMには、
仮想CPU(VCPU)が割り当てられます。

このVCPUの動きについて説明してみようと思います。



VCPUは、OVSが持っている物理CPUを
VMに使用させるためのものです。
ただし、CPUを 「エミュレーション(ソフトウェアがCPUを再現している)
しているわけではなく、
ハイパーバイザがVMに直接、VCPU数をもとにした数の
物理CPUを使わせています。


たとえば、
物理CPUを4つ持っているOVS(Xenハイパーバイザ)で、
VCPUが2つ割り当てられているVMがあるとします。



この時、Xenハイパーバイザが物理CPU2つ分(VCPUと同じ数)
をVMに割り当てて、使用させている感じです。
VCPUは、いつも同じ物理CPUに割り当てられるわけではなく、
その時々で、別の物理CPUを割り当てられています。

VCPUと物理CPUの関係は、
ハイパーバイザによって絶えず調整されています。
そのため、あるときのVCPUと物理CPUの割り当てが、上の図のような状態だとしても、
次の瞬間、下の図のようにVMはそれぞれ別の物理CPUを使用しています。



また次の瞬間、
VMはそれぞれ別の物理CPUと紐づけられているわけです。




仮に、ゲストOSが常にVCPUを100%近く使用しているような
状態になっていたとしても
ずっと同じ物理CPUをつかみ続けているというわけではありません。

また、どんなにゲストOSが暴走しても、
1つのVCPUあたり、1つの物理CPUしか使用しません。


以上、VCPUの話でした。(続きはまた後日)

2012年12月10日月曜日

Xenは自宅ハイパーバイザにおすすめ

コンピュータを仮想化するソフトウェアには、
大きく分けて「ホスト型」、「ハイパーバイザ型」 の2種類があります。
 
Oracle VM Server の仮想化エンジンであるXenは、
ハイパーバイザ型と呼ばれる種類のソフトウェアです。

今日は、Xen の活躍できるケースの紹介です。


よくあるハイパーバイザの話について
 
ハイパーバイザ型と呼ばれるものでは
  • Xen (有名なのは、OracleVM / Citrix Xen Server)
  • Microsoft Hyper-V (Windowsに含まれるハイパーバイザ)
  • KVM (Liuxカーネルに含まれる。Redhat の RHEVの基盤となる)
  • VMware ESXi (vSphereの基盤として使われるハイパーバイザ)
といったものが有名だと思います。
それぞれアーキテクチャに特徴がありますが、
どれも、「サーバを仮想化する」「仮想マシンを稼働させる」
ことをすることに変わりはありません。
処理性能も、実際はそんなに変わらないようです。
(使い方によると思いますが)

企業やデータセンタで使用される場合は、
性能が決め手、というよりも
技術者の好みやコスト、ベンダの営業力などによって
その時に最適なものが選ばれていると思います。
 
 
ハイパーバイザのかなでも、Xenは「準仮想化」という方式をとることで知られています。 
完全に「仮想的なハードウェア」を作り出そうとする完全仮想化に対して、
準仮想化は、仮想化にするためにゲストOS自体をカスタマイズしています。
 
この完全仮想化/準仮想化の2択は
「どちらが高性能か」といった話題になりやすいですが、
最近はハードウェア(PCやサーバ)の性能も向上していて
そんなに変わることはないと言われます。
実際ちょっと試してみる分にはどの製品も、どっちもどっちな感じです。
 
よほど大規模/高負荷な環境でないかぎり、
ハイパーバイザによってシステム性能が変わることはありません。
 
 
自宅ハイパーバイザ

ただし、自宅ユースとなると Xenに利があると思います。
 
ハイパーバイザ自体、インストールの前提となる
ハードウェア要件が高いものがほとんどで、
  • 仮想化支援機構(Intel-VTなど)がないCPUだとNG
  • 64bitのCPUじゃないとNG
    OracleVMも、最新の Oracle VM 3 では、64bit 版のみとなってしまいましたが・・・
  • 特定ベンダのNICじゃないと動かすのが大変
とインストール自体が難しい(HW要件的に)ものが多いです。
 
 
そんな中、ちょっと自宅のあまったPCで仮想化でもしてみようか
というニーズに一番マッチしているのはXenではないかと思います。
 
ちょっと昔のマシンでVMを動かすとなると
ゲストOS側がハードに合わせているのが「準仮想化」なので
Xenは、多少アレなPCにインストールしても
他のハイパーバイザよりもちょっと軽快です。
 
そういったわけで、余剰PCでの
ハイパーバイザの勉強などにもお勧めです。

以上、毒にも薬にもならない話でしたが、
ロースペック環境でハイパーバイザを試すならXenがおすすめ
という話でした。

2012年12月9日日曜日

仮想化環境の管理サーバをどこに構築するか。

今日は、Oracle VM Server(OVS)の管理サーバの話です。

Oracle VMでは、OVSの管理サーバとして
Oracle VM Manager(OVM)を使用します。


OVMの特徴
  
簡単に、OVMの特徴をまとめてみます。
  • Oracle VM システムの管理サーバ(OVSやVMを管理する)
  • WebブラウザによるGUI操作が可能
  • Linuxサーバに、Oracle VM Managerをインストールして構築する
OVMの役割は、他社製品と対応させて考えると、
VMware vSphere の vCenter Server、
Microsoft Hyper-V のHyper-Vマネージャ などに相当します。


管理サーバをどこに構築するか

OVMは物理サーバでも、VM上にでも、どちらでも構築可能です。
構築場所を考えるときは、下記のパターンがあります。

  1. 物理サーバに構築
  2. OVS上で稼働するVMの中に構築(管理用のOVSを用意する)
  3. OVS上で稼働するVMの中に構築(他のサービス提供するVMと一緒)

それぞれ選ぶ基準(決め手になりそうな理由)は、下記のような感じだと思います。

1. 物理サーバに構築
  • 管理するOVSが多くて、性能的に心配
  • 管理サーバが管理対象(OVS)の上に乗るのが(気分的に)心配


2. OVS上で稼働するVMの中に構築(管理用のOVSを用意する)
  • 管理対象のOVSが少なく、普段はVMの起動停止に使うくらいなので性能も気にしない
  • 物理サーバを用意するコストを削減したい
3. OVS上で稼働するVMの中に構築(他のサービス提供するVMと一緒)
  • OVMをVMとして構築して、さらにコスト削減したい。サーバ台数を減らしたい。

 実際のところ、ちょっと性能がでなくても(UIの操作がモタつくくらいで)、
管理用サーバ用の物理サーバを用意するのはもったいないので
個人的には、よほどのことがない限り
OVMはVM上に構築するのがよいと思っています。
(事情によるとは思いますが)
OVMをVMにした場合の運用
ただし、仮想マシン上でVMを起動するには、先にOVMを起動する必要があるため、
ちょっと運用手順(VMの起動方法)に矛盾が出ます。
OVM自身がVMのため、
OVM自身(のVM)は、OVMを使用せずに起動する ことになります。
たとえば、
通常のVMを起動する場合は、
  1. OVMにログインしてVMを起動
    ※すでにOVSは起動している前提です。
だけでよいのですが、

OVM自身をVMとして構築していると、
OVM用VMの起動のために
  1. まず、OVMを使わないで、OVM用のVMを起動
    例:Dom0にSSHログインしてコマンド実行(xm create)する 等
  2. 起動したOVMにあらためてログインして、他のVMを起動
することになります。
(実際は、OVS起動にあわせてVMを自動起動することもできますが)


こんな感じで、
コストや、仮想環境の使い勝手を考えながら
OVMをどう構築するか考えます。


以上、OVMの置き場所の話でした。