2014年1月10日金曜日

NIC 認識できないマシン への Oracle VM Server 3.x インストール

Oracle VM Server 3.2.6(OVS)は、
NIC がないマシンにインストールしようとすると途中でエラーになってします。

しかし、何とか OVS が非サポートのマシン(新しいHW や、自作PCなど)で
OVS を使いたいケースもあると思います。

たとえば、下記のような場合にエラーになります。

  • インストール対象マシンに NIC がない。(NIC接続不良など)
  • OVS が対応していない。(NICのドライバを持っていない)


通常、インストール処理を開始する画面(下記)までに
IPアドレス等のネットワーク設定画面が表示されます。
しかし、NIC が利用できない場合は表示されません。



NIC が認識できない場合は、
インストール処理が開始された後に下記のようなエラー画面が出ます。



「OK」 をクリックしても下記のようなメッセージが表示されるだけで、
OVS が起動できるようにはなりません。
エンタープライズ向けなハイパーバイザなので
フェイルセーフな発想なのではないかと思います…



そのため、
NIC 認識されないマシンに何とかインストールして
後で NIC ドライバをインストールするにはちょっと工夫が必要です。

このような場合、私は下記のような流れで後からドライバを導入しています。

OVS を NIC ドライバがないマシンで利用する方法

  1. まず VirtualBox の仮想マシンなどを利用して USBメモリに対して OVS を導入する。
  2. その USBメモリでブートして、NIC認識できないマシンで OVS を起動する。
  3. なんとかして OVS に NIC ドライバをインストールする。
  4. NW設定ファイルを、そのマシンの環境に修正(MACアドレス、IPアドレス)
  5. NICのドライバをロードする。


たとえば、Intel NUC D34010WYK(最近の Haswell CPU を搭載しているNUC)だと
NIC(Intel I218V)に Oracle VM Server 3.2.6 のドライバが当たらず、
この方法で対処しました。

※ちなみに、 Intel NUC DC3217IYE は OVS 3.2.6 で普通に NIC 認識しました。



以上、NIC 認識できないマシンで OVS を使用する方法でした。

2014年1月3日金曜日

Oracle Linux 6.5 の YUM リポジトリ設定のカスタム変数 $uek と $uekr3 について。

Oracle Linux 6.5 からは、UEK R3 が同梱されています。
OL 6.5 64bit (x86_64) をインストールしたところ、デフォルトで
UEK R3 がインストールされ、デフォルトの起動カーネルの選択も UEK です。
[root@oel65-base-64 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@oel65-base-64 ~]# uname -a
Linux oel65-base-64 3.8.13-16.2.1.el6uek.x86_64 #1 SMP Thu Nov 7 17:01:44 PST 2013 x86_64 x86_64 x86_64 GNU/Linux

YUM リポジトリ設定ファイルに変な変数を発見。

YUMリポジトリ設定の enabled には、通常 0(無効) か 1(有効)が入ります。
しかし、OL6.5 の /etc/yum.repos.d/public-yum-ol6.repo を見たところ、
「public_ol6_UEK_latest」という最新の UEK のリポジトリでは「$uek」、
「public_ol6_UEKR3_latest」という最新の UEK R3 のリポジトリでは「$uekr3」という
YUMの組み込み変数ではないと思われる 変数が使用されています。
[root@oel65-base-64 yum.repos.d]# cat -n /etc/yum.repos.d/public-yum-ol6.repo
(省略)
    43  [public_ol6_u5_base]
    44  name=Oracle Linux $releasever Update 5 installation media copy ($basearch)
    45  baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/$basearch/
    46  gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
    47  gpgcheck=1
    48  enabled=0
    49
    50  [public_ol6_UEK_latest]
    51  name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
    52  baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
    53  gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
    54  gpgcheck=1
    55  enabled=$uek
    56
    57  [public_ol6_UEKR3_latest]
    58  name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basearch)
    59  baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
    60  gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
    61  gpgcheck=1
    62  enabled=$uekr3
(省略)

これはYUMの カスタム変数 として設定されています。
Redhatのサイトですが・・・
Red Hat Enterprise Linux 6 導入ガイド
6.3.3. Yum 変数の使用

https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Yum_Variables.html
カスタム変数の定義、既存の変数値の上書きを行うには、/etc/yum/vars/ ディレクトリ内に変数と同じ名前を持つファイルを作成して (「$」 記号はなし) 、1 行目に希望する値を追加します。 

この変数については、下記にも説明がありました。
Oracle Linux Release Notes for Release 6 Update 5
3.2.2 About Public Yum

http://docs.oracle.com/cd/E37670_01/E50738/html/ol_opkg_rn64.html#ol_pubyum_rn64

このカスタム変数は、下記のファイルで設定されています。
ULN に登録していない状態でのデフォルトは、
$uek が 0 (無効)で、$uekr3 が 1 (有効)でした。
UEK は、R3 のリポジトリの方だけ public-yum.oracle.com に見に行くようになっています。
また、OL を ULN に登録すると、両方とも 0 (無効)になり
公開リポジトリの方は見に行かなくなるようです。
[root@oel65-base-64 ~]# ls -l /etc/yum/vars/
合計 8
-rw-r--r--. 1 root root 2 12月 30 07:34 2013 uek
-rw-r--r--. 1 root root 2 12月 30 07:34 2013 uekr3
[root@oel65-base-64 ~]# cat /etc/yum/vars/uek
0
[root@oel65-base-64 ~]# cat /etc/yum/vars/uekr3
1

ただ、このファイルは RPM パッケージに所属していないように見えます。
[root@oel65-base-64 ~]# rpm -qf /etc/yum/vars/uek
ファイル /etc/yum/vars/uek はどのパッケージにも属していません。
[root@oel65-base-64 ~]# rpm -qf /etc/yum/vars/uekr3
ファイル /etc/yum/vars/uekr3 はどのパッケージにも属していません。

UEK の YUM カスタム変数はいつ設定されているのか

YUM リポジトリの設定をしている、public-yum-ol6.repo ファイルは
rhn-client-tools という RPM パッケージに含まれていました。
パッケージ名は uln-~ではなく rhn-~ ですが、
説明文は「Unbreakable Linux Network」になっています。
[root@oel65-base-64 ~]# rpm -qf /etc/yum.repos.d/public-yum-ol6.repo
rhn-client-tools-1.0.0.1-16.0.2.el6.noarch
[root@oel65-base-64 ~]# rpm -qi rhn-client-tools-1.0.0.1-16.0.2.el6.noarch
Name        : rhn-client-tools             Relocations: (not relocatable)
Version     : 1.0.0.1                           Vendor: Oracle America
Release     : 16.0.2.el6                    Build Date: 2013年11月26日 12時03分04秒
Install Date: 2013年12月30日 07時34分03秒      Build Host: ca-build44.us.oracle.com
Group       : System Environment/Base       Source RPM: rhn-client-tools-1.0.0.1-16.0.2.el6.src.rpm
Size        : 2821874                          License: GPLv2
Signature   : RSA/8, 2013年11月26日 12時03分10秒, Key ID 72f97b74ec551f03
URL         : https://fedorahosted.org/spacewalk
Summary     : Support programs and libraries for Unbreakable Linux Network
Description :
Unbreakable Linux Network Client Tools provides programs and libraries to allow your
system to receive software updates from Unbreakable Linux Network.

このパッケージの SPEC ファイル(RPM の情報や作成するときの処理を記載する)を見てみると、
カスタム変数のファイル作成は %post(ファイルをインストールした後の処理)で記載されていました。
そのため、RPM ではこのファイルが管理されてい(-qf では拾えない)ようです。

SPEC ファイルを見るために、
ソースファイルの RPM (~.src.rpm)を下記からDLしてインストールしてみます。
http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/x86_64/
root ユーザでインストールすると、/root/rpmbuild 配下に
ソースファイルや、パッチファイル、SPECファイルなどが配置されます。
[root@oel65-base-64 ~]# rpm -ivh rhn-client-tools-1.0.0.1-16.0.2.el6.src.rpm
   1:rhn-client-tools       ########################################### [100%]

下記のパッチで repo ファイルに $uek や $uekr3 の変数を書いていました。
[root@oel65-base-64 ~]# cat /root/rpmbuild/SOURCES/uekr3.patch
diff -ruN rhn-client-tools-1.0.0.1.orig/src/up2date_client/public-yum-ol6.repo rhn-client-tools-1.0.0.1/src/up2date_client/public-yum-ol6.repo
--- rhn-client-tools-1.0.0.1.orig/src/up2date_client/public-yum-ol6.repo        2013-11-14 07:22:39.087090504 -0800
+++ rhn-client-tools-1.0.0.1/src/up2date_client/public-yum-ol6.repo     2013-11-14 07:25:18.197063897 -0800
@@ -52,7 +52,14 @@
 baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
 gpgcheck=1
-enabled=1
+enabled=$uek

+
+[public_ol6_UEKR3_latest]
+name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basearch)
+baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
+gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
+gpgcheck=1
+enabled=$uekr3

 [public_ol6_UEK_base]
 name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
--- rhn-client-tools-1.0.0.1.orig/src/bin/rhn_check.py  2013-11-14 07:22:39.087090504 -0800
+++ rhn-client-tools-1.0.0.1/src/bin/rhn_check.py       2013-11-14 07:25:18.197063897 -0800
@@ -87,6 +87,8 @@
             for file in files:
                 if "public-yum" in file and "disabled" not in file:
                     file = os.path.join(root, file)
+                    os.system("echo 0 > /etc/yum/vars/uek")
+                    os.system("echo 0 > /etc/yum/vars/uekr3")
                     os.system("sed -i 's/enabled=1/enabled=0/' %s" % file)
 # orabug 16979442: do not rename public yum repo file, only disable channels at registration with ULN
 #                    os.system("mv %s %s-disabled" % (file, file))

そしてこのパッチは、適用するパッチとして SPECファイルに記載されています。
[root@oel65-base-64 ~]# cat -n /root/rpmbuild/SPECS/rhn-client-tools.spec | grep -C10 "uekr3.patch"
    31  #Patch14: rhn-client-tools-1.0.0.1-14-el6-to-rhn-client-tools-1.0.0.1-15-el6.patch
    32  #Patch15: rhn-client-tools-1.0.0.1-15-el6-to-rhn-client-tools-1.0.0.1-16-el6.patch
    33
    34  Patch100: uln.patch
    35  Patch101: uln-po.patch
    36  Patch102: public-yum-norename.patch
    37  Patch103: delete-RHNS-CA-CERT.patch
    38  Patch104: uln-file.patch
    39  Patch105: Bug17760765-donot-disapper-subscription-review.patch
    40  Patch106: pubyum-u5.patch
    41  Patch107: uekr3.patch
    42
    43  URL:     https://fedorahosted.org/spacewalk
    44  Name: rhn-client-tools
    45  Version: 1.0.0.1
    46  Release: 16.0.2%{?dist}
    47  BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
    48  BuildArch: noarch
    49  %if 0%{?suse_version}
    50  BuildRequires: update-desktop-files
    51  %endif

そして、SPEC ファイルの 下記のあたりで YUM のカスタム変数のファイルを作成していました。
/etc/yum/vars/uek と /etc/yum/vars/uekr3 を、環境によって 値を変更して作成しています。
[root@oel65-base-64 ~]# cat -n /root/rpmbuild/SPECS/rhn-client-tools.spec
(省略)
   239  %post -n rhn-setup
   240  arch=`uname -m`
   241  if [ "x${arch}x" == "xx86_64x" ] ; then
   242    echo 0 > /etc/yum/vars/uek
   243    echo 1 > /etc/yum/vars/uekr3
   244  else
   245    echo 1 > /etc/yum/vars/uek
   246    echo 0 > /etc/yum/vars/uekr3
   247  fi
   248  if [ -e /etc/sysconfig/rhn/systemid ];then
   249    for i in `ls /etc/yum.repos.d/public-yum*.repo`;do
   250      sed -i 's/enabled=1/enabled=0/' $i
   251  # do not rename the public-yum*.repo file
   252  #    mv $i $i-disabled
   253    done
   254    echo 0 > /etc/yum/vars/uek
   255    echo 0 > /etc/yum/vars/uekr3
   256  fi
   257  # eventually rename ol6_ channels to public_ol6_ in public_yum*.repo
   258  for i in `ls /etc/yum.repos.d/public-yum*.repo`;do
   259    sed -i 's/^\[ol6_/\[public_ol6_/' $i
   260  done
(省略)

たとえば、YUM のリポジトリ設定をスクリプトなどで変更したいときに、
/etc/yum.repos.d 配下のファイルの中身を編集するよりも
/etc/yum/vars 配下のファイルを編集するだけの方が簡単な気がします。
そんなときは YUM のカスタム変数を使うと便利かもしれないと思いました。

以上、UEK リポジトリ設定の YUM カスタム変数についてでした。

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 について
軟式に検証してみます。