当前位置:   article > 正文

linux添加iscsi协议,利用iSCSI协议搭建IP-SAN

linux平台通过iscsi实现ip-san

实验目的

本次实验是利用iSCSI协议来搭建一个IP-SAN系统

实验前提:

准备一个共享的设备。在实验中,可以使用分区代替一个硬盘,如果使用分区代替硬盘设备,首先需要创建分区。创建过程不在给出,在这里我使用的共享设备为/dev/sdb

实验平台为RHEL 5.8

iSCSI target所在的主机地址为:192.168.108.150

iSCSI initiator所在的主机地址有三个,分别为:192.168.108.199、192.168.108.201、192.168.108.202

IP-SAN的实现步骤

一、服务器端的配置

1、安装iSCSI服务器端

# yum -y install scsi-target-utils

在安装完成后,会生成几个文件,比较重要的文件有:

/etc/rc.d/init.d/tgtd     这个是target的守护进程

/etc/tgt/targets.conf  这个是target的配置文件,如果要想让一些配置永久生生效,需要修改其配置文件。

/usr/sbin/tgt-admin   这个是服务器端的管理工具,服务器启动后,这个程序会读取/etc/tgt/targets.conf中的信息

/usr/sbin/tgtadm   这也是一个服务器端的管理工具,不过使用这个程序来管理操作,不会让其配置永久生效,如果想让其配置永久生效,需要写到配置文件/etc/tgt/targets.conf中。

2、启动服务器端的程序

iSCSI的服务器端程序为/etc/init.d/tgtd,且该程序监听在tcp的3260端口

# service tgtd start

# chkconfig tgtd on

# netstat -tnlp | grep 3260

3、创建一个target

#tgtadm --lld iscsi --mode target --op new --tid 1  --targetname iqn.2015-03.com.xsl.www:xsl.disk1

查看所有的target的信息

# tgtadm --lld iscsi --mode target --op show

查看某个特定的target的信息,这里我创建的target的id为1,如果要查看tid为1的设备的信息,需要执行如下命令:

tgtadm --lld iscsi --mode target --op show --tid 1

4、在已有的target上创建一个LUN,LUN id为1,并指定后端存储设备的路径为/dev/sdb

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

显示target上的LUN信息

#tgtadm --lld iscsi --mode target --op show

Target 1: iqn.2015-03.com.xsl.www:xsl.disk1

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, Block size: 1

Online: Yes

Removable media: No

Readonly: No

Backing store type: null

Backing store path: None

Backing store flags:

LUN: 1

Type: disk

SCSI ID: IET     00010001

SCSI SN: beaf11

Size: 53687 MB, Block size: 512

Online: Yes

Removable media: No

Readonly: No

Backing store type: rdwr

Backing store path: /dev/sdb            Backing store flags:

Account information:

ACL information:

5、设定授权,只允许192.168.108.0/24这个网络中的initiator访问target

# tgtadm --lld iscsi --mode target --op bind  --tid 1 -I 192.168.108.0/24

其中的-I相当于--initiator-address

这里设置就是基于ip的认证。

如果需要设置基于用户的认证,还需要添加如下内容创建一个新的账号和密码。这个账号是target端用来验证initiator端的

# tgtadm --lld iscsi --mode account --op new --user iscsiuser --password iscsiuser

查看以创建好的账号

# tgtadm --lld iscsi --mode account --op show

Account list:

iscsiuser

在特定的target上添加账号

#tgtadm --lld iscsi --mode account --op bind --tid 1  --user iscsiuser

#查看target上的相关信息,是否授权以被设置

# tgtadm --lld iscsi --mode target --op show

Target 1: iqn.2015-03.com.xsl.www:xsl.disk1

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, Block size: 1

Online: Yes

Removable media: No

Readonly: No

Backing store type: null

Backing store path: None

Backing store flags:

LUN: 1

Type: disk

SCSI ID: IET     00010001

SCSI SN: beaf11

Size: 53687 MB, Block size: 512

Online: Yes

Removable media: No

Readonly: No

Backing store type: rdwr

Backing store path: /dev/sdb

Backing store flags:

Account information:

iscsiuser

ACL information:

192.168.108.0/24

由于CHAP协议是双向认证的,因此,还需要配置一个外出账号

创建一个外出账号,这个是initiator端用来验证target端的。

# tgtadm --lld iscsi --mode account --op new --user outuser --password 123456

将这个账号添加到tid为1的target上。既然作为外出账号,需要在添加的时候,加上--outgoing选项#tgtadm --lld iscsi --mode account --op bind --tid 1 --user outuser --outgoing

查看外出账号是否创建

# tgtadm --lld iscsi --mode target --op show

Target 1: iqn.2015-03.com.xsl.www:xsl.disk1

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, Block size: 1

Online: Yes

Removable media: No

Readonly: No

Backing store type: null

Backing store path: None

Backing store flags:

LUN: 1

Type: disk

SCSI ID: IET     00010001

SCSI SN: beaf11

Size: 53687 MB, Block size: 512

Online: Yes

Removable media: No

Readonly: No

Backing store type: rdwr

Backing store path: /dev/sdb

Backing store flags:

Account information:

iscsiuser

outuser (outgoing)

ACL information:

192.168.108.0/24

说明:在命令行中定义的一些参数,一旦服务器重启这些参数将会丢失。因此,为了让定义的数据永久生效,需要修改配置文件/etc/tgt/targets.conf中的一些参数。关于如何修改,这里不在给出。

二、客户端的配置

1、initiator的安装

在所有的具有initiator功能的主机上安装iscsi-initiator-utils这个软件包

在这里我有三个initiator主机,因此,需要在这三台主机上安装。在这里我讲服务器端target所在的主机作为跳板机,因此,只需要执行如下命令即可:

# for I in {1..3};do  ssh ha$I\.xsl\.com  'yum -y install iscsi-initiator-utils';done

如果没有跳板机,需要在所有的主机上执行yum -y install iscsi-initiator-utils命令。

该软件包安装成功后,会生成一些文件、其中比较重要的文件有:

/etc/iscsi/iscsid.conf     这个文件将在iscsid守护进程启动和iscsiadm程序运行的时候被读取,主要是提供认证和目标指向的信息。

/etc/rc.d/init.d/iscsi   自动挂载目标设备的脚本

/etc/rc.d/init.d/iscsid   启动守护设备模块和监听程序的脚本

/sbin/iscsi-iname          这个程序可以用来修改iSCSI target设备名称的前缀,需要加上-p选项

/sbin/iscsiadm    这是一个客户端的管理工具

启动iscsi进程和iscsid进程

#service iscsi start

#service iscsid start

#chkconfig iscsi on

#chkconfig iscsid on

修改initiatorName

# echo "InitiatorName=`iscsi-iname -p iqn.2015-03.com.redhat`" > /etc/iscsi/initiatorname.iscsi

# echo "InitiatorAlias=initiator1" >> /etc/iscsi/initiatorname.iscsi

2、修改客户端的配置文件/etc/iscsi/iscsid.conf

需要在这个文件中添加如下几行:

node.session.auth.authmethod = CHAP

node.session.auth.username = iscsiuser

node.session.auth.password = iscsiuser

3、发现iscsi设备

# iscsiadm -m discovery -t st -p 192.168.108.150:3260

192.168.108.150:3260,1 iqn.2015-03.com.xsl.www:xsl.disk1

4、登录到iSCSI设备上,并将其导入到本地

# iscsiadm -m node -T iqn.2015-03.com.xsl.www:xsl.disk1 -p 192.168.108.150:3260 -l

Logging in to [iface: default, target: iqn.2015-03.com.xsl.www:xsl.disk1, portal: 192.168.108.150,3260] (multiple)

Login to [iface: default, target: iqn.2015-03.com.xsl.www:xsl.disk1, portal: 192.168.108.150,3260] successful.

说明:如果initiator端已经登录过此target,此时还需要先注销登录后重启iscsid服务,并在删除此前生成的database后,重新发现target,并重新登入,过程如下:

# iscsiadm -m session -r sid -u

# iscsiadm -m node -T iqn.2015-03.com.xsl.www:xsl.disk1 -p 192.168.108.150 -u

# iscsiadm -m node -T iqn.2015-03.com.xsl.www:xsl.disk1 -p 192.168.108.150  -o delete

# rm -rf /var/lib/iscsi/nodes/iqn.2015-03.com.xsl.www:xsl.disk1

# rm -rf -rf /var/lib/iscsi/send_targets/192.168.108.150,3260

# service iscsid restart

重新发现iSCSI设备,并登录

# iscsiadm -m discovery -t st -p 192.168.108.150:3260

# iscsiadm -m node -T iqn.2015-03.com.xsl.www:xsl.disk1 -p 192.168.108.150:3260 -l

5、验证iscsi设备是否导入到本地系统上

#fdisk -l

如果本地含有/dev/sdb这个硬盘,表示iscsi设备已经成功导入到本地。

6、在多个设备上进行测试是否iscsi设备都可以导入到本地

在多个initiator端上执行如下命令,查看是否iscsi设备导入到本地,这里我有3个initiator端,因此,需要在这三个initiator端执行如下命令:

# iscsiadm -m discovery -t st -p 192.168.108.150:3260

# iscsiadm -m node -T iqn.2015-03.com.xsl.www:xsl.disk1 -p 192.168.108.150:3260 -l

最后在每一个initiator端上执行fdisk -l命令,看看/dev/sdb是存在。如果存在,则说明iscsi设备都导入到了本地。因此,三个initiator端上的应用程序都可以访问iSCSI设备了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/217360
推荐阅读
相关标签
  

闽ICP备14008679号