linux iscsi配置
iSCSI 是一種 SAN的設備而 SAN的設備主要是提供 Server 存儲體的空間.相較於傳統的 SAN 是以光纖為傳輸媒體而 iSCSI(Internet SCSI)他是 IP-based 的數據存儲的設備.使得他能更容易應用在企業中. 1.一般的網卡就能當作 iSCSI Target 但是缺點就是會消耗太多的 CPU 資源,針對這樣的問題所以發展出另外兩種的 iSCSI Target 網卡.2.一種是軟件的 iscsi + TOE (TOE:TCP/IP offload engine),它可以針對 TCP/IP 的封包直接在網絡卡 上運算所以不會因此占用系統上的 CPU 的使用率, 3.另外一種就是硬件式的 iSCSI + TOE. 它除了具有 TOE 還可以直接針對 iSCSI 的數據做運算.基本上它的使用上就像是一般存儲設備 HBA.你可以直接在 BIOS 選項作 iSCSI 硬件開機的動作.
當前 RHEL5 和 SLES10 都已經將 iSCSI Target 當作缺省的組件,所以之前的版本如 RHEL4 需要使用 iSCSI Target 這邊介紹另外一套 IET (iSCSI Enterprise Target) 首先要先下載iSCSI Target 我們可以在 http://iscsitarget.sourceforge.net/ 中可以看到.直接使用最新一版即可.下載下來是 Source code 所以基本的 Linux(RedHat, Fedora...)都可以直接編輯使用.
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 f=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
iscsi操作總結
增加iscsi存儲
(1)發現iscsi存儲:
iscsiadm -m discovery -t st -p ISCSI_IP
(2)查看iscsi發現記錄:
iscsiadm -m node
(3)登錄iscsi存儲:
iscsiadm -m node -T LUN_NAME -p ISCSI_IP -l
(4)開機自動:
iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op update -n node.startup -v automatic
刪除iscsi存儲
(1)登出iscsi存儲
iscsiadm -m node -T LUN_NAME -p ISCSI_IP -u
(2)登出iscsi所有登錄
iscsiadm -m node --logoutall=all
(3)刪除iscsi發現記錄:
iscsiadm -m node -o delete -T LUN_NAME -p ISCSI_IP
登入需驗證碼的節點
(1)開啟認證
iscsiadm -m node -T LUN_NAME -o update --name node.session.auth.authmethod --value=CHAP
*.使用-o同--op
(2)添加用戶
iscsiadm -m node -T LUN_NAME --op update --name node.session.auth.username --value=[用戶名]
(3)添加密碼
iscsiadm –m node –T LUN_NAME –op update –name node.session.auth.password –value=[密碼]
linux iscsi配置