配置 iSCSI 发起程序

iSCSI 发起程序也称为客户程序,可用来连接到任意 iSCSI 目标。连接不限于以上说明的 iSCSI 目标解决方案。iSCSI 发起程序配置包括两个主要步骤 - 发现可用 iSCSI 目标和设置 iSCSI 会话。这两个步骤都可通过 YaST 完成。

使用 YaST 配置 iSCSI 发起程序

将在三个选项卡中完成配置。可使用服务选项卡来在引导时启用 iSCSI 启用器。它还允许设置唯一的启动程序名称iSNS 服务器以用于发现。iSNS 的默认端口为 3205已连接目标选项卡概述了当前已连接的 iSCSI 目标。与已发现目标选项卡相似,它提供用于向系统添加新目标的选项。已发现目标是首先要使用的选项卡。它使您能够发现网络中的 iSCSI 目标。

  1. 使用发现来打开发现对话框。

  2. 输入 IP 地址并根据需要更改端口。

  3. 如果需要,可添加身份验证。

  4. 单击下一步来启动发现。

发现成功后,可使用登录激活目标。将会询问身份验证信息以使用选定 iSCSI 目标。单击下一步完成配置。如果操作一切顺利,则目标将会显示在已连接目标中。

虚拟 iSCSI 设备现在为可用。可使用 lsscsi 来查找实际设备:

lsscsi
[1:0:0:0]   disk    IET      VIRTUAL-DISK     0     /dev/sda

手动设置 iSCSI 发起程序

发现和配置 iSCSI 连接都要求 iscsid 正在运行。首次运行发现时,将在 /var/lib/open-iscsi 目录中创建 iSCSI 发起程序的内部数据库。

如果发现受密码保护,则向 iscsid 提供身份验证信息。由于首次执行发现时内部数据库并不存在,因而因此将无法使用内部数据库。相反,必须编辑配置文件 /etc/iscsid.conf 以提供信息。要为发现添加密码信息,请在 /etc/iscsid.conf 末尾添加以下行:

discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <username>
discovery.sendtargets.auth.password = <password>

发现会将所有接收到的值储存在一个内部持久数据库中。此外,它会显示所有检测到的目标。使用命令 iscsiadm -m discovery --type=st --portal=<targetip> 来运行此发现。输出应如下所示:

149.44.171.99:3260,1 iqn.2006-02.com.example.iserv:systems

要在 iSNS 服务器上发现可用目标,请使用命令 iscsiadm --mode discovery --type isns --portal <targetip>

对于 iSCSI 目标上定义的每个目标,将显示一行。要了解如何获取有关储存数据的更多信息,请参见第 12.2.4 节 “iSCSI 客户机数据库”

iscsiadm 的特殊 --login 选项会创建所有需要的设备:

iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --login

新生成的设备会显示在 lsscsi 的输出中,并且现在可以通过 mount 访问这些设备。

在 iSCSI 设备上配置 LVM 自动组装

LVM 启动受 udev 支持,所以一旦检测到所有必需的物理卷之后,所有 LVM 卷组将通过 udev 自动激活。

udev 中的 LVM 自动组装利用 udev 帮助程序 collect。此程序取一个要检查的抽象 ID 后跟组件 ID 列表作为第一个自变量。一旦使用每个组件 ID 作为第一个自变量调用该程序时,它将返回 0。

因此,对于自动组装,给定卷组的物理卷 UUID 注册为 collect 的自变量列表。udev(或 vol_id)能够检测到一个设备上的物理卷 UUID,因此可以作为第一个自变量传递给 collect

使用所有物理卷 UUID 调用 collect(即 udev 收到所有组件设备的事件)后,将激活后面只调用 vgchange -a y <vgname> 的规则触发器和该卷组。

如何配置

使用脚本 /usr/share/doc/packages/lvm2/lvm-vg-to-udev-rules.sh。它取您想要自动启动的卷组作为自变量。该脚本将生成所需的 udev 规则。现在,重启动 iSCSI 以激活这些卷组。如果想要在引导时自动启动该阵列,则必须将 iSCSI 组件设备切换为 automatic,以便发起程序在引导时自动登录目标。

iSCSI 客户机数据库

iSCSI 发起程序发现的所有信息都储存在位于 /var/lib/open-iscsi 的两个数据库文件中。一个数据库用于发现的目标,另一个数据库用于发现的节点。访问数据库时,首先必须选择是希望从发现获取数据还是从节点数据库获取数据。可使用 iscsiadm 的参数 -m discovery-m node 来执行此操作。仅将 iscsiadm 与其中一个参数一起使用可提供储存记录概述:

iscsiadm -m discovery
149.44.171.99:3260,1 iqn.2006-02.com.example.iserv:systems

本示例中的目标名称为 iqn.2006-02.com.example.iserv:systems。与此特殊数据集相关的所有操作都需要此名称。要检查 ID 为 iqn.2006-02.com.example.iserv:systems 数据记录的内容,可使用以下命令:

iscsiadm -m node --targetname iqn.2006-02.com.example.iserv:systems
node.name = iqn.2006-02.com.example.iserv:systems
node.transport_name = tcp
node.tpgt = 1
node.active_conn = 1
node.startup = manual
node.session.initial_cmdsn = 0
node.session.reopen_max = 32
node.session.auth.authmethod = CHAP
node.session.auth.username = joe
node.session.auth.password = ********
node.session.auth.username_in = <empty>
node.session.auth.password_in = <empty>
node.session.timeo.replacement_timeout = 0
node.session.err_timeo.abort_timeout = 10
node.session.err_timeo.reset_timeout = 30
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
....

要编辑这些变量的值,可将 iscsiadm更新操作一起使用。例如,如果希望 iscsid 在初始化时登录 iSCSI 目标,则将变量 node.startup 的值设置为 automatic

iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --op=update --name=node.startup --value=automatic

执行操作删除来删除过时的数据集。如果目标 iqn.2006-02.com.example.iserv:systems 不再是有效的记录,请使用命令 iscsiadm -m node -n iqn.2006-02.com.example.iserv:systems --op=delete 删除此记录。使用此选项时应谨慎,因为它会删除该记录而无任何附加确认提示。

要获取所有已发现目标的列表,请运行命令 iscsiadm -m node

更多信息

iSCSI 协议已面世多年。有许多评论和其他文档将 iSCSI 与 SAN 解决方案作比较,通常是比较性能基准,或只说明硬件解决方案。有关 open-iscsi 的更多信息,请参见以下重要页面:

  • http://www.open-iscsi.org/

  • http://www.open-iscsi.org/cgi-bin/wiki.pl

  • http://www.novell.com/coolsolutions/appnote/15394.html

还有一些联机文档。请参见 iscsiadmiscsidietd.confietd 的手册页,以及示例配置文件 /etc/iscsid.conf