一 iSCSI和CHAP介紹
1.1 iSCSI 磁碟
- iSCSI後端儲存支援多種裝置型別,主要有:
- 檔案
- 單一分割槽(partition)
- 磁碟
- 陣列
- RAID
- LVM
本手冊建議以裸磁碟vdb作為示例,其他型別配置參考《002.iSCSI服務端多型別配置》。
同時本手冊基於生產環境安全考慮,結合CHAP進行配置認證。
1.2 CHAP介紹
基於IP的認證比較粗糙,對於安全性要求高的環境來說,使用CHAP認證其安全性更有保障。
CHAP(Challenge-Handshake Authentication Protocol),稱為挑戰式握手認證協議,它是雙向認證,當然也支援單向認證。
對於iscsi而言,在CHAP認證的機制上有兩種方式:initiator authentication和target authentication。
1.2.1 initiator authentication認證
在initiator嘗試連線到一個target的時候,initator需要提供一個使用者名稱和密碼給target被target進行認證。
也就是說initiator需要被target認證,它向target端提供的賬號和密碼是target端指定的。
這個賬號和密碼對於target來說是流入的賬號和密碼,用incoming表示。
稱呼這個賬號和密碼為:incoming賬號和incoming密碼。
即,incoming賬號是initiator端提供給target端,被target端認證的賬號。
1.2.2 target authentication認證
在initiator嘗試連線到一個target的時候,target有時也需要被initiator認證,以確保該target是合法而非偽裝的target,這就要求target提供一個使用者名稱和密碼給initiator被initiator進行認證。
target向initiator提供的賬號和密碼對於target而言是流出的,所以稱之為outgoing。
稱呼這個賬號和密碼為:outgoing賬號和outgoing密碼。
而對於initiator而言是incoming的,所以在initiator配置檔案中稱為in。
也就是說outgoing賬號是target端提供給initiator端,被initiator認證的賬號,但儘管如此,這個賬號和密碼還是在target端建立和繫結的。
1.2.3 單/雙向認證
兩種認證方式是有層次順序的。
一般來說,有認證需求的時候都是伺服器驗證客戶端是否有許可權,iscsi也一樣。
initiator authentication可以單獨存在,它可以在沒有target authentication的情況下應用,這時候的CHAP認證就是單向認證(target認證initiator的合法性)。
但target authentication只有在initiator authentication的基礎上才能進行。也就是說target認證和initiator認證必須同時存在才可以。即initiator和target需要相互認證實現雙向CHAP認證。
注意:發現認證和登入認證都支援單/雙向認證。
二 iSCSI建立步驟
- 建立用於共享的磁碟
- 建立後備磁碟
- 建立相應的IQN
- 建立相應的規則
- 為後備磁碟建立LUN
- 建立雙向認證賬號和密碼
- 指定偵聽的IP和埠
- 檢查並儲存配置
- 防火牆規則開放
- 服務(開機)啟動
三 前置準備
3.1 環境準備
3.2 檢視裸磁碟
[root@iscsi ~]# fdisk -l
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
四 建立後備儲存
4.1 安裝相關軟體
[root@iscsi ~]# yum -y install targetcli
4.2 互動設定
[root@system1 ~]# targetcli #進入targetcli互動配置檢視
- block:定義的塊裝置,磁碟驅動器、磁碟分割槽、LVM等
- fileio:建立的指定大小的檔案,如dd if=/dev/zero of=……所建立
- pscsi:物理SCSI,通常不採用此型別
- ramdisk:在記憶體中建立的一個指定大小ramdisk裝置
targetcli shell version 2.1.53
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
/> /backstores/block create block1 /dev/sdb #將裸磁碟建立為後備盤
/> /iscsi create wwn=iqn.2022-11.com.imxhy:disk01 #建立符合名稱的IQN
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/luns create /backstores/block/block1 #將建立的後備磁碟block1建立一個LUN
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/acls create iqn.2021-11.com.imxhy:client #只允許配置iqn.2021-11.com.imxhy:client的key才能使用此iSCSI提供的磁碟服務
/> /iscsi/iqn.2021-11.com.imxhy:disk01/tpg1/portals/ delete 0.0.0.0 3260 #刪除預設的全部偵聽
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/portals/ create 172.24.8.72 3260 #指定本地用於偵聽客戶端連線的IP
/> /iscsi/ set discovery_auth enable=1 userid=discover password=discoverps #選配,本實驗增加discovery的認證
/> /iscsi/ get discovery_auth
DISCOVERY_AUTH CONFIG GROUP
===========================
enable=True
-----------
The enable discovery_auth parameter.
mutual_password=
----------------
The mutual_password discovery_auth parameter.
mutual_userid=
--------------
The mutual_userid discovery_auth parameter.
password=discoverps
-------------------
The password discovery_auth parameter.
userid=discover
---------------
The userid discovery_auth parameter.
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/acls/iqn.2021-11.com.imxhy:client/ set auth userid=user01 password=u1pass mutual_userid=muser01 mutual_password=m1pass
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/acls/iqn.2021-11.com.imxhy:client/ get auth #檢視配置
AUTH CONFIG GROUP
=================
mutual_password=m1pass
----------------------
The mutual_password auth parameter.
mutual_userid=muser01
---------------------
The mutual_userid auth parameter.
password=u1pass
---------------
The password auth parameter.
userid=user01
-------------
The userid auth parameter.
/> ls /
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- block1 ........................................................................... [/dev/sdb (1.0GiB) write-thru activated]
| | o- alua ................................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ........................................................................................... [1-way disc auth, Targets: 1]
| o- iqn.2022-11.com.imxhy:disk01 ...................................................................................... [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2021-11.com.imxhy:client ......................................................................... [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................ [lun0 block/block1 (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ..................................................................... [block/block1 (/dev/sdb) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 172.24.8.72:3260 ................................................................................................. [OK]
o- loopback ......................................................................................................... [Targets: 0]
/> exit
提示:如上操作:
1:建立的ACL將分配到每個LUN。
2:建立LUN必須在TPG下。
3:若不指定埠將採用預設埠3260
4:若不指定IP,將允許伺服器上定義的所有網路介面上的連線
5:建立LUN必須在TPG下
五 防火牆開放
[root@iscsi ~]# firewall-cmd --add-port=3260/tcp --permanent #防火牆新增iSCSI的埠 [root@iscsi ~]# firewall-cmd --add-service=iscsi-target --permanent #防火牆放通iSCSI target服務 [root@iscsi ~]# firewall-cmd --reload
六 開啟服務
[root@iscsi ~]# systemctl enable target --now
七 客戶端配置
[root@client ~]# yum -y install iscsi-initiator-utils #安裝客戶端 [root@client ~]# vim /etc/iscsi/initiatorname.iscsi #配置CHAP認證 InitiatorName=iqn.2021-11.com.imxhy:client [root@client ~]# vim /etc/iscsi/iscsid.conf …… node.session.auth.authmethod = CHAP node.session.auth.username = user01 node.session.auth.password = u1pass node.session.auth.username_in = muser01 node.session.auth.password_in = m1pass discovery.sendtargets.auth.authmethod = CHAP discovery.sendtargets.auth.username = discover discovery.sendtargets.auth.password = discoverps …… [root@client ~]# systemctl restart iscsid
八 客戶端登入
8.1 發現目標
[root@client ~]# iscsiadm -m discovery -t sendtargets -p 172.24.8.72 #發現目標 172.24.8.72:3260,1 iqn.2022-11.com.imxhy:disk01
8.2 登入目標
[root@client ~]# iscsiadm -m node -T iqn.2022-11.com.imxhy:disk01 -p 172.24.8.72 -l #登入目標
8.3 查詢資訊
[root@client ~]# iscsiadm -m session -o show tcp: [23] 172.24.8.72:3260,1 iqn.2022-11.com.imxhy:disk01 (non-flash) [root@client ~]# iscsiadm -m session -P 3 #查詢資訊 iSCSI Transport Class version 2.0-870 version 6.2.0.874-22 Target: iqn.2022-11.com.imxhy:disk01 (non-flash) Current Portal: 172.24.8.72:3260,1 Persistent Portal: 172.24.8.72:3260,1 ********** Interface: ********** Iface Name: default Iface Transport: tcp Iface Initiatorname: iqn.2021-11.com.imxhy:client Iface IPaddress: 172.24.8.71 Iface HWaddress: <empty> Iface Netdev: <empty> SID: 1 iSCSI Connection State: LOGGED IN iSCSI Session State: LOGGED_IN Internal iscsid Session State: NO CHANGE ********* Timeouts: ********* Recovery Timeout: 120 Target Reset Timeout: 30 LUN Reset Timeout: 30 Abort Timeout: 15 ***** CHAP: ***** username: user01 password: ******** username_in: muser01 password_in: ******** ************************ Negotiated iSCSI params: ************************ HeaderDigest: None DataDigest: None MaxRecvDataSegmentLength: 262144 MaxXmitDataSegmentLength: 262144 FirstBurstLength: 65536 MaxBurstLength: 262144 ImmediateData: Yes InitialR2T: Yes MaxOutstandingR2T: 1 ************************ Attached SCSI devices: ************************ Host Number: 3 State: running scsi3 Channel 00 Id 0 Lun: 0 Attached scsi disk sdb State: running [root@client ~]# iscsiadm -m node -o show # BEGIN RECORD 6.2.0.874-22 node.name = iqn.2022-11.com.imxhy:disk01 node.tpgt = 1 node.startup = automatic …… iface.transport_name = tcp …… node.discovery_address = 172.24.8.72 node.discovery_port = 3260 node.discovery_type = send_targets node.session.initial_cmdsn = 0 node.session.initial_login_retry_max = 8 node.session.xmit_thread_priority = -20 node.session.cmds_max = 128 node.session.queue_depth = 32 node.session.nr_sessions = 1 node.session.auth.authmethod = CHAP node.session.auth.username = user01 node.session.auth.password = ******** node.session.auth.username_in = muser01 node.session.auth.password_in = ******** …… node.session.scan = auto node.conn[0].address = 172.24.8.72 node.conn[0].port = 3260 …… # END RECORD [root@client ~]# fdisk -l #發現的iSCSI伺服器三個共享
九 格式化並掛載
9.1 格式化並掛載
注意:
1:此時能當做本地磁碟使用,分割槽格式化等操作;
2:可使用RAID或LVM來進行操作,LVM的可在之後格式化LV。
[root@client ~]# mkfs.ext4 /dev/sdb #格式化相關iSCSI磁碟 [root@client ~]# mkdir -p /iscsdisk/sdb01 #建立用於掛載sdd磁碟的掛載點 [root@client ~]# mkdir -p /iscsdisk/lv01 #建立用於掛載LVM分割槽的掛載點 [root@client ~]# mount /dev/sdb /iscsdisk/sdb01/ #可直接掛載 [root@client ~]# vi /etc/fstab #自動掛載 …… /dev/sdb /iscsdisk/lv01 ext4 defaults 0 0