RHEL6サーバ1台でiSCSI+device-mapper-multipath構築

  • 必要なものが揃ってるか確認
# rpm -qa | grep scsi
iscsi-initiator-utils-6.2.0.872-10.el6.i686
scsi-target-utils-1.0.4-3.el6.i686
# rpm -qa | grep device-mapper
device-mapper-libs-1.02.53-8.el6.i686
device-mapper-multipath-0.4.9-31.el6.i686
device-mapper-1.02.53-8.el6.i686
device-mapper-event-1.02.53-8.el6.i686
device-mapper-multipath-libs-0.4.9-31.el6.i686
device-mapper-event-libs-1.02.53-8.el6.i686
  • iSCSIターゲット作成

LU用のディスクイメージ作成

# dd if=/dev/zero of=/iscsi/lun1 bs=200k count=1000

tgtd起動

# /etc/init.d/tgtd start

ターゲット作成

# tgtadm --lld iscsi --op new --mode target --tid 1 --targetname iqn.2011-02.iscsi.test.com:lun1

LU追加

# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /iscsi/lun1

(物理デバイスを使う場合はこんな感じで)

# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /dev/sdb1

127.0.0.1と127.0.0.2にアクセス許可を設定*1

# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address 127.0.0.1
# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address 127.0.0.2

(全部許可する場合はこんな感じ)

# tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address ALL

できたか確認

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2011-02.iscsi.test.com:lun1
    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
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: None
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 205 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /iscsi/lun1
    Account information:
    ACL information:
        127.0.0.1
        127.0.0.2
  • イニシエーター作成

iscsi起動

# /etc/init.d/iscsi start

127.0.0.1をターゲットにdiscovery

# iscsiadm -m discovery -t sendtargets -p 127.0.0.1
127.0.0.1:3260,1 iqn.2011-02.iscsi.test.com:lun1

127.0.0.2をターゲットにdiscovery

# iscsiadm -m discovery -t sendtargets -p 127.0.0.2
127.0.0.2:3260,1 iqn.2011-02.iscsi.test.com:lun1

ログイン

# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2011-02.iscsi.test.com:lun1, portal: 127.0.0.2,3260]
Logging in to [iface: default, target: iqn.2011-02.iscsi.test.com:lun1, portal: 127.0.0.1,3260]
Login to [iface: default, target: iqn.2011-02.iscsi.test.com:lun1, portal: 127.0.0.2,3260] successful.
Login to [iface: default, target: iqn.2011-02.iscsi.test.com:lun1, portal: 127.0.0.1,3260] successful.

確認

# iscsiadm -m node --show
127.0.0.2:3260,1 iqn.2011-02.iscsi.test.com:lun1
127.0.0.1:3260,1 iqn.2011-02.iscsi.test.com:lun1
# iscsiadm -m session --show
tcp: [5] 127.0.0.2:3260,1 iqn.2011-02.iscsi.test.com:lun1
tcp: [6] 127.0.0.1:3260,1 iqn.2011-02.iscsi.test.com:lun1
# iscsiadm -m discovery --show
127.0.0.2:3260 via sendtargets
127.0.0.1:3260 via sendtargets
  • ターゲット側で接続状態を確認
# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2011-02.iscsi.test.com:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
        I_T nexus: 1
            Initiator: iqn.1994-05.com.redhat:965af1a26ae
            Connection: 0
                IP Address: 127.0.0.2
        I_T nexus: 2
            Initiator: iqn.1994-05.com.redhat:965af1a26ae
            Connection: 0
                IP Address: 127.0.0.1
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: None
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 205 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /iscsi/lun1
    Account information:
    ACL information:
        127.0.0.1
        127.0.0.2
  • device-mapper-multipathの設定

LU見えてるか確認

# cat /proc/scsi/scsi
Attached devices:
:
Host: scsi6 Channel: 00 Id: 00 Lun: 00
  Vendor: IET      Model: Controller       Rev: 0001
  Type:   RAID                             ANSI  SCSI revision: 05
Host: scsi6 Channel: 00 Id: 00 Lun: 01
  Vendor: IET      Model: VIRTUAL-DISK     Rev: 0001
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi7 Channel: 00 Id: 00 Lun: 00
  Vendor: IET      Model: Controller       Rev: 0001
  Type:   RAID                             ANSI  SCSI revision: 05
Host: scsi7 Channel: 00 Id: 00 Lun: 01
  Vendor: IET      Model: VIRTUAL-DISK     Rev: 0001
  Type:   Direct-Access                    ANSI  SCSI revision: 05

WWID確認

# scsi_id --whitelisted --device=/dev/sdc
1IET     00010001
# scsi_id --whitelisted --device=/dev/sdd
1IET     00010001

設定ファイルの編集(ドキュメントから雛型を取ってくる)

# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/multipath.conf

編集結果

# diff -su /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/multipath.conf
--- /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf 2010-09-07 23:21:37.000000000 +0900
+++ /etc/multipath.conf 2011-02-04 14:14:44.902995293 +0900
@@ -8,12 +8,13 @@
 ## By default, devices with vendor = "IBM" and product = "S/390.*" are
 ## blacklisted. To enable mulitpathing on these devies, uncomment the
 ## following lines.
-#blacklist_exceptions {
+blacklist_exceptions {
 #      device {
 #              vendor  "IBM"
 #              product "S/390.*"
 #      }
-#}
+       wwid 00010001
+}
 ## Use user friendly names, instead of using WWIDs as names.
 defaults {

モジュールロード

# modprobe dm_multipath

マルチパスオン

# multipath -v2
:

できたか確認

# multipath -ll
mpathc (1IET     00010001) dm-3 IET,VIRTUAL-DISK
size=195M features='0' hwhandler='0' wp=rw
-+- policy='round-robin 0' prio=1 status=active
`- 6:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled `- 7:0:0:1 sdd 8:48 active ready running

ログアウト

# iscsiadm -m node -u
Logging out of session [sid: 1, target: iqn.2011-02.iscsi.test.com:sdb1, portal: 127.0.0.1,3260]
Logging out of session [sid: 2, target: iqn.2011-02.iscsi.test.com:sdb1, portal: 127.0.0.2,3260]
Logout of [sid: 1, target: iqn.2011-02.iscsi.test.com:sdb1, portal: 127.0.0.1,3260] successful.
Logout of [sid: 2, target: iqn.2011-02.iscsi.test.com:sdb1, portal: 127.0.0.2,3260] successful.

削除

# iscsiadm -m node -o delete -p 127.0.0.1
# iscsiadm -m node -o delete -p 127.0.0.2

iscsi停止

# /etc/init.d/iscsi stop

tgtd停止

# /etc/init.d/tgtd stop
SCSI target daemon を停止中:                               [  OK  ]

*1:ループバックは/8なので.1でも.2でも接続できる