仕方ないのでソースからコンパイルしてみることにしました。
使用したのは iSCSI Enterprise Taget。scsi-target-utilsは Linux target framework が元になっているみたいなのですが、導入事例が見つかったのが前者だったのでそちらを試しています。
まずは下準備。コンパイルに gcc kernel-devel openssl-devel が必要なので導入しておきます。
yum install gcc kernel-devel openssl-devel
次にソースコードを取得します。こちらのダウンロードページから最新版をダウンロードしてください。2010/01/18現在の最新版は1.4.19なので以下のコマンドでダウンロードおよび展開をします。
cd /tmp
wget http://downloads.sourceforge.net/project/iscsitarget/iscsitarget/1.4.19/iscsitarget-1.4.19.tar.gz?use_mirror=jaist
tar zxvf iscsitarget-1.4.19.tar.gz
cd iscsitarget-1.4.19
wget http://downloads.sourceforge.net/project/iscsitarget/iscsitarget/1.4.19/iscsitarget-1.4.19.tar.gz?use_mirror=jaist
tar zxvf iscsitarget-1.4.19.tar.gz
cd iscsitarget-1.4.19
続いてビルド。これはもうお作法どおり。
make && make install
サービスを起動します。
service iscsi-target start
続いてiSCSIターゲットの作成。
ietadm --op new --tid=100 --params Name=iqn.2010-01.com.hoge.iscsi:test
ターゲットID(tid)は0以外であれば何でもいいようなのですが、ここでは参考にさせていただいたサイトを真似て100にしています。名前は命名規則があって、
タイプ識別子「iqn.」、ドメイン取得日、ドメイン名、ドメイン取得者が付けた文字列
としなければないそうです。ただ今回はローカルな環境に設定している(=名前の衝突は発生しない)ので、適当な名前で設定しました。
続いて公開するディスクの設定。
ietadm --op new --tid=100 --lun=0 --params Path=/dev/hdb
ここではディスクを丸ごと1つ(/dev/hdb)公開指定しましたが、LVMの論理ボリュームやパーティション、ファイルシステム(ddで空のファイルを作っておく)を指定しても大丈夫みたいです。ただ論理ボリュームやパーティションを公開した場合、ホスト側で中身を参照する方法が不明…どうやるんだろう?(ディスク丸ごとであれば普通にmount出来るのですが)
−追記:2010/01/19−
解決したので別記事作成しました → こちら
−追記ここまで−
これでiSCSIターゲットの設定は完了です。あとはiSCSIが使用するポート(3260/TCP,UDP)を外部と通信可能にしておきましょう。CentOSの導入時にFirewallを使うように設定している場合、以下のエントリを適当な場所(ESTABLISHEDの前あたり?)に追加します。
-A RH-Firewall-1-INPUT -p udp -m udp --dport 3260 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 3260 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 3260 -j ACCEPT
設定を有効化しましょう。
service iptables restart
続いてクライアント側(ターミネータ側)の設定。今回はWindowsXPから使うことを想定します。
WindowsXPはデフォルトではiSCSIのドライバを持っていません。以下のサイトからダウンロードしてインストールする必要があります。
Microsoft iSCSI Software Initiator
http://www.microsoft.com/downloads/details.aspx?familyid=12cb3c1a-15d6-4585-b385-befd1319f825&displaylang=en
スタートメニューからMicrosoft iSCSI Initiatorを実行すると、iSCSI Initiatorのプロパティというウィンドウが表示されます。Discoveryタブを選択し、Target PortalsのAddボタンを押し、先ほどiSCSIターゲットを導入したサーバのIPアドレスを入力します。
次にTargetsタブを選択すると、Targetsに先ほどサーバ側で設定した名前が表示されていると思います。項目を選択してLog On...をクリックするとポップアップが表示されるので、必要なオプションにチェックを入れて(とりあえずテストであればチェック不要です)OKをクリックすればディスクが認識されます。
あとはローカルディスクと同様に、ディスクの管理ツールからパーティションの設定やフォーマットを行えば利用可能になります。
ちなみに先ほど ietadm で設定した内容は、再起動後には無効になってしまいます。サービス起動と同時に有効にするためには、/etc/iet/ietd.conf に以下の設定を追加します。
Target iqn.2010-01.com.hoge.iscsi:test01
Lun 0 Path=/dev/hdb,Type=fileio
MaxConnections 1
Lun 0 Path=/dev/hdb,Type=fileio
MaxConnections 1
あとサービス自体もサーバ再起動時には行われないので、ちゃんと自動起動するように設定しておきましょう。
chkconfig iscsi-target on
以下のサイトを参考にさせていただきました。(ありがとうございます!)
CentOS/5.2/11.iSCSIターゲット - moji-moji wiki
http://mojimoji.jp/wiki/index.php?CentOS%2F5.2%2F11.iSCSI%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88
Mazn.net » iSCSIを使ってみる@CenOS5.2 (ターゲット) + Windows XP (イニシエータ)
http://www.mazn.net/blog/2009/03/20/199.html
EZ-NET: CentOS 5.3 で iSCSI ターゲットを構築する
http://network.station.ez-net.jp/server/linux/storage/iscsi.asp
湘南エイト会−iSCSI技術仕様
http://liffey2.ld.infoseek.co.jp/computer/storage/index7.html
−追記:2010/02/02−
前提ソフトウェアにgccとkernel-develを追加しました。