[引用]一步一步教你構建iscsi服務器
上一篇 / 下一篇 2007-04-27 10:27:09 / 个人分类:网络存储
2 服務器及客戶端的配置
2.1 基於linux的iscsi服務器的配置
2.1.1 安裝服務包
首先,linux iscsi服務器的配置需要服務器端的安裝包,登陸到http://www.sourceforge.net上可以下載到該軟体。下載unh_iscsi_RH9.0-1.4.01后安裝linux9.0,並進行rpm包的安裝。Text模式下rpm –i unh_iscsi_RH9.0-1.4.01,圖形模式下,進入添加刪除程序即可。這個安裝包包括兩個部分(initiator/ target)。安裝完成后在linux下可以找到增加的文件或文件夾有的是用來配置initiator的,有的是用來配置target的。
2.1.2 重要文件及命令操作
安裝成功后,用lsmod命令列出當前加載的模塊,會發現已經加載的模塊中多了unh_iscsi_initiator的服務,該項服務是在安裝成功后自動添加的,並且加載到了啓動中,以後每次啓動默認都會啓動,該項服務是為initiator端設計的,由於該安裝包更注重客戶端的服務(更注重是指多數機器還是作爲initiator端的),所以默認把initiator端的服務程序啓動並添加到啓動程序組中,方便以後使用。在/etc/init.d/下看到的iscsi相關啓動程序unh_iscsi就是被啓動的initiator端起動服務的腳本。它在啓動的時候會把信息寫入log。另外/usr/share/doc/unh_iscsi是相關説明文件。那配置服務器的程序在哪裏呢?在配置服務器的過程中需要相關的配置文件、管理工具、log和説明檔,這些都包含在如下目錄中:
/opt/unh/iscsi/
bin - Commands and utilities
logs - Log files
modules - Kernel modules (indexed by kernel version)
dev - Device files
conf - Configuration files
src - UNH iSCSI Source
在/opt/unh/iscsi/bin下是常用的命令,包括iscsi_config,iscsi_connect,
Iscsi_disconnect,iscsi_manage,iscsi_mount,iscsi_rebuild, iscsi_umount等。iscsi_manage用來在建立對話的過程中對會話方式、驗證方式等進行配置,指定會話的一系列規則。iscsi_config用來在initiator端發起與某服務器的某個會話,儅然要指明服務器端,同時它也能起到終結會話的作用。它的參數涉及target的ip地址、端口號target的名字以及邏輯單元號lun。iscsi_rebuild用來在修改完.c和.h文件后將這些文件重新編譯,以達到修改服務模塊的作用,這樣在把修改后重新生成的模塊插入后,才能使服務器端服務模塊的相應修改得到實現。Modules下放置的是有關内核的程序模塊,即要用到的unh_iscsi_target.o、unh_iscsi_initiator.o、unh_scsi_target.o這三個模塊。/opt/unh/iscsi/conf下有兩個文件,為fstab.iscsi.sample、target.sample。target.sample可用來連接target,可設置被訪問服務器的服務器名、服務器ip、服務器端口、lun(默認訪問所有的lun,即all),以及initiator的名字。fstab.iscsi.sample與target.sample相配合,用在連接vd時,可以設置target名,lun,part(即要訪問的分區),磁盤mount的路徑,文件系統格式,及相關選項(默認為defaults)。這兩個sample是基於linux系統的initiator連接服務器時需要配置的兩個文件,相當於conf的作用。iscsi_connect也可從initiator發起請求與target建立連接,他的工作原理就是調用上述兩個sample。iscsi_disconnect用來斷開連接。iscsi_mount 用來把所見到的iscsi硬盤mount 到本地使用,iscsi_umount 起到相反的作用。最後是/opt/unh/iscsi/src目錄,該目錄是源代碼目錄,作配置需要修改裏面的一些文件,然後重新編譯。在src目錄下,有很多的源文件和説明文件用來配置服務器。由於有些文件與配置服務器無關或未涉及到而暫不列出,只寫出一些用到的,以供大家參考。Src下常用目錄有:cmd,docs,initiator,target,scripts,test。cmd目錄下存放命令,其中有的已在/opt/unh/iscsi/bin下出現過。Docs目錄下存放說明文件,其中對iscsi_config,iscsi_manage等作了一些説明,這些文件能夠很好地幫助我們對iscsi_manage和iscsi_config進行配置。Target目錄存放的是target端的源代碼,修改后編譯再將服務模塊插入可用來實現服務器端的配置。Scripts目錄下存放的有四個文件,這四個文件為sample即樣板,可以把它們copy,然後對備份文件進行修改,修改后給其指定為可執行的屬性,執行即可。這四個文件各有不同的用法,前面的兩個文件與/opt/unh/Iscsi/conf/下的文件用法相同,后兩個文件也是用來連接target端的,但添加了驗證的功能。target.sample為none驗證,即不驗證,而target.sample.chap采用chap驗證方法,需要進行用戶名和密碼的輸入,其中有兩套,一套是 peer password &&username,另一套是local password&&username, target.sample.srp採用了srp驗證方法。當然這三個文件也可從iscsi_config或iscsi_manage來進行配置,但不推薦這麽做,最好還是修改配置文件,配置文件修改比較簡單,而且還不經常出錯,另外修改文件后可直接運行,也可通過iscsi_connect調用文件連接target。命令行的方法屬於高級設置,可以指定多重驗證。下面是有關命令行的使用方法。iscsi_manage的常用動作參數主要有set/force/restore,每种動作參數又對應不同的狀態參數,即要用這三种動作設置相應的狀態,包括驗證方式,會話形式,peer用戶名和密碼,local用戶名和密碼等。Iscsi_config的格式為iscsi_config <what todo>;[host=number][ip=address_or_name][port=number][target=number][lun=number]。What to do 一欄輸入up or down ,用來建立並設定initiator到target的連接,up用來建立連接,down用來斷開連接。Host=number是用來指出initiator端由kernel分配的scsi 適配器號,設置時可在客戶端的相應文件路徑/proc/scsi/iscsi_initiator下找到相應的説明,實際上儅機器上沒有scsi設備時,host/target number會被指定為0,否則為1。Ip地址填入ip address。Port端口為target對initiator開放的用來建立會話的端口號。Target number是用來提供target允許的最大會話數。Lun number用來指定initiator端要連接的target的vd號,如果不填的話,可認爲連接所有的vd。現在來擧2個比較實用而簡單的例子分別說明iscsi_manage和iscsi_config的用法:例子1:
Iscsi_manage target restore(target端恢復為初始設置,可以清除所有的修改)
Iscsi_manage target set Authmethod=CHAP,NONE(用戶驗證方式為雙選,可以驗證,也可不驗證,驗證的時候,需輸入兩套用戶名和密碼,一套是peer x/n,一套是local x/n)
Iscsi_manage target set Sessiontype=Discovery(指定會話的方式為discovery)Iscsi_manage target force s(強制認證,格式必須)
Iscsi_manage target force px=“123”(target端用戶密碼)
Iscsi_manage target force pn=“haha”(target端用戶名)
Iscsi_manage target force t(格式必須,指定2套認證方式,要輸入lx/ln必須輸入force t)
Iscsi_manage target force lx=“123”(本地用戶密碼)
Iscsi_manage target force ln=“haha1”(本地用戶名)
例子2:
Iscsi_config up ip=123.45.67.89 port=5142 host=1 target=2 lun=3 cid=4
在這裡,用來建立一個由initiator到目標地址為132.45.67.89且端口為5142的target的會話,且連接target的第三個vd,由於該initiator同時已有3個同這個vd進行的連接,這次是建立對該vd的第四次連接,所以cid=4。
Iscsi_config down host=1 target=2 lun=3 cid=4則是把同lun=3的vd建立的第四個連接結束。如果向已和自己建立連接的target建立第二個連接,可以寫作iscsi_config up ip=123.45.67.89 host=1 lun=2
Iscsi_manage init restore host=1
Iscsi_manage init set InitiatorName=‘uname -n’host=1(設置initiator端名字)Iscsi_manage init set TargetName=MyTarget host=1(設置服務器端名字)Iscsi_manage init set SessionType=Normal host=1(設置會話方式)
Iscsi_manage init set MaxConnections=2 host=1(指定最大連接數)
Iscsi_config up ip=123.45.67.89 host=1 lun=1(建立第一個連接)
Iscsi_manage init restore host=1(清除上述設置,為重輸入作準備,這是第一個連接已成功創建)
Iscsi_manage init set InitiatorName=‘uname –n’host=1(設置initiator端名字)Iscsi_manage init set TargetName=MyTarget host=1(設置服務器端名字)
Iscsi_config up ip=123.45.67.89 host=1 lun=1 cid=2(對同vd建立第二個連接)以上就是iscsi_manage和iscsi_config的用法。除了iscsi_manage有關target端的配置,實際上完全可以通過配置/opt/unh/iscsi/conf/或/opt/unh/iscsi/src/scripts/下的配置文件,然後執行這些文件來打到上述目的,相當於以批處理的方式執行代碼。另外,在/opt/unh/iscsi/src/cmd/下的ini-1命令也可以用來配置initiator來連接target。下面將列出ini-1文件的配置部分,它能幫助我們詳細地了解整個的連接過程。該文件主要分三個部分:服務器端的配置、initiator與第一塊vd的連接、initiator與第二塊vd的連接。内容主要包括服務模塊的插入,iscsi_manage和iscsi_config的配置,其中最核心最重要的部分列出如下:
#!/bin/sh
HBA=0
#/sbin/insmod scsi_mod
#/sbin/insmod sd_mod
#/sbin/rmmod unh_iscsi_target
#/sbin/rmmod unh_scsi_target
#/sbin/insmod /opt/unh/iscsi/src/target/unh_scsi_target.o(編譯后重新生成的模塊)
#/sbin/insmod /opt/unh/iscsi/src/target/unh_iscsi_target.o(編譯后重新生成的模塊)
#rmmod unh_iscsi_initiator
#insmod /opt/unh/iscsi/modules/’uname –r ’/unh_iscsi_initiator.o
############config target##############
Iscsi_manage target restore host=$HBA
Iscsi_manage target set TargetPortalGroupTag=1 host=$HBA
###########config initiator###############
Iscsi_manage init restore host=$HBA
Iscsi_manage init set TargetName=’’host=$HBA
Iscsi_manage init set InitiatorName=’’host=$HBA
Iscsi_manage init set MaxConnections=1 host=$HBA
Iscsi_config down ip=10.190.77.77 host=$HBA
Iscsi_config up ip=10.190.77.77 port=5001 target=0 host=$HBA
同過上述的簡單配置,即可建立連接,連入vd。由於服務模塊以手動的方式重新加載過了,所以這裡就被註釋掉了。
Iscsi_manage不僅能用在target端,也能用在initiator端。而iscsi_config只能用在initiator端。總之,initiator連接target的用法非常多,但各種方法從實質上是一樣的,都是在服務器端加載修改后的服務模塊后,用iscsi_manage對initiator/target端進行配置,然後再從initiator端用iscsi_config建立連接。通過文件而非直接用命令來實現連接的方法是把配置服務器端或客戶端的命令以及建立連接的命令寫入文件,通過運行文件達到運行命令、建立連接的過程。當然,文件中也涉及到了有關用戶驗證的配置。
2.1.3 服務模塊的操作
現在就來研究一下最重要的有關target的Ip地址和端口號等target端最終要的配置過程。重要的源文件大都在/opt/unh/iscsi/src/目錄下,文件名分別為iscsi_protal_group.c &&scsi_target.h。先來看一看前面的文件,在這個文件中需要配置target端的ip地址,以及被訪問的端口號,當然還有同一端口允許的最大入口數,即同時有幾個用戶訪問。這裡ip的位置也可以替換成nic的mac地址。保存后,開始設置scsi_target.h文件,這個文件比較複雜,但需要設置的内容並不很多,其中找到如下配置行:
#define MEMORYIO
#define DISKIO
#define FILEIO
#define GENERICIO,這四行確定了在target端將採取何種方式提供iscsi硬盤的訪問,假如採取第三种方式:
//#define MEMORYIO
//#define DISKIO
#define FILEIO
//#define GENERICIO
那麽在target端將會出現8個文件,都位于/opt/unh/iscsi/src/target/路徑下。這8個文件就是target端向initiator端提供的8塊硬盤。默認每個是1.76G,可以在該文件中進行修改。該文件中還須修改的命令有:
#define BLOCKSIZE 512 可以調節默認的傳輸塊的大小
#define FILESIZE 1900*1000*1000 改變提供的每塊iscsi硬盤的大小。
儅修改完這文件后,文件並沒有真正的得到修改,修改后的結果也不會顯示出來,這是需要將修改過的文件重新編譯,這就用到了/opt/unh/iscsi/src/cmd/iscsi_rebuild,它將編譯所有修改過的.c&&.h文件,用來生成新的服務模塊文件unh_iscsi_target.o && unh_scsi_target.o。但linux必須安裝gcc等編譯工具以及編譯kernel的相關軟体。在shell模式下輸入lsmod,檢查是否在模塊列表中已經存在這兩個服務。如果存在,輸入
rmmod unh_iscsi_target
rmmod unh_scsi_target
分先後卸載這兩個模塊,然後在/opt/unh/iscsi/src/target/下用
Insmod unh_scsi_target.o
Insmod unh_iscsi_target.o
分先後添加兩個模塊。在用lsmod看看是否添加成功,如果成功,那麽祝賀你,你的服務器已初步建好,用上面講過的配置方法,去實現其它的功能吧。
2.2 基於linux的iscsi initiator的配置
2.2.1 安裝服務包
基於Linux的iscsi initiator沒有採用上面的rpm,而是安裝了獨立的rpm包。該包可在http://rpm.pbone.net/index.php3/stat/4/idpl/572167/com/iscsi-3.1.0.3-3.i386.rpm.html上載到。與上述安裝包内的initiator配置不同的是這個獨立的安裝包提供了簡單的配置方法,安裝后會在/etc下建立iscsi.conf配置文件和initiatorname文件,並且在/etc/init.d/下安裝了相應的啓動腳本。腳本編輯内容包括ip,port,身份驗證等多種信息。
2.2.2 編輯服務腳本
用vi編輯啓動腳本,制定目標服務器的ip地址/hostname和被訪問的端口,在該文件中可以指定多個待訪問的target,並且可以不指定端口,也可以通過在不同的target ip下輸入不同的驗證信息,即用戶名/密碼來進行chap驗證訪問。此文件中最方便之処莫過於不用設定targetname,以及host和target號。
2.2.3 啓動服務連接target
在編輯完conf后,啓動iscsi initiator程序/etc/init.d/iscsi,待服務啓動后,服務會按照iscsi.conf的設置訪問target,而target會相應請求,這樣客戶端和服務器端就會有有關連接的信息顯示,且在initiator端會有新的硬盤連入,即iscsi硬盤。用fdisk –l 命令檢查會多出/dev/sda硬盤,用mkfs.ext2命令將其格式化后,linux可以識別后,即可用mount命令直接聯入,非常方便。另外也可用fdisk命令進行分區。之後,便可以在此新硬盤上進行讀寫操作了。
2.3 Windows2000客戶端的安裝與配置
2.3.1 安裝服務包
http://www.microsoft.com/downloads/details.aspx?FamilyID=12cb3c1a-15d6-4585-b385-befd1319f825&DisplayLang=en下載for windows2000的客戶端程序,執行安裝程序,按照向導提示即可安裝完畢。
2.3.2 配置客戶端
該客戶端程序共包括6個主界面,在每個界面中都有不同的功能設定,
這六個主界面分別為target portals,available targets,active sessions,isns servers,persistent targets,initiator settings。target portals用來輸入ip,port,chap驗證的用戶名和密碼,還能配置ipsec、數據校驗方式等功能,以用來和target端建立聯係。
Available targets具有log on的功能,用來在與target端建立連接的基礎上,連接target的vd,連接成功后會顯示connected,log on的時候有2個選項可以選擇,包括是否在系統啓動的時候自動建立與vd的連接。
Active sessions在initiator與target的vd連接時顯示為active,未連接時顯示為inactive,具有log off的功能。
Isns servers是名字服務器的相關設置,persistent targets能顯示所有在系統啓動時自動恢復的vd連接。Initiator settings具有為guest用戶設置驗證密碼的功能,同時還具有修改initiator node nam(initiatorname)等功能。
在連接vd后,即可通過windows的磁盤管理界面對iscsi硬盤進行初始化
2.1 基於linux的iscsi服務器的配置
2.1.1 安裝服務包
首先,linux iscsi服務器的配置需要服務器端的安裝包,登陸到http://www.sourceforge.net上可以下載到該軟体。下載unh_iscsi_RH9.0-1.4.01后安裝linux9.0,並進行rpm包的安裝。Text模式下rpm –i unh_iscsi_RH9.0-1.4.01,圖形模式下,進入添加刪除程序即可。這個安裝包包括兩個部分(initiator/ target)。安裝完成后在linux下可以找到增加的文件或文件夾有的是用來配置initiator的,有的是用來配置target的。
2.1.2 重要文件及命令操作
安裝成功后,用lsmod命令列出當前加載的模塊,會發現已經加載的模塊中多了unh_iscsi_initiator的服務,該項服務是在安裝成功后自動添加的,並且加載到了啓動中,以後每次啓動默認都會啓動,該項服務是為initiator端設計的,由於該安裝包更注重客戶端的服務(更注重是指多數機器還是作爲initiator端的),所以默認把initiator端的服務程序啓動並添加到啓動程序組中,方便以後使用。在/etc/init.d/下看到的iscsi相關啓動程序unh_iscsi就是被啓動的initiator端起動服務的腳本。它在啓動的時候會把信息寫入log。另外/usr/share/doc/unh_iscsi是相關説明文件。那配置服務器的程序在哪裏呢?在配置服務器的過程中需要相關的配置文件、管理工具、log和説明檔,這些都包含在如下目錄中:
/opt/unh/iscsi/
bin - Commands and utilities
logs - Log files
modules - Kernel modules (indexed by kernel version)
dev - Device files
conf - Configuration files
src - UNH iSCSI Source
在/opt/unh/iscsi/bin下是常用的命令,包括iscsi_config,iscsi_connect,
Iscsi_disconnect,iscsi_manage,iscsi_mount,iscsi_rebuild, iscsi_umount等。iscsi_manage用來在建立對話的過程中對會話方式、驗證方式等進行配置,指定會話的一系列規則。iscsi_config用來在initiator端發起與某服務器的某個會話,儅然要指明服務器端,同時它也能起到終結會話的作用。它的參數涉及target的ip地址、端口號target的名字以及邏輯單元號lun。iscsi_rebuild用來在修改完.c和.h文件后將這些文件重新編譯,以達到修改服務模塊的作用,這樣在把修改后重新生成的模塊插入后,才能使服務器端服務模塊的相應修改得到實現。Modules下放置的是有關内核的程序模塊,即要用到的unh_iscsi_target.o、unh_iscsi_initiator.o、unh_scsi_target.o這三個模塊。/opt/unh/iscsi/conf下有兩個文件,為fstab.iscsi.sample、target.sample。target.sample可用來連接target,可設置被訪問服務器的服務器名、服務器ip、服務器端口、lun(默認訪問所有的lun,即all),以及initiator的名字。fstab.iscsi.sample與target.sample相配合,用在連接vd時,可以設置target名,lun,part(即要訪問的分區),磁盤mount的路徑,文件系統格式,及相關選項(默認為defaults)。這兩個sample是基於linux系統的initiator連接服務器時需要配置的兩個文件,相當於conf的作用。iscsi_connect也可從initiator發起請求與target建立連接,他的工作原理就是調用上述兩個sample。iscsi_disconnect用來斷開連接。iscsi_mount 用來把所見到的iscsi硬盤mount 到本地使用,iscsi_umount 起到相反的作用。最後是/opt/unh/iscsi/src目錄,該目錄是源代碼目錄,作配置需要修改裏面的一些文件,然後重新編譯。在src目錄下,有很多的源文件和説明文件用來配置服務器。由於有些文件與配置服務器無關或未涉及到而暫不列出,只寫出一些用到的,以供大家參考。Src下常用目錄有:cmd,docs,initiator,target,scripts,test。cmd目錄下存放命令,其中有的已在/opt/unh/iscsi/bin下出現過。Docs目錄下存放說明文件,其中對iscsi_config,iscsi_manage等作了一些説明,這些文件能夠很好地幫助我們對iscsi_manage和iscsi_config進行配置。Target目錄存放的是target端的源代碼,修改后編譯再將服務模塊插入可用來實現服務器端的配置。Scripts目錄下存放的有四個文件,這四個文件為sample即樣板,可以把它們copy,然後對備份文件進行修改,修改后給其指定為可執行的屬性,執行即可。這四個文件各有不同的用法,前面的兩個文件與/opt/unh/Iscsi/conf/下的文件用法相同,后兩個文件也是用來連接target端的,但添加了驗證的功能。target.sample為none驗證,即不驗證,而target.sample.chap采用chap驗證方法,需要進行用戶名和密碼的輸入,其中有兩套,一套是 peer password &&username,另一套是local password&&username, target.sample.srp採用了srp驗證方法。當然這三個文件也可從iscsi_config或iscsi_manage來進行配置,但不推薦這麽做,最好還是修改配置文件,配置文件修改比較簡單,而且還不經常出錯,另外修改文件后可直接運行,也可通過iscsi_connect調用文件連接target。命令行的方法屬於高級設置,可以指定多重驗證。下面是有關命令行的使用方法。iscsi_manage的常用動作參數主要有set/force/restore,每种動作參數又對應不同的狀態參數,即要用這三种動作設置相應的狀態,包括驗證方式,會話形式,peer用戶名和密碼,local用戶名和密碼等。Iscsi_config的格式為iscsi_config <what todo>;[host=number][ip=address_or_name][port=number][target=number][lun=number]。What to do 一欄輸入up or down ,用來建立並設定initiator到target的連接,up用來建立連接,down用來斷開連接。Host=number是用來指出initiator端由kernel分配的scsi 適配器號,設置時可在客戶端的相應文件路徑/proc/scsi/iscsi_initiator下找到相應的説明,實際上儅機器上沒有scsi設備時,host/target number會被指定為0,否則為1。Ip地址填入ip address。Port端口為target對initiator開放的用來建立會話的端口號。Target number是用來提供target允許的最大會話數。Lun number用來指定initiator端要連接的target的vd號,如果不填的話,可認爲連接所有的vd。現在來擧2個比較實用而簡單的例子分別說明iscsi_manage和iscsi_config的用法:例子1:
Iscsi_manage target restore(target端恢復為初始設置,可以清除所有的修改)
Iscsi_manage target set Authmethod=CHAP,NONE(用戶驗證方式為雙選,可以驗證,也可不驗證,驗證的時候,需輸入兩套用戶名和密碼,一套是peer x/n,一套是local x/n)
Iscsi_manage target set Sessiontype=Discovery(指定會話的方式為discovery)Iscsi_manage target force s(強制認證,格式必須)
Iscsi_manage target force px=“123”(target端用戶密碼)
Iscsi_manage target force pn=“haha”(target端用戶名)
Iscsi_manage target force t(格式必須,指定2套認證方式,要輸入lx/ln必須輸入force t)
Iscsi_manage target force lx=“123”(本地用戶密碼)
Iscsi_manage target force ln=“haha1”(本地用戶名)
例子2:
Iscsi_config up ip=123.45.67.89 port=5142 host=1 target=2 lun=3 cid=4
在這裡,用來建立一個由initiator到目標地址為132.45.67.89且端口為5142的target的會話,且連接target的第三個vd,由於該initiator同時已有3個同這個vd進行的連接,這次是建立對該vd的第四次連接,所以cid=4。
Iscsi_config down host=1 target=2 lun=3 cid=4則是把同lun=3的vd建立的第四個連接結束。如果向已和自己建立連接的target建立第二個連接,可以寫作iscsi_config up ip=123.45.67.89 host=1 lun=2
Iscsi_manage init restore host=1
Iscsi_manage init set InitiatorName=‘uname -n’host=1(設置initiator端名字)Iscsi_manage init set TargetName=MyTarget host=1(設置服務器端名字)Iscsi_manage init set SessionType=Normal host=1(設置會話方式)
Iscsi_manage init set MaxConnections=2 host=1(指定最大連接數)
Iscsi_config up ip=123.45.67.89 host=1 lun=1(建立第一個連接)
Iscsi_manage init restore host=1(清除上述設置,為重輸入作準備,這是第一個連接已成功創建)
Iscsi_manage init set InitiatorName=‘uname –n’host=1(設置initiator端名字)Iscsi_manage init set TargetName=MyTarget host=1(設置服務器端名字)
Iscsi_config up ip=123.45.67.89 host=1 lun=1 cid=2(對同vd建立第二個連接)以上就是iscsi_manage和iscsi_config的用法。除了iscsi_manage有關target端的配置,實際上完全可以通過配置/opt/unh/iscsi/conf/或/opt/unh/iscsi/src/scripts/下的配置文件,然後執行這些文件來打到上述目的,相當於以批處理的方式執行代碼。另外,在/opt/unh/iscsi/src/cmd/下的ini-1命令也可以用來配置initiator來連接target。下面將列出ini-1文件的配置部分,它能幫助我們詳細地了解整個的連接過程。該文件主要分三個部分:服務器端的配置、initiator與第一塊vd的連接、initiator與第二塊vd的連接。内容主要包括服務模塊的插入,iscsi_manage和iscsi_config的配置,其中最核心最重要的部分列出如下:
#!/bin/sh
HBA=0
#/sbin/insmod scsi_mod
#/sbin/insmod sd_mod
#/sbin/rmmod unh_iscsi_target
#/sbin/rmmod unh_scsi_target
#/sbin/insmod /opt/unh/iscsi/src/target/unh_scsi_target.o(編譯后重新生成的模塊)
#/sbin/insmod /opt/unh/iscsi/src/target/unh_iscsi_target.o(編譯后重新生成的模塊)
#rmmod unh_iscsi_initiator
#insmod /opt/unh/iscsi/modules/’uname –r ’/unh_iscsi_initiator.o
############config target##############
Iscsi_manage target restore host=$HBA
Iscsi_manage target set TargetPortalGroupTag=1 host=$HBA
###########config initiator###############
Iscsi_manage init restore host=$HBA
Iscsi_manage init set TargetName=’’host=$HBA
Iscsi_manage init set InitiatorName=’’host=$HBA
Iscsi_manage init set MaxConnections=1 host=$HBA
Iscsi_config down ip=10.190.77.77 host=$HBA
Iscsi_config up ip=10.190.77.77 port=5001 target=0 host=$HBA
同過上述的簡單配置,即可建立連接,連入vd。由於服務模塊以手動的方式重新加載過了,所以這裡就被註釋掉了。
Iscsi_manage不僅能用在target端,也能用在initiator端。而iscsi_config只能用在initiator端。總之,initiator連接target的用法非常多,但各種方法從實質上是一樣的,都是在服務器端加載修改后的服務模塊后,用iscsi_manage對initiator/target端進行配置,然後再從initiator端用iscsi_config建立連接。通過文件而非直接用命令來實現連接的方法是把配置服務器端或客戶端的命令以及建立連接的命令寫入文件,通過運行文件達到運行命令、建立連接的過程。當然,文件中也涉及到了有關用戶驗證的配置。
2.1.3 服務模塊的操作
現在就來研究一下最重要的有關target的Ip地址和端口號等target端最終要的配置過程。重要的源文件大都在/opt/unh/iscsi/src/目錄下,文件名分別為iscsi_protal_group.c &&scsi_target.h。先來看一看前面的文件,在這個文件中需要配置target端的ip地址,以及被訪問的端口號,當然還有同一端口允許的最大入口數,即同時有幾個用戶訪問。這裡ip的位置也可以替換成nic的mac地址。保存后,開始設置scsi_target.h文件,這個文件比較複雜,但需要設置的内容並不很多,其中找到如下配置行:
#define MEMORYIO
#define DISKIO
#define FILEIO
#define GENERICIO,這四行確定了在target端將採取何種方式提供iscsi硬盤的訪問,假如採取第三种方式:
//#define MEMORYIO
//#define DISKIO
#define FILEIO
//#define GENERICIO
那麽在target端將會出現8個文件,都位于/opt/unh/iscsi/src/target/路徑下。這8個文件就是target端向initiator端提供的8塊硬盤。默認每個是1.76G,可以在該文件中進行修改。該文件中還須修改的命令有:
#define BLOCKSIZE 512 可以調節默認的傳輸塊的大小
#define FILESIZE 1900*1000*1000 改變提供的每塊iscsi硬盤的大小。
儅修改完這文件后,文件並沒有真正的得到修改,修改后的結果也不會顯示出來,這是需要將修改過的文件重新編譯,這就用到了/opt/unh/iscsi/src/cmd/iscsi_rebuild,它將編譯所有修改過的.c&&.h文件,用來生成新的服務模塊文件unh_iscsi_target.o && unh_scsi_target.o。但linux必須安裝gcc等編譯工具以及編譯kernel的相關軟体。在shell模式下輸入lsmod,檢查是否在模塊列表中已經存在這兩個服務。如果存在,輸入
rmmod unh_iscsi_target
rmmod unh_scsi_target
分先後卸載這兩個模塊,然後在/opt/unh/iscsi/src/target/下用
Insmod unh_scsi_target.o
Insmod unh_iscsi_target.o
分先後添加兩個模塊。在用lsmod看看是否添加成功,如果成功,那麽祝賀你,你的服務器已初步建好,用上面講過的配置方法,去實現其它的功能吧。
2.2 基於linux的iscsi initiator的配置
2.2.1 安裝服務包
基於Linux的iscsi initiator沒有採用上面的rpm,而是安裝了獨立的rpm包。該包可在http://rpm.pbone.net/index.php3/stat/4/idpl/572167/com/iscsi-3.1.0.3-3.i386.rpm.html上載到。與上述安裝包内的initiator配置不同的是這個獨立的安裝包提供了簡單的配置方法,安裝后會在/etc下建立iscsi.conf配置文件和initiatorname文件,並且在/etc/init.d/下安裝了相應的啓動腳本。腳本編輯内容包括ip,port,身份驗證等多種信息。
2.2.2 編輯服務腳本
用vi編輯啓動腳本,制定目標服務器的ip地址/hostname和被訪問的端口,在該文件中可以指定多個待訪問的target,並且可以不指定端口,也可以通過在不同的target ip下輸入不同的驗證信息,即用戶名/密碼來進行chap驗證訪問。此文件中最方便之処莫過於不用設定targetname,以及host和target號。
2.2.3 啓動服務連接target
在編輯完conf后,啓動iscsi initiator程序/etc/init.d/iscsi,待服務啓動后,服務會按照iscsi.conf的設置訪問target,而target會相應請求,這樣客戶端和服務器端就會有有關連接的信息顯示,且在initiator端會有新的硬盤連入,即iscsi硬盤。用fdisk –l 命令檢查會多出/dev/sda硬盤,用mkfs.ext2命令將其格式化后,linux可以識別后,即可用mount命令直接聯入,非常方便。另外也可用fdisk命令進行分區。之後,便可以在此新硬盤上進行讀寫操作了。
2.3 Windows2000客戶端的安裝與配置
2.3.1 安裝服務包
http://www.microsoft.com/downloads/details.aspx?FamilyID=12cb3c1a-15d6-4585-b385-befd1319f825&DisplayLang=en下載for windows2000的客戶端程序,執行安裝程序,按照向導提示即可安裝完畢。
2.3.2 配置客戶端
該客戶端程序共包括6個主界面,在每個界面中都有不同的功能設定,
這六個主界面分別為target portals,available targets,active sessions,isns servers,persistent targets,initiator settings。target portals用來輸入ip,port,chap驗證的用戶名和密碼,還能配置ipsec、數據校驗方式等功能,以用來和target端建立聯係。
Available targets具有log on的功能,用來在與target端建立連接的基礎上,連接target的vd,連接成功后會顯示connected,log on的時候有2個選項可以選擇,包括是否在系統啓動的時候自動建立與vd的連接。
Active sessions在initiator與target的vd連接時顯示為active,未連接時顯示為inactive,具有log off的功能。
Isns servers是名字服務器的相關設置,persistent targets能顯示所有在系統啓動時自動恢復的vd連接。Initiator settings具有為guest用戶設置驗證密碼的功能,同時還具有修改initiator node nam(initiatorname)等功能。
在連接vd后,即可通過windows的磁盤管理界面對iscsi硬盤進行初始化
TAG:

