在Linux 2.6内核中提供了iscsi驱动,iSCSI 驱动(driver)使主机拥有了通过IP网络访问存储的能力,但还需要一个具体的客户端工具(Linux用户空间组件)初始化iSCSI驱动,即open-iscsi。
open-iscsi initiator说明
open-iscsi包括两个守护进程iscsid和iscsi,其中iscsid是主进程,iscsi进程则主要负责根据配置在系统启动时进行发起端(Initiator)到服务端(target)的登录,建立发起端与服务端的会话,使主机在启动后即可使用通过iSCSI提供服务的存储设备。
iscsid进程实现iSCSI协议的控制路径以及相关管理功能。例如守护进程(指iscsid)可配置为在系统启动时基于持久化的iSCSI数据库内容,自动重新开始发现(discovery)目标设备。
--------------------------------------------------------------------------------------------------------------------------------------
一、连接配置
1、查看iscsi启动器是否安装
[root@CentOS7-NTP ~]# rpm -qa | grep -i iscsi
libvirt-daemon-driver-storage-iscsi-4.5.0-23.el7.x86_64
iscsi-initiator-utils-6.2.0.874-11.el7.x86_64 ##软件已经安装,没有安装需要安装
libiscsi-1.9.0-7.el7.x86_64
iscsi-initiator-utils-iscsiuio-6.2.0.874-11.el7.x86_64
[root@CentOS7-NTP ~]# cat /etc/iscsi/initiatorname.iscsi ##差看iqn号码
InitiatorName=iqn.1994-05.com.redhat:b53d39193da1 ##后面的随机号码最好改成主机SN方便查找,改完需要重启iscsi服务
2、查看iscsi服务器
[root@CentOS7-NTP ~]# systemctl status iscsi.service ##查看iscsi服务是否启动,没有启动进行启动
● iscsi.service - Login and scanning of iSCSI devices
Loaded: loaded (/usr/lib/systemd/system/iscsi.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Condition: start condition failed at Sat 2021-10-30 08:16:41 CST; 33min ago
none of the tr igger conditions were met
Docs: man:iscsid(8)
man:iscsiadm(8)
Oct 30 08:16:41 CentOS7-NTP systemd[1]: Unit iscsi.service cannot be reloaded because it is inactive.
Oct 30 08:16:43 CentOS7-NTP systemd[1]: Unit iscsi.service cannot be reloaded because it is inactive.
Oct 30 08:16:43 CentOS7-NTP systemd[1]: Unit iscsi.service cannot be reloaded because it is inactive.
Oct 30 08:20:17 CentOS7-NTP systemd[1]: Unit iscsi.service cannot be reloaded because it is inactive.
Oct 30 08:20:37 CentOS7-NTP systemd[1]: Unit iscsi.service cannot be reloaded because it is inactive.
Oct 30 08:20:38 CentOS7-NTP systemd[1]: Unit iscsi.service cannot be reloaded because it is inactive.
[root@CentOS7-NTP ~]#
[root@CentOS7-NTP ~]# systemctl status iscsi.service ##启动iscsi服务
[root@CentOS7-NTP ~]# systemctl enable iscsi.service ##设置iscsi服务开机启动
3、发现target(discovery)
[root@CentOS7-NTP ~]# iscsiadm -m discovery -t st -p 192.168.150.250:3260 ##发现target(discovery)存储
192.168.150.250:3260,1 iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1 ##这个就是目标存储的iqn号码
[root@CentOS7-NTP ~]# iscsiadm -m node ##查看保存在本地的数据库中的target
192.168.150.250:3260,1 iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1
4、连接target(discovery)存储
[root@CentOS7-NTP ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1 -p 192.168.150.250:3260 -l
Logging in to [iface: default, target: iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1, portal: 192.168.150.250,3260] (multiple)
Login to [iface: default, target: iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1, portal: 192.168.150.250,3260] successful.
##上面命令的iqn号为目标存储的iqn号,IP地址为目标存储的IP地址
5、查看登录的session,可以通过iscsiadm -m session -P 3 (0-3均可,默认为0) 来打印详细的信息
[root@CentOS7-NTP ~]# iscsiadm -m session ##相当于iscsiadm -m session -P 0
tcp: [1] 192.168.150.250:3260,1 iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1 (non-flash)
6、扫描所有关联的target/session
一旦登录成功,所有分配给当前主机的LUN都可以看到了,但有时,新分配的LUN,LUN的信息发生变化后,主要不能立即看到,这样就需要rescan了 --rescan 。
[root@CentOS7-NTP ~]# iscsiadm -m node -R
Rescanning session [sid: 1, target: iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1, portal: 192.168.150.250,3260]
或
[root@CentOS7-NTP ~]# iscsiadm -m session -R
Rescanning session [sid: 1, target: iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1, portal: 192.168.150.250,3260]
[root@CentOS7-NTP ~]#
7、产看iscsi映射的设备信息
[root@CentOS7-NTP ~]# lsscsi ##有的发行版可能没有这个命令,需要安装相应的软件lsscsi
[1:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0
[2:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda
[3:0:0:0] disk OPNFILER VIRTUAL-DISK 0 /dev/sdb ##这个就是iscsi映射过来的lun设备为OPNFILER设备提供,其实我用的是openfile软件提供的iscsi存储
[root@CentOS7-NTP ~]#
8、设置开机自动连接(非必须执行,有的系统执行完连接存储就会自动设置开机启动)
[root@CentOS7-NTP ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.23aad6d9f9f1 -p 192.168.150.250,3260 --op update -n node.startup -v automatic
##对于还没有关联的节点,编辑配置文件/etc/iscsi/iscsid.conf,在其中增加一项node.startup = automatic ,将默认的node.startup = manual项注释掉,这样以后通过discovery新发现的节点的node.startup都会被设置为automatic,设置自动管理目标器以后,即使没有通过命令设置开机启动,每次启动iscsi服务时都会自动关联目标器
9、扫描新添加的存储设备
执行scsi_rescan命令扫描
/usr/bin/scsi-rescan
二、iscsi的/etc/iscsi/iscsid.conf 主要配置文件,我们主要关注下面几个部分
1、# Startup settings initator启动设置
node.startup = automatic 是表示当iscsi initator启动时就会自动登陆到发现过的target。
node.startup = manual 是表示当iscsi initator启动时不会自动登陆到发现过的target。
2、# CHAP Settings 主要是一些安全设置。
3、# Timeouts 部分是我们重点关注的地方:
node.session.timeo.replacement_timeout
指网络出现问题,多长时间通知上层:
node.session.timeo.replacement_timeout = 120
一般我们可以把这个时间改小,防止IO被hang太长时间,如:
node.session.timeo.replacement_timeout = 3
下面两个时间是sessison登录和登出Target的超时时间,也可以适当减少。
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.noop_out_interval 指发ping包的时间间隔,
node.conn[0].timeo.noop_out_timeout 为接收心跳包的超时时间
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
这两个时间根据需要减少,如:
node.conn[0].timeo.noop_out_interval = 1
node.conn[0].timeo.noop_out_timeout = 1
node.session.initial_login_retry_max 为登录的重试次数:
node.session.initial_login_retry_max = 4
可以适当减少到 2:
node.session.initial_login_retry_max = 2
设置完成后启动iscsi initiator服务
更详细的配置可用参照这篇文章 Linux下搭建iSCSI共享存储的方法 TGT 方式 Debian9.5系统下