- 先檢查套件資訊,在 iSCSI Server 這台上要安裝的套件是 targetcli 這個套件,若是沒有裝或在 repository 中沒有的話記得 yum update 一下.
Server 端
查詢套件 targetcli
[code lang=”bash”]# yum info targetcli[/code]
安裝套件 targetcli 及啟動服務
[code lang=”bash”] # yum -y install targetcli [/code]
[code lang=”bash”] # systemctl enable target.service
# systemctl start target.service[/code]
列出目前可用的 block storage, 當然若是不想用 block storage 做為 iSCSI 的磁碟,當然也可以用其它幾種
[code lang=”bash”] # lsblk[/code]
可透過查詢 man targetcli 在 BACKSTORES 章節中有說明,目前支援 FILEIO、BLOCK、PSCSI 及 RAMDISK 4 種,以下說明示範使用 BLOCK及 FILEIO 。
執行 targetcli 交談式介面進行設定
[code lang=”bash”] # targetcli[/code]
[code lang=”bash”]
/> backstores/block create name=my_iscsi1 dev=/dev/sdb
/> backstores/fileio create name=my_iscsi2 file_or_dev=/iscsi_fileio.dsk size=10G
/> iscsi/ create wwn=iqn.2017-07.example.com:iscsi1
/> iscsi/iqn.2017-07.example.com:iscsi1/tpg1/acls create wwn=iqn.2017-07.example.com:desktop1
/> iscsi/iqn.2017-07.example.com:iscsi1/tpg1/luns create lun=0 storage_object=/backstores/block/my_iscsi1
/> iscsi/iqn.2017-07.example.com:iscsi1/tpg1/luns create lun=1 storage_object=/backstores/fileio/my_iscsi2
[/code]
exit 跳出交談式介面後會自動將設定檔存在 /etc/target/saveconfig.json 以便下次再進入時會自動讀取,若是要完整清除此設定,可以執行
[code lang=”bash”] # targetcli clearconfig confirm=True [/code]
還有一個要注意的是要確定在 Server 端的 TCP 3260 (iscsi port)在防火牆上有允許開啟,如果用 firewalld 則可以用下列指令開啟
[code lang=”bash”] # firewall-cmd –add-ports=3260/tcp –permanent [/code]
用 iptables/NetFilter 則用這個指令去開啟
[code lang=”bash”] # iptables -t filter -A INPUT -p tcp –dport 3260 -j ACCEPT [/code]
確認一下防火牆有開啟
Client 端
安裝套件 iscsi-initiator-utils
[code lang=”bash”] # yum -y install iscsi-initiator-utils [/code]
修改 initiatorname 及啟動服務 iscsid
記錄下你在 iSCSI Server 中 ACL 的設定,在這個範例中我是用 iqn.2017-07.example.com:desktop1 , 將這個值填入 /etc/iscsi/initiatorname.iscsi 中,指令及畫面如下:
[code lang=”bash”] # vi /etc/iscsi/initiatorname.iscsi[/code]
[code lang=”bash”] # systemctl enable iscsid
# systemctl start iscsid[/code]
如果到這都沒有問題,理論上 iscsid 應該可以透過下面指令去 discovery 及 login iSCSI 去取得 iSCSI server 分享出的 block storage, 其中 -T 參數要帶的是你在 iSCSI Server 中分享出的 iSCSI Target 的 WWN,用 -l 去登入,登入成功後可以用 lsblk 去看到目前就多了 iscsi 掛載上來的二個 block storage.
[code lang=”bash”] # iscsiadm -m discovery -t sendtargets -p 192.168.161.160:3260
# iscsiadm -m node -T iqn.2017-07.example.com:iscsi1 -p 192.168.161.160:3260 -l[/code]
立刻進行 make file system 後查詢 UUID,這邊我們會將 UUID 寫到 /etc/fstab 中讓系統在重開機時也會一併掛載上來.
[code lang=”bash”] # mkfs.xfs /dev/sdb
# mkfs.xfs /dev/sdc
# blkid[/code]
修改 /etc/fstab 改好存檔後先用 mount -a 測試一下,記得因為 iscsid 在開機過程中可能網路還未啟動,為了避免開機過程中掛載失敗而卡住,記得在第4個欄位中加上 _netdev 參數宣告這個是網路掛載的硬碟,待開機程序完成後再掛載,還有記得你要掛載的目的地也要存在(/mnt/iscsi1 & /mnt/iscsi2).
如果都可以掛載成功就大功告成,試試 Desktop 重開機,確定重開機後也有成功掛載
補充
- 將 iSCSI Server 的 target 設定備份存檔
[code lang=”bash”] # targetcli saveconfig test.config [/code]
- 要還原 iSCSI 設定時只要下下面這個指令即可清除原有設定並讀進備份的設定檔, 讀取後記得重啟 target.service
[code lang=”bash”]# targetcli restoreconfig test.config clear_existing=True[/code]
在 Client 中若是 iSCSI 設定已保留下來但和實際上不一致,記得將 iscsi 及 iscsid 服務停掉後 將 /var/lib/iscsi 下的檔案都刪掉後,啟動 iscsi 及 iscsid 服務後再進行一次 discovery 及 connect 的動作.
[code lang=”bash”] # systemctl stop iscsi
# systemctl stop iscsid
# rm -rf /var/lib/iscsi/*
# systemctl start iscsi
# systemctl start iscsid
# iscsiadm -m discovery -t sendtargets -p 192.168.161.160:3260
# iscsiadm -m node -T iqn.2017-07.example.com:iscsi1 -p 192.168.161.160:3260 -l[/code]
你必須 登入 才能發表評論。