Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

iSCSI Target/Initiator 完整配置指南:從安裝、LUN 映射、CHAP 認證到多路徑掛載

編輯:Linux 教學

iSCSI (Internet SCSI) 讓伺服器透過 IP 網路將區塊級儲存空間提供給遠端主機,廣泛應用於虛擬化共享儲存、資料庫叢集、備份卸載。本文以 iscsitarget (Target 端) 與 open-iscsi (Initiator 端) 為例,完整記錄:軟體安裝、配置檔編輯、服務啟動、LUN 映射、CHAP 雙向認證 (Discovery/Session 兩層)、防火牆開放、多路徑掛載驗證、效能調優參數,適用 CentOS 6/7、RHEL、Debian/Ubuntu。

一、架構角色釐清

角色軟體套件核心功能
Target (Server)iscsitarget / tgt / LIO將本地區塊裝置 (/dev/sdb, LVM LV, 影像檔) 發布為 iSCSI LUN
Initiator (Client)open-iscsi (iscsid, iscsiadm)發現 Target、建立 Session、將 LUN 掛載為本地 /dev/sdX

現代 Linux 核心 (3.0+) 內建 LIO (Linux-IO Target),建議新部署直接使用 targetcli 管理 LIO,本文仍保留 iscsitarget 傳統流程供存量系統參考。

二、Target 端部署 (iscsitarget 傳統方案)

1. 安裝編譯


# 下載最新版 (SourceForge)
wget https://sourceforge.net/projects/iscsitarget/files/iscsitarget/1.4.20.3/iscsitarget-1.4.20.3.tar.gz
tar zxvf iscsitarget-*.tar.gz
cd iscsitarget-*
make && make install

安裝產物:iscsi_trgt.ko (核心模組)、ietd (守護進程)、ietadm (管理工具)、/etc/init.d/iscsi-target、/etc/ietd.conf、/etc/initiators.allow/deny、/etc/iet/targets.allow。

2. 配置 /etc/ietd.conf


# 全域 CHAP (Discovery 階段)
IncomingUser iqn.1994-05.com.fedora:client1 1234567890ab

Target iqn.2001-04.com.example:storage.disk1.sys1
    Lun 0 Path=/dev/sdb,Type=blockio
    Alias DataDisk1
    # Session 級 CHAP (針對此 Target)
    IncomingUser iqn.1994-05.com.fedora:client1 1234567890
    # 可選:OutgoingUser (Target 向 Initiator 驗證,雙向 CHAP)
    # OutgoingUser target_user target_pass

關鍵參數:

  • Type=blockio:直接區塊裝置 I/O (效能最佳,適用 /dev/sdX, LVM LV)
  • Type=fileio:影像檔回環 (適用 /var/lib/iscsi/disk.img)
  • Alias:易讀名稱,供管理識別

3. 啟動服務


/etc/init.d/iscsi-target start
chkconfig iscsi-target on
# 驗證
ietadm -l
# 輸出應顯示 Target IQN 與 Lun 0 狀態

三、Initiator 端部署 (open-iscsi)

1. 安裝


# CentOS/RHEL
yum install -y iscsi-initiator-utils
# Debian/Ubuntu
apt-get install -y open-iscsi

2. 配置 Initiator 名稱與 CHAP


# /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.fedora:client1

# /etc/iscsi/iscsid.conf (關鍵 CHAP 設定)
# Discovery 階段 CHAP
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = iqn.1994-05.com.fedora:client1
discovery.sendtargets.auth.password = 1234567890ab

# Session 階段 CHAP
node.session.auth.authmethod = CHAP
node.session.auth.username = iqn.1994-05.com.fedora:client1
node.session.auth.password = 1234567890

重啟 iscsid 使配置生效:systemctl restart iscsid (或 /etc/init.d/iscsid restart)

3. 發現 Target


iscsiadm -m discovery -t sendtargets -p 192.168.1.100
# 輸出範例:
# 192.168.1.100:3260,1 iqn.2001-04.com.example:storage.disk1.sys1

若 CHAP 失敗會顯示 Login failed to authenticate with target。

4. 登入 (建立 Session)


iscsiadm -m node -T iqn.2001-04.com.example:storage.disk1.sys1 -p 192.168.1.100 --login
# 成功後可見 /dev/sdc (或下一可用 sdX)

5. 驗證與格式化


fdisk -l /dev/sdc
mkfs.ext4 /dev/sdc1
mount /dev/sdc1 /mnt/iscsi_data
dd if=/dev/zero of=/mnt/iscsi_data/test_100M bs=1M count=100

四、CHAP 認證兩層機制深度解析

層級階段配置位置失敗現象
Discovery CHAP發現 Target 列表Target: 全域 IncomingUser
Initiator: discovery.sendtargets.auth.*
iscsiadm -m discovery 直接報錯,無法看到任何 Target
Session CHAP登入特定 TargetTarget: Target 區塊內 IncomingUser
Initiator: node.session.auth.*
Discovery 成功,但 --login 失敗,報 initiator reported error (15 - already exists)

最佳實踐:生產環境務必同時啟用兩層 CHAP,並為每個 Target 設定不同 Session 密碼。

五、多路徑 (MPIO) 高可用配置

若 Target 雙網卡 (192.168.1.100, 192.168.2.100) 提供冗余路徑:


# Initiator 端啟用多路徑
yum install -y device-mapper-multipath
mpathconf --enable --with_multipathd y
systemctl start multipathd

# 發現兩個 Portal 後分別登入
iscsiadm -m discovery -t sendtargets -p 192.168.1.100
iscsiadm -m discovery -t sendtargets -p 192.168.2.100
iscsiadm -m node -T iqn.2001-04.com.example:storage.disk1.sys1 -p 192.168.1.100 --login
iscsiadm -m node -T iqn.2001-04.com.example:storage.disk1.sys1 -p 192.168.2.100 --login

# 驗證多路徑裝置
multipath -ll
# 應出現 mpatha (dm-0) 兩條 path: sdc, sdd
mkfs.ext4 /dev/mapper/mpatha
mount /dev/mapper/mpatha /mnt/iscsi_ha

六、防火牆與效能調優

防火牆開放 3260/tcp


firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
# iptables:
iptables -I INPUT -p tcp --dport 3260 -j ACCEPT

關鍵效能參數

參數建議值說明
MaxRecvDataSegmentLength131072 (128K)最大接收資料段,提升吞吐
MaxXmitDataSegmentLength131072最大傳送資料段
FirstBurstLength262144首次突發長度
MaxBurstLength262144最大突發長度
ImmediateDataYes減少回合行程
InitialR2TNo配合 ImmediateData
Initiator 端 /etc/iscsi/iscsid.confnode.conn[0].iscsi.MaxRecvDataSegmentLength = 131072同步設定

七、現代 LIO (targetcli) 快速入門


# 安裝
yum install -y targetcli

# 互動式配置
targetcli
/> backstores/block create name=lun1 dev=/dev/sdb
/> iscsi/ create iqn.2001-04.com.example:storage.lun1
/> iscsi/iqn.2001-04.com.example:storage.lun1/tpg1/luns create /backstores/block/lun1
/> iscsi/iqn.2001-04.com.example:storage.lun1/tpg1/portals create 192.168.1.100
/> iscsi/iqn.2001-04.com.example:storage.lun1/tpg1/set attribute authentication=1
/> iscsi/iqn.2001-04.com.example:storage.lun1/tpg1/set attribute generate_node_acls=1
/> iscsi/iqn.2001-04.com.example:storage.lun1/tpg1/acls create iqn.1994-05.com.fedora:client1
/> iscsi/iqn.2001-04.com.example:storage.lun1/tpg1/acls/iqn.1994-05.com.fedora:client1/set auth userid=iqn.1994-05.com.fedora:client1
/> iscsi/iqn.2001-04.com.example:storage.lun1/tpg1/acls/iqn.1994-05.com.fedora:client1/set auth password=1234567890
/> saveconfig
/> exit

LIO 為核心原生,效能優於 iscsitarget,且支援 ALUA、TPG、多路徑原生管理,強烈建議新專案採用。

Copyright © Windows教程網 All Rights Reserved