最近因為實驗需要, 所以又要架設 iSCSI Server ( Target ) 了
寫這篇文章真的要先感謝 Netman - 指導我 troubleshooting
不然還真的很難從錯誤迴圈跳出來 :)
OS: openSUSE Leap 42.1
之前的文章已經是 2010 年了 :)
首先準備空間
透過 yast2 disk 建立 RAW partition
#yast2 disk
按照自己要的大小建立, 選擇 Raw Volume
接下來搜尋 iscsi 套件
預設只有裝 client 沒有裝 server
# zypper search iscsi
Retrieving repository 'openSUSE-Leap-42.1-Update' metadata ...............[done]
Building repository 'openSUSE-Leap-42.1-Update' cache ....................[done]
Retrieving repository 'openSUSE-Leap-42.1-Update-Non-Oss' metadata .......[done]
Building repository 'openSUSE-Leap-42.1-Update-Non-Oss' cache ............[done]
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
--+------------------------+----------------------------------------+-----------
i | iscsiuio | Linux Broadcom NetXtremem II iscsi s-> | package
i | open-iscsi | Linux* Open-iSCSI Software Initiator | package
| open-iscsi | Linux* Open-iSCSI Software Initiator | srcpackage
i | yast2-iscsi-client | YaST2 - iSCSI Client Configuration | package
| yast2-iscsi-lio-server | Configuration of iSCSI LIO target | package
現在的 iSCSI Server 套件已經變成 yast2-iscsi-lio-server
來安裝它吧 :)
# zypper install yast2-iscsi-lio-server
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 2 NEW packages are going to be installed:
lio-utils yast2-iscsi-lio-server
2 new packages to install.
Overall download size: 202.1 KiB. Already cached: 0 B. After the operation,
additional 1.8 MiB will be used.
Continue? [y/n/? shows all options] (y): Y
設定 iSCSI Server - 使用 yast2
# yast2 iscsi-lio-server
首先是歡迎畫面
在 Service 標籤內, Service Start 點選 When Booting ( 開機啟動 )
因為是實驗機器, 所以沒有設定 Firewall
點選 Global 標籤
暫時使用 No Authentication 方式, 後續可以針對 Target 設定驗證就好
點選 Targets 標籤
點選 Add 新增 Target
點選 Add 新增 Target
進入 Target 設定畫面, 點選 Add 來新增 LUN
在LUN 設定畫面內, 輸入 Path
我是用分割區的方式, 所以輸入 /dev/sdb1 ( 分割區所在位置 )
點選 OK
點選 Next ( 因為預設有勾選 Use Authentication, 所以接下來進行驗證設定 )
接下來就是一個非常重要的部份, 新增 client
點選 Add 來新增 client
這邊第1個重點就是
Client name 不能亂取, 必須跟 client 那邊的名稱一致 ( 很重要要講 3 次 )
那 Client 的名字如何取得呢?
如果是 VMware ESXi
就到 主機的 組態 -- > 儲存裝置介面卡 ( 記得先新增 iSCSI Software Adapter) -- > 內容
點選 設定 就看得到了
Linux Client 去查詢 /etc/iscsi/initiatorname.iscsi
# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1996-04.de.suse:01:cb6d653143
因為以前作 lab 都是直接 copy name, 這次不知道為何自己亂填 client
所以一直會遇到 login fail 的狀況
---- 所以這個應該是第1層保護, client name 如果沒有 match 不能連線
接下來點選 Edit LUN
點選 Add 來設定 LUN 對應
依照選的 LUN 點選 Change 下拉式選單對應到要對應的 LUN
點選 OK
點選 Edit Auth 設定 CHAP 驗證密碼
這邊我要記一下我碰到的現象
我的 username 原本是設定 nchc , 不知道是不是太短? 一直有問題
設定為 nchcuser 可能長度夠了, 才過的去?
另外 密碼的部份建議設定 12 字元以上, windows 那邊的 client 比較不會有問題( 印象中 )
因為是 Server 所以勾選 Incoming Authentication
輸入 username 與 Password
點選 OK
觀察一下相關設定都被設定上去
點選 Next
點選 Finish 完成
這邊後記一下, 相關的設定, 可以去觀察 /etc/target 目錄
# ls /etc/target/
lio_setup.sh lio_start.sh tcm_setup.sh tcm_start.sh
因為是 SUSE 系列, 所以可以用 rctarget 觀察
# rctarget status
target.service - "Generic Target Mode service"
Loaded: loaded (/usr/lib/systemd/system/target.service; enabled)
Active: active (exited) since Wed 2016-05-25 20:04:44 CST; 33min ago
Main PID: 435 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/target.service
當然也是用 systemctl 可以
# systemctl status target.service
target.service - "Generic Target Mode service"
Loaded: loaded (/usr/lib/systemd/system/target.service; enabled)
Active: active (exited) since Wed 2016-05-25 20:04:44 CST; 34min ago
Main PID: 435 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/target.service
==== 接下來就是 Client 的連接了 ====
首先是 VMware ESXi
就到 主機的 組態 -- > 儲存裝置介面卡 ( 記得先新增 iSCSI Software Adapter)
點選 內容 -- > 點選 動態探索 -- > 點選新增
輸入 iSCSI 伺服器 IP
點選 CHAP
取消勾選 從父系繼承
選取 使用 CHAP
輸入名稱
輸入密碼
點選確定
點選確定
點選 靜態探索標籤
如果設定正常, 應該會看到目標名稱
點選 關閉
接下來 VMware 會要求重新掃描
點選 是
這個時候就會看到已掛接
大功告成
如果是 openSUSE client
如果今天是另外一個 client 要掛接上來
在 server 那邊
#yast2 iscsi-lio-server 設定內
在當初新增完 client 時, 其實旁邊還有 COPY 按鈕可以使用 :)
點選 Copy
輸入 openSUSE client 的 iqn 名稱 ( 參考 /etc/iscsi/initiatorname.iscsi )
點選 OK
接下來 Next -- > Finish 就可以完成
回到 openSUSE Client
使用 yast2 方式設定
# yast2 iscsi-client
一樣 Service 標籤
選取 When Booting
點選 Discovered Target 標籤
點選 Discovery
輸入 IP -- > 點選 Next
這邊我其實真的很想探究一下
這邊如果取消勾選 No Authentication, 用 username 來驗證是會 fail, 因為要在下一個畫面才要驗證, 先記下來.
出現 Target
點選 Connect
出現設定畫面
Startup 選 automatic
在 Outgoing Authentication 輸入 username 與 密碼
點選 Next
確認 Connected 為 True
點選 OK
完成設定
可以使用 lsscsi 觀察
# lsscsi
[0:0:0:0] disk VMware Virtual disk 1.0 /dev/sda
[0:0:1:0] disk VMware Virtual disk 1.0 /dev/sdb
[2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0
[6:0:0:0] disk LIO-ORG IBLOCK 4.0 /dev/sdc
大功告成
~ enjoy it