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 :)