ISCSI/LIO
LIO (LinuxIO) 是内核中的 iSCSI 目标 (自 Linux 2.6.38 起)。
安装
iSCSI 目标架构自 Linux 3.1 起包含在内核中。
重要的内核模块是 target_core_mod 和 iscsi_target_mod,它们应该在内核中并自动加载。
强烈建议使用软件包的 free branch 版本:targetcli-fbAUR、python-rtslib-fbAUR 和 python-configshell-fb。
启动/启用 target.service
,包含在 python-rtslib-fbAUR 中,以加载必要的模块,挂载 configfs 并加载之前保存的 iSCSI 目标配置。
targetcli
以 root 身份运行 targetcli status
以查看有关正在运行的配置的一些信息。
您可以使用 targetcli 创建完整的配置,请参阅 targetcli(8)。
配置 shell 会自动为您创建大多数名称和编号,但您也可以提供自己的设置。在 shell 中的任何时候,您都可以键入 help
以查看您可以在此处发出的命令。
cd
以查看和选择路径。启动目标 (见上文) 后,您可以使用以下命令进入配置 shell:
# targetcli
在此 shell 中,您包含一个块设备 (此处: /dev/disk/by-id/md-name-nas:iscsi
) 以用于:
/> cd backstores/block /backstores/block> create md_block0 /dev/disk/by-id/md-name-nas:iscsi
然后,您可以使用以下命令创建 iSCSI Qualified Name (IQN) 和目标门户组 (TPG):
...> cd /iscsi /iscsi> create
create
,您可以阻止 targetcli 自动创建 IQN。为了告诉 LIO 您的块设备应该用作目标的后端存储,您发出:
cd
以选择您的 <iqn>/tpg1 的路径.../tpg1> cd luns .../tpg1/luns> create /backstores/block/md_block0
然后,您需要创建一个门户,使守护程序监听传入连接
.../luns/lun0> cd ../../portals .../portals> create
Targetcli 将告诉您 LIO 正在监听传入连接的 IP 和端口 (默认为 0.0.0.0 (全部))。您至少需要客户端的 IP。端口应该是标准端口 3260。
为了使客户端/initiator 连接,您需要在目标配置中包含 initiator 的 IQN
...> cd ../../acls .../acls> create iqn.2005-03.org.open-iscsi:SERIAL
您使用 initiator 的 IQN 而不是 iqn.2005-03.org.open-iscsi:SERIAL
。它通常可以在 /etc/iscsi/initiatorname.iscsi
中找到。您必须为每个需要连接的 initiator 执行此操作。Targetcli 将自动将创建的 LUN 映射到新创建的 ACL。
help create
。当一切正常工作时,您在 targetcli 中要做的最后一件事是使用以下命令保存配置:
...> cd / /> saveconfig
这会将配置保存在 /etc/target/saveconfig.json
中。现在您可以安全地启动和停止 target.service
而不会丢失您的配置。
saveconfig
,也可以使用 clearconfig
清除配置。身份验证
默认情况下,为您的目标启用基于 CHAP 的身份验证。您可以设置密码或禁用此身份验证。
禁用身份验证
在 targetcli 中导航到您的目标 (即 /iscsi/iqn.../tpg1) 并
.../tpg1> set attribute authentication=0
设置凭据
导航到目标的特定 ACL (即 /iscsi/iqn.../tpg1/acls/iqn.../) 并
...> get auth
将显示您当前的身份验证凭据。
...> set auth userid=<username in target> ...> set auth password=<password in target> ...> set auth mutual_userid=<username in initiator> (optional) ...> set auth mutual_password=<password in initiator> (optional)
前两个字段是目标的用户名和密码。Initiator 将使用它登录到目标。最后两个字段 (以 "mutual_" 为前缀) 是 initiator 的用户名和密码 (请注意,所有 initiator 将具有相同的用户名和密码)。这两个是可选参数,它确保 initiator 只接受来自允许目标的连接。
技巧与窍门
- 使用
targetcli sessions
,您可以列出当前打开的会话。