iscsi服务端(target)与客户端(initiator)

 iSCSI 是一种 SAN的设备而 SAN的设备主要是提供 Server 存储体的空间.相较于传统的 SAN 是以光纤为传输媒体而 iSCSI(Internet SCSI)他是 IP-based 的数据存储的设备.使得他能更容易应用在企业中. 1.一般的网卡就能当作 iSCSI Target 但是缺点就是会消耗太多的 CPU 资源,针对这样的问题所以发展出另外两种的 iSCSI Target 网卡.2.一种是软件的 iscsi + TOE (TOE:TCP/IP offload engine),它可以针对 TCP/IP 的封包直接在网络卡 上运算所以不会因此占用系统上的 CPU 的使用率,  3.另外一种就是硬件式的 iSCSI + TOE. 它除了具有 TOE 还可以直接针对 iSCSI 的数据做运算.基本上它的使用上就像是一般存储设备 HBA.你可以直接在 BIOS 选项作 iSCSI 硬件开机的动作.


当前 RHEL5 和 SLES10 都已经将 iSCSI Target 当作缺省的组件,所以之前的版本如 RHEL4 需要使用 iSCSI Target 这边介绍另外一套 IET (iSCSI Enterprise Target) 首先要先下载iSCSI Target 我们可以在  http://iscsitarget.sourceforge.net/ 中可以看到.直接使用最新一版即可.下载下来是 Source code 所以基本的 Linux(RedHat, Fedora...)都可以直接编辑使用.

1.Target端的配置

  target端即磁盘阵列或其他装有磁盘的主机。通过iscsitarget工具将磁盘空间映射到网络上,initiator端就可以寻找发现并使用该磁盘。

  注意,一个target主机上可以映射多个target到网络上,即可以映射多个块设备到网络上。

  1)软件包

  iscsitarget

  可以从http://sourceforge.net/projects/iscsitarget/files/下载最新版本。

  2)编译安装

  很简单,解包,编译,安装就可以。

  tar zxvf iscsitarget-1.4.19.tar.gz

  cd iscsitarget-1.4.19/

  make

  make install

  该包会将iscsitarget需要的内核模块,用户层工具,服务启动脚本,配置文件,man手册等安装到系统中

  包括:

  iscsi_trgt.ko 内核模块

  ietd iscsitarget的守护进程

  ietadm iscsitarget的用户层管理工具

  /etc/init.d/iscsi-target iscsitarget的启动脚本

  /etc/ietd.conf iscsitarget的配置文件

  /etc/initiators.allow 控制initiator对target的访问权限。

  /etc/initiators.deny 控制initiator对target的访问权限。

  /etc/iet/targets.allow 控制不同target的被访问权限。

  3)配置/etc/ietd.conf

  Target iqn.2001-04.com.example:storage.disk2.sys1.xyz

  Lun 0 Path=/dev/sda1,Type=fileio

  Alias lun0

  大致说明:

  Target iqn.2001-04.com.example:storage.disk2.sys1.xyz 表示该ISCSI Target 的命名,命名在同一子网内应该是唯一的,标准命名方式为:

  "Target "+ target名字 (格式如下: iqn.yyyy-mm.<reversed domain name>[:identifier] )

  “Lun 0 Path=/dev/sda1”表示块设备号为0,映射的磁盘为/dev/sda1。

  本次配置中 Type 的设定为"fileio",我主要用来对一个磁盘进行存储共享。

  当然也可以针对需要设置为: "file" or "LVM"。

  除此之外还有很多其他参数可以设置,具体参考:

  http://manpages.ubuntu.com/manpages/hardy/man5/ietd.conf.5.html

  4)启动iscsitarget

  /etc/init.d/iscsi-target start

  2.inititor端配置

  1)软件包

  源码包是open-iscsi,经过rpm包封装后,名字是iscsi-initiator-utils。

  2)主要安装了下面一些文件

  /etc/iscsi/iscsid.conf

  /etc/rc.d/init.d/iscsi

  /etc/rc.d/init.d/iscsid

  /sbin/iscsi-iname

  /sbin/iscsiadm

  /sbin/iscsid

  /sbin/iscsistart

  /var/lib/iscsi

  /var/lib/iscsi/ifaces

  /var/lib/iscsi/isns

  /var/lib/iscsi/nodes

  /var/lib/iscsi/send_targets

  /var/lib/iscsi/slp

  /var/lib/iscsi/static

  /var/lock/iscsi

 3)连接target

  首先要保证iscsid守护进程启动,否测iscsiadm的一系列操作都会失败:

  /etc/init.d/iscsid start

  发现target:

  iscsiadm -m discovery -t sendtargets -p <iSCSI target ip>:<port>

  默认情况下<port>是3260,除非你有特殊的设置。

  与target建立连接:

  iscsiadm -m node -T <target-name>  -p <ip-address>:<port> --login

  此处target-name为上一步发现target时的获得的。

  此时通过fdisk -l就可以看到映射过来的磁盘,该磁盘可以像使用本地磁盘一样进行格式化,分区等操作。

  可以通过以下命令实验:

  fdisk /dev/sdc

  mkfs.ext3 /dev/sdc1

  mount /dev/sdc1 /mnt

  dd if=/dev/zero f=100M.img bs=1M count=100

  3.target和initiator间使用CHAP验证。

  CHAP验证有两种,一种是针对discovery的,即如果不符合验证的用户名和密码,则initiator端便无法通过"-m discovery"发现指定主机上的任何一个target。

  命令会返回验证失败,如下:

  $ iscsiadm -m discovery -t sendtargets -p 192.168.29.224

  iscsiadm: Login failed to authenticate with target

  iscsiadm: discovery login to 192.168.29.224 rejected: initiator error (02/01), non-retryable, giving up

  另一种是针对node login的,即果不符合验证的用户名和密码,则initiator端编无法通过--login登录指定主机上的某一个target。

  命令会返回验证失败,如下:

  $ iscsiadm -m discovery -t sendtargets -p 192.168.29.224  #成功discover指定主机上的target

  192.168.29.224:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz

  $ iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.29.224 --login  #无法通过验证,登录失败

  Logging in to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.29.224,3260]

  iscsiadm: Could not login to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.29.224,3260]:

  iscsiadm: initiator reported error (15 - already exists)

  1)在initiator端

  配置/etc/iscsi/iscsid.conf,添加如下选项:

  #以下三个是针对discovery的。

  #discovery时启用CHAP验证

  discovery.sendtargets.auth.authmethod = CHAP

  #initiator的名字,也可以是别的字符串,只要和target端IncomingUse配置的名字一样就行

  discovery.sendtargets.auth.username = iqn.1994-05.com.fedora:ba72af8aaf5

  #验证密码,要和target端相同

  discovery.sendtargets.auth.password = 1234567890ab

  #以下三个是针对login的。

  #login时启用CHAP验证

  node.session.auth.authmethod = CHAP

  #initiator的名字,也可以是别的字符串,只要和target端IncomingUse配置的名字一样就行

  node.session.auth.username = iqn.1994-05.com.fedora:ba72af8aaf5

  #验证密码,要和target端相同

  node.session.auth.password = 1234567890

  然后重启initiator。

  /etc/init.d/iscsid stop

  /etc/init.d/iscsid start

  2)在target端

  针对discovery配置/etc/ietd.conf,在全局参数处(定义第一个target之前),添加如下一行:

  IncomingUser iqn.1994-05.com.fedora:ba72af8aaf5 1234567890ab

  IncomingUser 和 OutgoingUser 表示ISCSI 客户端的用户名和密码,用户名和密码都可以为空,默认为allow权限,密码最长可为12个字符。

  此处iqn.1994-05.com.fedora:ba72af8aaf5是initiator的名字(也可以是别的字符串),1234567890ab是initiator的密码,名字和密码必须和initiator上/etc/iscsi/iscsid.conf

  中的用户名密码一致。如果不一致,则initiator执行"-m discovery" 是就会失败。

  针对login配置/etc/ietd.conf,既然是针对login的,那么添加IncomingUser是就应该添加的指定的target上。如下:

  Target iqn.2001-04.com.example:storage.disk2.sys1.xyz

  Lun 0 Path=/dev/sda1,Type=fileio

  IncomingUser iqn.1994-05.com.fedora:ba72af8aaf5 1234567890

  然后重启iscsitarget

  /etc/init.d/iscsi-target stop

  /etc/init.d/iscsi-target start

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值