1.Target端的配置
target端即磁盤陣列或其他裝有磁盤的主機。通過iscsitarget工具將磁盤空間映射到網絡上,initiator端就可以尋找發現並使用該磁盤。
注意,一個target主機上可以映射多個target到網絡上,即可以映射多個塊設備到網絡上。
1)軟件包
iscsitarget
可以從http://sourceforge.net/projects/iscsitarget/files/下載最新版本。
2)編譯安裝
很簡單,解包,編譯,安裝就可以。
tar zxvf iscsitarget-1.4.19.tar.gz
cd iscsitarget-1.4.19/
make
make install
該包會將iscsitarget需要的內核模塊,用戶層工具,服務啟動腳本,配置文件,man手冊等安裝到系統中
包括:
iscsi_trgt.ko 內核模塊
ietd iscsitarget的守護進程
ietadm iscsitarget的用戶層管理工具
/etc/init.d/iscsi-target iscsitarget的啟動腳本
/etc/ietd.conf iscsitarget的配置文件
/etc/initiators.allow 控制initiator對target的訪問權限。
/etc/initiators.deny 控制initiator對target的訪問權限。
/etc/iet/targets.allow 控制不同target的被訪問權限。
3)配置/etc/ietd.conf
Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
Lun 0 Path=/dev/sda1,Type=fileio
Alias lun0
大致說明:
Target iqn.2001-04.com.example:storage.disk2.sys1.xyz 表示該ISCSI Target 的命名,命名在同一子網內應該是唯一的,標准命名方式為:
"Target "+ target名字 (格式如下: iqn.yyyy-mm.<reversed domain name>[:identifier] )
“Lun 0 Path=/dev/sda1”表示塊設備號為0,映射的磁盤為/dev/sda1。
本次配置中 Type 的設定為"fileio",我主要用來對一個磁盤進行存儲共享。
當然也可以針對需要設置為: "file" or "LVM"。
除此之外還有很多其他參數可以設置,具體參考:
http://manpages.ubuntu.com/manpages/hardy/man5/ietd.conf.5.html
4)啟動iscsitarget
/etc/init.d/iscsi-target start
2.inititor端配置
1)軟件包
源碼包是open-iscsi,經過rpm包封裝後,名字是iscsi-initiator-utils。
2)主要安裝了下面一些文件
/etc/iscsi/iscsid.conf
/etc/rc.d/init.d/iscsi
/etc/rc.d/init.d/iscsid
/sbin/iscsi-iname
/sbin/iscsiadm
/sbin/iscsid
/sbin/iscsistart
/var/lib/iscsi
/var/lib/iscsi/ifaces
/var/lib/iscsi/isns
/var/lib/iscsi/nodes
/var/lib/iscsi/send_targets
/var/lib/iscsi/slp
/var/lib/iscsi/static
/var/lock/iscsi
3)連接target
首先要保證iscsid守護進程啟動,否測iscsiadm的一系列操作都會失敗:
/etc/init.d/iscsid start
發現target:
iscsiadm -m discovery -t sendtargets -p <iSCSI target ip>:<port>
默認情況下<port>是3260,除非你有特殊的設置。
與target建立連接:
iscsiadm -m node -T <target-name> -p <ip-address>:<port> --login
此處target-name為上一步發現target時的獲得的。
此時通過fdisk -l就可以看到映射過來的磁盤,該磁盤可以像使用本地磁盤一樣進行格式化,分區等操作。
可以通過以下命令實驗:
fdisk /dev/sdc
mkfs.ext3 /dev/sdc1
mount /dev/sdc1 /mnt
dd if=/dev/zero of=100M.img bs=1M count=100
3.target和initiator間使用CHAP驗證。
CHAP驗證有兩種,一種是針對discovery的,即如果不符合驗證的用戶名和密碼,則initiator端便無法通過"-m discovery"發現指定主機上的任何一個target。
命令會返回驗證失敗,如下:
$ iscsiadm -m discovery -t sendtargets -p 192.168.29.224
iscsiadm: Login failed to authenticate with target
iscsiadm: discovery login to 192.168.29.224 rejected: initiator error (02/01), non-retryable, giving up
另一種是針對node login的,即果不符合驗證的用戶名和密碼,則initiator端編無法通過--login登錄指定主機上的某一個target。
命令會返回驗證失敗,如下:
$ iscsiadm -m discovery -t sendtargets -p 192.168.29.224 #成功discover指定主機上的target
192.168.29.224:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
$ iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.29.224 --login #無法通過驗證,登錄失敗
Logging in to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.29.224,3260]
iscsiadm: Could not login to [iface: default, target: iqn.2001-04.com.example:storage.disk2.sys1.xyz, portal: 192.168.29.224,3260]:
iscsiadm: initiator reported error (15 - already exists)
1)在initiator端
配置/etc/iscsi/iscsid.conf,添加如下選項:
#以下三個是針對discovery的。
#discovery時啟用CHAP驗證
discovery.sendtargets.auth.authmethod = CHAP
#initiator的名字,也可以是別的字符串,只要和target端IncomingUse配置的名字一樣就行
discovery.sendtargets.auth.username = iqn.1994-05.com.fedora:ba72af8aaf5
#驗證密碼,要和target端相同
discovery.sendtargets.auth.password = 1234567890ab
#以下三個是針對login的。
#login時啟用CHAP驗證
node.session.auth.authmethod = CHAP
#initiator的名字,也可以是別的字符串,只要和target端IncomingUse配置的名字一樣就行
node.session.auth.username = iqn.1994-05.com.fedora:ba72af8aaf5
#驗證密碼,要和target端相同
node.session.auth.password = 1234567890
然後重啟initiator。
/etc/init.d/iscsid stop
/etc/init.d/iscsid start
2)在target端
針對discovery配置/etc/ietd.conf,在全局參數處(定義第一個target之前),添加如下一行:
IncomingUser iqn.1994-05.com.fedora:ba72af8aaf5 1234567890ab
IncomingUser 和 OutgoingUser 表示ISCSI 客戶端的用戶名和密碼,用戶名和密碼都可以為空,默認為allow權限,密碼最長可為12個字符。
此處iqn.1994-05.com.fedora:ba72af8aaf5是initiator的名字(也可以是別的字符串),1234567890ab是initiator的密碼,名字和密碼必須和initiator上/etc/iscsi/iscsid.conf
中的用戶名密碼一致。如果不一致,則initiator執行"-m discovery" 是就會失敗。
針對login配置/etc/ietd.conf,既然是針對login的,那麼添加IncomingUser是就應該添加的指定的target上。如下:
Target iqn.2001-04.com.example:storage.disk2.sys1.xyz
Lun 0 Path=/dev/sda1,Type=fileio
IncomingUser iqn.1994-05.com.fedora:ba72af8aaf5 1234567890
然後重啟iscsitarget
/etc/init.d/iscsi-target stop
/etc/init.d/iscsi-target start