2013年12月31日火曜日

Oracle Linux 6.5 の UEK R3 と YUMグループについて

Oracle Linux 6.5 インストール中のパッケージ選択画面で、
「UEK3 kernel repo」には UEK R3 自体のパッケージが見当たりません。




しかし、このグループを選択すると実際にはUEK R3がインストールされます。
[root@oel65-base-64 ~]# uname -r
3.8.13-16.2.1.el6uek.x86_64

ためしに、「UEK3 kernel repo」グループの情報を見てみます。
/etc/yum.repos.d/dvd.repo ファイルに下記を追記して「yum groupinfo」コマンドを実行します。

/etc/yum.repos.d/dvd.repo ファイルの記載例
[DVD-UEK3]
name=DVD-UEK3
baseurl=file:///media/UEK3
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1

見てみると、
「Mandatory Packages」(必須パッケージ)というカテゴリの中に「kernel-uek」がありました。
[root@oel65-base-64 ~]# mount /dev/cdrom /media/
[root@oel65-base-64 ~]# yum groupinfo "UEK3 kernel repo"
Loaded plugins: security
Setting up Group Process

Group: UEK3 kernel repo
 Description: UEK3 kernel repo.
 Mandatory Packages:
   kernel-uek
 Default Packages:
   dtrace-modules-3.8.13-16.2.1.el6uek
   kernel-uek-doc
   kernel-uek-firmware
   libdtrace-ctf
   uname26
 Optional Packages:
   dtrace-modules-3.8.13-16.2.1.el6uek-headers
   dtrace-modules-3.8.13-16.2.1.el6uek-provider-headers
   kernel-uek-debug
   kernel-uek-debug-devel
   kernel-uek-devel
   libdtrace-ctf-devel

オプションで、「-v」を付けるとRPMのバージョンなども表示されるようになります。
[root@oel65-base-64 ~]# yum groupinfo "UEK3 kernel repo" -v
Not loading "rhnplugin" plugin, as it is disabled
Loading "security" plugin
Config time: 0.025
Yum Version: 3.2.29
Setting up Group Process
rpmdb time: 0.000
group time: 0.589

Group: UEK3 kernel repo
 Group-Id: uek3-kernel-repo
Setting up Package Sacks
pkgsack time: 0.024
 Description: UEK3 kernel repo.
 Mandatory Packages:
   kernel-uek-3.8.13-16.2.1.el6uek.x86_64                                  @anaconda-UEK3/6.5
 Default Packages:
   dtrace-modules-3.8.13-16.2.1.el6uek-0.4.1-3.el6.x86_64                  @anaconda-UEK3/6.5
   kernel-uek-doc-3.8.13-16.2.1.el6uek.noarch                              @anaconda-UEK3/6.5
   kernel-uek-firmware-3.8.13-16.2.1.el6uek.noarch                         @anaconda-UEK3/6.5
   libdtrace-ctf-0.4.0-1.x86_64                                            @anaconda-UEK3/6.5
   uname26-1.0-1.el6.x86_64                                                @anaconda-UEK3/6.5
 Optional Packages:
   dtrace-modules-3.8.13-16.2.1.el6uek-headers-0.4.1-3.el6.x86_64          DVD-UEK3
   dtrace-modules-3.8.13-16.2.1.el6uek-provider-headers-0.4.1-3.el6.x86_64 DVD-UEK3
   kernel-uek-debug-3.8.13-16.2.1.el6uek.x86_64                            DVD-UEK3
   kernel-uek-debug-devel-3.8.13-16.2.1.el6uek.x86_64                      DVD-UEK3
   kernel-uek-devel-3.8.13-16.2.1.el6uek.x86_64                            @anaconda-UEK3/6.5
   libdtrace-ctf-devel-0.4.0-1.x86_64                                      DVD-UEK3

UEK R3 のグループに限らない話ですが、
OSインストール中のパッケージ選択画面では 必須パッケージは表示されないようです。

おまけ

ついでに、OL6 で DVDの中をYUMで見に行くときの設定例 を書いておこうと思います。
DVDのマウントポイントは /media にしています。
[root@oel65-base-64 setup]# cat /etc/yum.repos.d/dvd.repo
[DVD-Server]
name=DVD-Server
baseurl=file:///media/Server
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-HighAvailability]
name=DVD-HighAvailability
baseurl=file:///media/HighAvailability
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-LoadBalancer]
name=DVD-LoadBalancer
baseurl=file:///media/LoadBalancer
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-ResilientStorage]
name=DVD-ResilientStorage
baseurl=file:///media/ResilientStorage
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-ScalableFileSystem]
name=DVD-ScalableFileSystem
baseurl=file:///media/ScalableFileSystem
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-UEK3]
name=DVD-UEK3
baseurl=file:///media/UEK3
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1

以上、UEK R3 のYUMグループの話でした。

2013年12月30日月曜日

Oracle Linux 6.5 で インストール中のスクリーンショットを取得する。

新しい機能というわけではないですが、
Oracle Linux のインストール中にプリントスクリーンのキーを押すと、
スクリーンショットが取得できます。

最近リリースされた
Oracle Linux 6.5 をインストールするついでに取得してみました。

取得した瞬間に、下記のようなメッセージが表示され、画像はPNG形式で保存されます。
「A screenshot named 'screenshot-NNNN.png' has been saved.」

ちなみにこの画面は、
スクリーンショットを保存したメッセージが出たときに
さらにプリントスクリーンを押して取得しました。



たとえば、物理サーバへの OSインストールするときの
手順書作成や、エビデンス(作業ログ)の取得などに使えるのではないかと思います。
※手順書作成用のキャプチャ取得はVirual Box とかでもできますが、なにか事情があるときに・・・

ちなみに Oracle Linux 6.5 ~ の 「UEK3 Kernel repo」 を選択して
スクリーンショットを取得してみました。
ちなみに、画面には UEK(Unbreakable Enterprise Kernel) R3 自体が見当たりませんが、
このグループを選択すると実際には UEK R3 がインストールされます。



処理の途中で取得することもできます。




スクリーンショットのファイルは
/root/anaconda-screenshots/ ディレクトリに保存され、
インストールが完了後に採取することができます。
anaconda インストーラ実行中のスクリーンショットということで
anaconda-screenshots ディレクトリなのでしょう。
[root@oel65-base-64 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@oel65-base-64 ~]# uname -r
3.8.13-16.2.1.el6uek.x86_64  ★「3.8.13~」 なので UEK R3です。
[root@oel65-base-64 ~]# ls /root/anaconda-screenshots/
screenshot-0000.png  screenshot-0013.png  screenshot-0026.png
screenshot-0001.png  screenshot-0014.png  screenshot-0027.png
screenshot-0002.png  screenshot-0015.png  screenshot-0028.png
screenshot-0003.png  screenshot-0016.png  screenshot-0029.png
screenshot-0004.png  screenshot-0017.png  screenshot-0030.png
screenshot-0005.png  screenshot-0018.png  screenshot-0031.png
screenshot-0006.png  screenshot-0019.png  screenshot-0032.png
screenshot-0007.png  screenshot-0020.png  screenshot-0033.png
screenshot-0008.png  screenshot-0021.png  screenshot-0034.png
screenshot-0009.png  screenshot-0022.png  screenshot-0035.png
screenshot-0010.png  screenshot-0023.png  screenshot-0036.png
screenshot-0011.png  screenshot-0024.png
screenshot-0012.png  screenshot-0025.png

以上、Oracle Linux インストール中のスクリーンショット取得でした。

2013年12月27日金曜日

Intel NUC で Oracle VM Server

いま流行の Intel NUC (Next Unit of Computing)に
Oracle VM Server 3.2.6 をインストールしてみました。

今回試したのは、Intel NUC DC3217IYE です。

普通にインストールできて、NICもちゃんと認識されています。
ちなみに、Oracle VM Server(OVS)ではデフォルトで bond0 が構成されます。
[root@ovs326-5 ~]# cat /etc/ovs-release
Oracle VM server release 3.2.6
[root@ovs326-5 ~]# ifconfig
bond0     Link encap:Ethernet  HWaddr EC:A8:6B:F2:25:24
          inet addr:192.168.4.25  Bcast:192.168.4.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:58816 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2827 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4034550 (3.8 MiB)  TX bytes:412380 (402.7 KiB)
eth0      Link encap:Ethernet  HWaddr EC:A8:6B:F2:25:24
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:58816 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2832 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4034550 (3.8 MiB)  TX bytes:413330 (403.6 KiB)
          Interrupt:20 Memory:f7c00000-f7c20000
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:46 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6905 (6.7 KiB)  TX bytes:6905 (6.7 KiB)
[root@ovs326-5 ~]# lspci
00:00.0 Host bridge: Intel Corporation Device 0154 (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Device 0166 (rev 09)
00:16.0 Communication controller: Intel Corporation Device 1e3a (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 04) ★これがNIC
00:1a.0 USB Controller: Intel Corporation Device 1e2d (rev 04)
00:1b.0 Audio device: Intel Corporation Device 1e20 (rev 04)
00:1d.0 USB Controller: Intel Corporation Device 1e26 (rev 04)
00:1f.0 ISA bridge: Intel Corporation Device 1e56 (rev 04)
00:1f.2 SATA controller: Intel Corporation Device 1e03 (rev 04)
00:1f.3 SMBus: Intel Corporation Device 1e22 (rev 04)

ちなみにCPUは Intel Core i3 です。
Intel Core i3-3217U Processor (3M Cache, 1.80 GHz)
http://ark.intel.com/ja/products/65697/

2コアでハイパースレッディング・テクノロジーが有効なので
OVSからは、4スレッド(4論理CPU)が見えます。
[root@ovs326-5 ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 58
model name      : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
stepping        : 9
cpu MHz         : 1797.706
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq est ssse3 cx16 sse4_1 sse4_2 popcnt f16c hypervisor lahf_lm arat epb pln pts dts fsgsbase erms
bogomips        : 3595.41
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 58
model name      : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
stepping        : 9
cpu MHz         : 1797.706
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq est ssse3 cx16 sse4_1 sse4_2 popcnt f16c hypervisor lahf_lm arat epb pln pts dts fsgsbase erms
bogomips        : 3595.41
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 6
model           : 58
model name      : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
stepping        : 9
cpu MHz         : 1797.706
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 1
apicid          : 2
initial apicid  : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq est ssse3 cx16 sse4_1 sse4_2 popcnt f16c hypervisor lahf_lm arat epb pln pts dts fsgsbase erms
bogomips        : 3595.41
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 58
model name      : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
stepping        : 9
cpu MHz         : 1797.706
cache size      : 3072 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 1
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu de tsc msr pae mce cx8 apic sep mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq est ssse3 cx16 sse4_1 sse4_2 popcnt f16c hypervisor lahf_lm arat epb pln pts dts fsgsbase erms
bogomips        : 3595.41
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

一応 Xen も起動しています…
[root@ovs326-5 ~]# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   552     4     r-----    873.8

以上、ためしに NUC に OVS をインストールしてみた話でした。

2013年12月24日火曜日

最近、ライブマイグレーションのしやすさも大事な気がしました。

最近、ふと
サーバ仮想化環境のアーキテクチャを決めるときには、
ライブマイグレーションのしやすさも考える価値があるのではないかと思いました。
VM をほぼ無停止(OSも、その上のアプリもほぼ無停止)で
他のハイパーバイザに移動できるので、運用がとても楽になるので・・・

たとえば VM のスペックを決めるときに、まずは
  • そのVM がどのようなサービスを提供するのか
  • どらくらいの性能が求められるのか
といったことを考慮すると思います。
当然、その結果として超ハイスペックなVM が必要になることもあると思います。

ただ、可能であれば
ハイスペックな VM をいくつか(少ない台数で)並べるより、


そこそこのスペックのVM を並べること(いわゆるスケールアウト)にすれば、
ライブマイグレーションをしやすくなる
(結果的に運用目的のサービス停止をより少なくできる)
こともあるのではないかと思いました。



運用中にライブマイグレーションをしたくなったとき、
あまりに高負荷な(たとえばメモリ更新が激しすぎるような) VM は
途中で失敗するのではないか、何か別の障害に派生するのではないか
という心配があります。
当然、ライブマイグレーションが100% 成功するとは限らないのですが、
すでに「リスクの高い最新の技術」というわけではなく、
運用面でのメリットを無視できないことも多いのではないでしょうか。

そこで
ハイスペックすぎるVM(いわゆるモンスターVM)をできるだけ
作らないように意識することで、
運用中にライブマイグレーションを実行する敷居を
下げることができないか という思いつきでした。

実際は、そんなに都合のよいスペックのVM を作成できなかったり、
そもそも スケールアウトしやすい アーキテクチャではなかったりする
ことが多いでしょう。
そして、VM をスケールアウトさせることは CPU/メモリ/ディスクといったリソースの
分割損を発生させることにもなるはずです。

なかなかそううまくはいかないのですが、
日頃からサーバ仮想化インフラの最適化を心掛けたいと思います。
そして DRS へ ・・・

以上です。最近ちょっと VM のサイジングについて思ったことでした。

2013年12月7日土曜日

Oracle VM で DRS。

こんにちは。

JPOUG Advent Calendar 2013
http://www.zusaar.com/event/1687004
の12月7日担当です。
昨年、これに参加するべくブログ始めてから1年たってしまいました。

今回は100%ネタがかぶらないであろう Oracle VM 3.x の DRS について
軟式に検証してみます。


DRS とは

DRS とは、正式には
Distributed Resource Scheduling (もしくは Scheduler) といいます。
Oracle VM  Server(以下、OVS)のサーバプールのなかで
稼働状況(CPU、メモリ、NWトラフィックの使用ぐあい)をもとに VM を自動再配置する機能です。
VM の再配置では、ライブマイグレーションが実行されます。
Oracle VM ユーザーズ・ガイド リリース3.2.1
6.5.1 分散リソース・スケジューラ(DRS) 

http://docs.oracle.com/cd/E40528_01/b71928/vmusg-svrpool-policies.html#vmusg-svrpool-drs
某 VMware vSphere の超有名な DRS と似ている・・・

DRSの構成

今回、OVS 4台で DRS 環境を構築してみました。

構築の流れは下記のような感じで、
すべて Oracle VM Manager から設定します。
  1. 共有ストレージに VM の仮想ディスクを配置しておく。
  2. ライブマイグレーションできる構成にする。
  3. Oracle VM のサーバプールの設定で、DRS を有効化する。
DRS 環境の構成イメージです。



Oracle VM Manager のネットワーク設定で
ライブマイグレーションができる状態にして、



サーバプールのポリシー設定で DRS を有効化します。



上記の構成イメージ図は、Oracle VM Manager からはこのように見えます。
サーバプールには OVS が4台あり、
Policy Type が 「Distributed Resource Scheduler」になっています。


※OVS と VM には、それらしい名前を付けてみました。

共有ストレージには、NFSを使用して
ここに VM の仮想ディスクを配置しています。
NFS のリポジトリを、すべてのOVS に接続しています。




DRS 試します。

一般的に実運用中の VM をライブマイグレーションする場合は、
負荷が少ないタイミング(営業時間外とか)を狙って実行することが多いと思います。

そして、ハイパーバイザ(物理サーバ)のバランシングが目的でライブマイグレーションするときは、
高負荷になっていない VM の方を移動する(逃がす)ことが多いです。

主な理由としては・・・
  • 高負荷サーバをライブマイグレーションすると時間がかかる。
    (更新されたメモリをライブマイグレーション中に同期したりするので)
  • 高負荷サーバをライブマイグレーションするとマイグレーション処理が失敗しそう。
    (メモリ更新が、ライブマイグレーションの転送処理に追いつかず失敗しそうで心配)
  • ライブマイグレーションの影響で VM で障害発生ないか心配。
    (「ライブマイグレーションがなんとなく不安」を含む)

そこで、Oracle VM の DRS では
高負荷VM 以外が、別の OVS にライブマイグレーションされやすいのか?
という観点で試してみたいと思います。



DRS 試してみました。

それでは、ためしに DRS してみます。

まず、VM 3台を1台の OVS(OVS#1) で起動しておきます。

DRS 環境での VM と稼働中の OVS の見方 についてですが、
DRS では、VM が自動的にどこかの OVS に移動してしまうので
VM の一覧を見るときはサーバプールのビューにするとわかりやすいです。

サーバプール(例では「svpool1」)を選択して
Perspective で「Virtual Machines」を選択すると、
プールに存在する VM(Name列)と OVS(Server列) のひもづけがわかります。



DRS を発動させるため
VM#1 でわざとCPU使用率を上げて放置します。
# while :; do true ;done
→1VCPUであれば user あたりが 100% 近くなります・・・



しばらく放置すると、DRS によりライブマイグレーションが開始されます。
パッと見でわかりにくいですが、ロックのマークがある OVS 間でマイグレーションされています。




DRS のみかた

ライブマイグレーションの実行履歴は「Job」タブで見られます。
「Created by」が Oracle VM Manager にログインしたユーザ(今回は admin)に
なっている Moving~ が手動ライブマイグレーションです。

DRSで自動ライブマイグレーションされた場合は、
ここが「@OvmAdmin」となります。



今日は 3回試してみて、結果は…
※毎回、手動ライブマイグレーションで OVS#1 にすべての VM を戻しています。

★1回目(1番下)
高負荷 VM#1 と 負荷のないVM#3 が他の OVS に移動した。
→期待とは違う・・・

★2回目(真ん中)
VM#2 と VM#3 が他の OVS に移動した。
→期待通り。

★3回目(一番上)
高負荷VM#1 が他の OVS に移動した…。
最初に VM#1 が移動されたため、それ以降はライブマイグレーションなし。
→期待とは違う・・・

本当は、期待通りになるのではないかと思いましたが、
なんと期待通りの結果にはなりませんでした。
(昨日までは割と期待通りだったのですが・・・)

ただ、そんなに回数を試していないので
必ずしも今回のようになるとは限らないかもしれません。
DRS って某V社のものも「必ずこう動く」という予測ができないですし・・・

微妙な結果でしたが、
ちょっと Oracle VM に興味を持ってもらえるとうれしいです。

以上、Oracle VM DRS の話でした。
明日の JPOUG Advent Calendar 2013 は yuu_tee さんです。よろしくおねがいします。