Open-iSCSI
本文介绍如何使用 iSCSI 目标以及 Open-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/
。迁移不会自动完成。请断开目标连接,停止 服务,迁移并重新连接。同时验证文件系统权限。/etc/iscsi/
应该只包含 initiatorname.iscsi
和 iscsid.conf
- 发现目录
/var/lib/iscsi/send_targets
,其中包含以目标地址命名的目录。 - 节点目录
/var/lib/iscsi/nodes
,其中包含以特定设备的 IQN (ISCSI Unique Name) 命名的目录。
配置
启动服务
iscsid
由 systemd 单元管理。
启动 iscsid.service
或 iscsid.socket
。
ISCSI Qualified Name (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
并确保节点在其配置中具有 node.startup = automatic
(/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port
)。
故障排除
客户端 IQN
在服务器(目标)上,您可能需要在帐户配置中包含来自 /etc/iscsi/initiatorname.iscsi
的客户端 IQN。
调试 iSCSI 守护进程
要在调试模式下运行 iSCSI 守护进程(确保您之前已停止 iscsid.service
)
# iscsid -d 8 -c /etc/iscsi/iscsid.conf -i /etc/iscsi/initiatorname.iscsi -f