Linux iSCSI 磁盤共享管理
iSCSI 服務是通過服務端(target)與客戶端(initiator)的形式來提供服務。iSCSI 服務端用於存放存儲源的服務器,將磁盤空間共享給客戶使用,客戶端可以再不充氣的情況下擴容磁盤空間。iSCSI 服務端通過已終端的形式配置存儲共享過程,每一個目錄的含義都不同,下面會詳細講到。iSCSI 協議是通過客戶端名稱進行驗證的,也就是說,用戶在訪問存儲共享資源時不需要輸入密碼,只要 iSCSI 客戶端的名稱與服務端中設置的訪問控制列表中某一名稱條目一致即可,因此需要在 iSCSI 服務端的配置文件中寫入一串能夠驗證用戶信息的名稱。
Linux iSCSI 結構介紹
目錄介紹
- # iSCSI服務端存放本地共享設備的位置。
- /backstores/block
- # SCSI服務端管理target。
- /iscsi
- # SCSI服務端共享資源設備加入到target。
- /iscsi/target名稱目錄/tpg1/luns
- # SCSI服務端目錄用於存放能夠訪問共享存儲資源的客戶端名稱。
- /iscsi/target名稱目錄/tpg1/acls
- # SCSI服務端目錄用於指定客戶端可被訪問的監聽IP地址及端口
- /iscsi/target名稱目錄/tpg1/portals
Linux iSCSI 服務端配置
- 需求:共享服務端的 /dev/sdb4 設備
- 版本:targetd-0.8.6
- 版本:targetcli-2.1
1、服務端安裝iSCSI
yum -y install targetd targetcli
2、啟動服務並設置開機自啟動
systemctl start targetd
systemctl enable targetd
3、進入iSCSI服務終端、ls查看目錄、服務端終端命令: targetcli

[root@linuxprobe ~]# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb34 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> 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
4、進入 /backstores/block 目錄下、指定共享磁盤設備,命名磁盤設備
# 進入指定目錄下 /> cd /backstores/block
# 創建共享設備,命名為 “disk0” /backstores/block> create disk0 /dev/sdb4

Created block storage object disk0 using /dev/sdb4.
5、進入 /iscsi 目錄下創建iSCSI target 名稱
# 進入指定目錄
cd /iscsi
# 創建新的 target 名稱 /iscsi> create

Created target iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.a52e09c8e24f. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.
6、進入 /iscsi/target名稱目錄/tpg1/luns 目錄下創建共享資源加入到target
# 進入指定目錄 /iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d/tpg1/luns # 創建共享設備到 target /iscsi/iqn.20...f2d/tpg1/luns> create /backstores/block/disk0

Created LUN 0. Created LUN 0->0 mapping in node ACL iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:client
7、進入 /iscsi/target名稱目錄/tpg1/acls 設置訪問控制,創建存入客戶端可訪問名稱
# 進入指定目錄 /iscsi/iqn.20...f2d/tpg1/luns> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d/tpg1/acls/ # 創建存入客戶端可訪問名稱 /iscsi/iqn.20...f2d/tpg1/acls> create iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:xsk

Created Node ACL for iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:xsk Created mapped LUN 0.
8、進入 /iscsi/target名稱目錄/tpg1/portals 設置服務端共享設備的網卡IP地址及端口
# 進入指定目錄 /iscsi/iqn.20...f2d/tpg1/acls> cd /iscsi/iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d/tpg1/portals/ # 添加IP及端口、端口可以不填默認3260 /iscsi/iqn.20.../tpg1/portals> create 192.168.1.17 3260

報錯:Could not create NetworkPortal in configFS # 報錯可以刪除 0.0.0.0 delete 0.0.0.0 3260 注:繼續添加IP即可
9、保存退出並重啟服務
# 保存設置
/> saveconfig
# 退出 /> exit # 重啟服務 systemctl restart targetd

firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
其他操作

# 該 tgp 關閉賬號驗證 /iscsi/../tpg1> set attribute authentication=0

# 該 tgp 使用自定義ad實現節點訪問限制 /iscsi/.../tpg1> set attribute generate_node_acls=0
Linux iSCSI 客戶端配置
- 需求:使用服務端共享設備並掛載使用
- 版本:iscsi-initiator-utils-6.2.0.874
- 版本:iscsi-initiator-utils-iscsiuio-6.2.0.874
1、安裝iscsi客戶端
yum install iscsi-initiator-utils
2、將服務端訪問控制表中的共享名稱加入到客戶端配置文件
vim /etc/iscsi/initiatorname.iscsi
iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d:xsk
3、啟動iscsi客戶端並設置開機自啟
systemctl restart iscsid
systemctl enable iscsid
4、通過 iscsiadm 工具掃描發現 服務端共享的存儲設備
# 其中,-m discovery 參數的目的是掃描並發現可用的存儲資源,-t st 參數為執行掃描操作的類型,-p 192.168.10.17 數為 iSCSI 服務端的IP 地址 iscsiadm -m discovery -t st -p 192.168.1.17

192.168.1.17:3260,1 iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d
5、登錄 iSCSI 指定共享服務端
# 其中,-m node 參數為將客戶端所在主機作為一台節點服務器,-T iqn.20.... 參為要使用的存儲資源,-p 192.168.10.17 參數依然為對方iSCSI 服務端的 IP 地址。最后使用--login 或-l 參數進行登錄驗證。 iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d -p 192.168.1.17 --login

Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d, portal: 192.168.1.17,3260] (multiple) Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d, portal: 192.168.1.17,3260] successful.
6、查看共享到客戶端的磁盤設備
# 已共享到客戶端本地 命令:file /dev/sdb 輸出:/dev/sdb: block special
7、格式化共享設備
# 格式化格式為xfs mkfs.xfs /dev/sdb
8、臨時掛載設備
# 創建掛載目錄 mkdir /iscsi # 臨時掛載設備 mount /dev/sdb /iscsi
9、永久掛載共享設備
vim /etc/fstab
UUID=eb9cbf2f-fce8-413a-b770-8b0f243e8ad6 /iscsi xfs defaults,_netdev 0 0

命令:blkid | grep /dev/sdb 輸出:/dev/sdb: UUID="eb9cbf2f-fce8-413a-b770-8b0f243e8ad6" TYPE="xfs"
注:_netdev 參數含義為在有網絡傳輸時使用。
10、刪除iSCSI共享資源
# 其中,-u 參數將其設備卸載 iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.037746bdcf2d -u