DBA: Linux

   ダウンロード
 Oracle Database 11g & Oracle Clusterware
 Oracle VM 2.1 and "Small" OEL Template (PV_x86_64)
 OpenFiler 2.2 for Xen 64-bit
   TAGS
linux, rac, virtualization, All
Oracle VMおよびOracle Enterprise Linuxでの独自のOracle RAC拡張クラスタの構築

Jakub Wartak著

低価格でありながら完全に機能する拡張されたOracle RACの実装を、仮想化環境で構築する方法について説明します。

このガイドに記載されている情報については、オラクルによる検証またはサポートはおこなわれていません。これらの情報は、ご自身の責任において、学習目的でのみご使用ください。

2008年10月更新

目次

  1. はじめに
  2. ソフトウェア要件
  3. Oracle VM Serverのインストール
  4. Oracle VM Managerのインストール
  5. 仮想マシン(VM)の設定
  6. Oracleソフトウェアのインストール準備
  7. Oracle Clusterwareのインストール
  8. Oracle Databaseソフトウェアのインストール
  9. フェイルオーバー機能のテスト
  10. トラブルシューティングおよびそのほかの情報
  11. 次のステップ
  12. 謝辞


このガイドは、Oracle ACEのJeffrey Hunterによるガイド『 Build Your Own Oracle RAC 11g Cluster on Oracle Enterprise Linux and iSCSI』から着想を得て、著者自身の許可を得たうえでそれを基盤に作成したものです。 LinuxでのOracle RACのインストールに疑問がある場合は、このガイドを一読し、ここでの前提条件となっているOracle RACに関する予備知識を事前に得ておくことを推奨します。

 


1. はじめに

一般的に、Oracle Real Application Clusters(Oracle RAC)のデプロイメント・アーキテクチャでは、単一ノードまたは複数ノードの障害からの迅速なリカバリが可能です。 ただし通常のシナリオでは、Oracle RACのノードはすべて単一のデータセンターに配置されているため、データセンターの障害が致命的なものとなる傾向があります。 このようなシナリオで障害時リカバリを実現するためのソリューションとして、ローカルのデータセンターと、スタンバイ・システムが実行されているバックアップ用のデータセンター(通常、単一のOracleデータベースまたは別のOracle RACクラスタ)との間でOracle Data Guardを設定するという方法が挙げられます。

Oracle Data Guardを使用すれば、この問題を解決することができますが、この場合はスタンバイのシステムおよびアレイ全体がパッシブ・ノードになります。パッシブ・ノードでは、コンピューティング能力をトランザクションのために利用することができないため、結果としてこのソリューションは非常に高額なものとなってしまいます。 (スタンバイのOracle Data Guardシステムは、読取り専用の問合せで使用することができるだけでなく、Oracle Database 11gでOracle Active Data Guardを常時読取り専用モードで実行することも可能ですが、この構成におけるアプリケーションは、読取り専用のノードがあることを認識した処理である必要があります。)

ここで、(局部的な)障害時のリカバリを実現する別のソリューションがあります。これは、拡張RACと呼ばれています。 このアーキテクチャでは、一部のRACノードが"サイトAlpha(アルファ)"で機能し、残りのノードは"サイトBeta(ベータ)"で動きます。 この両方のサイトのノードがアクティブであるため、すべてのコンピューティング・リソースを完全に使用することが可能となります。 図1に示されているように、各サイトには、それぞれ固有のストレージ・エリア・ネットワーク(SAN)があります。両方のデータセンター(データセンターAおよびデータセンターB)のシステムは、同じ単一のOracle RACクラスタのメンバーであるため、インターコネクトを介したデータ交換のスピードは速くなければならず、もう一方のサイトのストレージへのアクセスも可能でなければなりません。 (つまり、データセンターAのノードRAC1は、データセンターBのSANアレイへの書込みをおこない、さらにデータセンターBのRAC2ノードとの通信もおこないます。)


図1

このガイドでは、単一のx86-64ビットPC上でOracle VM 2.1の仮想化を使用して、低コストかつ完全機能であるOracle 拡張RACの構築を、学習のみを目的としておこないます。 (詳細なトポロジについては、図2を参照してください。) Oracle RACでは、読取りまたは書込みの際にインターコネクトでの待機時間とI/O待機時間の影響を受けやすいため、待機時間が主要な制約要素となります。そのため、ここではIPネットワークでLinuxのQoSを利用し、インターコネクトとストレージ用イーサネットのトラフィックに対する遅延時間を人為的に発生させます。

拡張RACを構築できれば、コストの削減も可能となりますが、さらに以下のいずれかの前提条件と一致している場合には、企業のアプリケーションの可用性の大幅な向上にもつながります。

  • 2つのデータセンター/建物/サーバールームが、待機時間がきわめて短く高速なネットワークで直接接続されている(または、よりよい状況として、これらの場所でストレージ・インフラストラクチャが整備されている)
  • 経営陣が、自社システムの可用性を向上させるための投資に積極的である(Oracle RACには、Oracle Data Guardよりもフェイルオーバーの時間が短いという特長がある)


また理論的には、拡張RACではストレージ・アレイが停止してもクラスタでリクエストの処理が停止することはないため、地球上でもっとも信頼性の高いストレージ・アレイを備える必要はありません。

このガイドに記載されている構成では、2つのOracle Enterprise Linux 5.1システム上で、Oracle Database 11g Release 1をRAC構成で実行します。 Oracle RACノードのストレージには、OpenFiler上で実行されている2つのiSCSIストレージ・サーバーを利用します。 また、この構成では、Oracle Automatic Storage Management(Oracle ASM)によって提供される機能や、Oracle Database 10g以降のホスト/データベースを基盤としたミラー化機能も使用します。


図2

理想的には、拡張RACを実装するには、より高いパフォーマンスを実現できる実際のハードウェアを使用するべきですが、これは研究およびトレーニングのみを目的としたアーキテクチャであるため、この程度の妥協は許容範囲内です。 Oracle VM Serverで必要となるのは単一のコンピュータのみですが、仮想化システムを管理するためのシンプルなWebコンソールであるOracle VM Managerをインストールするために、別のPCが必要となります。

推奨されるストレージとしては、執筆時点では、まだファイバ・チャネル・プロトコル(FCP)が有力ですが、Oracle Database 11gでは、Oracle Direct NFSなどのパフォーマンス拡張とあわせ、データファイル用NFS共有ストレージに対するサポートが導入されています。 このガイドでは、実行するインストールの性質から、実際のFCPのコンセプトを損なわないようにするためのストレージ・オプションとして、より簡単なiSCSIアプローチをそのまま使用します。 拡張RACのシナリオでは、データセンターAとデータセンターB以外の場所に、3番目の投票ディスクを配置して、完全なフォルト・トレラントを備えたアーキテクチャを実現する必要がある点に注意してください。

このガイドで説明するディスク・ミラー化の構成は、I/Oのマルチパス化や冗長なインターコネクトもないため、本番環境でのシナリオには適していません。 また、このガイドでは完全なOracle RAC 11g評価システムを正常にインストールするための詳細な手順を説明していますが、これはオラクルの公式ドキュメントの代わりとなるものではありません。 実行にあたっては、このガイド以外に以下のオラクルのドキュメントを参照し、Oracle RAC 11gの別の構成オプション、インストール、および管理について完全に理解しておいてください。

このガイドでは、以下の環境でOracle VMのインストールを実行しました。
  • Intel QuadCore Q6600 2.4GHz(4コア)
  • 8GBのDDR2 RAM
  • 160GB SATAII 7200 RPMハードディスク x 3
  • DVDリーダー
Oracle VM Managerをインストールしたワークステーションの環境は、以下のとおりです。(ここではCentOS 5.0を使用しました。 Oracle Enterprise Linux 5のインストールも可能でしたが、時間節約のためにインストール済みのCentOSを使用しました。)
  • AMD Sempron 3000+(シングル・コア)
  • 1.5GBのDDR RAM
  • 250GB SATAハードディスク
  • DVDライター

説明を始める前に、次の点について再度お断りしておきます。 このガイドは学習のみを目的としたもので、本番環境での配置についてはサポート対象ではなく、考慮もしていません。 また、このガイドの使用中に生じた問題について、Oracle Supportでは対応しません。

 


2. ソフトウェア要件

拡張RACを構築するには、次のソフトウェアをダウンロードする必要があります。詳細な手順については以下に示します。

Oracle VM Server 2.1およびOracle VM Manager 2.1

この2つは無償の製品です。 登録後、 Select a Product Packで「 Oracle VM」を選択し、 Product architectureで「 x86 64 bit」を選択してから、「 Go」をクリックします。 「 Oracle VM 2.1 Media Pack」をマークして「 Continue」をクリックします。 画面に以下の2つが表示されます。

  • Oracle VM server 2.1(304MB)
  • Oracle VM manager 2.1(534MB)

事前に用意しておいたダウンロード用のディレクトリに、上記2つのファイルをダウンロードします。 この2つの*.zipファイルを解凍すると、2つのISOファイルが表示されます。これらのファイルは、任意のCD書込みソフトウェアを使用してCDに記録することができます。

  • OracleVM-Server-2.1.iso
  • OracleVM-Manager-2.1.iso

(ヒント:この2つのISOをワークステーションにダウンロードし、そのワークステーションにOracleVM-Manager-2.1.isoをインストールする場合は、OracleVM-Manager-2.1.isoをインストール目的でCDに記録する必要はありません。 Linuxで以下のコマンドを使用すると、/mnt/cdromにCDのループバック・マウントをおこなうことができます。)

mount -o loop,ro  OracleVM-Manager-2.1.iso /mnt/cdrom"
Oracle Enterprise Linux 5.1 Update 1 "Small" Template(PV_x86_64)

ここでインストール・メディアCDまたはDVDを使用してLinuxシステムを最初からインストールしない場合は、オラクル提供のVM Linuxテンプレートを使用します。 VM Linuxテンプレートは、実行可能なシステム全体のディスク・イメージが含まれたバイナリ・ファイルです。 Oracle VMにより提供される環境は一般的なものであるため、ドライバを確実に揃えるためにシステムごとにインストールを実行する必要はなく、テンプレートから各Linuxインスタンスのクローンを作成し、それを起動することができます。 オラクルでは、Oracle Database用に事前構成されたテンプレートを提供しています。

サインインをして契約に同意したあと、 Product Packピックリストから「 Oracle VM Templates」を、 Platformピックリストから「 x86_64」を選択し、「Go」をクリックします。 「 Oracle VM Templates for Oracle Enterprise Linux 5 Media Pack for x86_64(64 bit)」リンクをクリックして、「 Oracle Enterprise Linux 5 Update 2 template - PV Small x86_64(64 bit)」のダウンロードを選択します。

準仮想化(PV)システムとハードウェア仮想化(HVM)システムとのおもな違いは、LinuxのカーネルとOracle VM Serverのカーネル(Xenハイパーバイザ)間のインタラクションの性質にあります。 HVMシステムは、Xenの機能を活用するための特別なフックが搭載されていない標準のx86またはx86_64システムで、Xenが組み込まれていない標準のPC上で実行できます。 一方、PVシステムは、Xen上で実行されているという事実を認識するもので、ハードウェアとやりとりをおこなう代わりに直接Xenと通信をおこなうため、HVMを使用する場合のように実際のハードウェアをエミュレートする必要はありません。

Oracle Database 11gおよびOracle Clusterware for Linux x86 64-bit

ダウンロードの必要があるファイルは、次の2つです。

  • linux.x64_11gR1_database.zip
  • linux.x64_11gR1_clusterware.zip
OpenFiler 2.2 for Xen 64-bit

ダウンロード・ページを開いたら、openfiler-2.2-x86.img.gz(~160MB)を探してください。 ここではバージョン2.2を使用しますが、バージョン2.3もチェックすることをお勧めします。バージョン2.3を使用すると、iSCSIスナップショットのLUNマッピングやiSCSIの動的ボリュームサイズ変更などの役立つ機能が追加されます(ただし、このガイドでは使用テストをおこなっていません)。

 


3. Oracle VM Serverのインストール

Oracle VM ServerのブータブルCDを作成したら、スワッピングなしで複数のLinuxインスタンスを処理できるだけのCPUとRAMを備えたPCに、作成したCDを挿入します。 以下の手順に従ってOracle VMをインストールします。

  1. "Oracle VM Server"というブート画面が表示されたあと、[ ENTER]キーを押すと、インストール・プロセスが始まります。
  2. 次に、インストールの前にCDをテストすることができます。 ここでは、CDの損傷や記録上の問題が原因でインストール・プロセスが中止されるという事態を避けるために、「 OK」をクリックしてテストを実行することをお勧めします。
  3. 言語選択用のウィンドウで、「 English」を選択してから「 OK」をクリックし、処理を続行します。 次に、キーボード・モデルを選択します。デフォルトの設定をそのまま使用することもできます。
  4. 必要に応じて、パーティショニング用のダイアログを開き、古いパーティションを削除することもできます。 (ただし、パーティションには古いデータが含まれていることがあるため、削除は慎重におこなってください。) ここでは、自作の機器で最大限のパフォーマンスを得られるようにすることを目的としているため、3つのディスクで構成されるRAID0アレイを作成します。 GRUBブート・ローダーではRAID0からのブートはできないため、ブート専用のパーティション作成が必要となります。
    1. 全ディスクのすべてのパーティションを消去します。
    2. sda(1番目のSATAディスク)のext3ファイル・システムで、256MBのブート・パーティションを作成します。 これには、Oracle VM Serverのハイパーバイザをブートするために必要なカーネルとinitrdイメージを含めます。 作成時に「 Force to be primary partition」を選択し、x86プライマリ・パーティションが作成されるようにします。 このパーティションの名前をsda1とします。
    3. 1GB程度のsdaで、スワップ・パーティションを作成します。 (注:Oracle VM dom0で使用するメモリは、デフォルトで最大512MBに設定されていますが、容量の大きいアプリケーションがあるわけではないため、スワップだけのために数ギガバイトものストレージを割り当てるのは意味がありません。 dom0の役割は、デフォルトでは実際のI/Oとハードウェア関連の処理をおこなうことだけとなっています。 ただし、実際の仮想マシンであるdomUでは、それぞれの必要に応じたサイズのスワップ領域が個々に必要となります。)
    4. sdaで、「 Fill all available spaceオプションをチェックして"ソフトウェアRAIDパーティション"を作成します。このパーティションの名前はsda3とします。
    5. sdbで、「 Fill all available spaceオプションをチェックして"ソフトウェアRAIDパーティション"を作成します。このパーティションの名前はsdb1とします。
    6. sdcで、「 Fill all available space」オプションをチェックして"ソフトウェアRAIDパーティション"を作成します。このパーティションの名前はsdc1とします。
    7. まだほかにもディスクがある場合は、各ディスクにRAIDパーティションを作成すると、ストレージ・パフォーマンスをさらに高めることができます。
    8. RAID」ボタンをクリックして、ソフトウェアRAIDアレイを作成します。 RAID0を選択し、このアレイに加えるソフトウェアRAIDパーティションすべて(このシナリオではsda3、sdb1、sdc1)を選択します。 ファイル・システムが"ext3"、マウント・ポイントが"/"となっていることを確認します(注:デフォルトのRAID0ストライプは256KBです)。 これは、Oracle VMインストーラを使用してソフトウェアRAIDアレイを作成している間は変更できません。ただし、必要であれば、[Alt]+[F2]を押すことで2番目の仮想コンソールに切り替えて古いアレイをアンマウントし、インストール前にmdadmを使用してRAIDアレイを作成しなおすこともできます。 ただし、この処理については検証していないため、実行する場合は注意してください。)
    9. 変更を受け入れ、「 OK」ボタンをクリックしてパーティション変更を保存します。
    10. 次に表示された画面で、ブート・ローダー(GRUB)のインストール先を選択する必要があります。 ここではMBR(マスター・ブート・レコード)にインストールします。
    11. 次に、管理インタフェースとして使用するイーサネット・インタフェースを指定します。 このケースでは、"eth0"(最初に検出されるイーサネット用PCIネットワーク・カード)を選択します。 ネットワーク・カードを選択したら、適切なIPアドレスを設定します。
      1. Enable IPv4 support」オプションと「 Activate on boot」オプションのみを選択します。
      2. IPアドレスを設定するには、"IPv4"フィールドに使用するIPアドレスを入力します。このシナリオでは、"10.99.1.2"と入力します。 入力時には、適切な接頭辞(ネットマスク)を忘れないようにしてください(例:"255.255.255.0"の場合は"24")。
      3. OK」をクリックして、設定を受け入れます。
      4. IPv4ゲートウェイとDNSネーム・サーバーの指定が求められます(例:10.99.1.1)。
      5. Hostname Configuration画面で、「 manual」モードを選択し、このサーバーに対してわかりやすいホスト名を入力します(例:quadovm)。
    12. ネットワークの構成後、以下の設定をおこなうように求められます。
      1. タイムゾーン(各自の環境に合わせて選択してください。)
      2. Oracle VM Agentパスワード - これは、Oracle VM Serverの管理用としてOracle VM Managerで使用されることになるため、非常に重要です(外部に漏れないようにしてください)。
      3. Rootパスワード - Oracle VM Server用のメインの管理パスワードとなるため、これも重要なパスワードです。

上記の設定を終えたら、インストール・プロセスが終了するのを待ちます。 終了すると、CDトレイが自動的にイジェクトされます。 リブート後、Oracle VM Serverがインストールされていることを確認できます。 Oracle VM Serverには、以下の場所からrootユーザーとしてログインできます。

  • コンソールまたはKVM(キーボード、ビデオ、マウス)からの直接ログイン
  • ワークステーションからの、ssh -l root 10.99.1.2によるSSHログイン (注:Oracle VM Serverでは、Xenのdom0ドメイン用として使用できるRAMは512MBのみとなります。これは、システムにそれ以上のRAMがある場合も同じです。 この動作はごく正常なもので、残りのメモリはゲスト仮想マシン用として使用されることになります。 実際に使用可能なメモリについては、以下を実行すると確認できます。

[root@quadovm ~]# xm info | grep mem
total_memory : 8182
free_memory : 7537
[root@quadovm ~]#

 


4. Oracle VM Managerのインストール

Oracle VM Managerのインストールは非常に簡単です。 Oracle VM ManagerがマウントされているISO CDを使用して、インストーラ・プログラムを起動します。

[root@xeno ~]# cd /mnt/cdrom
[root@xeno cdrom]# sh runInstaller.sh
[..]
Welcome to Oracle VM Manager

Please enter the choice: [1|2]
  1. Install Oracle VM Manager
  2. Uninstall Oracle VM Manager

ここでは"1"を選択して、インストールを続行します。 インストール先のワークステーションに、Oracle VM Manager用として約2GBの空き領域があることを確認してください。 インストールは、以下のように非常に単純です。

                                                                         
Starting Oracle VM Manager installation ...

Checking the supported platforms ... Done

Checking the prerequisite packages are installed ... Done

Checking the available disk space ... Done

Installing the oracle-xe-univ package (rpm) ... Done

Oracle Database 10g Express Edition Configuration ------------------------------------------------- This will configure on-boot properties of Oracle Database 10g Express Edition. The following questions will determine whether the database should be starting upon system boot, the ports it will use, and the passwords that will be used for database accounts. Press <Enter> to accept the defaults. Ctrl-C will abort.



Specify the HTTP port that will be used for Oracle Application Express [8080]: We chose the default tomcat 8080 port, but you can always pick any other port in this case. Specify a port that will be used for the database listener [1521]: <ENTER>

Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM. Oracle recommends the use of different passwords for each database account. This can be done after initial configuration: Confirm the password: Here we pick an unbreakable password. Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]: <ENTER>

Starting Oracle Net Listener...Done Configuring Database...Done Starting Oracle Database 10g Express Edition Instance...Done Installation Completed Successfully. To access the Database Home Page go to http://127.0.0.1:8080/apex



Installing the ovs-manager package (rpm) ... Done

Set default schema to 'OVS'. Please enter the password for OVS: <ENTER PASSWORD HERE> Please re-enter the password for OVS: <ENTER PASSWORD HERE> Again, we pick a secret password for the VM Manager schema. Creating the Oracle VM Manager database schema ...Done

Installing the oc4j package (rpm) ... Done The default password for oc4jadmin is oracle. You can change the default password after the installation completes. To access the OC4J Home Page and change the password go to http://127.0.0.1:8888/em Starting OC4J ... Done OC4J logfiles can be found in /var/log/ovm-manager/oc4j.log.

Deploying Oracle VM Manager application to OC4J container. Please enter the password for oc4jadmin: oracle Please enter the Oracle Net Listener Port , default is [1521] ? <ENTER> Creating connection pool ...

Deploying Oracle VM Manager application to OC4J container. Please enter the password for oc4jadmin: Please enter the Oracle Net Listener Port , default is [1521] ? <ENTER> Creating connection pool ... Done Creating data source ... Done Deploying application ... Done Deploying application help ... Done Configuring Oracle VM Manager DataCollector ... Done

Configuring SMTP server ... Please enter the outgoing mail server (SMTP) hostname: localhost Setting the SMTP hostname server to localhost ... Done

Configuring e-mail address for Oracle VM Manager account 'admin'... Please enter an e-mail address for the admin account : localuser

上記の"localuser"を、メール配信用のローカルのユーザー名に置き換えてください。 指示に従って、http://127.0.0.1:8888/OVSに移動し、Oracle VM Managerにアクセスします。 リブート後は、/etc/init.d/oracle-xeスクリプトのあとに、/etc/init.d/oc4jスクリプトを使用することで、Oracle VM Managerを開始および停止することができます。

 


5. 仮想マシンの設定

まず最初に、1つ以上の物理サーバーが含まれる論理的な独立領域である"スプール"を新規に作成し、そのマスターとしてOracle VM Server(quadvm)をOracle VM Managerで登録する必要があります。

この処理をおこなうため、「 Servers Pools」タブから「 Create Server Pool」に移動して、quadvm Oracle VM Serverについての情報を入力し、スプールにspool1などのように分かりやすい名前をつけます(quadvm Oracle VM ServerをPool Master、Virtual Machine Server、およびUtility Masterとして設定します)。


図3

次の画面で、「 admin」ユーザーを選択します。

 


図4

画面の表示内容すべてをチェックし、新規スプールが作成されていることを確認します。


図5


図6

仮想マシンの作成

前述のとおり、テンプレート・イメージのコピーをおこなうと、仮想化によるシステムのクローン作成が可能となります。 以下は、その方法です。

テンプレートのアップロード

まず、Oracle VMテンプレートとOpenFilerを、Oracle VM Serverに転送する必要があります。

[vnull@xeno OracleVM]$  
                                   scp -r  OVM_EL5U1_X86_64_PVM_4GB root@10.99.1.2:/root/
root@10.99.1.2's password:
vm.cfg                                                       100%  318      0.3KB/s   00:00
system.img                                                   100%  6144MB   8.8MB/s   11:41
README                                                       100%  158      0.2KB/s   00:00
[vnull@xeno OracleVM]$ cd ~/ISO
[vnull@xeno ISO]$  
                                   scp openfiler-2.2-x86_64.img.gz  root@10.99.1.2:/root
root@10.99.1.2's password:
openfiler-2.2-x86_64.img.gz                                  100%   175MB  10.9MB/s   00:16
[vnull@xeno ISO]$
                                

次に、Oracle VMテンプレートを、Oracle VM Serverのサブエージェントによる自動検出が可能な特別なディレクトリに移動します。

[root@quadovm ~]#  
                                   ls -al  OVM_EL5U1_X86_64_PVM_4GB/
total 6297632
drwxr-xr-x 2 root root       4096 May  6 14:04 .
drwxr-x--- 4 root root       4096 May  6 13:52 ..
-rw-r--r-- 1 root root        158 May  6 14:04 README
-rwxr-xr-x 1 root root 6442450945 May  6 14:04 system.img
-rw-r--r-- 1 root root        318 May  6 13:52 vm.cfg
[root@quadovm ~]#  
                                   mv OVM_EL5U1_X86_64_PVM_4GB /OVS/seed_pool/
[root@quadovm ~]#
                                

Resources」へ移動し、「 Import」をクリックします。 「 Internal Virtual Machine Template」を選択します。


図7

テンプレートの詳細を記述します(テンプレート名OVM_EL5U1_X86_64_PVM_4GBが自動検出されます。検出されない場合は、一度ログアウトしてから再度ログインしてください)。


図8

インポート・アクションを確認します。


図9

テンプレートが表示されています。ここでは、表示されているテンプレートを選択し、「 Approve」ボタンをクリックします。


図10

OELテンプレートに基づくRAC仮想マシンの作成

一度ログアウトしてログインしなおしてから、「 Virtual Machines」→「 Create Virtual Machine」の順に移動し、「 Create Virtual Machine based on Virtual Machine template」を選択します。


図11

spool1」サーバー・プールを選択します。


図12

Sourceタブで、新しく追加したテンプレートを選択します(このテンプレートのみが表示されます)。


図13

Virtual Machine Infoタブで、任意の仮想マシン名(ここではrac1)とパスワードを入力し、さらにインタフェースを1つだけ入力します。


図14

サマリー画面の内容すべてを再確認し、「 Confirm」をクリックします。


図15

メインのVirtual Machines画面に、新しく作成したrac1仮想マシンがステータス Creatingで表示されます。 このとき、Oracle VMにより新規システムへのテンプレートのコピーがおこなわれています。


図16

上記のステップを"rac2"ノードに対して繰り返します。 この段階で、Oracle RACのインストールが可能なLinuxシステムが2つあることになります。 次に、これらのシステムをカスタマイズし、Oracleソフトウェアのインストール用としてより多くのメモリと領域が割り当てられるように再設定する必要があります。

Virtual Machines」に移動し、「 rac1」または「 rac2」をクリックします。 General Informationで、「 Edit」に移動します。 RAMを、1,024MBから2,048MBに変更します。


図17

Virtual Disk」タブに移動し、「 Create New Virtual Disk」をクリックします。 ここで、システム1への追加ディスクに必要な領域を指定します。 以下の値を使用します。

Virtual Disk Name:oracle_software

Virtual Disk Size(MB):8,192

作成が完了すると、 仮想ディスクのステータス画面に、8GBのディスクが作成されたことが表示されます。


図18

OpenFiler仮想マシンの作成

次に、iSCSIストレージ機器(OpenFiler)を構築します。 このステップは、Oracle VM Managerを使用せずに手動で実行する必要があります。OpenFilersの管理は、Oracle VM Managerのコンソールではおこないません。

[root@quadovm ~]#  
                                   cd /OVS/running_pool/
[root@quadovm running_pool]#  
                                   ls
132_rac1   134_rac2
[root@quadovm running_pool]#  
                                   mkdir 60_iscsi1  62_iscsi2
[root@quadovm running_pool]#  
                                   gzip -d  /root/openfiler-2.2-x86_64.img.gz
[root@quadovm running_pool]#  
                                   cp  /root/openfiler-2.2-x86_64.img 60_iscsi1/
[root@quadovm running_pool]#  
                                   cp /root/openfiler-2.2-x86_64.img  62_iscsi2/
                                

これまで見てきたとおり、OpenFilerのXen製品は単一のイメージ・ファイルとしてダウンロードできますが、Xenで仮想マシンをブートするにはカーネルおよびinitrdイメージが必要となります。そして、このカーネルとinitrdイメージはダウンロードするイメージ・ファイル内にあります。 卵が先か鶏が先かといった様相となっているこの問題を解決するには、提供されているイメージからinitrdとカーネルのイメージを抽出し、dom0において、そのうちの最初の512バイト分(MBR – マスター・ブート・レコード)をスキップする必要があります。 そのあと、内部ファイルシステムのループバック・マウントをおこない、必要な部分をコピーします。

[root@quadovm running_pool]#  
                                   losetup  -o 512 /dev/loop4 /root/openfiler-2.2-x86_64.img
[root@quadovm running_pool]#  
                                   mount -o ro /dev/loop4 /mnt
[root@quadovm running_pool]#  
                                   cp /mnt/boot/initrd*  /mnt/boot/vmlinuz* 60_iscsi1/
[root@quadovm running_pool]#  
                                   cp /mnt/boot/initrd*  /mnt/boot/vmlinuz* 62_iscsi2/
[root@quadovm running_pool]#  
                                   umount /mnt
[root@quadovm running_pool]#  
                                   losetup  -d /dev/loop4
                                

システム、カーネル、およびinitrdのイメージが準備できたら、今度はiSCSI LUNを保存するための専用ディスクが必要となります。 これは、単にゼロで埋めた大規模なファイルを作成することで実行できます。このファイルは、そのあと実際のディスクとしてOpenFiler仮想マシンで使用されます。

[root@quadovm running_pool]#  
                                   dd  if=/dev/zero of=60_iscsi1/volume1.img bs=1M count=12000
12000+0 records in
12000+0 records out
12582912000 bytes (13 GB) copied, 83.3836 seconds, 151 MB/s
[root@quadovm running_pool]# 
[root@quadovm running_pool]#  
                                   dd if=/dev/zero  of=62_iscsi2/volume1.img bs=1M count=12000
12000+0 records in
12000+0 records out
12582912000 bytes (13 GB) copied, 88.5499 seconds, 142 MB/s
[root@quadovm running_pool]#
                                

残すステップはあと1つ、すなわちXen構成ファイルの作成です。 (2番目のSSHセッションを使用して、以下のステップを2回実行します。その際、必要に応じて60_iscsi1を62_iscsi2に置き換えてください。)

[root@quadovm running_pool]#  
                                   cd  60_iscsi1
[root@quadovm 60_iscsi1]#  
                                   cat > vm.cfg
                                    name = "iscsi1"
                                    kernel =  "/OVS/running_pool/60_iscsi1/vmlinuz-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU"
                                    ramdisk =  "/OVS/running_pool/60_iscsi1/initrd-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU.img"
                                    disk = [
                                    'tap:aio:/OVS/running_pool/60_iscsi1/openfiler-2.2-x86_64.img,xvda,w',
                                    'tap:aio:/OVS/running_pool/60_iscsi1/volume1.img,xvdb,w'
                                    ]
                                    root = "/dev/xvda1 ro"
                                    vif = ['bridge=xenbr0','bridge=sanbr0']
                                    memory = 768
                                    <CTRL+D>
[root@quadovm 60_iscsi1]#  
                                   xm create -c vm.cfg
Using config file "./vm.cfg".
Started domain iscsi1
                      Bootdata ok (command line is root=/dev/xvda1 ro )
Linux version 2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU
(conary.rpath.com@rpl:1-xen) (gcc version 3.4.4) #1 SMP Wed Dec 6 02:05:30 EST  2006
[..]
Registering block device major 202
 xvda: xvda1
 xvdb: unknown partition  table
[..]
                Welcome  to Openfiler NAS/SAN Appliance 2.2
                Press 'I'  to enter interactive startup.
                                    [..many errors please ignore  them..]
                                

上記のスクリプトから、いくつかの点を見てとることができます。

  1. OpenFilerでは、システム・ディスクはxvdaと認識され、新規ディスク(パーティションの初期化をまだおこなっていないディスク)はxvdbとして認識されています。
  2. 最初のイーサネット・インタフェースはxenbr0ブリッジに、2番目のインタフェースはsanbr0に接続するように設定されています。
  3. OpenFilerに対して、768MBのRAMが割り当てられています。


仮想マシンの構成

オラクルが提供しているXenイメージは事前に構成されていないため、このステップは各自で実行する必要があります。 iscsi1にrootとしてログインしてから、新規OpenFiler iscsi1 VMテンプレートのネットワークを再構成します。 まず、/etc/hosts、/etc/resolv.conf、およびsysconfigイーサネット構成ファイルの設定をおこないます。 最後に、仮想マシンを再起動することなく、すべてのネットワークを再起動して新規の設定を有効にします。

Openfiler NAS/SAN Appliance
Powered by rPath Linux
To administer this appliance, please use a web browser
from another system to navigate to
                                   

For further information and commercial support, please visit http://www.openfiler.com
localhost login: root [root@localhost ~]# cd /etc [root@localhost etc]# echo -e "10.99.1.101\tiscsi1">> hosts [root@localhost sysconfig]# cd sysconfig [root@localhost sysconfig]# cat > network NETWORKING=yes GATEWAY=10.99.1.1 HOSTNAME=iscsi1 <CTRL+D> [root@localhost sysconfig]# cat >network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.99.1.101 <CTRL+D> [root@localhost sysconfig]# cat >network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.98.1.101 MTU=9000 <CTRL+D> [root@localhost sysconfig]# echo "nameserver10.99.1.1" > /etc/resolv.conf [root@localhost sysconfig]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface : [ OK ] Bringing up interface eth0: [ OK ] Bringing up interface eth1: [ OK ] [root@localhost sysconfig]#

インタフェースのIPアドレスを検証します。

[root@localhost sysconfig]#  
                                   ip  a ls
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
    link/loopback  00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8  scope host lo
    inet6 ::1/128 scope  host
       valid_lft forever  preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc  pfifo_fast qlen 1000
    link/ether  00:16:3e:14:53:73 brd ff:ff:ff:ff:ff:ff
    inet 10.99.1.101/24 brd 10.99.1.255 scope global eth0
    inet6  fe80::216:3eff:fe14:5373/64 scope link
       valid_lft forever  preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc  pfifo_fast qlen 1000
    link/ether  00:16:3e:68:4f:c7 brd ff:ff:ff:ff:ff:ff
    inet 10.98.1.101/24 brd 10.98.1.255 scope global eth1
    inet6  fe80::216:3eff:fe68:4fc7/64 scope link
       valid_lft forever  preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd  0.0.0.0
[root@localhost sysconfig]#
[root@localhost sysconfig]#  
                                   ip ro ls | grep ^default
default via 10.99.1.1 dev eth0
[root@localhost sysconfig]#
[root@localhost sysconfig]#  
                                   ping -c 1 iscsi1
PING iscsi1 (10.99.1.101) 56(84) bytes of data.
64 bytes from iscsi1 (10.99.1.101): icmp_seq=0 ttl=64 time=0.019  ms
                                   
--- iscsi1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.019/0.019/0.019/0.000 ms, pipe 2 [root@localhost sysconfig]#

iscsi1にログインしなおし、混乱を避けるためにコマンド・プロンプトを変更して新しいホスト名が表示されるようにします。

次に、OpenFilerにはrootパスワード・セットがないため、root用のパスワードを変更する必要があります。

[root@iscsi1 ~]#  
                                   passwd
Changing password for user root.
New UNIX password:
BAD PASSWORD: it's WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@iscsi1 ~]#
                                

iscsi2 OpenFilerテンプレートで、別のSSHセッションを使用して同じ処理をおこないます。rootとしてログインし、iscsi1と同じ手順を実行します。

[root@quadovm ~]#  
                                   cd  /OVS/running_pool/62_iscsi2/
[root@quadovm 62_iscsi2]#  
                                   cat > vm.cfg
                                    name = "iscsi2"
                                    kernel =  "/OVS/running_pool/62_iscsi2/vmlinuz-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU"
                                    ramdisk = "/OVS/running_pool/62_iscsi2/initrd-2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU.img"
                                    disk = [
                                    'tap:aio:/OVS/running_pool/62_iscsi2/openfiler-2.2-x86_64.img,xvda,w',
                                    'tap:aio:/OVS/running_pool/62_iscsi2/volume1.img,xvdb,w'
                                    ]
                                    root = "/dev/xvda1 ro"
                                    vif = ['bridge=xenbr0','bridge=sanbr0']
                                    <CTRL+D>
[root@quadovm 62_iscsi2]#
[root@quadovm 62_iscsi2]#  
                                   xm create -c vm.cfg
Using config file "./vm.cfg".
Started domain iscsi2
Bootdata ok (command line is root=/dev/xvda1 ro )
Linux version 2.6.16.29-0.11.smp.gcc3.4.x86_64.xen.domU 
(conary.rpath.com@rpl:1-xen) (gcc version 3.4.4) #1 SMP Wed Dec 6 02:05:30 EST  2006
[..]
INIT: version 2.85 booting
                Welcome  to Openfiler NAS/SAN Appliance 2.2
                Press 'I'  to enter interactive startup.
[..]
                                   
localhost login: root [root@localhost ~]# cd /etc [root@localhost etc]# echo -e "10.99.1.102\tiscsi2" >> hosts [root@localhost etc]# cd sysconfig/ [root@localhost sysconfig]# cat > network NETWORKING=yes GATEWAY=10.99.1.1 HOSTNAME=iscsi2 <CTRL+D> [root@localhost sysconfig]# cat > network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.99.1.102 <CTRL+D> [root@localhost sysconfig]# cat > network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.98.1.102 MTU=9000 <CTRL+D> [root@localhost sysconfig]# echo "nameserver 10.99.1.1" > /etc/resolv.conf [root@localhost sysconfig]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] Bringing up interface eth1: [ OK ] [root@localhost sysconfig]#

IPネットワークの検証をおこないます。

[root@localhost sysconfig]#  
                                   ip  a ls
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
    link/loopback  00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8  scope host lo
    inet6 ::1/128 scope  host
       valid_lft forever  preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc  pfifo_fast qlen 1000
    link/ether  00:16:3e:3c:bd:4a brd ff:ff:ff:ff:ff:ff
    inet 10.99.1.102/24 brd 10.99.1.255 scope global eth0
    inet6  fe80::216:3eff:fe3c:bd4a/64 scope link
       valid_lft forever  preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc  pfifo_fast qlen 1000
    link/ether  00:16:3e:15:b7:51 brd ff:ff:ff:ff:ff:ff
    inet 10.98.1.102/24 brd 10.98.1.255 scope global eth1
    inet6  fe80::216:3eff:fe15:b751/64 scope link
       valid_lft forever  preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop
    link/sit 0.0.0.0 brd  0.0.0.0
[root@localhost sysconfig]#  
                                   ip ro ls | grep ^def
default via 10.99.1.1 dev eth0
[root@localhost sysconfig]#  
                                   passwd
Changing password for user root.
New UNIX password:
BAD PASSWORD: it's WAY too short
Retype new UNIX password:
passwd: all authentication  tokens updated successfully.
                                

余計な混乱を避けるため、ログインしなおします。 これで、ネットワーク・ブラウザで以下をポイントすることができます。

  • http://10.99.1.101:446/(iscsi1)
  • http://10.99.1.102:446/(iscsi2)


注:各iSCSIストレージ機器に対し、このステップを2回ずつ実行してください。

まず、ライセンスへの同意が求められます。そのあと、以下の資格証明を使用してログインすることができます。

  • Login:openfiler
  • Password:password


ヒント:OpenFilerのrootパスワードは、Webインタフェースのパスワードと同じものではありませんが、管理上の負担を軽減するために、同一のパスワードを使用することもできます。


図19

Volumes」タブから「 Physical Storage Mgmt.」に移動し、「 /dev/xvdb」(手動で作成した、2番目に表示されている12GBのデータファイル)をクリックします。


図20

Volume Group Mgmt.」に移動し、タイプ"Physical volume"(LVM用)で大規模なx86パーティションを1つ作成します。


図21

再度「 Volume Group Mgmt.」に移動し、/dev/xvdb1物理ボリューム(LVMの用語では"PV")のみが含まれた"racdata1"または"racdata2"という名前のボリューム・グループを作成します。


図22

作成後、1つのボリューム・グループが表示されます。 「 Create New Volumes」タブに移動します。


図23

ここで、以下の3つのiSCSI LUNを作成する必要があります。

  • ocr(320MB)
  • voting(320MB)
  • asmdata1(すべて空き領域、ここでは最大11GB)



図24

上記のLUNの作成後、"racdata1"または"racdata2"という名前のストレージ割当て用のボリューム・グループを示すグラフを確認することができます。


図25

Services」→「 Enable/Disable」の順に移動し、 iSCSI targetを有効化します。


図26

General」→「 Local Networks」の順に移動し、 Network Access Configurationで"san1"を作成して、10.98.1.0/24ネットワーク(ここで使用しているSANネットワーク)からのiSCSI接続が可能となるように設定します。


図27

iSCSI LUNに切り替えて(「 Volumes」→「 List of existing volumes」)、すべてのiSCSI LUNを編集します。 "iSCSI host access"という名前のセクションで、該当のiSCSI LUNに対してsan1ネットワークからのアクセスが可能であることを確認します。 「 update」をクリックして保存します。

これ以後は、2つのiSCSIシステムで、Oracle RACで使用可能なLUNのエクスポートをおこなうことができます。

拡張RACのためのRAC仮想マシンの再構成

ここではeth0以外には物理的なイーサネット・アダプタがなく、Oracle VMでは物理インタフェースなしでブリッジを作成することはないため、物理的なイーサネット・アダプタのエミュレートを手動でおこなう必要があります。 具体的には、iSCSIトラフィック用のSANネットワークと、Oracle RACのキャッシュ・フュージョン用インターコネクト・ネットワークを追加します。

イーサネット・ブリッジを追加する場合は、下に示されている行を/etc/rc.d/rc.localに追加します。 (Oracle VMを再起動したくない場合は、以下のコマンドを手動で実行する必要があります。)

[root@quadovm ~]
                                   # cat >> /etc/rc.d/rc.local

                                    brctl addbr sanbr0 brctl addbr ibr0 ip link set dev sanbr0 up ip link set dev ibr0 up

                                    <CTRL+D>
[root@quadovm ~]#
                                

次に、パフォーマンス上の理由から、SANブリッジとインターコネクト・ブリッジで常にMTUが9000となるように設定する必要があります。 (Xenによりnetfrontおよびnetbackの2つのネットワーク仮想化ドライバが同期されるまでは、MTUの設定を延期する必要があるため、これは厄介な作業です。)

                                   
[root@quadovm ~]# cat > fixbrmtu.sh #!/bin/sh
bridge=$1 if [ "$bridge" != "sanbr0" -a "$bridge" != "ibr0" ]; then logger -t fixbrmtu -p syslog.notice Skipping MTU fix for bridge=$bridge exit 0 fi
logger -t fixbrmtu -p syslog.notice Fixing MTU for bridge=$bridge
while : ; do cd /sys/class/net/$bridge/brif || exit 1 err=0 for iface in *; do ip link set dev $iface mtu 9000 > /dev/null 2>&1 if [ $? -ne 0 ]; then err=$[err+1] fi done if [ $err -eq 0 ]; then break fi sleep 1 done
ip link set dev $bridge mtu 9000 exit 0 <CTRL+D> [root@quadovm ~]# chmod 700 fixbrmtu.sh

次に、viでファイル/etc/xen/scripts/vif-bridgeを編集し、"success"行の直後に太字で表示されている行を追加します。

log debug "Successful  vif-bridge $command for $vif, bridge $bridge." 
if [ "$command" = "online" ] 
then 
  success 
  
                                    (/root/fixbrmtu.sh  "$bridge") &
fi
                                

Oracle VMでrootとしてログオンした状態で、/OVS/running_pool/に切り替えてrac1およびrac2のvm.cfgを編集し、vif行を以下のように変更します。

vif = ['bridge=xenbr0', 'bridge=ibr0', 'bridge=sanbr0']

要約すると、RAC仮想マシンのブリッジへの接続は以下のようになります。

  • eth0をxenbr0に接続:Oracle VMクライアント用のパブリック・インタフェース(この接続は、Oracle VM Serverの第1の物理イーサネットとブリッジされており、作成されたブリッジはbrctl showコマンドの発行によって確認できます。)
  • eth1をibr0に接続:キャッシュ・フュージョン用のインターコネクト・ネットワーク
  • eth2をsanbr0に接続:iSCSI SANネットワーク用


注:追加のインタフェースは、Oracle VM Managerでは表示されません。

次に、rac1およびrac2の仮想マシンを起動します。

[root@quadovm 134_rac2]#  
                                   xm     create vm.cfg
Using config file "./vm.cfg".
Started domain 134_rac2
[root@quadovm 134_rac2]#
                                

実行している仮想システムを確認します。すべて問題がなければ、以下のように表示されます。

[root@quadovm ~]#  
                                   xm list 
Name                                        ID   Mem VCPUs      State   Time(s) 
132_rac1                                     7  2048     1     -b----     12.8 
134_rac2                                     8  2048     1     r-----      7.2 
Domain-0                                     0   512     4     r-----    287.6 
iscsi1                                       5   768     1     -b----      4.8 
iscsi2                                       6   768     1     -b----      4.8 
[root@quadovm ~]# 
                                

デフォルトでは、Oracle VMテンプレートは、以下の資格証明で設定されています。

  • User:root
  • Password:ovsroot


rac1ノードを再構成するために、ローカルのコンソールを使用して接続します。


[root@quadovm ~]#  
                                   xm console 132_rac1 
rtc: IRQ 8 is not free. 
i8042.c: No controller found.
                                   
Enterprise Linux Enterprise Linux Server release 5.1 (Carthage) Kernel 2.6.18-53.1.13.9.1.el5xen on an x86_64
localhost.localdomain login: root Password: <type “ovsroot”> Last login: Wed Feb 20 14:21:42 from ca-ostest246.us.oracle.com [root@localhost ~]#

ネットワーク構成ユーティリティを実行します。

[root@localhost ~]#  
                                   export TERM=linux 
[root@localhost ~]#  
                                   system-config-network-tui
                                

system-config-network-tuiisを使用すると、簡単にネットワークを設定できます。 パブリック・インタフェース(およびOracle VM外で表示可能なIPネットワークによる管理インタフェース)を設定するには、"eth0"を選択し、IPアドレス、ネットマスク、ゲートウェイなどの設定をおこないます。


図28


図29

"eth0"の設定が正常に完了したら、次に"eth1"(インターコネクト)の設定をおこなうことができます。 「 <New device>」を選択してから「 Ethernet」を選択し、使用するIPネットワークを指定すると、新規インタフェースを作成できます。 eth2(SAN)に対しても、このステップを繰り返します。


図30


図31


図32

終了したら、DNSリゾルバ、ホスト名、およびMTU変更の設定をおこなってネットワーク構成を完了します。

[root@localhost ~]#  
                                   echo 'nameserver 10.99.1.1' > /etc/resolv.conf
[root@localhost ~]#  
                                   cat >  /etc/sysconfig/network
                                    NETWORKING=yes
                                    NETWORKING_IPV6=no
                                    HOSTNAME=rac1
                                    <CTRL+D>
[root@localhost ~]#  
                                   echo “MTU=9000” >> /etc/sysconfig/network-scripts/ifcfg-eth1
[root@localhost ~]#  
                                   echo “MTU=9000” >> /etc/sysconfig/network-scripts/ifcfg-eth2
[root@localhost ~]#  
                                   service network restart
Shutting down interface eth0:  [  OK  ]
Shutting down loopback interface:  [  OK  ]
Bringing up loopback interface:  [  OK  ]
Bringing up interface eth0:      [  OK  ]
Bringing up interface eth1:      [  OK  ]
Bringing up interface eth2:      [  OK  ]
[root@localhost ~]#
                                

以下を/etc/hostsファイルとして保存します。

127.0.0.1     localhost.localdomain localhost
                                   
# eth0: public network 10.99.1.91 rac1 10.99.1.92 rac2
# eth1: interconnect 10.97.1.1 rac1-priv 10.97.1.2 rac2-priv
# VIPs 10.99.1.201 rac1-vip 10.99.1.202 rac2-vip
# eth2: iSCSI SAN 10.98.1.101 iscsi1 10.98.1.102 iscsi2
# PUB for openfilers 10.99.1.101 iscsi1-pub 10.99.1.102 iscsi2-pub

使用しているシステムに合わせたタイムゾーンを設定します(この例ではポーランドのタイムゾーンを使用)。

[root@localhost ~]#  
                                   ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
                                

一度ログアウトしてからrac1に再ログインすると、シェルが"root@rac1"を示します。 ここで、ゲートウェイに対する接続性についても確認します。 また、適切なIPアドレスを使用してrac2で同じ操作を実行してください。

デフォルトでは、Oracle VMテンプレートには、iSCSIイニシエータ・ユーティリティのユーザースペース用の部分は用意されていません。 このユーザースペースは、Oracle Enterprise Linux ISOイメージから取得することもできますが、このイメージは数ギガバイトあります。取得プロセスを迅速化したい場合は、 こちらからワークステーションにダウンロードしてください。

次に、iSCSIイニシエータのコピーを、両方のRACノードに(ワークステーションから)アップロードします。

[vnull@xeno RPMS_el51]$  
                                   scp iscsi-initiator-utils*.rpm root@10.99.1.91:.
root@10.99.1.91's password:
iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm           100%  528KB 528.2KB/s   00:00
[vnull@xeno RPMS_el51]$  
                                   scp iscsi-initiator-utils*.rpm     root@10.99.1.92:.
root@10.99.1.92's password:
iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm           100%  528KB 528.2KB/s   00:00
[vnull@xeno RPMS_el51]$
                                

次に、iSCSIイニシエータをインストールし、基本的な構成で設定をおこなって使用できるようにします(設定は各RACノードで実行し、rac2の設定時には、InitiatorAliasを変更します)。

[root@rac1 ~]#  
                                   rpm -Uhv iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm
Preparing...                  ########################################### [100%]
1:iscsi-initiator-utils       ########################################### [100%]
[root@rac1 ~]#  
                                   rm iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm
rm: remove regular file `iscsi-initiator-utils-6.2.0.865-0.8.el5.x86_64.rpm'?  
                                   y
[root@rac1 ~]#
[root@rac1 ~]#  
                                   echo "InitiatorAlias=rac1"     >> /etc/iscsi/initiatorname.iscsi
[root@rac1 ~]#  
                                   service iscsid start
Turning off network shutdown. Starting iSCSI daemon:      [   OK   ]
                                                          [   OK   ]
[root@rac1 ~]#  
                                   chkconfig iscsid on
[root@rac1 ~]#  
                                   chkconfig iscsi on
                                

各RACノードで、不必要なサービスを無効化します。

[root@rac1 ~]#  
                                   chkconfig --level 0123456 bluetooth off
[root@rac1 ~]#  
                                   chkconfig --level 0123456 cups off
[root@rac1 ~]#  
                                   chkconfig --level 0123456 ip6tables off
[root@rac1 ~]#  
                                   chkconfig --level 0123456 iptables off
[root@rac1 ~]#  
                                   chkconfig --level 0123456 o2cb off
[root@rac1 ~]#  
                                   chkconfig --level 0123456 o2cb off
[root@rac1 ~]#  
                                   chkconfig --level 0123456 ocfs2 off
[root@rac1 ~]#  
                                   chkconfig --level 0123456 sendmail off
[root@rac1 ~]#  
                                   reboot
                                

Oracleソフトウェアのマウント・ポイント(/u01)に対し、ローカルの追加ハードディスク上にパーティションを用意します(両方のRACノードで実行してください)。

[root@rac1 ~]#  
                                   fdisk /dev/hdd
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
  
                                  

The number of cylinders for this disk is set to 1044. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1044, default 1): <ENTER> Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044): <ENTER> Using default value 1044
Command (m for help): p
Disk /dev/hdd: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/hdd1 1 1044 8385898+ 83 Linux
Command (m for help): w The partition table has been altered!
Calling ioctl() to re-read partition table. Syncing disks. [root@rac1 ~]# [root@rac1 ~]# mkfs.ext3 -j /dev/hdd1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 1048576 inodes, 2096474 blocks 104823 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2147483648 64 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@rac1 ~]# [root@rac1 ~]# mkdir /u01 [root@rac1 ~]# echo -e '/dev/hdd1\t\t/u01\t\t\text3\tdefaults,noatime\t1 2' >> /etc/fstab [root@rac1 ~]# mount /u01

動的デバイス管理を設定し、iSCSI SANに適切なネーミングを作成します。これには、まず最初に各RACノードで以下を実行し、/etc/udev/rules.d/55-openiscsi.rulesfileを作成します。

[root@rac1 ~]#  
                                   cat >     /etc/udev/rules.d/55-openiscsi.rules
                                    # /etc/udev/rules.d/55-openiscsi.rules
                                    KERNEL=="sd*", BUS=="scsi",     PROGRAM="/etc/udev/scripts/iscsidev.sh %b",  
  
                                    SYMLINK+="iscsi/%c{1}/lun%c{2}/part%n",     OWNER="oracle", MODE="0640", GROUP="disk"
                                    <CTRL+D>
[root@rac1 ~]#
                                

udevdにより、実際に存在するデバイス用のファイルのみが含まれた動的なデバイス・ディレクトリが作成されます。 udevdは、/devディレクトリのデバイス・ノード・ファイルの作成または削除をおこなうもので、システムに新しくデバイスがプラグインされたときにカーネルからueventを受け取ることにより動作します。 各イベントでは、ルール・ファイルが新規デバイスのプロパティと照合されます。 照合済みのルール・ファイルに基づいて、シンボリック・リンクの作成や、所有権およびアクセス権限の変更、外部プログラムの起動などを実行することができます。

以下を実行することにより作成されたiscsidev.shスクリプトが、このルール・ファイルによって新規SCSIデバイスごとに起動されます。

[root@rac2 ~]#  
                                   mkdir -p     /etc/udev/scripts
[root@rac2 ~]#  
                                   cat > /etc/udev/scripts/iscsidev.sh
                                    #!/bin/sh
                                    #iscsidev.sh
                                    BUS=${1}
                                    HOST=${BUS%%:*}
                                    LUN=`echo ${BUS} | cut -d":" -f4`
                                    file="/sys/class/scsi_host/host${HOST}/device/session*/iscsi_session*/targetname"
                                    target_name=`echo $(cat ${file}) | cut -d":"     -f2`
                                   
if [ -z "${target_name}" ]; then exit 1 fi
echo "${target_name} ${LUN}" <CTRL+D> [root@rac2 ~]# chmod 755 /etc/udev/scripts/iscsidev.sh

このスクリプトにより、渡されたSCSIデバイスが本当にiSCSIであるかどうかが判断され、それについての情報がudevに返されます。 iSCSIイニシエータの構成が完了すると、iSCSIターゲットの検出を実行してストレージ・アレイに接続することができます(この手順は、各RACノードで実行してください)。

[root@rac1 ~]#  
                                   iscsiadm -m     discovery -t sendtargets -p 10.98.1.101
10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.asm1
10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.ocr
10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.voting
[root@rac1 ~]#  
                                   iscsiadm -m discovery -t sendtargets -p     10.98.1.102
10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.asm1
10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.ocr
10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.voting
[root@rac1 ~]#  
                                   iscsiadm -m discovery -l
10.98.1.101:3260 via sendtargets
10.98.1.102:3260 via sendtargets
[root@rac2 ~]#  
                                   iscsiadm -m node | sort
10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.asm1
10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.ocr
10.98.1.101:3260,1 iqn.2006-01.com.openfiler:racdata1.voting
10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.asm1
10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.ocr
10.98.1.102:3260,1 iqn.2006-01.com.openfiler:racdata2.voting
[root@rac1 ~]#
                                

次に、両方のRACノードで、ストレージにログインします。

[root@rac1 ~]#  
                                   iscsiadm -m node -L all
Login session [iface: default, target:     iqn.2006-01.com.openfiler:racdata2.asm1, portal: 10.98.1.102,3260]
Login session [iface: default, target:     iqn.2006-01.com.openfiler:racdata2.ocr, portal: 10.98.1.102,3260]
Login session [iface: default, target:     iqn.2006-01.com.openfiler:racdata1.voting, portal: 10.98.1.101,3260]
Login session [iface: default, target:     iqn.2006-01.com.openfiler:racdata1.ocr, portal: 10.98.1.101,3260]
Login session [iface: default, target:     iqn.2006-01.com.openfiler:racdata1.asm1, portal: 10.98.1.101,3260]
Login session [iface: default, target:     iqn.2006-01.com.openfiler:racdata2.voting, portal: 10.98.1.102,3260]
[root@rac1 ~]#
                                

次に、iSCSI LUNのパーティションを作成する必要があります。 ここでは、検出されたすべてのiSCSIデバイスで、LUNごとに大規模なパーティションを1つ作成します。( 警告:これは、きわめて危険性の高いスクリプトです。実行すると、すべてのiSCSI LUNのパーティション表が消去されますので注意してください。)
以下のスクリプトを保存します。

                                    #!/bin/sh
                                    [ -d /dev/iscsi ] || exit 100
                                    for LUN in `find /dev/iscsi -type l`; do
  
                                          echo     $LUN
  
                                          dd     if=/dev/zero of=$LUN bs=512 count=1
  
                                          echo -en     "0,\n;\n;\n;\n" | sfdisk -q $LUN
                                    done
                                

このスクリプトを実行可能ファイルに変更したあと、実行します(1つのノードだけでおこなってください)。

[root@rac2 ~]#  
                                   chmod 700     partit.sh
[root@rac2 ~]#  
                                   ./partit.sh
[..lots of partitioning output..]
                                

1番目のノードで、rac2で実行された変更を検出する必要があります。

[root@rac1 ~]# partprobe

パーティションの検証は、あとで fdisk -lを使用して実行できます。

iSCSIのチューニング

最適なパフォーマンスを確保するためには、iSCSIストレージのチューニングが必要となります。 iSCSIプロトコルはTCPに基づいているため、この操作では、おもにTCP/IPスタック・チューニングをおこなうこととなります。 OpenFiler(iscsi1およびiscsi2)で、/etc/init.d/iscsi-targetを編集して、MEM_SIZE変数を1073741824に設定します。これにより、iscsi1およびiscsi2におけるiSCSIターゲットの起動前に、TCPネットワークのバッファが適切に設定されます。

次に、古い/etc/ietd.confを/etc/ietd.conf.oldにバックアップしてから、以下を追加します。

MaxConnections 1
InitialR2T No
ImmediateData Yes
MaxRecvDataSegmentLength 16776192
MaxXmitDataSegmentLength 16776192
MaxBurstLength 16776192
FirstBurstLength 16776192
MaxOutstandingR2T 16
Wthreads 16
DataDigest None
HeaderDigest None

変更後、iscsi1とiscsi2をリブートします。
注:このファイルは、新規iSCSI LUNの追加、再構成、または削除を実行するたびに再生成されます。
次に、優れたiSCSIパフォーマンスを得られるように、RACノードを再構成する必要があります。 rac1ノードとrac2ノードで/etc/sysctl.confを編集し、以下のパラメータを適切な値に変更します。

net.core.rmem_max = 1073741824
net.core.wmem_max = 1073741824
net.ipv4.tcp_rmem = 1048576 16777216 1073741824
net.ipv4.tcp_wmem = 1048576 16770216 1073741824
net.ipv4.tcp_mem = 1048576 16770216 1073741824

/etc/iscsi/iscsid.conf(iSCSIイニシエータの構成)を、両方のRACノードで変更し、最後にリブートして変更を有効化します(iSCSIクライアントを再起動し、 sysctl -pを実行することもできます)。

[root@rac2 ~]#  
                                   cat >     /etc/iscsi/iscsid.conf
                                    node.startup = automatic
                                    node.session.timeo.replacement_timeout = 120
                                    node.conn[0].timeo.login_timeout = 15
                                    node.conn[0].timeo.logout_timeout = 15
                                    node.conn[0].timeo.noop_out_interval = 10
                                    node.conn[0].timeo.noop_out_timeout = 15
                                    node.session.initial_login_retry_max = 4
                                    node.session.cmds_max = 128
                                    node.session.queue_depth = 128
                                    node.session.iscsi.InitialR2T = No
                                    node.session.iscsi.ImmediateData = Yes
                                    node.session.iscsi.FirstBurstLength = 16776192
                                    node.session.iscsi.MaxBurstLength = 16776192
                                    # the default is 131072
                                    node.conn[0].iscsi.MaxRecvDataSegmentLength = 16776192
                                    # the default is 32768
                                    discovery.sendtargets.iscsi.MaxRecvDataSegmentLength =     16776192
                                    node.conn[0].iscsi.HeaderDigest = None
                                    node.session.iscsi.FastAbort = No
                                    <CTRL+D>
[root@rac2 ~]#  
                                   reboot
                                

注:今回は、このステップとこの前のステップでOpenFilerに対しておこなった変更の結果、raw iSCSIの順次書込みにおいて最高のパフォーマンスを得ることができました(ここでは、ddコマンドで1MBのブロック・サイズを使用してiSCSI LUN上に直接書込み、テストをおこないました)。 実際に得られるパフォーマンスは、システム(使用しているハードウェア、ソフトウェア・バージョンやそのほかの要素)によって異なる可能性があります。

 


1ページ 2ページ 3ページ