nkjmkzk.net

powered by Kazuki Nakajima

Archive for 6月, 2010

ZFSでtpgtを使って接続先ポートを限定する

ZFSはご存知の通りzvolを作成してiSCSIでエクスポートすることができます。

とある環境でZFSサーバは複数のネットワークセグメントに接続されており、当然それぞれのセグメントでIPアドレスが割り振られているとします(多くの環境ではそのようになっているでしょう)。そのときzfs set shareiscsi=on [ZVOL]としてzvolをエクスポートすると、すべてのセグメントでzvolがエクスポートされてしまいます。

名称未設定.001

iSCSIセグメントからDiscoveryしにいったiSCSIクライアントにも1zvolにつき複数のターゲットが見えてしまいます。これは多くの環境で望ましくない挙動でしょう。本来はzvolがエクスポートされるのはiSCSIのストレージセグメントだけに留めておきたいはずです。

zvolがエクスポートされるセグメントを設定するにはtpgt (Target Port Group Tag)が有効です。tpgtを使えば下図のようにzvolをエクスポートするセグメントを限定できます。

名称未設定.002

設定手順です。

まずtpgtを作成します。tpgtの名前には1〜65535の任意の数字を割り当てます。

[root@~]# iscsitadm create tpgt 1

作成したtpgtにzvolをエクスポートしたいIPアドレスを追加します。

[root@~]# iscsitadm modify tpgt -i 10.2.0.1 1

zvolのアクセス制御リストとして作成したtpgtを設定します。

[root@~]# iscsitadm modify target -p 1 [TARGET]

これでtpgt 1に参加している10.2.0.1だけがzvolのエクスポート対象となります。

without comments

Written by 中嶋 一樹

6月 28th, 2010 at 3:03 pm

Posted in Uncategorized

Tagged with ,

phpからASMを管理するためのパッチ

phpからOracleを操作するときは一般的にoci8というAPI群を使います。Oracleに管理者としてログインする際、sqlplusだとconnect /as sysdbaするのはご存知の通りですが、このoci8からOracleに管理者権限接続する際には下記のようにOCI_SYSDBAというフラグを立てて接続することが必要です。
$conn = oci_connect('user', 'password', 'node/service', '', OCI_SYSDBA);
同様にASMに管理者としてログインする際、sqlplusだとconnect /as sysasmすることが必要ですが、このoci8からASMに管理者権限で接続するためのOCI_SYSASMというフラグがないということに気付きました。つまり、phpからASMを管理できないじゃないか、ということになります。
こりゃ困った、ということでいろいろ悩んだ結果、phpにOCI_SYSASM接続モードを勝手に実装することにしました。結果幸運にもphpのソースをちょこっといじるだけでOCI_SYSASM接続モードのサポートをphpに組み込むことができましたのでそれをパッチとして公開しておきます。
php-sysasm.patch
phpのバージョンは5.3.2に対応していますが、多分oci8ってそれほど更新されていないと思うので他のバージョンでもそれほど古くなければ適用可能じゃないかと思います。パッチ適用及びphpのビルド、インストールは下記の手順をご参考に(configureオプションは最小限ですので適宜追加してください)。
[root@~]# tar xvfj php-5.3.2.tar.bz2
[root@~]# cd php-5.3.2/ext/oci8/
[root@~]# patch < /PATH/TO/php-sysasm.patch
[root@~]# cd ../../
[root@~]# ./configure --with-oci8
[root@~]# make
[root@~]# make install

ASMインスタンスへの接続は下記のようにOCI_SYSASMフラグを指定して接続します。

$conn = oci_connect('user', 'password', 'node/service', '', OCI_SYSASM);

without comments

Written by 中嶋 一樹

6月 24th, 2010 at 7:34 am

Posted in Uncategorized

Tagged with , ,