CentOSでiSCSIターゲットに挑戦してみる

我が家のストレージ鯖を綺麗さっぱり入れなおしたので、
改めてiSCSI ターゲットも設定しなおしてみました。

もちろん、こちらを参照させて頂きました!

先ずは、targetdのインストールから。
yumでインストールなんで楽勝ですw

[root@nas01 ~]# yum install scsi-target-utils
読み込んだプラグイン:fastestmirror, langpacks
base                                                     | 3.6 kB     00:00
epel/x86_64/metalink                                     | 5.4 kB     00:00
epel                                                     | 4.4 kB     00:00
extras                                                   | 3.4 kB     00:00
updates                                                  | 3.4 kB     00:00
epel/x86_64/primary_db                                     | 3.9 MB   00:00
(1/2): epel/x86_64/updateinfo                              | 280 kB   00:00
(2/2): epel/x86_64/pkgtags                                 | 1.3 MB   00:00
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ scsi-target-utils.x86_64 0:1.0.46-3.el7 を インストール
--> 依存性の処理をしています: sg3_utils のパッケージ: scsi-target-utils-1.0.46-3.el7.x86_64
--> 依存性の処理をしています: perl(Config::General) のパッケージ: scsi-target-utils-1.0.46-3.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ perl-Config-General.noarch 0:2.51-2.el7 を インストール
---> パッケージ sg3_utils.x86_64 0:1.37-5.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                    アーキテクチャー
                                          バージョン          リポジトリー
                                                                           容量
================================================================================
インストール中:
 scsi-target-utils          x86_64        1.0.46-3.el7        epel        204 k
依存性関連でのインストールをします:
 perl-Config-General        noarch        2.51-2.el7          epel         71 k
 sg3_utils                  x86_64        1.37-5.el7          base        640 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+2 個の依存関係のパッケージ)

総ダウンロード容量: 915 k
インストール容量: 2.3 M
Is this ok [y/d/N]: y
Downloading packages:
(1/3): perl-Config-General-2.51-2.el7.noarch.rpm           |  71 kB   00:00
(2/3): sg3_utils-1.37-5.el7.x86_64.rpm                     | 640 kB   00:00
(3/3): scsi-target-utils-1.0.46-3.el7.x86_64.rpm           | 204 kB   00:00
--------------------------------------------------------------------------------
合計                                               2.1 MB/s | 915 kB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : sg3_utils-1.37-5.el7.x86_64                     1/3
  インストール中          : perl-Config-General-2.51-2.el7.noarch           2/3
  インストール中          : scsi-target-utils-1.0.46-3.el7.x86_64           3/3
  検証中                  : perl-Config-General-2.51-2.el7.noarch           1/3
  検証中                  : sg3_utils-1.37-5.el7.x86_64                     2/3
  検証中                  : scsi-target-utils-1.0.46-3.el7.x86_64           3/3

インストール:
  scsi-target-utils.x86_64 0:1.0.46-3.el7

依存性関連をインストールしました:
  perl-Config-General.noarch 0:2.51-2.el7     sg3_utils.x86_64 0:1.37-5.el7

完了しました!
[root@nas01 ~]#

さて・・・設定していきましょう。
新ストレージ鯖のディスク構成はこんな感じなので、
今回は/dev/sda4と/dev/sda5をiSCSIで利用することにします。

[root@nas01 conf.d]# gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 17578119168 sectors, 8.2 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): BA38A739-D6D8-42A0-B248-75EBF24FE472
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 17578119134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048      4294969343   2.0 TiB     8E00  Linux LVM
   2      4294969344      8589936639   2.0 TiB     8E00  Linux LVM
   3      8589936640     12884903935   2.0 TiB     8E00  Linux LVM
   4     12884903936     17179871231   2.0 TiB     8E00  Linux LVM
   5     17179871232     17578119134   189.9 GiB   8E00  Linux LVM
[root@nas01 conf.d]#

設定ファイルは、/etc/tgtディレクトリに入っています。
/etc/tgt/tgtd.confと/etc/tgt/target.confについては、触らなくて良いと思います。
/etc/tgt/conf.d/sample.confを参考に、
新たに/etc/tgt/conf.d/nas01.confを作成します。

良くわからなかったのが、バッキングストアとダイレクトストアの
違いですがGoogle先生に聞いてみた感じだと、こんな風だそうです。

名前 意味
バッキングストア ファイル
ブロックデバイス
/path/to/target.img
(ddコマンドで、dd if=/dev/zero of=hoge.img bs=1k count=100見たいな感じで作ります)
/dev/mapper/lvm_sample
/dev/sda4 等々
ダイレクトストア ローカルの SCSI デバイス /dev/sdd

ウチはこんな感じで、バッキングデバイスとして構築してみました。
今回は諸々の事情で、LUNを2個用意することにしました。

[root@nas01 conf.d]# cat nas01.conf
# This is a sample config file for tgt-admin.
# The files ending with '.conf' in this directory will be included.
#
# The "#" symbol disables the processing of a line.

<target iqn.2015-02.org.admkazuya.nas01:nas01.sda4>
        backing-store /dev/sda4
        backing-store /dev/sda5
        initiator-address 10.250.1.0/24
        write-cache off
</target>

#<target iqn.2015-02.org.admkazuya:nas01.sda4>
#       backing-store /dev/sda4
#       initiator-address 10.250.1.0/24
#       write-cache off
#</target>

[root@nas01 conf.d]#

設定できたら、tgtdを起動して、起動できたかを確認します。
どうやら起動できたので、tgtdを自動起動するようにしておきます。

[root@nas01 conf.d]# systemctl start tgtd
[root@nas01 conf.d]# systemctl status tgtd
tgtd.service - tgtd iSCSI target daemon
   Loaded: loaded (/usr/lib/systemd/system/tgtd.service; disabled)
   Active: active (running) since 水 2015-02-11 09:38:19 JST; 6s ago
  Process: 6350 ExecStartPost=/usr/sbin/tgtadm --op update --mode sys --name State -v ready (code=exited, status=0/SUCCESS)
  Process: 6300 ExecStartPost=/usr/sbin/tgt-admin -e -c $TGTD_CONFIG (code=exited, status=0/SUCCESS)
  Process: 6298 ExecStartPost=/usr/sbin/tgtadm --op update --mode sys --name State -v offline (code=exited, status=0/SUCCESS)
  Process: 6296 ExecStartPost=/bin/sleep 5 (code=exited, status=0/SUCCESS)
 Main PID: 6295 (tgtd)
   CGroup: /system.slice/tgtd.service
           mq6295 /usr/sbin/tgtd -f

 2月 11 09:38:14 nas01.admkazuya.org tgtd[6295]: librdmacm: Fatal: unable to...
 2月 11 09:38:14 nas01.admkazuya.org tgtd[6295]: tgtd: iser_ib_init(3355) Fa...
 2月 11 09:38:14 nas01.admkazuya.org tgtd[6295]: tgtd: work_timer_start(146)...
 2月 11 09:38:14 nas01.admkazuya.org tgtd[6295]: tgtd: bs_init_signalfd(271)...
 2月 11 09:38:14 nas01.admkazuya.org tgtd[6295]: tgtd: bs_init(390) use sign...
 2月 11 09:38:19 nas01.admkazuya.org tgtd[6295]: tgtd: device_mgmt(246) sz:1...
 2月 11 09:38:19 nas01.admkazuya.org tgtd[6295]: tgtd: bs_thread_open(412) 16
 2月 11 09:38:19 nas01.admkazuya.org tgtd[6295]: tgtd: device_mgmt(246) sz:1...
 2月 11 09:38:19 nas01.admkazuya.org tgtd[6295]: tgtd: bs_thread_open(412) 16
 2月 11 09:38:19 nas01.admkazuya.org systemd[1]: Started tgtd iSCSI target d...
Hint: Some lines were ellipsized, use -l to show in full.
[root@nas01 conf.d]# systemctl enable tgtd
ln -s '/usr/lib/systemd/system/tgtd.service' '/etc/systemd/system/multi-user.target.wants/tgtd.service'
[root@nas01 conf.d]#

では、iSCSI Targetとしてうまくいけてるかを見てみましょう。
ちゃんとLUN1とLUN2がDiskとして見えてますね。
(LUN0は必ずコントローラーに見えますので、ご注意を)

[root@nas01 conf.d]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2015-02.org.admkazuya.nas01:nas01.sda4
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags:
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 2199023 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/sda4
            Backing store flags:
        LUN: 2
            Type: disk
            SCSI ID: IET     00010002
            SCSI SN: beaf12
            Size: 203903 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/sda5
            Backing store flags:
    Account information:
    ACL information:
        10.250.1.0/24
[root@nas01 conf.d]#

さ・・・後は、イニシエーター側から見えるかですが、それは後程。