ISCSI/LIO
LIO (LinuxIO) 是内核中的 iSCSI 目标 (自 Linux 2.6.38 起)。
安装
iSCSI 目标结构已包含在 Linux 3.1 及更高版本中。
重要的内核模块是 target_core_mod 和 iscsi_target_mod,它们应该在内核中并自动加载。
强烈建议使用软件包的 free 分支版本: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
后附加您选择的 IQN,您可以阻止 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。
为了使客户端/启动器 连接,您需要在目标配置中包含启动器的 IQN
...> cd ../../acls .../acls> create iqn.2005-03.org.open-iscsi:SERIAL
使用启动器的 IQN 而不是 iqn.2005-03.org.open-iscsi:SERIAL
。通常可以在 /etc/iscsi/initiatorname.iscsi
中找到它。您必须为每个需要连接的启动器执行此操作。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)
前两个字段是目标的用户名和密码。启动器将使用此用户名和密码登录到目标。最后两个字段(以 "mutual_" 为前缀)是启动器的用户名和密码(请注意,所有启动器都将具有相同的用户名和密码)。这两个是可选参数,它确保启动器仅接受来自允许的目标的连接。
技巧与诀窍
- 使用
targetcli sessions
,您可以列出当前打开的会话。