Open-iSCSI
本文档介绍如何使用 Open-iSCSI 启动器访问 iSCSI 目标。
安装
安装 open-iscsi 包。
概述
下图展示了各组件如何协同工作。更详细的版本可以在这里找到:Open-iSCSI 模块 (已过时)
+--------------------------------------------------------+
| Targets & Sessions configuration files and directories |
+--------------------------------------------------------+
+--------------------------+ +----------------------------------+
| iscsiadm | | iscsid: iSCSI daemon |
| | | |
| * Command line tool |<--->| * Implements Session management |
| * Manages database of | | * Communicates with iscsiadm |
| sessions and targets | | and iscsi kernel modules |
+--------------------------+ +---------------+------------------+
|
User space |
- - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - - - - - -
Kernel v
+-----------------------------------------------------------+
| kernel modules: scsi_transport_iscsi, iscsi_tcp, libiscsi |
+-----------------------------------------------------------+
来自 Open-iSCSI 的 README
持久化配置实现为一个文件和目录树,这些文件和目录树包含在两个目录中
/etc/iscsi/ 更改为 /var/lib/iscsi/ 在 open-iscsi 2.1.9-2 中。迁移不是自动完成的。请断开目标连接,停止服务,迁移然后重新连接。同时验证文件系统权限。/etc/iscsi/ 应只包含 initiatorname.iscsi 和 iscsid.conf
- 发现目录
/var/lib/iscsi/send_targets,其中包含以目标地址命名的目录。 - 节点目录
/var/lib/iscsi/nodes,其中包含以特定设备 IQN (ISCSI 限定名称) 命名的目录。
配置
启动服务
iscsid 由 systemd Unit 管理。
启动 iscsid.service 或 iscsid.socket。
ISCSI 限定名称 (IQN)
IQN 用于标识每个设备。
Open-ISCSI 将其启动器 IQN 存储在 /etc/iscsi/initiatorname.iscsi 文件中,格式为 InitiatorName=iqn
安装期间会生成初始 IQN。如果你想生成新的 IQN,可以使用 iscsi-iname 工具,该工具会输出新的 IQN。
身份认证
如果 ISCSI 目标需要启动器进行身份验证,则可能需要更新配置文件 /etc/iscsi/iscsid.conf。
以下参数用于验证启动器到目标的登录会话
node.session.auth.authmethod = CHAP node.session.auth.username = initiators_username node.session.auth.password = initiators_password
如果你的目标启用了双向身份验证,那么这些行也需要编辑
node.session.auth.username_in = targets_username node.session.auth.password_in = targets_password
如果你的目标需要身份验证才能获取其节点列表(大多数情况下不需要),则应编辑以下行
discovery.sendtargets.auth.authmethod = CHAP discovery.sendtargets.auth.username = initiators_username discovery.sendtargets.auth.password = initiators_password
如果你的目标启用了双向身份验证,那么这些行也需要编辑
discovery.sendtargets.auth.username_in = targets_username discovery.sendtargets.auth.password_in = targets_password
/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port,1/default 并根据需要添加/调整选项。[1]目标发现
请求目标将其节点暴露。
# iscsiadm --mode discovery --portal target_ip --type sendtargets
成功后,关于节点和目标的信息将保存在你的启动器上。
手动添加目标
# iscsiadm -m node --target targetname --portal target_ip -o new
这可能用于服务器不允许发现的场景。
删除过时目标
# iscsiadm -m discovery -p target_ip -o delete
登录可用目标
# iscsiadm -m node -L all
或登录特定目标
# iscsiadm -m node --targetname=targetname --login
登出
# iscsiadm -m node -U all
信息
对于运行中的会话
# iscsiadm -m session -P 3
上述命令的最后一行将显示已连接设备的名称,例如
Attached scsi disk sdd State: running
对于已知节点
# iscsiadm -m node
卷在线重调大小
如果 iscsi 块设备包含分区表,你将无法在线重调大小。在这种情况下,你必须卸载文件系统并调整受影响分区的尺寸。
- 重扫当前会话中的活动节点
# iscsiadm -m node -R
- 如果你使用 multipath,你还需要重扫 multipath 卷信息。
# multipathd -k"resize map sdx"
- 最后,重调文件系统大小。
# resize2fs /dev/sdx
技巧与提示
检查已连接的 iSCSI 设备
你还可以使用以下命令查看已连接的 iSCSI 设备在 /dev/ 树中的位置
$ ls -l /dev/disk/by-path/ip-*
启动时登录目标
要在启动时登录目标,请启用 iscsi.service 并确保节点在其配置 (/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port) 中具有 node.startup = automatic。
故障排除
客户端 IQN
在服务器(目标)上,你可能需要将来自 /etc/iscsi/initiatorname.iscsi 的客户端 IQN 包含在账户配置中。
调试 iSCSI 守护进程
以调试模式运行 iSCSI 守护进程(确保在此之前已停止 iscsid.service)
# iscsid -d 8 -c /etc/iscsi/iscsid.conf -i /etc/iscsi/initiatorname.iscsi -f