Archive for January, 2010
XXXよりOracle VMが優れているところはどこですか?
XXXには各種仮想化ソフトウェアが入ると思って下さい。
お客様からOracle VMの説明の依頼をいただいたときに、ほぼ必ず訊かれるのがこの質問です。この質問にそのままご回答するのはあまり本意ではないのですが、今だと大体このようにお答えします。
- 最新のXenをEnjoyしたいのであれば、Oracle VMが最適では。Xen 3.4採用でインストールも1CDから10分で完了。Xenの何がいいの?といわれたら、性能と実績。Xenは仮想マシンの性能を劇的に改善したHypervisor型、準仮想化モードのパイオニア。これから主流になりそうな最新のCPU仮想化機構にももちろん対応。性能には定評があり、多くの主要クラウドサービスで採用されている仮想化エンジン。また、今年リリースが見込まれるXen 4.0ではソフトウェアでFT機構を提供するRemusやPage Sharingといった先進機能満載。最近いろいろ仮想化ソフトありますが、Xenってやっぱり最高だと思う。
- GUIが付属している。GUIがある、ないでは、マニュアルを読まなきゃ始められないか、読まなくてもある程度直感的に操作できるかという点で大きく異なる。Oracle VM Managerは最高のGUIだ!とは言いませんが(オイオイ)、便利な管理ツールであることは間違いない。Oracle VMは最新のXenを最も手軽に使い始めることができ、かつ、複数サーバを管理できるGUIがついている。
- H/A機能が付いている。VM Serverが意図せずダウンしたときにはそのVM Server上で稼働していたVMは他のVM Serverで自動的に復旧(OS起動)する。このVM H/A機能はVMになんら手を加えずに障害時自動復旧の機構を提供するので、どんなシステムにもすぐに適用することができる。しかも、タダで。VM H/A機能まで完全にタダで利用できるのはOracle VMだけでは。そしてもしサポートが要る、と思ったらサポートも購入できる。これもまた妙に安い。
- 最高の仮想化エンジンを使うことができて、マネージャーも付属。さらにはライブマイグレーションやH/Aというオプションまで標準で装備しており、、、ライセンスフリー。もし純粋な仮想化ソフトとして他の製品と比較したとしても、僕がエンドユーザだったらかなり気になる。もし僕が中嶋商会をスタートアップしたとして、タダでここまでやれちゃうソフトがあるのに、何百万も払って他の仮想化ソフトを購入するという選択肢はまずないと思われます。(あくまで中嶋商会だったら、の話しですよ)
と、ここまでが単に「仮想化ソフト」としてOracle VMを見た時に思うこと。しかし最初に本意ではない、と書いた通り、あまり仮想化ソフトだけで比較しても大切なことが見えてこないと思っています。最終的にはユーザーはシステムや、サービスを構築/運用するのであって、インテグレートされた姿が最も大切。VM, OS, Database, Application Server, そして監視、管理のシステムがいかにスムースに連携して、最終的に最もコストを抑えてハイパフォーマンスを発揮するかに注目したい。そこには単に「動くはず」といった理論ではなく、実際に検証を行って見い出されるベストプラクティスが不可欠で、その動作の実績というものが重要視されるはずです。例えばRACを仮想化環境上で動かすときにはいくつかの注意点があります。クラスタ間のタイマー同期の問題、ネッワークセグメントの構成方法、安全なvCPU割り当て、VBDの形式等です。Oracleではこれらのコンフィギュレーションについてベストプラクティスを提供しています。サーバ仮想化環境でRACを確実に動作させるために、というものです。Oracle VM, Oracle Enterprise Linux, Oracle Databaseそしてストレージにまたがる全システム構成について言及しています。単に各ソフトウェアレイヤについてオールスターを集めてくる、ということに捕らわれると、一番大事なチームとしてのパフォーマンスが後回しになってしまいます。最初にプレーヤーを個別に選定すると、後々「アレとアレの組み合わせがサポートされない」であるとか、「実績はあるのか?」という問題でもめることになりがちです。オールスターを集めることだけではなく、チームとしての完成度を意識することが重要だと思います。そしてOracleではこのようなベストプラクティス、ノウハウをホワイトペーパーやNoteといったドキュメントで提供しています。あるいはコンサルティングサービスという形で設計のレビューや実際の設計作業も請け負っています。そして、特筆すべきことはベストプラクティスをそのまま「VMテンプレート」という形で提供していることです。例えばOracle DatabaseのVMテンプレートは、Database用に最適化されたOracle Enterprise Linux JeOSにDatabaseがすでにインストールされた状態で提供されています。つまりVMテンプレートを使えばDatabaseのインストールという作業を省略できることはもちろん、同時にそれ以前に必要なDatabase用にOSを設定するという作業(カーネルパラメータ変更、必要なパッケージのインストール)も不要になります。これは作業工程が短縮されるということ以上に、Database用に最適化されたイメージをそのまま適用できることによる「確実なシステム構築」ということを意味しています。VMテンプレートとは最適化された「チーム」をまるごと手に入れて、すぐにゲームを開始できる、ということだと思います。もちろんVMテンプレートを使っても個別に設計が必要な部分は残ります。ストレージ周りの物理構成、論理構成等は入念な設計が必要な最たる例です。しかしVMテンプレートをうまく採用し、自社環境用にカスタマイズすることで得られるメリットは少なくないと思います。
仮想化はいまだにバブっている分野で、その中心を成すサーバ仮想化ソフトウェアには熱い視線が注がれています。しかしふと、着眼点として仮想化ソフトの選定というところから一歩引いて考えると、チームとしてどれが最高なのかという新たなパラダイムが見えてくるかもしれません。OracleはVirtualization+GRIDという連携で最高のチームを用意しています。これは本気で最高のシステムです。(僕はこのシステムを超高密度インフラストラクチャーと呼んでいます。たぶん僕しか呼んでいません。)*そのチームって具体的にどんな?という方はお近くの営業までお問い合わせください。
重要なのはソフトウェア? それとも、システム?
Oracle VMでVLANを設定する
サーバを仮想化すると必然的に一つの物理ネットワークポートを数多くのVMで共有することになりがちです。そんな環境では、セキュリティ的に(こういう表現好きじゃないんだけど)それぞれのVMのセグメントを分離したいという要件がでてきます。または、特にRAC等の検証環境で物理ネットワークポートは一個しかないんだけど、仮想マシンには最低2つのセグメントを与えたい、というような要件がでてきます。そんなときにはVLANですよね。
ということで、Oracle VM環境でVM Serverには物理的なネットワークポートは一つしかないけど、VLANで二つの仮想ネットワークポートを作成して仮想マシンに2つのネットワークセグメントへの接続を与えるという設定方法を紹介します。RACでは最低でもPublicとPrivateの二つのセグメントが必要になるのでそういう場合に便利です。
*ちなみにOracle VMはバージョンによって内部仮想ネットワークの構成がちょいちょい変わっていますが、この手順は2.1.xでも最新の2.2でもいけるはずです。
*タグVLAN(802.1q)を使用するので、VM Serverを結ぶネットワークスイッチも適切に設定する必要があります。
まずxend-config.sxpを編集してネットーワーク設定の初期化を行うnetwork-scriptを変更します。
[root@vmserver]# cd /etc/xen/xend-config.sxp (network-script network-bridge-ovs)
次に先程指定したnetwork-bridge-ovsを作成します。これは実際にはダミーです。つまりVLANを構成する場合は通常のネットワーク初期化機構を放棄するという設定を行っているわけです。
[root@vmserver]# vi /etc/xen/scripts/network-bridge-ovs #!/bin/sh /bin/true
そしてVLAN用に仮想スイッチの設定ファイルを作成します。各VLAN毎にxenbr(仮想スイッチ)を作成します。xenbrNNのNNの部分は任意ですが、VLAN IDと紐付けておくのが吉でしょう。ここではVLAN ID:11と、VLAN ID:12に対応するxenbrを作成しています。
[root@vmserver]# vi /etc/sysconfig/network-scripts/ifcfg-xenbr11 DEVICE=xenbr11 ONBOOT=yes TYPE=Bridge DELAY=0 STP=off BOOTPROTO=static IPADDR=10.0.11.1 NETMASK=255.255.255.0 [root@vmserver]# vi /etc/sysconfig/network-scripts/ifcfg-xenbr12 DEVICE=xenbr12 ONBOOT=yes TYPE=Bridge DELAY=0 STP=off BOOTPROTO=static IPADDR=10.0.12.1 NETMASK=255.255.255.0
次にVLANインターフェースを作成します。ここではeth0上にVLAN ID:11とVLAN ID:12となるインターフェースを作成しています。このときのeth0.NNのNNがVLAN IDの指定になります。単なる名前ではなくVLAN IDの設定になるので、ここの設定と物理スイッチでのVLAN設定は合わせる必要があります。そして各VLANインターフェースは先程作成した対応するxenbrにそれぞれ接続します。
[root@vmserver]# vi /etc/sysconfig/network-scripts/ifcfg-eth0.11 DEVICE=eth0.11 BOOTPROTO=none ONBOOT=yes BRIDGE=xenbr11 VLAN=yes [root@vmserver]# vi /etc/sysconfig/network-scripts/ifcfg-eth0.12 DEVICE=eth0.12 BOOTPROTO=none ONBOOT=yes BRIDGE=xenbr12 VLAN=yes
これで完了です。VM Serverを再起動すればxenbr11が作成され、そこにeth0.11が接続されます。また、xenbr12が作成され、eth0.12がそこに作成されます。
ゲストOSの仮想ネットワークインターフェースを作成するときは、xebr11を指定すればVLAN 11に、xenbr12を指定すればVLAN 12に接続されます。
Oracle VM Server 2.2をインストールした後に最低限行う作業(2/1更新)
少し独断と偏見が入っていますがつれづれなるままに。
- up2dateコマンドでULN (Unbreakable Linux Network) へ登録(サポートを購入してないと登録できません)
- *サポートを買ってない人はhttp://public-yum.oracle.com/repo/EnterpriseLinux/EL5/3/base/i386/からOEL5.3のパッケージをインストールできます。後述のvim-enhancedとか。
- ULNにログインし、登録したシステムのサブスクリプションに以下のチャネルを追加
- Enterprise Linux 5 update 3 installation media copy (i386)
- Enterprise Linux 5 update 3 patch (i386)
- vim-enhanced、screenをインストールし、.bashrcを編集してalias vi=’vim’とする
[root@vmserver]# up2date vim-enhanced screen
- up2date –configureで19番をクリアする
- up2date –updateでパッチをすべて適用
また思いついたら都度更新します。
Oracle VM上でOpenSolarisをPVMとしてJeOSから作成する方法
注)2010年1月現在、OpenSolarisはOracle VMのゲストOSとしてサポートされていません。
Oracle VM 2.2上でOpenSolaris 2009.06をPVM(準仮想マシン)としてインストールする方法を紹介します。まだプロトタイプという位置づけではあるものの、実はOpenSolaris 2009.06にもいわゆるVMテンプレートが存在します。今回はそのテンプレートを使ってOpenSolarisのPVMを作成します。まずはVMテンプレートをダウンロードします。
OpenSolaris 2009.06 JeOS Prototype VM Images
このページからXen用のPVMイメージをダウンロードします。直リンはこちら。(直リンって久しぶりだな。。)
Xen: Oracle VM, OpenSolaris xVM, etc. KVM: (In XEN HVM mode)
そしてこのイメージは7zipという少し耳慣れないツールで圧縮されています。以下のページからご自身のプラットフォームに応じたモジュールをゲットしてインストールしてください。
http://www.7-zip.org/download.html
僕はp7zip for POSIX/Linuxをダウンロードしてビルドしました。そして使い方で一点ハマリポイントがありました。深く考えずに/usr/local/bin/7za e osol-0906-jeos-proto-xvm-zen-para.7z などとしていたのですが、eだと現在のディレクトリ直下にすべてが解凍されてしまい、サブディレクト内に何にもねぇ!ってことになってしまいます。p7zip for POSIX/Linuxを使われる方はくれぐれも/usr/local/bin/7za x osol-0906-jeos-proto-xvm-zen-para.7z で解凍してください。他のプラットフォームはわかりません。また、Oracle VM Serverにはgcc等の開発キットは含まれていないのでmakeはできません。7zipは他のプラットフォームにインストールしてVMイメージは解凍してからVM Serverに格納するのが吉でしょう。
解凍してできたディレクトリをVM Serverの/OVS/running_pool/直下に保存します。
[root@vmserver]# pwd /OVS/running_pool [root@vmserver]# ls OSOL0906JeOSProto
次に設定ファイル生成スクリプトを編集します。というかこのスクリプトを編集して設定ファイルそのものにしたらいいんじゃないかという気もします。どっちでもいい話ですが、結果的に以下のファイルを作成します。(ファイル名はvm.cfgでなくても良いのですが、Oracle VMの慣例にならってvm.cfgとしておきます。
[root@vmserver]# cd OSOL0906JeOSProto/ [root@vmserver]# vi vm.cfg name = "OSOL0906JeOSProto" vcpus = 1 memory = "768" disk = [ 'file:/OVS/running_pool/OSOL0906JeOSProto/System.raw/vdisk.raw,xvda,w', 'file:/OVS/running_pool/OSOL0906JeOSProto/instance.raw/vdisk.raw,xvdb,w' ] vif = ['type=netfront,bridge=xenbr0,mac=00:16:3e:00:00:01'] on_shutdown = "destroy" on_reboot = "destroy" on_crash = "preserve"
あとはxmコマンドで以下のように起動すればOpenSolarisがPVMとして起動します。
[root@vmserver]# xm create vm.cfg -c
ただしこのOpenSolaris、Just Enoughと名乗るだけあってほんとに軽量版です。汎用的に利用するにはいろいろとパッケージを追加する必要があるでしょう。しかし手元の環境ではsshがうまく起動せず、疲れてきたので作業終了しました(オイオイ)。
どなたかこのJeOSでsshを普通に起動する方法をご存知でしたら教えてください。
1/26追記:/lib/svc/method/sshd -cしておくと起動できました。@satokazさん、有難うございます!
ここまで書いておきながらなんですが、僕は普通にvirshを使ってPVMをインストールしようと思います。その手順はまた後ほど。
Oracle VM 2.2 VM Managerテンプレート Released !!!!
いつも本体のNew Versionリリースと若干時差があって恐縮なのですが、Oracle VM 2.2用のVM Managerテンプレートがリリースされました。
http://www.oracle.com/technology/products/vm/templates/vm-manager.html
ちなみに今までの2.1.5用のVM Managerテンプレートは2.2の環境ではそのままは使えないのでご注意を。今回リリースされた2.2用のテンプレートをお使いください。
Storage GRIDセミナー終了。有難うございました!
今日は遅い時間にも関わらずかなり多くの方々にお越しいただけ、感謝、感謝です、有難うございました!
今日の資料、というか投影していたスライドをUPしました。残念ながらココが味噌、の性能部分についてはご案内させていただいた通り、公開できないため間引きさせていただきました。ごめんなさい。