とりあたまさんのおぼえがき: CentOS 5.4でiSCSIターゲット

CentOSでiSCSIを使おうと思い scsi-target-utils を入れてみたんですが、何故かターゲットデバイスを指定しようとするとtgtadmコマンドがハングしてしまいます。ちょっと調べてみた感じだと、どうも 5.2 まではうまく動いていたようですが、5.3 以降では事例が見つからない。動かなくなった??

仕方ないのでソースからコンパイルしてみることにしました。

使用したのは iSCSI Enterprise Tagetscsi-target-utilsLinux target framework が元になっているみたいなのですが、導入事例が見つかったのが前者だったのでそちらを試しています。

まずは下準備。コンパイルに gcc kernel-devel openssl-devel が必要なので導入しておきます。

yum install gcc kernel-devel openssl-devel

次にソースコードを取得します。こちらのダウンロードページから最新版をダウンロードしてください。2010/01/18現在の最新版は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 PortalsAddボタンを押し、先ほど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%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を追加しました。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中