创建 iSCSI 目标

要从 targetcli shell 创建 iSCSI 目标,请使用 cd 命令切换到 /iscsi 目录。

/> cd /iscsi
/iscsi>

使用不带任何参数的 create 命令通过使用默认目标名称创建 iSCSI 目标。
默认情况下,目标由“iqn”标识符标识。
这是一个 iSCSI 限定名称 (IQN),它唯一标识一个目标。
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

要允许远程系统访问端口 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 启动器

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

# yum install iscsi-initiator-utils

该软件包安装了几个文件,包括以下内容:

  • /etc/iscsi/iscsid.conf:iscsid和iscsiadm读取的配置文件。该文件对每个配置指令进行了大量注释。
  • /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 Initiator会话

会话是发起方节点端口和目标节点端口之间的 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]]

打印级别printlevel 为 1. 2 和 3.
每个级别都显示更多细节。

欢迎来到之路教程(on itroad-com)

创建 iSCSI LUN

内核目标将 SCSI 逻辑单元导出到远程系统。
使用 targetcli shell 将先前定义的存储对象与目标链接,并指定设备使用的逻辑单元号 (LUN)。
以下示例使用 create 命令为目标创建两个新 LUN。
在 targetcli shell 中,首先使用 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.

iSCSI 发现

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

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

发现后,更新数据库中的nodes表和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

Backstores

Backstores 是内核目标用来“备份”它导出到客户端系统的 SCSI 设备的不同类型的本地存储资源。
每个 backstore 创建的本地存储资源的映射称为存储对象。
使用 targetcli ls 命令列出不同类型的回溯存储。

# targetcli ls /backstores

backstores的类型描述如下:

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

要从 targetcli shell 创建块backstore:

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

要从 targetcli shell 创建 fileio 的后备存储:

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

配置 iSCSI 服务器

RHEL/CentOS 7 为 iSCSI 使用 Linux-IO (LIO) 内核目标子系统。
除了 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
在 CentOS/RHEL 7 中配置 iSCSI

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

targetcli 实用程序

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

# 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

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

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

也可以输入“targetcli [command]”,无需进入shell就可以运行命令。

创建 ACL

访问控制列表 (ACL) 限制从远程系统访问 LUN。
我们可以为每个启动器创建一个 ACL,以在启动器连接到目标时强制进行身份验证。
这允许我们授予特定发起方对特定目标的独占访问权限。
以下示例使用 create 命令为发起方创建 ACL。
在 targetcli shell 中,首先使用 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.
日期:2020-09-17 00:14:21 来源:oir作者:oir