2009年04月11日

Mach11(SDS)をLinux iSCSIでセットアップ

普通のPC3台を使い、iSCSIでSDS (Shared Disc Secondary)を構成する方法についての記事を見つけました。

PDFはこちら、HTML形式はこちらからアクセスできます。

以上は英語の記事ですが、すでに日本語訳も公開されています。

SDSは、複数のマシンから共有できるディスクを設定する方法がないとなかなか実環境で手を出しづらいかも知れません。私もプライマリーと同じマシン上でSDSインスタンスを構成してばかりいます(デモ用途のみ。これって実環境ではほとんど意味ないですね。)
iSCSIは、複数のノードから同じディスクをマウントする用途にも使用できます。Informix のSDSでは、実際に共有ディスクに書き込みを行うノードは特定の1つだけで、残りのノードは読み込みが出来れば構わないので、マウントもあまり気を使う必要がない筈です。

私はCentos5で環境を作ってみようと思います


# yum install scsi-target-utils
--> 必要なパッケージのダウンロードとインストール。途中1か所"y"と答える必要あり。
# /etc/init.d/tgtd start
--> インストール後必要なデーモンを起動する
# dd if=/dev/zero bs=1k count=1 seek=500000 of=/home/informix/sdsvolume.img
--> 500MBくらいの空ファイルを作成
# /usr/sbin/tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.mylinux.com.example
--> 本当は targetnameにはネーミングのルールがあるらしい。
# /usr/sbin/tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address ALL
###############################
以下、とりあえずボリュームを作るため
###############################
# /usr/sbin/tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /home/informix/sdsvolume.img
# /usr/sbin/tgtadm --lld iscsi --mode target --op show
--> 以上で500MBくらいのボリュームができたはず。

RedHat5/CentOS5のLinux SCSI target frameworkだと、/etc/tgt/targets.confで永続的なtarget設定の定義ができるようです。以下のように、このファイルを書き換えてみました。これで再起動後もボリュームの設定などが残るようになります。

< target iqn.mylinux.com.example:tgtd>
# List of files to export as LUNs
backing-store /home/informix/sdsvolume.img

Authentication :
# if no "incominguser" is specified, it is not used
# incominguser backup secretpass12

# Access control :
# defaults to ALL if no "initiator-address" is specified
#initiator-address 192.168.1.2
initiator-address ALL
</target>


本当はWindows Vistaの iSCSI initiatorを使って、Windows 版IDS 11.50.TC3でお手軽にSDSを構成したいところが、このバージョンのmachine note によれば、以下のとおり...
Features not supported
======================

1. Shared Disk Secondary Servers

仕方ないので、Linux用のiSCSIイニシエーターをセットアップしてLinux版で試してみることにしましょう。

-------
IDS のインスタンスを動かすマシン側で、先ほどのiSCSIのデバイスをマウントできるように、ISCSIイニシエーターを準備してみます。冒頭の記事はubuntuでの説明になっていますが、CentOS5でもほとんど同じでした。以下のようにパッケージを入手・インストール・起動します。

# yum install iscsi-initiator-utils
# service iscsi start

以後は、冒頭の記事の "イニシエーターがアクセスするディスクを指定する"以後の手順はほぼそのままです。

しかし、ここで一つ問題が...冒頭の記事にもありますが、Informixのチャンクとしてアクセスすることになるデバイスには適切な access権 ( user=informix, group=informix, ug=rw, o=-rwx) が必要です。コマンドラインで chgrp/chmod/chown すればその場はInformixの初期化ができますが、OSを再起動するとデバイスのパーミッションが元に戻ってしまいます。OSを再起動後にoninitを実行すると、以下のようにエラー終了します。

Initializing dbspaces...succeeded
Opening primary chunks...FAILED
oninit: Fatal error in shared memory initialization

WARNING: server initialization failed, or possibly timed out (if -w was used).
Check the message log, online.log, for errors.


onstat -m すると,こんなエラーが出ているはずです。

01:47:37 SDS Server olvm1 - state is now connected
01:47:37 The chunk '/dev/sda1' must have owner-ID "informix" and group-ID "informix".

01:47:37 oninit: Fatal error in shared memory initialization

01:47:37 IBM Informix Dynamic Server Stopped.


このようなエラーを避けるための方法が冒頭の記事に紹介されている、udevのrule設定です。
/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.99.203:3260-iscsi-iqn.mylinux.com.example:\
tgtd-lun-1*", OWNER="informix", GROUP="informix", MODE="0660"

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


ENV{ID_PATH}の部分には、/dev/disk/by-path の下にある、デバイス一覧から、iSCSIのデバイスを探し出して記述します。"tgtd-lun-1*" の部分でワイルドカードを使っています以上の設定でOSを再起動後、/dev/sda1 は期待通りのパーミッションになっていました。

さて、と。後は普通にMach11 SDS の設定を進めれば良いだけです。
(1) onconfig ファイルを複数のマシンにコピー
(2) インスタンス名関連の部分を書き換え
(3) プライマリーインスタンスをを最初に初期化 ( oninit -iv )
(4) プライマリーインスタンスをSDSの親玉(primary)として設定 ( onmode -d set SDS primary oyadama )
(5) SDS セカンダリー側の onconfig ファイルのSDS_ENABLEを1に設定して,oninit ( "-i"は指定しない )
このあたり、詳しくはまた後日...



同じカテゴリー(IBM Webサイトにある情報)の記事
JDBC driver
JDBC driver(2022-04-17 15:24)

Informix V12.10.xC6
Informix V12.10.xC6(2016-01-20 23:14)

Informix V12.10.xC5
Informix V12.10.xC5(2015-03-30 22:39)

OpenAdminTool ( OAT) V3.14
OpenAdminTool ( OAT) V3.14(2014-06-28 14:17)


※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。