IE9ピン留め
<< Windows Server ...厚木の町並み2 >>
iSCSI Target on Linux
きっかけは、
http://forums.microsoft.com/technet-ja/ShowPost.aspx?PostID=3286005&SiteID=36
で、Windows Server 2008がパラレルSCSIによるフェールオーバークラスタを構築できない点からでした。
インターネット上で類似情報をすでにご存知の方もいらっしゃると思いますが、自分自身でiSCSIターゲットをLinux(CentOS 5.2)にインストールしてみた結果をまとめます。

iSCSIは、記憶装置のSCSIをTCP/IPでラップし、ネットワーク上で記憶装置にアクセスできる仕組みです。→ http://ja.wikipedia.org/wiki/ISCSI より抜粋

具体的な手順等は、以下のとおりです。

1.tarボールのダウンロード
http://iscsitarget.sourceforge.net/ 経由、http://sourceforge.net/project/showfiles.php?group_id=108475 から、tarボールのダウンロードします。
本稿執筆時点では、iscsitarget-0.4.16.tar.gz が最新版でした。

2.展開
以下のコマンドで展開します。
tar -zxvf iscsitarget-0.4.16.tar.gz

3.make
注意点があります。コンパイル時にKernel Sourceを使います。Kernel Sourceが必要なため、/usr/src/kernelなど、ファイルがインストールされているか確認してください。また、カーネルを新しくした場合は、makeおよびmake installをやり直す必要があります。
展開したディレクトリ(本稿の場合は、iscsitarget-0.4.16ディレクトリ)にcdし、makeコマンドを実行します。

4.make install
ひとつ注意点があります。depmodが通常ユーザの環境変数pathに含まれていません。結果、suやsudoにてmake installした際にdepmodを実行できず、make installは失敗します。
・PATH=$PATH:/sbin;export PATH を実行して、sudoやsuでmake install
・Makefileのdepmodの箇所をフルパス(depmod→/sbin/depmod)としてmake install
・rootで入りなおしてmake installします。
 このやり方は、ローカルのコンソールにアクセスできる場合のみ推奨です。sshのPermitRootLogin noの場合など、リモートの場合は、推奨できません。
そうすると、以下のようにファイルがインストールされます。
-----
# make install
`usr/ietd' -> `/usr/sbin/ietd'
`usr/ietadm' -> `/usr/sbin/ietadm'
`etc/initd/initd.redhat' -> `/etc/init.d/iscsi-target'
`doc/manpages/ietadm.8' -> `/usr/share/man/man8/ietadm.8'
`doc/manpages/ietd.8' -> `/usr/share/man/man8/ietd.8'
`doc/manpages/ietd.conf.5' -> `/usr/share/man/man5/ietd.conf.5'
`ChangeLog' -> `/usr/share/doc/iscsitarget/ChangeLog'
`COPYING' -> `/usr/share/doc/iscsitarget/COPYING'
`README' -> `/usr/share/doc/iscsitarget/README'
`README.vmware' -> `/usr/share/doc/iscsitarget/README.vmware'
`kernel/iscsi_trgt.ko' -> `/lib/modules/2.6.18-92.1.1.el5/kernel/iscsi/iscsi_trgt.ko'
Running depmod

6.ietd.confの編集
ietd.confファイルの編集は、suやsudoを使い、管理特権を取得してから行ってください。
ここでは、必要最低限のパラメータのみ設定しています。
-----
#iSCSIターゲットに接続する際の認証(CHAP認証)で使用します。
IncomingUser iscsi hogeinhogein
OutgoingUser iscsi hogeoutoutho
#[IncomingUser | OutgoingUser] ターゲットアクセス時のユーザ名パスワード
#なお、パスワードは、12文字とすることが必要です。
#匿名アクセスを行う場合は、ユーザ名とパスワードを省略できます。
Target iqn.2008-06.jp.co.itfrontier.hogehoge:storage.disk2
#iqn.YYYY-MM.ドメイン名を逆に記載したもの:識別子は自由に設定 というようにtargetを命名します。
Lun 0 Path=/dev/sdb,Type=fileio
# Logical Unit definitionを指定します。
Alias usehostfoc
#ターゲットの別名を指定します。
Target iqn.2008-06.jp.co.itfrontier.hogehoge:storage.disk3
Lun 1 Path=/dev/sdb,Type=fileio
Alias usehostfoc

7.IPアドレスによるアクセス制御を設定
initiator.allowおよびinitiators.denyファイルの編集は、suやsudoを使い、管理特権を取得してから行ってください。なお、initiator.allowおよびinitiators.denyへの、設定方法は、hosts.allowおよびhosts.denyファイルと同様です。
まずは、initiator.allowを設定します。
-----
#Targetに対して、許可するIPアドレス等を設定します。
#w.x.y.z:IPアドレスや、IPサブネットを指定します。
iqn.2008-06.jp.co.itfrontier.hogehoge:storage.disk2 w.x.y.z
iqn.2008-06.jp.co.itfrontier.hogehoge:storage.disk3 w.x.y.z
-----

続いて、initiators.denyを編集します。
-----
#initiator.allowで許可されたもの以外をすべて拒否します。
ALL ALL

8.手動で起動
シェルのプロンプトで、"service iscsi-target start"と入力し、Enterキーを押して実行します。
以下のように、 [ OK ]が表示されれば問題ありません。
# service iscsi-target start
Starting iSCSI target service: [ OK ]

もしくは、以下でもOK。
# /etc/init.d/iscsi-target restart

9.自動起動するために、ランレベルを設定
chkconfig --level 345 iscsi-target on

"chkconfig --list"コマンド等で、上記の内容が反映されているか確認しましょう。

10.Linuxのファイアウォール設定を変更
860/tcp,860/udp,3260/tcp,3260/udpが通過できるよう、Linuxのファイアウォール設定を変更します。
/etc/servicesにポートの一覧があるので、そこからiSCSI関連を確認しておいてください。

11.接続テストの準備
Windows XPおよびWindows Server 2003は、iSCSIイニシエータをダウンロードし、管理特権でインストールする必要があります。
http://www.microsoft.com/downloads/details.aspx?FamilyID=12cb3c1a-15d6-4585-b385-befd1319f825&DisplayLang=en
なお、Window VistaやWindows Server 2008以降は、コントロールパネルにiSCSIイニシエータのアプレットがあります。

12.接続テスト
iSCSIイニシエータは、Windows Server 2008およびVistaで標準装備です。Windows Server 2003およびXPは、ダウンロードする必要があります。
いずれのWindowsでも、概ね以下の手順でできると思います。
-----
管理特権でiSCSIイニシエータのアプレットを起動します。

Discoveryタブへ移動し、 Addボタンを押します。

iSCSIターゲットのIPアドレス(DNS名でも可)とポート番号を設定します。

認証を行うので、「Advanced...」ボタンを押します。

CHAP Logon Informationをチェックし、User Nameにietd.confで設定したIncomingUserのユーザ名を、Target Secretにietd.confで設定したIncomingUserのパスワードを設定し、OKボタンを押します。

Targetタブへ移動し、 Log onボタンを押します。

接続先を確認し、問題がなければ、OKボタンを押します。[Automatically resotre this connection when the system boots]にチェックしておくと、次回起動時に自動で接続してくれます。

コンピュータの管理]の[ディスクの管理]で接続されているか確認します。

ディスクのプロパティを表示させます。

12.考察
Linuxの管理経験、makeの経験があれば、容易に構築できると思います。特に、デバイスファイルとして、LUNを指定するため、OSで認識しているディスクであればなんであろうと、iSCSIのターゲットとして提供できるでしょう。
iSCSIターゲットは、パスワードやIPアドレスによるアクセス制御で保護できますが、それでも不十分な場合は、IPSec等の利用を検討すべきでしょう。

13.参考
Virtual Server 2005上のフェイルオーバークラスタ構成について:
http://forums.microsoft.com/technet-ja/ShowPost.aspx?PostID=3286005&SiteID=36

http://ja.wikipedia.org/wiki/ISCSI

Welcome to the iSCSI enterprise target project Wiki:
http://iscsitarget.sourceforge.net/wiki/index.php/Main_Page

A Quick Guide to iSCSI on Linux:
http://www.cuddletech.com/articles/iscsi/index.html

iSCSI Enterprise Targetをセットアップしよう:
http://srvhat09.anaheim-eng.com/modules/tinyd6/index.php?id=11
(現在、アクセスできないようです。。。)

iSCSIを入れてみた(2):
http://www.rottarte.net/blog/2007/08/iscsi2.html

iSCSI Enterprise Target:
http://bougaidenpa.org/wanatabe/entry/iscsi_enterprise_target
by sashiz | 2008-08-10 08:59 | Linux
<< Windows Server ... 厚木の町並み2 >>