Notes
- iSCSI default port 3260
- Protocol Data Unit ( PDU ): 用來溝通 iSCSI target and initiator
- iSCSI Qualified Name ( IQN ): assigned to an iSCSI node using the follow syntax:
- iqn.year-month.TLD.Internet_domain:string
- 例如 iqn.2010-05.com.mydomain:target1
- LUN: 在iSCSI 等於傳統的 iSCSI disk, An iSCSI target hosts one or more LUNs.
- iSCSI Target
- 設定檔( iSCSI Target) /etc/ietd.conf , 可以以下列三種形式產生
- LV
- Disk / Partition
- File
- iSCSI initiator
- three discover methods
- SendTargets
- iSNS
- SLP
- 套件 open-iscsi / yast-iscsi-client
- /etc/init.d/open-iscsi
- /etc/init.d/boot.open-iscsi
- 設定檔 /etc/iscsid.conf ( /etc/iscsi/iscsid.conf)
- 驗證的密碼會存放於 /etc/iscsi/send_targets/iSCSI Target主機IP,Port/裝置名稱/default
- onboot 與 automatic 的差別為 onboot 是啟動open-iscsi 以及 boot.open-iscsi 兩個服務但是沒有登入 iscsi 的裝置, 但是automatic 是會啟動服務且登入iSCSI的裝置
- 名稱由 /etc/iscsi/initiatorname.iscsi 設定檔來自動產生, 也可以手動設定,語法為
- iqn.yyyy-mm.top_level_domain.domain:n1:n2
- iSNS 伺服器 預設port 3205
Lab: iSCSI
iSCSI Target:
1.安裝相關套件
#yast2 iscsi-server
- 會提示要安裝 iscsitarget 套件
- 選取開機時啟動
- 開啟Firewall --> 點選完成
2.建立一個 Partition
( 不需要格式化) 這邊使用 4GB來測試
或是
一個檔案來測試, 例如
#mkdir /iscsi
#dd if=/dev/zero of=/iscsi/first bs=1M count=1024
3.建立相關設定
#yast2 iscsi-server
- 點選 Global 全域 頁面
- 點選 目標 Target 頁面
- 刪除預設的 Target, 點選刪除 --> 點選 繼續
- 點選新增按鈕 --> LUN 名稱會自動產生
- 點選 新增 按鈕 --> 輸入或是選取路徑 ( 例如 /dev/sdb1) --> 點選確定
- 將要納入 iSCSI Target 的檔案或是Partition 都納入
- 點選下一步
- 取消勾選 無驗證
- 點選 新增 ( 內送驗證 ), 輸入使用者名稱以及密碼 ( 建議要 12 個字元以上才符合 CHAP 限制, 以免Windows 那邊連線有問題 ) --> 確定
- 點選 完成 並重新啟動服務
設定完成之後觀察 /etc/ietd.conf 內容
IncomingUser root novell
Target iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
Lun 0 Path=/dev/sdb1,Type=fileio
Lun 1 Path=/iscsi/first-device,Type=fileio
觀察相關資訊
# cat /proc/net/iet/volume
tid:1 name:iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
lun:0 state:0 iotype:fileio iomode:wt path:/dev/sdb1
lun:1 state:0 iotype:fileio iomode:wt path:/iscsi/first-device
# cat /proc/net/iet/session
tid:1 name:iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
**iSCSI Initiator**
建立之前觀察一下裝置
# ls /dev/disk/by-path/
pci-0000:00:02.5-scsi-0:0:0:0
pci-0000:00:02.5-scsi-0:0:0:0-part1
pci-0000:00:02.5-scsi-0:0:0:0-part2
pci-0000:00:02.5-scsi-1:0:0:0
安裝相關套件
#yast2 iscsi-client
如果被提示要安裝open-iscsi套件, 就點選安裝
- 點選開機時啟動 When Booting
- 點選 探查的目標 Discovered Targets 頁面
- 點選 探查 Discovery
- 輸入 iSCSI Target 的IP位址
- 點選下一步 開始Discover
- 這個時候會找到分享出來的裝置, 點選 登入
- 取消 無驗證
- 勾選 外送驗證 ( 因為在 iSCSI Target 那邊是設定 內送驗證 )
- 輸入 帳號 還有密碼, 點選 下一步
- 這個時候會觀察到 已連線 ( Connected )的欄位 就會顯示為 真(True)
- 點選 已連線目標 頁面
- 確認 啟動(Start-up)欄位 設定為 onboot ( 如果沒有, 點選切換啟動 Toggle Startup)
- onboot 與 automatic 的差別為 onboot 是啟動open-iscsi 以及 boot.open-iscsi 兩個服務但是沒有登入 iscsi 的裝置, 但是automatic 是會啟動服務且登入iSCSI的裝置
- 點選 完成
觀察相關資訊
# lsscsi
[0:0:0:0] disk ATA ST380011A 3.06 /dev/sda
[1:0:0:0] cd/dvd SONY DVD-ROM DDU1622 AS72 /dev/sr0
[3:0:0:0] disk IET VIRTUAL-DISK 0 /dev/sdb
[3:0:0:1] disk IET VIRTUAL-DISK 0 /dev/sdc
# ls /dev/disk/by-path/
ip-192.168.123.201:3260-iscsi-iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275-lun-0
ip-192.168.123.201:3260-iscsi-iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275-lun-1
pci-0000:00:02.5-scsi-0:0:0:0
pci-0000:00:02.5-scsi-0:0:0:0-part1
pci-0000:00:02.5-scsi-0:0:0:0-part2
pci-0000:00:02.5-scsi-1:0:0:0
使用 iscsiadm 觀察 iSCSI Target
# iscsiadm -m discovery -t st -p 192.168.123.201
# iscsiadm -m node -o delete
列出目前的 session
# iscsiadm -m session
tcp: [5] 192.168.123.201:3260,1 iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
# iscsiadm -m discovery -t st -p 192.168.123.201
- -m 為模式 discovery 為探查
- -t 為 discovery 的方式 st 為SendTargets 或是也可以使用 isns
- -p 為iSCSI Target 的IP與port ( IP_Address:port)
使用 iscsiadm 登出
#iscsiadm -m node -T iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275 -u
- -m 為模式 採取 node 模式
- -T 為指定Target 名稱 ( iqn)
- -u 為登出 ( 一旦登出之後 /etc/iscsi/send_targets/iSCSI Target主機IP,Port/裝置名稱/default 檔案就會被刪除, 登入驗證相關資訊就要重新建立 )
列出找到的 iSCSI Targets
#iscsiadm -m node
192.168.123.201:3260,1 iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
刪除找到的 iSCSI Targets ( 前提是沒有 Session 在使用)
# iscsiadm -m node -o delete
列出目前的 session
# iscsiadm -m session
tcp: [5] 192.168.123.201:3260,1 iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
列出目前所有 session 的統計資訊
# iscsiadm -m session -s
Stats for session [sid: 5, target: iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275, portal: 192.168.123.201,3260]
iSCSI SNMP:
txdata_octets: 9500
rxdata_octets: 1732356
noptx_pdus: 0
scsicmd_pdus: 121
tmfcmd_pdus: 0
login_pdus: 0
text_pdus: 0
dataout_pdus: 0
logout_pdus: 0
snack_pdus: 0
noprx_pdus: 0
scsirsp_pdus: 121
tmfrsp_pdus: 0
textrsp_pdus: 0
datain_pdus: 280
logoutrsp_pdus: 0
r2t_pdus: 0
async_pdus: 0
rjt_pdus: 0
digest_err: 0
timeout_err: 0
iSCSI Extended:
tx_sendpage_failures: 0
rx_discontiguous_hdr: 0
eh_abort_cnt: 0
列出某一個session 的詳細資訊 -r 後面接 session ID
# iscsiadm -m session -r 5
node.name = iqn.2010-05.com.digitalairline:f166a8b0-4644-4ea1-a888-a9c399f9d275
node.tpgt = 1
node.startup = onboot
iface.hwaddress = default
iface.ipaddress = default
iface.iscsi_ifacename = default
iface.net_ifacename = default
iface.transport_name = tcp
iface.initiatorname =
node.discovery_address = 192.168.123.201
node.discovery_port = 3260
node.discovery_type = send_targets
node.session.initial_cmdsn = 0
node.session.initial_login_retry_max = 8
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.auth.authmethod = CHAP
node.session.auth.username = root
node.session.auth.password = ********
node.session.auth.username_in =
node.session.auth.password_in =
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 20
node.session.err_timeo.host_reset_timeout = 60
node.session.iscsi.FastAbort = Yes
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.DefaultTime2Wait = 2
node.session.iscsi.MaxConnections = 1
node.session.iscsi.MaxOutstandingR2T = 1
node.session.iscsi.ERL = 0
node.conn[0].address = 192.168.123.201
node.conn[0].port = 3260
node.conn[0].startup = onboot
node.conn[0].tcp.window_size = 524288
node.conn[0].tcp.type_of_service = 0
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.auth_timeout = 45
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
node.conn[0].iscsi.MaxRecvDataSegmentLength = 131072
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
8 則留言:
您好:
看到您寫的iSCSI文章對我幫助非常大。謝謝您!但我有一個問題跟您請教,當我設定好iSCSI initiator並且也已使用yast format完成了。但當我重新開機時系統無法自動mount起來。發現是在開機時iSCSI還未啟動。有什麼設定可以將iSCSI的Partiton在開機時自動mount起來?
OS Version:sles11
謝謝~
hello, Hunter
這個要看您建立 iscsi 的時候是使用檔案還是 Partition的方式來建立
實務上面發現如果是以 檔案的方式來建立, Windows 7 的確沒有自動帶起來. 以Partition 的方式就沒有這個問題.
另外 iScsi 的Target 也要選取 automatic
^__^
Nice to see you reply
oh?
How about /etc/fstab ?
你好:
我是用SLES 11去連iSCSI的Storage,用yast2切Partition..因為會寫入fstab導致在開機時無法mount..所以是否有方法可以解?
PS:因為我現在是先在fstab中將該Partition設為noauot,開完機後再mount..但總覺得這個方法不好.
謝謝~
無法 mount 的 error messages 為?
晚上回去, 手上有機器在幫你測試一下?
老師您好:目前設定均已成看也看的到目標磁碟,但卻老是在連線時發生BUG最後顯示錯誤訊息無法連線到目標,在防火牆部分已經允許iSCSI啟動器了。
作業系統:win7 & SLES11
張貼留言