火曜日, 9月 29, 2009

RHEL5, CentOS 5でのiSCSIターゲットの設定

[概要]
Red Hat EL (RHEL) 5.xとCentOS 5.xを使用したiSCSIのターゲットの作成を説明しています。

[詳細]
RHEL 5.xとCentOS 5.xには、iSCSI ターゲットとなるためのパッケージscsi-target-utilsが添付されています。このパッケージを利用してLinuxマシンをiSCSIのターゲットとして運用する方法を説明します。

  1. パッケージのインストール
    • RHEL 5.x
      Cluster Storageのパッケージグループに属していますので、次のようにパッケージのパスを指定してください。
      rpm -ivh マウントポイント/ClusterStorage/scsi-target-utils*

    • CentOS 5.x
      rpm -ivh マウントポイント/CentOS/scsi-target-utils*

  2. ターゲットの作成

    ターゲットの管理は、tgtadmというコマンドを使って行いますが、多くのオプションがあり初心者にはちょっと扱いづらいところがあります。
    tgtadmを直接使わずに、簡単にセットアップするためにいくつかのコマンドが用意されています。ターゲットの追加は"tgt-setup-lun"、ターゲットの変更や状態の表示は"tgt-admin"で行うことが出来ます。
    ただ、これらのコマンドでの実行だけでは、マシンの起動と同時にiSCSIのターゲットは動作しません。起動時に動作させるためには/etc/tgt/targets.confに、ターゲットの設定を記述し、サービスtgtdを自動起動するように設定します。
    まず、/etc/tgt/targets.confの記述方法について説明します。
    1. /etc/tgt/targets.confの書式
      /etc/tgt/targets.confは、ターゲットごとに"<target ターゲット名>"と"</target>"の間に設定を記述します。
      • backing-store
        iSCSIデバイスとなるディスク、もしくは、パーティション、ファイルを指定します。backing-storeを複数指定すると、イニシエータ(クライアント)からは複数のLUNとして表示されます。
        backing-store /dev/sdb1
        backing-store /opt/disk.img

      • initiator-address
        接続を許可するイニシエータのIPアドレスを記載します。複数のイニシエータに接続を許可する場合はinitiator-addressを列挙します。
        逆にinitiator-addressが無い場合には、すべてのイニシエータからの接続を許可します。
        initiator-address 192.168.1.152
        initiator-address 192.168.1.154

      • incominguser
        ターゲットへ接続するイニシエータ対して認証を要求するよう設定します。
        incominguser foo bar

      • outgoinguser
        イニシエータの要求する認証に、ターゲットが返答するよう設定します。
        outgoinguser foo bar


      <target qn.2001-04.com.jp-lin03-sdb:tgtd>
      # List of files to export as LUNs
      backing-store /dev/sdb1
      backing-store /dev/sdb4

      # Authentication :
      # if no "incominguser" is specified, it is not used
      #incominguser backup secretpass12

      # Access control :
      # defaults to ALL if no "initiator-address" is specified
      initiator-address 192.168.1.152
      initiator-address 192.168.1.154
      </target>
      <target qn.2001-04.com.jp-lin03-file:tgtd>
      # List of files to export as LUNs
      backing-store /opt/disk.img

      # Authentication :
      # if no "incominguser" is specified, it is not used
      incominguser foo bar

      # Access control :
      # defaults to ALL if no "initiator-address" is specified
      #initiator-address 192.168.1.151
      </target>


      上記の例では、"qn.2001-04.com.jp-lin03-sdb:tgtd"と"qn.2001-04.com.jp-lin03-file:tgtd"という2つのターゲットを定義しています。"qn.2001-04.com.jp-lin03-sdb:tgtd"は、"/dev/sdb1"と"/dev/sdb4"のそれぞれをLUNとして定義し、"192.168.1.152"と"192.168.1.154"からのアクセスを許可しています。次に、"qn.2001-04.com.jp-lin03-file:tgtd"は、"/opt/disk.img"というレギュラーファイルをLUNとして、すべてのイニシエーターからのアクセスを許可していますが接続に対してユーザ名"foo"、パスワード"bar"という認証を要求します。


  3. サービスの自動起動の設定
    [root@localhost]~# chkconfig tgtd on

  4. tgtdサービスの起動
    [root@localhost]~# service tgtd start

  5. 動作確認
    "tgt-admin -s"もしくは、"tgtadm --lld iscsi --mode target --op show"を使用して、動作確認を行います。
    各ターゲットのLUN 0はSCSIのコントローラとなるので、ディスクが割り当てられるのは、LUN 1から見ていきます。

    LUNについてのチェックは、指定した数のディスクが存在するか、"Backing store"に正しいデバイスが指定されているか、"Online"が"Yes"になっているかを見ます。他には" Account information"で指定したユーザが表示されているか、"ACL information"では指定したIPアドレスが表示されているかをチェックしてください。

    [root@localhost ~]# tgt-admin -s
    Target 1: qn.2001-04.com.jp-lin03-sdb:tgtd
    System information:
    Driver: iscsi
    State: ready
    I_T nexus information:
    LUN information:
    LUN: 0
    Type: controller
    SCSI ID: deadbeaf3:0
    SCSI SN: beaf30
    Size: 0 MB
    Online: Yes
    Removable media: No
    Backing store: No backing store
    LUN: 1
    Type: disk
    SCSI ID: deadbeaf3:1
    SCSI SN: beaf31
    Size: 30006 MB
    Online: Yes
    Removable media: No
    Backing store: /dev/sdb1
    LUN: 2
    Type: disk
    SCSI ID: deadbeaf3:2
    SCSI SN: beaf32
    Size: 26469 MB
    Online: Yes
    Removable media: No
    Backing store: /dev/sdb4
    Account information:
    ACL information:
    100.100.100.152
    100.100.100.154
    Target 2: qn.2001-04.com.jp-lin03-file:tgtd
    System information:
    Driver: iscsi
    State: ready
    I_T nexus information:
    LUN information:
    LUN: 0
    Type: controller
    SCSI ID: deadbeaf1:0
    SCSI SN: beaf10
    Size: 0 MB
    Online: Yes
    Removable media: No
    Backing store: No backing store
    LUN: 1
    Type: disk
    SCSI ID: deadbeaf1:1
    SCSI SN: beaf11
    Size: 41943 MB
    Online: Yes
    Removable media: No
    Backing store: /opt/disk.img
    Account information:
    foo
    ACL information:
    ALL

以上で、iSCSIのターゲットの設定は終了です。