在CentOS 7和 RHEL 7中配置iSCSI

Internet小型计算机系统接口(iSCSI)是用于连接存储设备的基于IP的标准。iSCSI使用IP网络封装SCSI命令,从而允许长距离传输数据。iSCSI提供了许多客户端系统之间的共享存储。存储设备已连接到服务器(目标)。客户端系统(启动器)通过IP网络访问远程存储设备。对于客户端系统,存储设备似乎是本地连接的。iSCSI使用现有的IP基础结构,并且不需要任何额外的布线,就像光纤通道(FC)存储区域网络一样。

配置iSCSI服务器

RHEL / CentOS 7Linux-IOLIO)内核目标子系统用于iSCSI。除iSCSI外,LIO还支持多种存储结构,包括以太网光纤通道(FCoE),Mellanox InfiniBand网络(iSER)上的iSCSI访问以及Mellanox InfiniBand网络(SRP)上的SCSI访问。在RHEL 7中,所有存储结构都使用targetcli实用程序进行管理。

要将RHEL系统配置为iSCSI服务器,请先安装targetcli软件包:

# yum install targetcli

安装targetcli软件包还会安装python-rtslib软件包,该软件包提供了/usr/lib/systemd/system/target.service文件。在使用targetcli实用程序创建,删除和查看存储目标之前,请使用systemctl命令在iSCSI服务器上启用和启动目标服务。

# systemctl enable target

Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.

# systemctl start target

targetcli实用程序

targetcli实用程序是用于创建,编辑和查看内核目标子系统配置的管理外壳。运行targetcli进入配置外壳。

# targetcli

Warning: Could not load preferences file /root/.targetcli/prefs.bin.

targetcli shell version 2.1.fb46

Copyright 2011-2013 by Datera, Inc and others.

For help on commands, type 'help'.

 

/> help

在CentOS 7和 RHEL 7中配置iSCSI

targetcli提示符运行help命令以查看可用命令。以下是一些可用的targetcli命令:

  • ls:查看对象层次结构。
  • cd:遍历对象层次结构。
  • create:创建存储对象,目标,LUN,网络门户,访问控制列表。
  • exit:退出targetcli shell并自动保存配置。

您也可以输入“ targetcli [command]”来运行命令,而无需进入外壳。

后台存储

后台存储是内核目标用来支撑其导出到客户端系统的SCSI设备时使用的各种本地存储资源。每个后备存储创建的到本地存储资源的映射称为存储对象。使用targetcli ls命令列出不同类型的Backstore

# targetcli ls /backstores

在CentOS 7和 RHEL 7中配置iSCSI

后台存储的类型描述如下:

  • blockLinux块设备,例如/ dev / sda
  • fileio:已挂载文件系统上的任何文件,例如/tmp/disk1.img
  • pscsi:任何支持传递SCSI命令的存储对象
  • ramdisk:内存复制RAM磁盘

要从targetcli Shell创建块后台存储:

/> cd /backstores/block

/backstores/block> create name=LUN_1 dev=/dev/xvdb

要从targetcli Shell创建Fileio Backstore

/> cd /backstores/fileio

/backstores/fileio> create LUN_3 /root/disk1.img 5G

创建iSCSI目标

要从targetcli Shell创建iSCSI目标,请使用cd命令更改为/ iscsi目录。

/> cd /iscsi

/iscsi>

使用不带任何参数的create命令通过使用默认目标名称创建iSCSI目标。默认情况下,目标由“ iqn ”标识符标识。这是iSCSI合格名称(IQN,用于唯一标识目标。IQN格式地址最常用于标识目标。该地址包含以下字段:

  • 文字智商
  • 命名机构获得域所有权的日期(以yyyy-mm格式)
  • 机构的反向域名
  • 可选前缀由命名机构指定的存储目标名称

/> cd /iscsi

/iscsi> create

Created target iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb.

Created TPG 1.

Global pref auto_add_default_portal=true

Created default portal listening on all IPs (0.0.0.0), port 3260.

/iscsi>

 

要列出创建的目标,请使用以下命令。

# targetcli ls /iscsi

在CentOS 7和 RHEL 7中配置iSCSI

要允许远程系统访问端口3260上的iSCSI目标,请禁用iSCSI服务器上的firewalld服务或将firewalld配置为信任3260 / tcp端口。以下示例使用firewall-cmd打开firewalld服务的3260 / tcp端口。

# firewall-cmd --permanent --add-port=3260/tcp

如果在添加端口时包括–permanent选项,请使用firewall-cmd命令重新加载配置。

# firewall-cmd –reload

创建iSCSI LUN

内核目标将SCSI逻辑单元导出到远程系统。使用targetcli Shell将先前定义的存储对象与目标链接,并指定设备使用的逻辑单元号(LUN)。以下示例使用create命令为目标创建两个新的LUN。在targetcli外壳程序中,首先使用cd命令更改为[target / TGP]层次结构中的luns目录。

/iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/

/iscsi/iqn.20....b0df6e328beb> cd tpg1/luns

以下命令从先前定义的块存储对象创建LUN

/iscsi/iqn.20...beb/tpg1/luns> create /backstores/block/LUN_1 lun1

Created LUN 1.

在CentOS 7和 RHEL 7中配置iSCSI

创建ACL

访问控制列表(ACL)限制从远程系统访问LUN。您可以为每个启动器创建一个ACL,以在启动器连接到目标时强制执行身份验证。这使您可以授予特定发起者对特定目标的独占访问权限。以下示例使用create命令为启动器创建ACL。在targetcli外壳程序中,首先使用cd命令更改为[target / TGP]层次结构中的acls目录。

/> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/tpg1/acls

/iscsi/iqn.20...beb/tpg1/acls> create iqn.1994-05.com.redhat:aabb51a64012

Created Node ACL for iqn.1994-05.com.redhat:aabb51a64012

Created mapped LUN 1.

在CentOS 7和 RHEL 7中配置iSCSI

配置iSCSI启动器

要将Linux系统配置为iSCSI启动器,请安装iscsi-initiator-utils软件包。该软件包是Linux Open-iSCSI Initiator

# yum install iscsi-initiator-utils

该软件包将安装几个文件,包括以下文件:

  • /etc/iscsi/iscsid.confiscsidiscsiadm读取的配置文件。该文件带有大量注释,其中包含每个配置指令的描述。
  • / sbin / iscsid:实现控制路径和管理功能的Open-iSCSI守护程序
  • / sbin / iscsiadm:用于发现和登录iSCSI目标的Open-iSCSI管理实用程序

编辑/etc/iscsi/initiatorname.iscsi文件,并将InitiatorName参数替换为您先前在目标上配置为ACL的启动器名称。在此文件中定义了一个默认的iscsi启动器名称。如果在配置ACL时使用了相同的名称,则无需在此处进行任何更改。

# cat /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.1994-05.com.redhat:aabb51a64012

使用systemctl命令启用和启动iscsid服务。

# systemctl enable iscsid

# systemctl start iscsid

了解CentOS / RHEL中的iscsiadm实用程序

iSCSI发现

发现是使启动程序知道目标的过程。以下示例使用SendTargets发现方法来发现IP地址192.168.12.13上的目标。如果需要,此命令还会启动iscsid守护程序。

# iscsiadm -m discovery --type sendtargets –p 192.168.12.13

发现之后,将更新数据库中的节点表和send_targets表:

# ls /var/lib/iscsi/nodes

iqn.2011-12.com.example.mypc:tgt1

iqn.2011-12.com.example.mypc:tgt2

iqn.2012-11.com.example.mypc:tgt3

# ls /var/lib/iscsi/send_targets

192.168.12.13,3260

iSCSI启动器会话

会话是发起方节点端口和目标节点端口之间的TCP连接。在建立会话之前,无法访问LUN。使用-l(或–login)选项建立会话:

# iscsiadm -m node -l

要登录到特定目标:

# iscsiadm -m node --targetname iqn.2011-12.com.example.mypc:tgt1 –p 192.0.2.102:3260 –l

使用-u(或–logout)选项关闭会话。要查看会话信息:

# iscsiadm -m session [-P [printlevel]]

打印级别为123。每个级别都显示更多详细信息。