1. 程式人生 > >iSCSI的配置全攻略(ISCSI Target/initiator)

iSCSI的配置全攻略(ISCSI Target/initiator)

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