ISCSI/LIO
LIO (LinuxIO) 是内核内置的 iSCSI 目标(自 Linux 2.6.38 起)。
安装
iSCSI 目标 fabric 自 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) 和一个目标 portal group (TPG):
...> cd /iscsi /iscsi> create
create 后面追加您选择的 IQN,可以阻止 targetcli 自动创建 IQN。为了告知 LIO 您的块设备应该作为目标的 backstore,请执行以下命令:
cd 来选择您 <<iqn>/tpg1 的路径。.../tpg1> cd luns .../tpg1/luns> create /backstores/block/md_block0
然后,您需要创建一个 portal,让一个守护进程监听传入连接:
.../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,您可以列出当前打开的会话。