CentOS5 iSCSI部署

作业环境
在VirtualBox4.0 虚拟机下操作
服务器端sqinga:CentOS 5.5-i386
客户端sqingb:CentOS 5.5-i386

一、关于iSCSI(资料)

iSCSI是internet Small Computer System Interface的缩写,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,其目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,iSCSI推动了数据在网络之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,iSCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因为IP网络的广泛应用, iSCSI能够在LAN、WAN甚至Internet上进行数据传送,使得数据的存储不再受地域的限制。

iSCSI技术的核心是在TCP/IP网络上传输SCSI协议,即使用TCP/IP报文和iSCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输,如下图所示。


 
iSCSI的工作过程:当iSCSI主机应用程序发出数据读写请求后,操作系统会生成一个相应的SCSI命令,该SCSI命令在iSCSI initiator层被封装成ISCSI消息包并通过TCP/IP传送到设备侧,设备侧的iSCSI target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行;设备执行SCSI命令后的响应,在经过设备侧iSCSI target层时被封装成ISCSI响应PDU,通过TCP/IP网络传送给主机的ISCSI initiator层,iSCSI initiator会从ISCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序。

二、服务器端SCSI target的配置及使用

Linux target framework(tgt)是为创建、维护SCSI target 驱动(包括iSCSI、FC、SRP等)提供支持。它的关键目标是简洁地集成到scsi-mid层,并且实现大部分应用层空间。

安装scsi-target-utils 
[root@sqinga ~]# yum install scsi-target-utils

启动tgtd服务
[root@sqinga ~]# /etc/init.d/tgtd start
[root@sqinga ~]# /etc/init.d/tgtd status
tgtd (pid 1996 1995) is running...

将tgtd设为开机启动
[root@sqinga ~]# chkconfig tgtd on

创建一个id为1的target,其名为:iqn.2010-05.sqing:shuqing
(iSCSI节点名称有两种格式,即 iqn-type 格式和 eui-type 格式,Linux常用的是iqn-type的格式。一般iSCSI Target命名采用“iqn.yyyy-mm.<reversed domain name>: identifier 识别代号”的格式。iqn号是局域网内iSCSI target的唯一标识,用来区分不同的target,所以在一个网络内,iqn号一定不能相同)
[root@sqinga ~]# tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2010-05.sqing:shuqing

为上一步创建的目标增加逻辑分卷,添加一个lun( logical unit)号为1的逻辑单元,该逻辑单元使用逻辑分区LogVol2
[root@sqinga ~]# tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/VolGroup00/LogVol02

使target接受initiator的访问(这里设为允许所有的initiator访问)
[root@sqinga ~]# tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

查看端口3260使用情况
[root@sqinga ~]# netstat -tulpn | grep 3260
tcp   0   0 0.0.0.0:3260      0.0.0.0:*         LISTEN      2980/tgtd
tcp   0    0 :::3260           :::*            LISTEN      2980/tgtd

查看lun信息
[root@sqinga ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2010-05.sqing:shuqing
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
        I_T nexus: 2
            Initiator: iqn.1994-05.com.redhat:d2c9f41e816a
            Connection: 0
                IP Address: 10.8.0.116
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 6442 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/VolGroup00/LogVol02
            Backing store flags: 
    Account information:
    ACL information:
        ALL

至此,系统的逻辑分区/dev/VolGroup00/LogVol02已被设置成一个iSCSI Target,远程的客户端计算机可以通过网络访问对此进行访问了。

要使以上设置,在系统重启时生效,需写进rc.local文件
[root@sqinga ~]# cat /etc/rc.local
touch /var/lock/subsys/local
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2010-05.sqing:shuqing
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/VolGroup00/LogVol02
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

三、客户端iSCSI-initiator的配置及使用

安装iscsi-initiator-utils 
[root@sqingb ~]# yum install iscsi-initiator-utils

用chkconfig检查iscsi和iscsid服务在运行级别3和5中随系统的启动而自动启动
[root@sqingb ~]# chkconfig --list |grep iscsi
iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off
iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
如果iscsid和iscsi没有随系统的启动而启动,则用chkconfig设置这两个服务在系统运行级别为3和5时随系统启动而启动
[root@sqingb ~]# chkconfig iscsi --level 35 on
[root@sqingb ~]# chkconfig iscsid --level 35 on

启动iscsi服务
[root@sqingb ~]# /etc/init.d/iscsi start
[root@sqingb ~]# /etc/init.d/iscsi status
iscsid (pid 1508) is running...
[root@sqingb ~]# /etc/init.d/iscsid status
iscsid (pid 1508) is running...

查看target上的逻辑卷(RHEL 5上当前的iSCSI Initiator版本只支持sendtargets 的发现方式,不支持SLP和iSNS)
[root@sqingb ~]# iscsiadm -m discovery -t sendtargets -p 10.8.110.29
10.8.110.1:3260, 1 iqn.2010-05.sqing:shuqing

使用iscsiadmin登陆target:
[root@sqingb ~]# iscsiadm -m node -T iqn.2010-05.sqing:shuqing -p 10.8.110.1 --login
Logging in to [iface: default, target: iqn.2010-05.sqing:shuqing, portal: 10.8.110.1,3260]
  Vendor:IET          Model:Controller    Rev:0001
  Type:  Direct-Access                    ANSI SCSI revision:05
scsi 2:0:0:0: Attached scsi generic sg1 type 12
  Vendor:IET          Model:Controller    Rev:0001
  Type:  Direct-Access                    ANSI SCSI revision:05
……
Login to [iface: default, target: iqn.2010-05.sqing:shuqing, portal: 10.8.110.1,3260] successful

注销target和删除target的命令分别为:
[root@sqingb ~]# iscsiadm -m node --T iqn.2010-05.sqing:shuqing -p 10.8.110.1 --logout
[root@sqingb ~]# iscsiadm -m node –o delete --T iqn.2010-05.sqing:shuqing


使用fdisk检验被识别的设备名:
[root@sqingb ~]# fdisk -l
Disk /dev/sda: 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/sda1   *           1         13     104391   83  Linux
/dev/sda2             14        1044   8281507+   8e  Linux LVM
Disk /dev/sdb: 2013MB, 2013265920 bytes
62 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Disk /dev/sdb doesn't contain a valid partition table

使用fdisk /dev/sdb命令为sdb建立一个分区sdb1,结果如下:
[root@sqingb ~]# fdisk -l
Disk /dev/sda: 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/sda1   *           1         13     104391   83  Linux
/dev/sda2             14        1044   8281507+   8e  Linux LVM

Disk /dev/sdb: 2013MB, 2013265920 bytes
62 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1             1        1022      1964253   83  Linux

格式化分区
[root@sqingb ~]# mkfs.ext3 /dev/sdb1
mke2fs 1.39 (29-May-2006))
Filesystem label=
OS type:Linux
Block size=4096(log=2)
Fragment size=4096 blocks
245760 inodes, 491063 blocks
24553 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=503316480
15 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
       32768, 98304, 163840, 22937 294912

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

This filesystem will be automatically checked every 20 mounts or 180 days,whichever comes first. Use tune2fs –c or –I to override.

设定加载点
[root@sqingb ~]# mdir /home/sna
[root@sqingb ~]# mount /dev/sdb1 /home/sna

用df查看文件系统是否已挂载成功
[root@sqingb ~]# df –Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 3.9G 2.4G 1.3G 66% /
/dev/sda1 ext3 99M 12M 82M 13% /boot
tmpfs tmpfs 506M 0 506M 0% /dev/shm
/dev/sdb1 ext3 1.9G 35M 1.8G 2% /home/sna

至此,sqingnb已经连接到 sqinga的虚拟iSCSI 储存设备, 并且如同本机上面的一个 SCSI 硬盘一样。 使用的方式也几乎一样。

用tune2fs查看文件系统的UUID
[root@sqingb ~]# tune2fs –l /dev/sdb1
tune2fs 1.39 (29-May-2006) 
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: b469ef1e-2f2f-450e-82af-0634d0021735
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file
……

如果要将其设置为自动挂载,需将其UUID加入到fstab文件中(据资料分析,Linux系统重启后,磁盘设备的名称可能会发生变化,从而引起文件系统不能挂载上来或者不能正确挂载,使用UUID的方式进行挂载可以解决这个问题)。实际操作中,手动重启后,系统要十多分钟才能成功登录,需要耐心等待(一些画面会停很久,开始时以为是重启死机了呢),并且在登录的过程中,系统会自动再启动一次。另一种说法,挂载选项类型为“_netdev”,尝试了下,也是一样的重启过程。
[root@sqingb ~]# cat /etc/fstab
/dev/VolGroup00/LogVol00    /         ext3       defaults     1 1
LABEL=/boot             /boot        ext3      defaults     1 2
tmpfs                    /dev/shm     tmpfs     defaults     0 0
sysfs                    /sys         sysfs      defaults     0 0
proc                    /proc        proc       defaults     0 0
/dev/VolGroup00/LogVol01  swap       swap       defaults     0 0
UUID= b469ef1e-2f2f-450e-82af-0634d0021735 /home/sna ext3 defaults 0 0

四、相关目录、文件资料介绍

Discovery (/var/lib/iscsi/send_targets):在/var/lib/iscsi/send_targets目录下包含iSCSI portals的配置信息,每个portal对应一个文件,文件名为“iSCSI portal IP,端口号”(例如“10.8.110.1,3260”)。

Node (/var/lib/iscsi/nodes):在/var/lib/iscsi/nodes目录下,生成一个或多个以iSCSI存储服务器上的Target名命名的文件夹(例如:iqn.2010-05.sqing:shuqing),在该文件夹下有一个文件名为“iSCSI portal IP,端口号” (例如“10.8.110.1,3260”)的配置参数文件,该文件中是initiator登录target时要使用的参数,这些参数的设置是从/etc/iscsi/iscsi.conf中的参数设置继承而来的,可以通过iscsiadm对某一个参数文件进行更改(需要先注销到target的登录)。

tgtadm是用来监控、修改Linux SCSI target 的工具,包括target设置、卷设置,等等。这个工具允许提供为装有SCSI initiator的其它操作系统提供块级(block-level)的SCSI存储。这个功能最初被部署为Linux iSCSI target,通过网络向装有iSCSI initiator的系统提供存储服务。

iscsiadm是用来管理(更新、删除、插入、查询)iSCSI配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。

iscsi-initiator-utils 将iscsid、iscsiadm安装到/sbin目录下,还将把默认的配置文件安装到/etc/iscsi目录下:
/etc/iscsi/iscsid.conf 所有刚发起的iSCSI session默认都将使用这个文件中的参数设定。
/etc/iscsi/initiatorname.iscsi 软件iSCSI initiator的intiator名称配置文件。


本文转自Sunshyfangtian 51CTO博客,原文链接:http://blog.51cto.com/sunshyfangtian/560162,如需转载请自行联系原作者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值