在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
安裝的方法通過rpm包安裝
---------------------------------------------------------------------------
[root@CentOS7-NTP ~]# ls
iscsi-initiator-utils-6.2.0.874-10.el7.x86_64.rpm iscsi-initiator-utils-iscsiuio-6.2.0.874-10.el7.x86_64.rpm ##需要的兩個軟件包
[root@CentOS7-NTP ~]# rpm -ivh iscsi-initiator-utils-iscsiuio-6.2.0.874-10.el7.x86_64.rpm iscsi-initiator-utils-6.2.0.874-10.el7.x86_64.rpm ##兩個軟件包需要通過rpm命令一起安裝,因為兩個軟件包有依賴關系,單獨安裝會失敗
warning: iscsi-initiator-utils-iscsiuio-6.2.0.874-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:iscsi-initiator-utils-6.2.0.874-1################################# [ 50%]
2:iscsi-initiator-utils-iscsiuio-6.################################# [100%]
---------------------------------------------------------------------------
安裝方法通過yum源安裝
[root@CentOS7-NTP ~]# yum install iscsi-initiator-utils ##這種方式還是比較簡單
---------------------------------------------------------------------------
[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系統下