CentOSでiSCSIを使おうと思い scsi-target-utils を入れてみたんですが、何故かターゲットデバイスを指定しようとするとtgtadmコマンドがハングしてしまいます。ちょっと調べてみた感じだと、どうも 5.2 まではうまく動いていたようですが、5.3 以降では事例が見つからない。動かなくなった??
仕方ないのでソースからコンパイルしてみることにしました。
使用したのは 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続いてビルド。これはもうお作法どおり。
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設定を有効化しましょう。
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あとサービス自体もサーバ再起動時には行われないので、ちゃんと自動起動するように設定しておきましょう。
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%88Mazn.net » iSCSIを使ってみる@CenOS5.2 (ターゲット) + Windows XP (イニシエータ)
http://www.mazn.net/blog/2009/03/20/199.htmlEZ-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を追加しました。
とりあたまさんのおぼえがき: CentOS 5.4でiSCSIターゲット
コメントを残す
広告