2010年7月1日

Linux SCSI Target Framework を使う

Debian/Ubuntu の iSCSI Target のお話が出てくると、iSCSI Enterprise Target (IET)が必ず出てくる。

まぁ、良いんだけど kernel ソースに取り込まれていないモジュールを使うので、 時々、他の複合的な要因かもしれないが、あさっての場面で oops は吐いくれたりする。

Fedora/RHEL/CentOS とかだと、既にLinux SCSI Target Framework(tgt)に移行している。コイツは 2.6.20 頃 kernel ソースに取り込まれているので、 結構安定してるんじゃないかなと思う。

tgt の性能に関しては、2006 年頃の論文「Linuxにおけるストレージシステムフレームワークの実現(オペレーティングシステム)」を見る限り、IET と若干落ちるぐらいなので、気にしなくても良いかも。

そろそろ Debian/Ubuntu でも Linux SCSI Target Framework(tgt)に移行する時期だ。

ユーザベースのツール群 tgt パッケージは、squeeze/lucid で用意されているみたいなので、やってみた。

ハマりポイントが2点ある。

  1. init スクリプトが見当たらない。バグ(#577925BUG #574554)として登録されている。
  2. tgt-admin 内で、デバイスが既に利用してるかどうかチェックする部分が上手く動いていない。と言うか、Debian/Ubuntuでは /bin/sh が dash (ash の亜種) になっているため、perl の system関数の呼び出しのスクリプト片に移植性がある書き方が要求される。コイツを踏んでる。

なので Fedoraのinitスクリプトを参考に、upstart 用のイベント設定ファイル? /etc/init/tgtd.confを書き下し、tgt-admin の修正パッチtgt-admin.diffを作ってみた。

例として、単一ディスクをiSCSIで公開する事を考える

以下の設定ファイルを書き下し、「tgt-admin -e」とタイプすれば良い。

/etc/tgt/targets.conf

default-driver iscsi

<target iqn.2010-07.com.example:stroage.fserver.data>
	driver iscsi
	backing-store /dev/sdb
</target>

実際にiSCSIターゲット設定が上手く行ったかは、次のようにする。

# tgt-admin -s
Target 1: iqn.2010-07.com.example:stroage.fserver.data
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: None
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 34360 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/sdb
    Account information:
    ACL information:
        ALL

あとは、巷に溢れている tgt の設定方法が使える。 上手く設定すると、CDドライブやリムーバルディスクとかも、ネット越しで使えるようになるらしい。

追記 (2010/09/06)

気づいてみると、二番目のハマり点も修正済み(#589716)になったようである。

debian squeeze がリリースしたら、tgt をサクッと使うようになれる訳ですね。


[全文を読む]