1、前言
在 FreeBSD Ports Collection 中有二套 iSCSi Target 套件比較主流,分別是來至 NetBSD 的 iscsi-target (/usr/ports/net/iscsi-target),以及目前搭配內建於 FreeNAS 的 istgt (/usr/ports/net/istgt),並且在 FreeBSD 8 內建已經有 iSCSI initiator,而本篇內容將以 istgt 套件進行 iSCSI Targe 實作。文章目錄
1、前言2、實作環境
3、安裝及設定
步驟1.安裝 istgt 套件
步驟2.修改 istgt 設定檔
步驟3.建立 iSCSI Target Disk File
步驟4.設定開機時自動執行 istgt 服務
步驟5.啟動 istgt 服務
4、參考
5、Me FAQ
Q1.啟動 istgt 服務時出現錯誤訊息?
2、實作環境
- FreeBSD 8.2 RELEASE-p4
- istgt-20111008
3、安裝及設定
步驟 1. 安裝 istgt 套件
# cd /usr/ports/net/istgt //切換至安裝路徑
# make install clean //安裝套件並清除暫存檔案
步驟 2. 修改 istgt 設定檔
由於實作環境當中並未採用 CHAP 機制,在設定檔中只會採用 iSCSI Initiator 的 IQN 以及網段進行限制,所以只需要修改主要設定檔 istgt.conf 即可,若需要 CHAP 機制請配合修改 auth.conf、istgtcontrol.conf,以下為此次實作的 istgt.conf 設定檔內容:# cat /usr/local/etc/istgt/istgt.conf
Global
Comment "Global section"
NodeBase "iqn.2012-05.org.weithenn.istgt" //iSCSI Target IQN
PidFile /var/run/istgt.pid
MediaDirectory /var/istgt
LogFacility "local7"
Timeout 30
NopInInterval 20
DiscoveryAuthMethod Auto
MaxSessions 16
MaxConnections 4
MaxR2T 32
MaxOutstandingR2T 16
DefaultTime2Wait 2
DefaultTime2Retain 60
FirstBurstLength 262144
MaxBurstLength 1048576
MaxRecvDataSegmentLength 262144
InitialR2T Yes
ImmediateData Yes
DataPDUInOrder Yes
DataSequenceInOrder Yes
ErrorRecoveryLevel 0
UnitControl
Comment "Internal Logical Unit Controller"
AuthMethod Auto
Portal UC1 127.0.0.1:3261
Netmask 127.0.0.1
PortalGroup1
Comment "Portal Group"
Portal DA1 192.168.1.250:3260 //iSCSI Target Listen IP 及 Port 號
InitiatorGroup1
Comment "Initiator Group1"
InitiatorName "iqn.1998-01.com.vmware:vm1-2985561d" //允許此 iSCSI Initiator IQN 可連接
InitiatorName "iqn.1998-01.com.vmware:vm2-63bd9cf4" //允許此 iSCSI Initiator IQN 可連接
Netmask 192.168.1.0/24 //允許此網段的 iSCSI Initiator 可連接
LogicalUnit1
Comment "iSCSI Hard Disk"
TargetName disk1
TargetAlias "iSCSI Data Disk1"
Mapping PortalGroup1 InitiatorGroup1
AuthMethod Auto
UseDigest Auto
UnitType Disk
LUN0 Storage /home/backup/VM/istgt-disk1 300GB //iSCSI Target 空間
步驟 3. 建立 iSCSI Target Disk File
使用如下指令建立 iSCSI Target Disk File,請注意!! 設定檔中設定為 300 GB 而下列指令其單位為 MB。# dd if=/dev/zero of=/home/backup/VM/istgt-disk1 bs=`expr 1024 \* 1024` count=300000
步驟 4. 設定開機時自動執行 istgt 服務
修改 rc.conf 設定檔,以便下次機器重新開機時能自動啟動 istgt 服務。# vi /etc/rc.conf //修改 rc.conf 設定檔
istgt_enable="YES" //加入此行
步驟 5. 啟動 istgt 服務
相關完成後我們鍵入以下指令來啟動 istgt 服務。# /usr/local/etc/rc.d/istgt start
Starting istgt.
istgt version 0.4 (20111008)
normal mode
LU1 HDD UNIT
LU1: LUN0 file=/home/backup/VM/istgt-disk1, size=322122547200
LU1: LUN0 629145600 blocks, 512 bytes/block
LU1: LUN0 300.0GB storage for iqn.2012-05.org.weithenn.istgt:disk1
LU1: LUN0 serial 10000001
LU1: LUN0 read cache enabled, write cache enabled
LU1: LUN0 command queuing enabled, depth 32
檢查執行序 (process) 是否已有 istgt 服務
# ps aux |grep istgt //查看 istgt 執行序是否運作
root 58558 0.0 0.8 37680 16848 ?? Ss 12:31下午 2:49.80 /usr/local/bin/istgt -c /usr/local/etc/istgt/istgt.conf
檢查相關 Port 號是否 Listen
# sockstat |grep istgt
root istgt 58558 3 dgram -> /var/run/logpriv
root istgt 58558 6 tcp4 127.0.0.1:3261 *:*
root istgt 58558 7 tcp4 10.10.25.250:3260 *:*
4、參考
- FreeBSD iSCSI How-To
- How to use FreeBSD as a ISCI Target and Initiator (with CHAP)
- An iSCSI target implementation for multipath failover cluster nodes
- iSCSI: istgt, docs, questions, multiple target config
5、Me FAQ
Q1. 啟動 istgt 服務時出現錯誤訊息?
Error Message:啟動 istgt 服務時出現錯誤訊息?
# /usr/local/etc/rc.d/istgt start
Starting istgt.
istgt version 0.4 (20111008)
normal mode
istgt_lu_ctl.c:1483:istgt_init_uctl: ***ERROR*** find_cf_section failed()
istgt.c:1104:istgt_init: ***ERROR*** istgt_init_uctl() failed
istgt.c:1659:main: ***ERROR*** istgt_init() failed
/usr/local/etc/rc.d/istgt: WARNING: failed to start istgt
Ans:
此次我的狀況是在 istgt.conf 設定檔中,對於 UnitControl 部份沒有設定好所造成,修改為如下設定內容後運作正常。
[UnitControl]
Comment "Internal Logical Unit Controller"
AuthMethod Auto
Portal UC1 127.0.0.1:3261
Netmask 127.0.0.1