lost and found ( for me ? )

CentOS 5.5 : iSCSI target , initiator の設定。 CHAP 認証で iSCSI 接続

iSCSI target : 192.168.1.50 ( hat1-vm )
iSCSI initiator : 192.168.1.51 ( hat2-vm )

[ iSCSI target の設定 ( hat1-vm )  ]

[root@hat1-vm ~]# cat /etc/redhat-release
CentOS release 5.5 (Final)

[root@hat1-vm ~]# uname -a
Linux hat1-vm.localdomain 2.6.18-194.8.1.el5 #1 SMP Thu Jul 1 19:07:06 EDT 2010 i686 athlon i386 GNU/Linux

scsi-target-utils をインストール

[root@hat1-vm ~]# yum install scsi-target-utils.i386 -y

[root@hat1-vm ~]# rpm -ql scsi-target-utils
/etc/rc.d/init.d/tgtd
/etc/sysconfig/tgtd
/etc/tgt/targets.conf
/usr/sbin/tgt-admin
/usr/sbin/tgt-setup-lun
/usr/sbin/tgtadm
/usr/sbin/tgtd
/usr/sbin/tgtimg
/usr/share/doc/scsi-target-utils-0.0
/usr/share/doc/scsi-target-utils-0.0/README
/usr/share/doc/scsi-target-utils-0.0/README.iscsi
/usr/share/doc/scsi-target-utils-0.0/README.iser
/usr/share/doc/scsi-target-utils-0.0/README.lu_configuration
/usr/share/doc/scsi-target-utils-0.0/README.mmc
/usr/share/man/man8/tgt-admin.8.gz
/usr/share/man/man8/tgt-setup-lun.8.gz
/usr/share/man/man8/tgtadm.8.gz

tgtadm コマンドを使用した iscsi の設定方法は /usr/share/doc/scsi-target-utils-0.0/README.iscsi に記述されている。

設定ファイルは /etc/tgt/targets.conf  。
書式は /etc/tgt/targets.conf のサンプルや、man tgt-admin をチェックするといいかも。

# man tgt-admin

      There are 2 types of storage devices:

      backing-store - defines a virtual device on the target.

      direct-store  - defines a direct mapped device with the same properties
      as the physical device (such as VENDOR_ID, SERIAL_NUM, etc.)

      initiator-address  -  allows  connections  only  from  the  specify  IP
      address. defaults to ALL if no "initiator-address" is specified

      incominguser  -  define  iscsi  incoming  authentication setting. if no
      "incominguser" is specified, it is not used.

      outgoinguser - define iscsi  outgoing  authentication  setting.  if  no
      "outgoinguser" is specified, it is not used.


iscsi ターゲットを作成

/dev/sda1 を iqn.2010-07.localdomain:hat1-vm:target1 という名前でinitiator , 192.168.1.51 から接続許可する。ユーザ名は user1 、パスワードは secretpass1 とする。

ターゲット名は、 iqn.年-月.ドメインを逆順にしたもの:識別子  となる。

[root@hat1-vm tgt]# less /etc/tgt/targets.conf
#
#        backing-store /dev/sda1
#        lun 10
#        initiator-address 192.168.1.51 # Allowed IP
#        incominguser user1 secretpass1
#            outgoinguser user1 secretpass1
#

[root@hat1-vm tgt]# /etc/init.d/tgtd start

TCP ポート 3260 でリッスンする。

[root@hat1-vm tgt]# egrep -i iscsi /etc/services
iscsi 860/tcp # iSCSI
iscsi 860/udp # iSCSI
iscsi-target 3260/tcp # iSCSI port
iscsi-target 3260/udp # iSCSI port


[root@hat1-vm tgt]# lsof -i:3260
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
tgtd    2472 root    5u  IPv6   7073       TCP *:iscsi-target (LISTEN)
tgtd    2472 root    6u  IPv4   7074       TCP *:iscsi-target (LISTEN)
tgtd    2473 root    5u  IPv6   7073       TCP *:iscsi-target (LISTEN)
tgtd    2473 root    6u  IPv4   7074       TCP *:iscsi-target (LISTEN)

[root@hat1-vm ~]# tgt-admin -show
Target 1: iqn.2010-07.localdomain:hat1-vm:target1
   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: 10
           Type: disk
           SCSI ID: IET     0001000a
           SCSI SN: beaf110
           Size: 10 MB
           Online: Yes
           Removable media: No
           Backing store type: rdwr
           Backing store path: /dev/sda1
   Account information:
       user1 (outgoing)
   ACL information:
       192.168.1.51
[root@hat1-vm ~]#


[ iSCSI initiator の設定 ( hat2-vm ) ]


[root@hat2-vm ~]# cat /etc/redhat-release
CentOS release 5.5 (Final)

[root@hat2-vm ~]# uname -a
Linux hat2-vm.localdomain 2.6.18-194.8.1.el5 #1 SMP Thu Jul 1 19:07:06 EDT 2010 i686 athlon i386 GNU/Linux

[root@hat2-vm ~]# ifconfig eth0 | grep -i "inet addr"
         inet addr:192.168.1.51  Bcast:192.168.1.255  Mask:255.255.255.0


イニシエータをインストール

[root@hat2-vm ~]# yum install -y iscsi-initiator-utils.i386

[root@hat2-vm ~]# rpm -ql `rpm -qa | grep iscsi`
/etc/iscsi
/etc/iscsi/iscsid.conf  <- 設定ファイル
/etc/rc.d/init.d/iscsi
/etc/rc.d/init.d/iscsid
/sbin/brcm_iscsiuio
/sbin/iscsi-iname
/sbin/iscsiadm
/sbin/iscsid
/sbin/iscsistart
.....

設定ファイル /etc/iscsi/iscsid.conf の編集

discovery.sendtarget.auth.authmethod = CHAP
discovery.sendtarget.auth.username = user1
discovery.sendtarget.auth.password = secretapass1

iscsi デーモンをスタート。ログインできてるみたい。

[root@hat2-vm ~]# /etc/init.d/iscsi start
iscsid が停止していますが PID ファイルが残っています
Starting iSCSI daemon:                                     [  OK  ]
                                                          [  OK  ]
iSCSI ターゲットを設定中: Logging in to [iface: default, target: iqn.2010-07.localdomain:hat1-vm:target1, portal: 192.168.1.50,3260]
Login to [iface: default, target: iqn.2010-07.localdomain:hat1-vm:target1, portal: 192.168.1.50,3260]: successful
                                                          [  OK  ]


iscsiadm でターゲットの情報を取得

[root@hat2-vm ~]# iscsiadm -m discovery -d -t sendtargets -p 192.168.1.50
# BEGIN RECORD 2.0-871
discovery.startup = manual
discovery.type = sendtargets
discovery.sendtargets.address = 192.168.1.50
discovery.sendtargets.port = 3260
discovery.sendtargets.auth.authmethod = None
discovery.sendtargets.auth.username =
discovery.sendtargets.auth.password =
discovery.sendtargets.auth.username_in =
discovery.sendtargets.auth.password_in =
discovery.sendtargets.timeo.login_timeout = 15
discovery.sendtargets.reopen_max = 5
discovery.sendtargets.timeo.auth_timeout = 45
discovery.sendtargets.timeo.active_timeout = 30
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768


-- man iscsiadm より

EXAMPLES
      Discover targets at a given IP address:

           iscsiadm --mode discovery --type sendtargets --portal 192.168.1.10

      Login, must use a node record id found by the discovery:

           iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --login

      Logout:

           iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260 --logout

      List node records:

           iscsiadm --mode node

      Display all data for a given node record:

           iscsiadm --mode node --targetname iqn.2001-05.com.doe:test --portal 192.168.1.1:3260

----

シスログ。sda として認識。

[root@hat2-vm ~]# cat /var/log/messages

Jul  7 22:26:06 hat2-vm kernel: Loading iSCSI transport class v2.0-871.
Jul  7 22:26:06 hat2-vm kernel: cxgb3i: tag itt 0x1fff, 13 bits, age 0xf, 4 bits.
Jul  7 22:26:06 hat2-vm kernel: iscsi: registered transport (cxgb3i)
Jul  7 22:26:06 hat2-vm kernel: Broadcom NetXtreme II CNIC Driver cnic v2.1.0 (Oct 10, 2009)
Jul  7 22:26:06 hat2-vm kernel: Broadcom NetXtreme II iSCSI Driver bnx2i v2.1.0 (Dec 06, 2009)
Jul  7 22:26:06 hat2-vm kernel: iscsi: registered transport (bnx2i)
Jul  7 22:26:06 hat2-vm kernel: iscsi: registered transport (tcp)
Jul  7 22:26:06 hat2-vm kernel: iscsi: registered transport (iser)
Jul  7 22:26:06 hat2-vm kernel: iscsi: registered transport (be2iscsi)
Jul  7 22:26:06 hat2-vm iscsid: iSCSI logger with pid=3618 started!
Jul  7 22:26:06 hat2-vm kernel: scsi7 : iSCSI Initiator over TCP/IP
Jul  7 22:26:06 hat2-vm kernel:   Vendor: IET       Model: Controller        Rev: 0001
Jul  7 22:26:06 hat2-vm kernel:   Type:   RAID                               ANSI SCSI revision: 05
Jul  7 22:26:06 hat2-vm kernel: scsi 7:0:0:0: Attached scsi generic sg0 type 12
Jul  7 22:26:06 hat2-vm kernel:   Vendor: IET       Model: VIRTUAL-DISK      Rev: 0001
Jul  7 22:26:06 hat2-vm kernel:   Type:   Direct-Access                      ANSI SCSI revision: 05
Jul  7 22:26:06 hat2-vm kernel: SCSI device sda: 20460 512-byte hdwr sectors (10 MB)
Jul  7 22:26:06 hat2-vm kernel: sda: Write Protect is off
Jul  7 22:26:06 hat2-vm kernel: SCSI device sda: drive cache: write back
Jul  7 22:26:06 hat2-vm kernel: SCSI device sda: 20460 512-byte hdwr sectors (10 MB)
Jul  7 22:26:06 hat2-vm kernel: sda: Write Protect is off
Jul  7 22:26:06 hat2-vm kernel: SCSI device sda: drive cache: write back
Jul  7 22:26:06 hat2-vm kernel:  sda: unknown partition table
Jul  7 22:26:06 hat2-vm kernel: sd 7:0:0:10: Attached scsi disk sda
Jul  7 22:26:06 hat2-vm kernel: sd 7:0:0:10: Attached scsi generic sg1 type 0
Jul  7 22:26:07 hat2-vm iscsid: transport class version 2.0-871. iscsid version 2.0-871
Jul  7 22:26:07 hat2-vm iscsid: iSCSI daemon with pid=3619 started!
Jul  7 22:26:07 hat2-vm iscsid: connection1:0 is operational now

コネクションも確率されている。
initiator は任意のポート ( このケースでは 50461 ) で、target の 3260 に接続する。

[root@hat2-vm ~]# lsof -i:3260
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
iscsid  3921 root    9u  IPv4  10729       TCP 192.168.1.51:50461->192.168.1.50:iscsi-target (ESTABLISHED)


scsi ターゲット側 ( hat1-vm ) でみると、iscsi initiator (192.168.1.51 から)から接続されているのがわかる。

[root@hat1-vm ~]# tgt-admin -show
Target 1: iqn.2010-07.localdomain:hat1-vm:target1
   System information:
       Driver: iscsi
       State: ready
   I_T nexus information:
       I_T nexus: 4
           Initiator: iqn.1994-05.com.redhat:841bba3bbf8
           Connection: 0
               IP Address: 192.168.1.51

- iscsiターゲット上 ( hat1-vm ) でキャプチャしたデータ

[root@hat1-vm ~]# tshark -r iscsi.pcap
Running as user "root" and group "root". This could be dangerous.
 1   0.000000 192.168.1.51 -> 192.168.1.50 TCP 50461 > iscsi-target [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=2961715 TSER=0 WS=4
 2   0.000004 192.168.1.50 -> 192.168.1.51 TCP iscsi-target > 50461 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=2953777 TSER=2961715 WS=4
 3   0.000668 192.168.1.51 -> 192.168.1.50 TCP 50461 > iscsi-target [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=2961715 TSER=2953777
 4   0.256884 192.168.1.51 -> 192.168.1.50 TCP [TCP segment of a reassembled PDU]

initiator から taget にログインコマンドを発行している

iSCSI (Login Command)
   Opcode: Login Command (0x03)
   1... .... = T: Transit to next login stage
   .0.. .... = C: Text is complete
   .... 01.. = CSG: Operational negotiation (0x01)
   .... ..11 = NSG: Full feature phase (0x03)
   VersionMax: 0x00
   VersionMin: 0x00
   TotalAHSLength: 0x00
   DataSegmentLength: 0x000001d1
   ISID: 00023D010000
       00.. .... = ISID_t: IEEE OUI (0x00)
       ..00 0000 = ISID_a: 0x00
       ISID_b: 0x023d
       ISID_c: 0x01
       ISID_d: 0x0000
   TSIH: 0x0000
   InitiatorTaskTag: 0x00000000
   CID: 0x0000
   CmdSN: 0x00000000
   ExpStatSN: 0x00000000
   Key/Value Pairs
       KeyValue: InitiatorName=iqn.1994-05.com.redhat:841bba3bbf8
       KeyValue: InitiatorAlias=hat2-vm.localdomain
       KeyValue: TargetName=iqn.2010-07.localdomain:hat1-vm:target1
       KeyValue: SessionType=Normal
       KeyValue: HeaderDigest=None
       KeyValue: DataDigest=None
       KeyValue: DefaultTime2Wait=2
       KeyValue: DefaultTime2Retain=0
       KeyValue: IFMarker=No
       KeyValue: OFMarker=No
       KeyValue: ErrorRecoveryLevel=0
       KeyValue: InitialR2T=No
       KeyValue: ImmediateData=Yes
       KeyValue: MaxBurstLength=16776192
       KeyValue: FirstBurstLength=262144
       KeyValue: MaxOutstandingR2T=1
       KeyValue: MaxConnections=1
       KeyValue: DataPDUInOrder=Yes
       KeyValue: DataSequenceInOrder=Yes
       KeyValue: MaxRecvDataSegmentLength=262144


iSCSI接続した /dev/sda にファイルシステムを作成

[root@hat2-vm ~]# fdisk /dev/sda
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): m
コマンドの動作
  a   ブート可能フラグをつける
  b   bsd ディスクラベルを編集する
  c   dos 互換フラグをつける
  d   領域を削除する
  l   既知の領域タイプをリスト表示する
  m   このメニューを表示する
  n   新たに領域を作成する
  o   新たに空の DOS 領域テーブルを作成する
  p   領域テーブルを表示する
  q   変更を保存せずに終了する
  s   空の Sun ディスクラベルを作成する
  t   領域のシステム ID を変更する
  u   表示/項目ユニットを変更する
  v   領域テーブルを照合する
  w   テーブルをディスクに書き込み、終了する
  x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): n
コマンドアクション
  e   拡張
  p   基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (2-1023, default 2):
Using default value 2
終点 シリンダ または +サイズ または +サイズM または +サイズK (2-1023, default 1023):
Using default value 1023

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

[root@hat2-vm ~]# fdisk -l

Disk /dev/vda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        1239     9952236   83  Linux
/dev/vda2            1240        1304      522112+  82  Linux swap / Solaris

Disk /dev/sda: 10 MB, 10475520 bytes
1 heads, 20 sectors/track, 1023 cylinders
Units = シリンダ数 of 20 * 512 = 10240 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1               2        1023       10220   83  Linux


[root@hat2-vm ~]# mkfs.ext3 /dev/sda1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
2560 inodes, 10220 blocks
511 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=10485760
2 block groups
8192 blocks per group, 8192 fragments per group
1280 inodes per group
Superblock backups stored on blocks:
8193

Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


マウント

[root@hat2-vm ~]# mkdir tmp
[root@hat2-vm ~]# mount -t ext3 /dev/sda1 tmp

[root@hat2-vm ~]# cd tmp/
[root@hat2-vm tmp]# ls
lost+found
[root@hat2-vm tmp]# echo hello > hello.txt
[root@hat2-vm tmp]# cat hello.txt
hello

[root@hat2-vm tmp]# cat hello.txt
hello

- 起動時に iSCSI接続、マウントする方法


[root@hat2-vm ~]# chkconfig  iscsi on

最後の行を追加。
5列目の数字はファイルシステムの dump or not ( 1だとdump )
6列目は fsck のチェック or not
0 はチェックしない。ルートファイルシステムでチェック 1 。ルートファイルシステム以外でチェックは 2

[root@hat2-vm ~]# cat /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-vda2         swap                    swap    defaults        0 0
/dev/sda1 /root/tmp ext3 defaults 0 0


試しに initiator をリブート.

リブート後の状態。
ちゃんとマウントされた。

[root@hat2-vm ~]# uptime
23:06:08 up 1 min,  2 users,  load average: 1.18, 0.37, 0.13

[root@hat2-vm ~]# mount
/dev/vda1 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sda1 on /root/tmp type ext3 (rw)

[root@hat2-vm ~]# cd tmp/
[root@hat2-vm tmp]# cat hello.txt
hello


Get things done. It works well :)

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.