IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Information Management | Linux  >

Informix Dynamic Server MACH 11 のための Linux 共有ディスクを構成する

例を使った説明

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません

議論する

原文はこちら

原文はこちら


レベル: 中級

Andreas Breitfeld, IBM Informix Development, IBM Deutschland Entwicklung GmbH

2009年 03月 05日

IBM® Informix® Dynamic Server (IDS) Version 11.50 用の真の共有ディスクを構成する方法を学びましょう。この記事では IDS の SD (Shared Disk) セカンダリー・サーバーを Ubuntu Linux® 上にセットアップして稼働させる方法を説明します。ここで説明する方法は他の Linux ディストリビューションにも容易に応用することができます。

はじめに

IBM Informix Dynamic Server (IDS) のバージョン 11.50.xC1 から実装されるようになった、MACH 11 (Multi-node Active Cluster for High Availability) という機能には、一連の高可用性機能やクラスタリング機能が含まれており、SD (Shared Disk) セカンダリー・サーバーのサポートもそうした機能の 1 つです。SD セカンダリー・サーバーはプライマリー・サーバーとディスクを共有しますが、物理的なデータベースのコピーを保持するわけではありません。この記事では、Ubuntu Linux 上で真の共有ディスクと SD セカンダリー・サーバーのサンプル構成を作成する方法について説明します。ここで説明する手順に従うことで、皆さんがお使いの共有ディスクと SD セカンダリー・サーバーを Ubuntu Linux 上でカスタマイズできるようになるはずです。

この記事では、このサンプル構成の背景情報、サンプル構成を作成するための要件、そしてサンプル構成を作成する方法について説明します。

背景情報

この記事で説明するサンプル構成では、iSCSI (Internet SCSI) SAN (Storage Area Network) を使って IDS 用の共有ディスクを提供します。なぜ他の方法ではなく iSCSI を選択したかを簡単に説明すると以下のとおりです。

IDS MACH 11 の機能を利用するためには、複数の IDS インスタンスが共有チャンクに対して同時にアクセスできる必要があります。それができると、複数のマシンで同時に IDS インスタンスを実行することができます。ファイルシステム (cooked device) に保存されたチャンクの場合、複数の IDS インスタンスが同時にアクセスするためのソリューションとしては、クラスター・ファイルシステム (GFS や OCFS など) を使う方法があります。ディスク・デバイス (Raw デバイス) に保存されたチャンクの場合には SAN があります (ファイバー・チャネルや iSCSI など)。IDS のオペレーションにクラスター・ファイルシステムを使用するとパフォーマンスや管理の面で不必要なオーバーヘッドが発生するため、この記事ではチャンクの保存手段として SAN を使います。

FC (Fibre Channel: ファイバー・チャネル) は SAN を実現するためのハイパフォーマンスの技術として有名です。FC を利用すれば通常 FC リンク当たり 100MB/s から 400MB/s の帯域幅を実現することができ、800MB/s の帯域幅も既に実現されています。しかし、FC を使って SAN を実現する方法は比較的複雑で高価です。

帯域幅に対する要求が低いアプリケーションでは、iSCSI (Internet SCSI) を使って SAN を実現することができます。iSCSI の場合、SCSI コマンドは標準的な 1000BASE-T (ギガビット・イーサネット) ネットワーク上に送信され、これは理論的にギガビット・イーサネット・リンク当たり 125MB/s の帯域幅が得られるということです。10 ギガビット・イーサネットでも、より大きな帯域幅を得ることができます。iSCSI SAN は一般的で標準的なコンポーネントをベースにするため、比較的単純で安価です。テストや開発のための環境では、この単純で安価という特徴は重要な利点です。




上に戻る


要件

下の図はサンプル構成のネットワーク構造を示しています。


図 1. サンプル構成のネットワーク構造

このサンプル構成では、Ubuntu 8.04 LTS Server Edition が 3 台の標準的なPC (マシン) にインストールされています。複数のディスクを持つマシン (ラベルは Piero) は専用ディスク・アレーとして動作します。他の 2 台は両方とも IDS 11.50.UC2DE を実行します。1 台はプライマリー・サーバー (ラベルは mach1) であり、もう 1 台は SD セカンダリー・サーバー (ラベルは mach2) です。

既存のギガビット・イーサネット・アダプターはギガビット・イーサネット・スイッチに接続されており、プライベート IP アドレスを持っています。このプライベート・ネットワークは iSCSI データ (SAN) 専用に予約されています。ネットワーク・コンポーネントはジャンボ・フレーム (MTU=9000) もサポートする必要があります。Ubuntu の場合、そのためには /etc/network/interfaces ファイルの中で SAN のギガビット・イーサネット・アダプターに対して mtu 9000 オプションを追加します。ifconfig コマンドを使うと MTU の現在の設定を見ることができます。

各マシンには LAN に接続された別のイーサネット・アダプターがあります。




上に戻る


iSCSI を構成する

このセクションでは、サンプル構成用に iSCSI を構成する方法を説明します。

注: Ubuntu 8.04 以外の Linux ディストリビューション (Red Hat や SUSE など) の場合も、この記事と同様の構成を作成できるはずです。特に Red Hat Enterprise Linux 5 には、iSCSI ターゲットをセットアップするための (tgt プロジェクトをベースとする) scsi-target-utils パッケージが用意されています。

ターゲット・マシンに iscsitarget をインストールする

SAN の中で、ディスクを提供するマシンはターゲットと呼ばれます。SAN のターゲット・マシンに Ubuntu の iscsitarget パッケージ (iSCSI Enterprise Target userland ツール) をインストールします。

iSCSI Enterprise Target Daemon を構成する

ターゲット・マシンの /etc/ietd.conf ファイル (iSCSI Enterprise Target Daemon) の中で、どのディスクまたはパーティションを共有するのかを指定します。下記はその一例です。

Target iqn.2008-07.com.ibm.munich.target:shared.disk1
	Lun 0 Path=/dev/sda5,Type=blockio
			

上記の例では、iqn.2008-07.com.ibm.munich.target:shared.disk1 はターゲットとなるディスクのシンボリック名です。Type=blockio はディスクをページ・キャッシュなしの直接のブロック I/O モードに設定します。

/etc/ietd.conf を変更した後、iSCSI Enterprise Target Daemon を再起動して変更を有効にする必要があります。

/etc/init.d/iscsitarget restart
			

あるいは、ietadm (iSCSI Enterprise Target Administration Utility) コマンドを使うと再起動せずに動的に構成を変更することができます。

アクティブな構成は /proc/net/iet/volume ファイルと /proc/net/iet/session ファイルを見るとわかります。

イニシエーター・マシンに open-iscsi をインストールする

SAN の中で、ディスクにアクセスするマシンはイニシエーターと呼ばれます。Ubuntu の open-iscsi パッケージ (ハイパフォーマンスでトランスポートに依存しない iSCSI 実装) を各イニシエーター・マシンにインストールします。

サンプル構成の場合、iscsid (Open-iSCSI デーモン) のデフォルト値は変更しません。iscsid の構成は /etc/iscsi/iscsid.conf ファイルの中で定義します。

イニシエーターがアクセスするディスクを指定する

イニシエーターがどのディスクにログインするのかを iscsiadm コマンドを使って指定します。

ターゲット・マシンの IP アドレスを指定してターゲット・ディスクを見つけます。

iscsiadm --mode discovery --type sendtargets --portal 192.168.0.100
			

見つかったノードのレコードをリストアップします。

iscsiadm --mode node
			

ノード・レコードの startup 値を automatic に設定します。(startup 値のデフォルトは /etc/iscsi/iscsid.conf の中で manual に設定されています。) 個々のノード・レコードに対して startup 値を設定することもでき、あるいはすべてのノード・レコードに対して startup 値を設定することもできます。ノード・レコードが見つかるごとに startup 値を設定することを忘れないでください。

下記は個々のノードに対して startup 値を設定する例を示しています。

iscsiadm -m node --targetname iqn.2008-07.com.ibm.munich.target:shared.disk1 \ 
    --op=update --name=node.startup --value=automatic --portal 192.168.0.100
			

下記はすべてのノード・レコードに対して startup 値を設定する例を示しています。

iscsiadm -m node --op=update --name=node.startup --value=automatic \ 
    --portal 192.168.0.100
			

下記のように、startup 値が automatic のすべてのターゲットにログインします (リブートすると、ログインは自動的に行われます)。

iscsiadm --mode node --portal 192.168.0.100 --loginall automatic
			

永続的なデバイス・パスを定義する

この時点でカーネルから通常どおり新しいディスクが見えるようになりますが、デバイスとターゲット名のマッピングを /proc/partitions の中で区別することはできません。従って永続的なデバイス・パスを使用する必要があります。このパスは udev (動的デバイス管理) によって自動的に生成されます。下記はその一例です。

/dev/disk/by-path/\
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0
			

通常と同じようにパーティションを設定します。下記はその一例です。

fdisk /dev/disk/by-path/\
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0
			

パーティション 1 のパスは次の通りです。

/dev/disk/by-path/\
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0-part1
			

複数のイニシエーターから同じターゲット名へのログインが行われると、同じパスを持つブロック・デバイスとして共有ディスク・パーティションが提供されます。




上に戻る


IDS を構成する

このセクションでは、サンプル構成に対して IDS を構成する方法を説明します。

Ubuntu パッケージをインストールする

プライマリー・サーバーとなるマシン (mach1) と SD セカンダリー・サーバーとなるマシン (mach2) の両方の Ubuntu 8.04 オペレーティング・システムに以下のパッケージをインストールします。

  • bc
  • gcc-3.3-base
  • libaio1
  • libstdc++5
  • pdksh
  • rpm

アクセス権を設定する

IDS ではチャンクに対する特定のアクセス権を必要とします。このステップでは、共有ディスクとローカル・ディスクに対する特定のアクセス権を udev を使って設定します。

/etc/udev/rules.d/99-informix-permissions.rules という名前の新しいルール・ファイルを作成します。このファイルによって共有ディスクとローカル・ディスクに対するアクセス権を定義します。下記はその一例です。

###
# iSCSI shared disks by-path
ENV{DEVTYPE}=="disk", IMPORT{program}="path_id %p"
ENV{DEVTYPE}=="partition", 
ENV{ID_PATH}=="ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk*", OWNER="informix", GROUP="informix", MODE="0660"

# local disks
KERNEL=="sda7",         OWNER="informix", GROUP="informix", MODE="0660"
###
			

このルールを有効にするためには、udevtrigger コマンドを使うか、あるいはリブートします。

また、シンボリック・リンクを使ってデバイスに対する単純なパスを作成することをお勧めします。下記はその一例です。

/home/informix/chunks/shared.disk1 -> /dev/disk/by-path/\ 
ip-192.168.0.100:3260-iscsi-iqn.2008-07.com.ibm.munich.target:\ 
shared.disk1-lun-0-part1
			

IDS インスタンスを作成して構成する

プライマリー・サーバーとなるマシン (mach1) と SD セカンダリー・サーバーとなるマシン (mach2) に IDS のインスタンスを作成します。

両方のマシンで、ONCONFIG ファイルの ROOTPATH パラメーターを同じ共有ディスクに設定します。

ROOTPATH /home/informix/chunks/shared.disk1
			

また、両方のマシンの INFORMIXSQLHOSTS ファイルを更新し、この 2 台のマシン間で通信を行うためのエントリーを含めます。

demo_on         onsoctcp    mach1    9088
demo_on_sds1    onsoctcp    mach2    9088
			

SD セカンダリー・サーバー・マシンの場合のみ、ONCONFIG ファイルに下記のエントリーを追加します。

SDS_ENABLE 1
SDS_TEMPDBS sds1temp,/home/informix/chunks/sds1temp,2,0,2048
SDS_PAGING /home/informix/chunks/sds1page1,/home/informix/chunks/sds1page2
			

IDS インスタンスを起動する

プライマリー・サーバー (mach1) の IDS インスタンスを下記のコマンドで初期化します。

oninit -iv
                                    

mach1 マシンの IDS を初期化したら、このマシンをプライマリー・サーバーとして指定します。

onmode -d set SDS primary demo_on
			  

SD セカンダリー・サーバー (mach2) の IDS インスタンスを下記のコマンドで起動します。

oninit -v
                                    

各インスタンスの状態は下記のコマンドでチェックすることができます。

onmode -g sds
			




上に戻る


まとめ

この記事で説明した構成は IDS で驚くほど高いパフォーマンスを示しました。単純化した TPC-B ベンチマークを実行する間、ローカル・ディスクと共有ディスクとの間に大きな違いは見られませんでした。

この記事では、IDS の SD セカンダリー・サーバーをセットアップして稼働させるための方法として、特定のバージョンの Ubuntu Linux 上で iSCSI 共有ディスクをセットアップして構成する方法について説明しました。この記事で説明した手順は Linux オペレーティング・システムの他のディストリビューションに応用するためのガイドとしても使用することができるはずです。



参考文献

学ぶために

製品や技術を入手するために

議論するために


著者について

Andreas Breitfeld photo

Andreas Breitfeld はソフトウェア開発者であり、IBM Informix Database Server の業務を数年間行ってきています。彼は IDS のポーティングや開発のさまざまなステージに関係してきました。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


IBM は、International Business Machines Corporation の米国およびその他の国における商標または登録商標です。 Linux は、Linus Torvalds の米国およびその他の国における商標です。 他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。

    日本IBMについて プライバシー お問い合わせ