== iSCSI Storage on CentOS 5.5 ==
There are two virtual machines running the CentOS 5.5 operating system:
ip=192.168.228.152 hostname=el5-32 -- iSCSI server (target)
ip=192.168.228.153 hostname=el5-32-2 -- iSCSI client (initiator)
=== Configure iSCSI server (target) ===
{{{
# uname -nr
el5-32 2.6.18-194.32.1.el5
# ifconfig eth0 | grep 'inet addr'
inet addr:192.168.228.152 Bcast:192.168.228.255 Mask:255.255.255.0
#
# rpm -q scsi-target-utils
scsi-target-utils-0.0-6.20091205snap.el5_5.3
#
}}}
* Start the SCSI target daemon.
{{{
# service tgtd start
Starting SCSI target daemon: Starting target framework daemon
# service tgtd status
tgtd (pid 2697 2696) is running...
# chkconfig tgtd on
# chkconfig --list tgtd
tgtd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#
}}}
* Create target device, then check current configuration.
In the following example {{{02130152}}} is a substitute for a random hexadecimal number, where {{{0213}}} represents current date (MMDD), {{{0}}} - just a zero, and {{{152}}} is the fourth octet in server's IP address.
{{{
# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2001-04.com.stgt:`uname -n`-02130152
#
# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.stgt:el5-32-02130152
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
Account information:
ACL information:
#
}}}
* Add logical unit to the target, enable it to accept initiators from the local network.
{{{
# fdisk -l /dev/sdb
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 83 Linux
#
# mount |grep sdb
#
#
# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/sdb1
#
# tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.228.0/24
#
# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.stgt:el5-32-02130152
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: 8587 MB
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /dev/sdb1
Account information:
ACL information:
192.168.228.0/24
#
}}}
* Save current configuration.
{{{
# tgt-admin --dump >/etc/tgt/targets.conf
#
# cat /etc/tgt/targets.conf
default-driver iscsi
backing-store /dev/sdb1
initiator-address 192.168.228.0/24
#
}}}
=== Configure iSCSI client (initiator) ===
{{{
# uname -nr
el5-32-2 2.6.18-194.32.1.el5
# ifconfig eth0 | grep 'inet addr'
inet addr:192.168.228.153 Bcast:192.168.228.255 Mask:255.255.255.0
#
# rpm -q iscsi-initiator-utils
iscsi-initiator-utils-6.2.0.871-0.20.el5_5
#
# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:d91b4739849
#
# service iscsi status
iscsid (pid 1391) is running...
# chkconfig --list iscsi
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
#
}}}
* Query the storage server for available targets.
{{{
# iscsiadm --mode discovery --type sendtargets --portal 192.168.228.152
192.168.228.152:3260,1 iqn.2001-04.com.stgt:el5-32-02130152
#
}}}
* Acquire the target.
{{{
# iscsiadm --mode node --targetname iqn.2001-04.com.stgt:el5-32-02130152 --portal 192.168.228.152:3260 --login
Logging in to [iface: default, target: iqn.2001-04.com.stgt:el5-32-02130152, portal: 192.168.228.152,3260]
Login to [iface: default, target: iqn.2001-04.com.stgt:el5-32-02130152, portal: 192.168.228.152,3260]: successful
#
# grep "`date '+%b %e %H'`" /var/log/messages
Feb 13 22:24:06 el5-32-2 kernel: scsi1 : iSCSI Initiator over TCP/IP
Feb 13 22:24:07 el5-32-2 kernel: Vendor: IET Model: Controller Rev: 0001
Feb 13 22:24:07 el5-32-2 kernel: Type: RAID ANSI SCSI revision: 05
Feb 13 22:24:07 el5-32-2 kernel: scsi 1:0:0:0: Attached scsi generic sg1 type 12
Feb 13 22:24:07 el5-32-2 kernel: Vendor: IET Model: VIRTUAL-DISK Rev: 0001
Feb 13 22:24:07 el5-32-2 kernel: Type: Direct-Access ANSI SCSI revision: 05
Feb 13 22:24:07 el5-32-2 kernel: SCSI device sdb: 16771797 512-byte hdwr sectors (8587 MB)
Feb 13 22:24:07 el5-32-2 kernel: sdb: Write Protect is off
Feb 13 22:24:07 el5-32-2 kernel: SCSI device sdb: drive cache: write back
Feb 13 22:24:07 el5-32-2 kernel: SCSI device sdb: 16771797 512-byte hdwr sectors (8587 MB)
Feb 13 22:24:07 el5-32-2 kernel: sdb: Write Protect is off
Feb 13 22:24:07 el5-32-2 kernel: SCSI device sdb: drive cache: write back
Feb 13 22:24:07 el5-32-2 kernel: sdb: unknown partition table
Feb 13 22:24:07 el5-32-2 kernel: sd 1:0:0:1: Attached scsi disk sdb
Feb 13 22:24:07 el5-32-2 kernel: sd 1:0:0:1: Attached scsi generic sg2 type 0
Feb 13 22:24:07 el5-32-2 iscsid: connection1:0 is operational now
#
# iscsiadm --mode node --targetname iqn.2001-04.com.stgt:el5-32-02130152 --portal 192.168.228.152:3260 --op update -n node.startup -v automatic
#
}}}
* Check client status.
{{{
# iscsiadm -m session
tcp: [1] 192.168.228.152:3260,1 iqn.2001-04.com.stgt:el5-32-02130152
#
# iscsiadm -m session -P 1
Target: iqn.2001-04.com.stgt:el5-32-02130152
Current Portal: 192.168.228.152:3260,1
Persistent Portal: 192.168.228.152:3260,1
**********
Interface:
**********
Iface Name: default
Iface Transport: tcp
Iface Initiatorname: iqn.1994-05.com.redhat:d91b4739849
Iface IPaddress: 192.168.228.153
Iface HWaddress:
Iface Netdev:
SID: 1
iSCSI Connection State: LOGGED IN
iSCSI Session State: LOGGED_IN
Internal iscsid Session State: NO CHANGE
#
}}}
* Create new storage partition. Notice that disk geometry is different from that reported on the server (above).
{{{
# fdisk /dev/sdb
[...]
# fdisk -l /dev/sdb
Disk /dev/sdb: 8587 MB, 8587160064 bytes
64 heads, 32 sectors/track, 8189 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 8189 8385520 83 Linux
#
}}}
* Create new file system.
{{{
# mkfs -t ext3 /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2096380 blocks
104819 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#
}}}
* Configure new mount point, mount the file system.
{{{
# vi /etc/fstab
# tail -1 /etc/fstab
/dev/sdb1 /mnt ext3 _netdev,defaults 1 2
#
# chkconfig netfs on
# chkconfig --list netfs
netfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#
# service netfs start
No devices found
Setting up Logical Volume Management: [ OK ]
Checking network-attached filesystems
/dev/sdb1: clean, 12/1048576 files, 70322/2096380 blocks
[ OK ]
Mounting other filesystems: [ OK ]
#
#
# mount |grep sdb
/dev/sdb1 on /mnt type ext3 (rw,_netdev)
#
# df -h /dev/sdb1
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 7.9G 147M 7.4G 2% /mnt
#
}}}
=== iSCSI server status ===
{{{
# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2001-04.com.stgt:el5-32-02130152
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 1
Initiator: iqn.1994-05.com.redhat:d91b4739849
Connection: 0
IP Address: 192.168.228.153
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: 8587 MB
Online: Yes
Removable media: No
Backing store type: rdwr
Backing store path: /dev/sdb1
Account information:
ACL information:
192.168.228.0/24
#
#
}}}
=== See Also ===
file:///usr/share/doc/scsi-target-utils-0.0/README.iscsi
file:///usr/share/doc/scsi-target-utils-0.0/README.lu_configuration