一、簡介

  • SCSI(Small Computer System Interface),小型計算機系統介面,是一種用於計算機及其周邊裝置之間(硬碟、軟碟機、光碟機、印表機、掃描器等)系統級介面的獨立處理器標準。SCSI 標準定義命令、通訊協議以及實體的電氣特性(換成 OSI 的說法,就是佔據物理層、連結層、套接層、應用層),最大部分的應用是在儲存裝置上(例如硬碟、磁帶機),除外,SCSI 可以連線的裝置包括有掃描器、光學裝置(像 CD、DVD)、印表機等等,SCSI 命令中有條列出支援的裝置 SCSI 周邊裝置。理論上,SCSI 不可能連線所有的裝置,所以有“1Fh - unknown or no device type”這個引數存在
  • iSCSI(Internet Small Computer System Interface,發音為/ˈаɪskʌzi/),Internet 小型計算機系統介面,又稱為 IP-SAN,是一種基於因特網及 SCSI-3 協議下的儲存技術,由 IETF 提出,並於 2003 年 2 月 11 日成為正式的標準。與傳統的 SCSI 技術比較起來,iSCSI 技術有以下三個革命性的變化:
    • 把原來只用於本機的 SCSI 協議透過 TCP/IP 網路傳送,使連線距離可作無限的地域延伸
    • 連線的伺服器數量無限(原來的 SCSI-3 的上限是 15)
    • 由於是伺服器架構,因此也可以實現線上擴容以至動態部署
  • 個人理解:
    • iscsi 的儲存單元表現為硬碟的形式(網路硬碟)
    • SMB 和 NFS 服務是基於檔案系統的資料共享,而 iscsi 基於整體的儲存塊,要使用該儲存單元需要客戶端通過 TCP/IP 協議遠端連線,並對映為本地磁碟

二、服務端配置

1. 準備儲存空間

  • 硬碟形式:VMware 中編輯虛擬機器設定,新增一塊硬碟(/dev/sdb
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 1G 0 disk # 新新增的硬碟
sr0 11:0 1 4.4G 0 rom
$
  • 檔案形式:dd申請空間
$ dd if=/dev/zero of=/opt/disk.img bs=1024k count=512
記錄了512+0 的讀入
記錄了512+0 的寫出
536870912位元組(537 MB)已複製,2.49767 秒,215 MB/秒
$ ls -lh /opt/
總用量 512M
-rw-r--r--. 1 root root 512M 9月 27 09:45 disk.img

2. 安裝 iscsi 服務端

$ yum install targetd targetcli -y
# 建立iscsi磁碟
$ targetcli
targetcli shell version 2.1.53
/> ls
o- / ................................................................................... [...]
o- backstores ........................................................................ [...]
| o- block ............................................................ [Storage Objects: 0] # 存放硬碟
| o- fileio ........................................................... [Storage Objects: 0] # 存放檔案
| o- pscsi ............................................................ [Storage Objects: 0]
| o- ramdisk .......................................................... [Storage Objects: 0]
o- iscsi ...................................................................... [Targets: 0]
o- loopback ................................................................... [Targets: 0]
/> /backstores/block create idisk1 /dev/sdb
Created block storage object idisk1 using /dev/sdb.
/> /backstores/fileio create idisk2 /opt/disk.img
Created fileio idisk2 with size 536870912
/> ls
o- / ................................................................................... [...]
o- backstores ........................................................................ [...]
| o- block ............................................................ [Storage Objects: 1]
| | o- idisk1 ................................... [/dev/sdb (1.0GiB) write-thru deactivated]
| | o- alua ............................................................. [ALUA Groups: 1]
| | o- default_tg_pt_gp ................................. [ALUA state: Active/optimized]
| o- fileio ........................................................... [Storage Objects: 1]
| | o- idisk2 ............................ [/opt/disk.img (512.0MiB) write-back deactivated]
| | o- alua ............................................................. [ALUA Groups: 1]
| | o- default_tg_pt_gp ................................. [ALUA state: Active/optimized]
| o- pscsi ............................................................ [Storage Objects: 0]
| o- ramdisk .......................................................... [Storage Objects: 0]
o- iscsi ...................................................................... [Targets: 0]
o- loopback ................................................................... [Targets: 0]
# 建立服務端程式
/> /iscsi create iqn.2021-09.pip.cc:server
Created target iqn.2021-09.pip.cc:server.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> ls
o- / ................................................................................... [...]
o- backstores ........................................................................ [...]
| o- block ............................................................ [Storage Objects: 1]
| | o- idisk1 ................................... [/dev/sdb (1.0GiB) write-thru deactivated]
| | o- alua ............................................................. [ALUA Groups: 1]
| | o- default_tg_pt_gp ................................. [ALUA state: Active/optimized]
| o- fileio ........................................................... [Storage Objects: 1]
| | o- idisk2 ............................ [/opt/disk.img (512.0MiB) write-back deactivated]
| | o- alua ............................................................. [ALUA Groups: 1]
| | o- default_tg_pt_gp ................................. [ALUA state: Active/optimized]
| o- pscsi ............................................................ [Storage Objects: 0]
| o- ramdisk .......................................................... [Storage Objects: 0]
o- iscsi ...................................................................... [Targets: 1]
| o- iqn.2021-09.pip.cc:server ................................................... [TPGs: 1]
| o- tpg1 ......................................................... [no-gen-acls, no-auth]
| o- acls .................................................................... [ACLs: 0] # 建立客戶端聯結器
| o- luns .................................................................... [LUNs: 0] # 建立服務卷
| o- portals .............................................................. [Portals: 1]
| o- 0.0.0.0:3260 ............................................................... [OK]
o- loopback ................................................................... [Targets: 0]
# 建立服務卷:磁碟做成服務卷才能被客戶端識別
/> cd /iscsi/iqn.2021-09.pip.cc:server/tpg1/
/iscsi/iqn.20...c:server/tpg1> luns/ create /backstores/block/idisk1
Created LUN 0.
/iscsi/iqn.20...c:server/tpg1> luns/ create /backstores/fileio/idisk2
Created LUN 1.
/iscsi/iqn.20...c:server/tpg1> ls
o- tpg1 ............................................................... [no-gen-acls, no-auth]
o- acls .......................................................................... [ACLs: 0]
o- luns .......................................................................... [LUNs: 2]
| o- lun0 ..................................... [block/idisk1 (/dev/sdb) (default_tg_pt_gp)]
| o- lun1 ............................... [fileio/idisk2 (/opt/disk.img) (default_tg_pt_gp)]
o- portals .................................................................... [Portals: 1]
o- 0.0.0.0:3260 ..................................................................... [OK]
# 建立客戶端聯結器(啟用chap認證:驗證客戶端身份)
/iscsi/iqn.20...c:server/tpg1> acls/ create iqn.2021-09.pip.cc:client
Created Node ACL for iqn.2021-09.pip.cc:client
Created mapped LUN 1.
Created mapped LUN 0.
/iscsi/iqn.20...c:server/tpg1> cd acls/iqn.2021-09.pip.cc:client/
/iscsi/iqn.20...pip.cc:client> set auth userid=test
Parameter userid is now 'test'.
/iscsi/iqn.20...pip.cc:client> set auth password=112233445566 # 密碼要在[12,16]範圍內
Parameter password is now '112233445566'.
/iscsi/iqn.20...pip.cc:client> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
# 啟動targetd服務
$ systemctl restart targetd
$ systemctl enable targetd
Created symlink from /etc/systemd/system/multi-user.target.wants/targetd.service to /usr/lib/systemd/system/targetd.service.
$ ss -anpt | grep 3260
LISTEN 0 256 *:3260 *:*

三、客戶端配置

1. Linux 客戶端

# 安裝客戶端程式 iscsi-initiator-utils
$ yum -y install iscsi-initiator-utils
$ ls /etc/iscsi/
initiatorname.iscsi iscsid.conf
$ vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2021-09.pip.cc:client # 定義客戶端聯結器名稱
$ vi /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP # 啟用chap認證
node.session.auth.username = test
node.session.auth.password = 112233445566
# 啟動iscsid服務
$ systemctl restart iscsid
$ systemctl enable iscsid
# 發現儲存伺服器
$ iscsiadm -m discovery -t st -p 192.168.11.60
192.168.11.60:3260,1 iqn.2021-09.pip.cc:server
# 登入儲存伺服器
$ iscsiadm -m node -T iqn.2021-09.pip.cc:server -p 192.168.11.60 --login
Logging in to [iface: default, target: iqn.2021-09.pip.cc:server, portal: 192.168.11.60,3260] (multiple)
Login to [iface: default, target: iqn.2021-09.pip.cc:server, portal: 192.168.11.60,3260] successful.
# 使用
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm
sdb 8:16 0 1G 0 disk # *
sdc 8:32 0 512M 0 disk # *
sr0 11:0 1 4.4G 0 rom

2. Windows 客戶端

  • 開啟:控制面板 / 所有控制面板項 / 管理工具 / iSCSI 發起程式

配置:

連線方式一:

連線方式二:

配置卷: