V 6 iSCSI
V 6 iSCSI
?
一、相關(guān)概念:
computer architecture計(jì)算機(jī)體系結(jié)構(gòu)
如圖:
north bridge以上是核心系統(tǒng)(核心單元)
south bridge以下是外圍總線(I/O系統(tǒng),提供輔助×××)
USB device和IDE device能提供持久性存儲(chǔ),若從這些設(shè)備上讀寫(xiě)數(shù)據(jù)時(shí),要先加載至內(nèi)存中,CPU是在內(nèi)存中進(jìn)行處理
IDE存儲(chǔ)總線(連接設(shè)備的數(shù)量少,一個(gè)控制器上只能連接一主一從兩個(gè)設(shè)備,主板上提供的IDE口也很難有很多,IDE在設(shè)計(jì)上實(shí)現(xiàn)協(xié)議數(shù)據(jù)單元PDU封裝的能力很差,并且經(jīng)此總線將數(shù)據(jù)以塊方式傳輸至設(shè)備上時(shí)需要大量的CPU時(shí)鐘周期參與(CPU要花大量時(shí)間進(jìn)行讀或?qū)懙牟僮?#xff09;在非常繁忙的服務(wù)器上這并不適合)
SCSI工業(yè)總線(總體性能比IDE及SATA要快,連接總線的適配器adapter(HBA卡,host base adapter),這個(gè)卡內(nèi)置的控制芯片,來(lái)完成協(xié)議數(shù)據(jù)單元的封裝,這樣大大降低了對(duì)CPU時(shí)鐘周期的占用,使得CPU解脫出來(lái)可完成其它工作)
?
SCSI(small computersystem interface,SCSI是一種IO技術(shù);規(guī)范了一種并行的I/O總線和相關(guān)的協(xié)議;數(shù)據(jù)傳輸是以塊的方式進(jìn)行;實(shí)現(xiàn)了設(shè)備無(wú)關(guān)性、多設(shè)備并行、高帶寬、低系統(tǒng)開(kāi)銷(xiāo))
SCSI總線通過(guò)SCSI控制器來(lái)和硬盤(pán)之類(lèi)的設(shè)備進(jìn)行通信;SCSI控制器邏輯上可分為一個(gè)任務(wù)管理單元和多個(gè)邏輯單元(LU,logical unit);LUN,LU number是為了使用和描述更多設(shè)備及對(duì)象而引進(jìn)的一個(gè)方法,每個(gè)target上最多有32個(gè)LUN,一個(gè)LUN對(duì)應(yīng)一個(gè)邏輯設(shè)備
SCSI總線(寬總線(16個(gè)口,15個(gè)連接設(shè)備,最后一個(gè)連接終結(jié)器terminate);窄總線(共8口,7個(gè)口連接設(shè)備,另一個(gè)口用于terminate))
SCSI總線和SAS總線的區(qū)別:
SCSI總線(并行,一根線纜供多個(gè)設(shè)備連接(多個(gè)設(shè)備共享同一根線纜),以ultra320為例速率320MB/s)
SAS總線(串行,serial attachedSCSI,適配器上有多個(gè)口,每個(gè)口連接一個(gè)設(shè)備,另還有擴(kuò)展口expander可連接多個(gè)設(shè)備(類(lèi)似邏輯分區(qū)的概念),速率達(dá)到6Gbps,0.75GB/s)
?
注:SCSI總線,線纜長(zhǎng)度有限,僅能共享有限個(gè)主機(jī)
SAN(storage area network,有些場(chǎng)景需要多個(gè)設(shè)備為多個(gè)主機(jī)同時(shí)使用,且要能傳輸更長(zhǎng)的距離,能夠傳輸SCSI報(bào)文并能路由到目標(biāo)設(shè)備并存儲(chǔ),這種網(wǎng)絡(luò)結(jié)構(gòu)叫SAN)
?
SAN(high performance)和NAS(low performance)的區(qū)別:
FS(SAN的FS在本地(可創(chuàng)建分區(qū)、格式化);NAS的FS在server-side(是文件服務(wù)器))
block I/O(SAN在client-side和server-side都有;NAS僅server-side有)
SCSI協(xié)議是分層的(分層的好處,某一個(gè)層次可以隨意替換,而不至影響全局),從上至下依次為:
common access method;
scsi device-type specific command set;(不同設(shè)備類(lèi)型的特有命令集,如光盤(pán)、硬盤(pán)等)
shared command set;(公共命令集,如存儲(chǔ)、讀取等)
transport protocol;
physical interconnects;(將SCSI報(bào)文通過(guò)某一種線纜傳輸(從源到目的所用的傳輸介質(zhì),所傳輸?shù)膱?bào)文格式))
注:SCSI報(bào)文(從上至下依次封裝各種首部,如在數(shù)據(jù)上封裝特有命令集、公共命令集)通過(guò)線纜傳輸(早期使用ATAPi);物理介質(zhì)不同,傳輸?shù)姆绞骄筒煌?#xff0c;只要將相應(yīng)的物理層替換為其它介質(zhì)類(lèi)型即可,如將ATAPi替換為iSCSI或FC或FCoE
FC代價(jià)高昂(fiber channel,不能利用現(xiàn)有網(wǎng)絡(luò),需重建光網(wǎng)絡(luò),主機(jī)的光口要與FC SWITCH的光口綁定,工作機(jī)制不是IP這種方式,是光網(wǎng)絡(luò)傳輸機(jī)制,另需要專(zhuān)門(mén)的管理人員學(xué)習(xí)相關(guān)協(xié)議及設(shè)備管理知識(shí),整套設(shè)備及各部件價(jià)格不菲)
FCoE(FC over ethernet,基于以太網(wǎng)的FC,且僅能在以太網(wǎng)上傳輸(雙絞線)不能在公網(wǎng)上傳輸,報(bào)文(data經(jīng)SCSI封裝-->FC封裝-->FCoE封裝-->轉(zhuǎn)為以太網(wǎng)幀)在ethernet上傳輸,注意不經(jīng)TCP/IP封裝,商業(yè),symmetix公司,非開(kāi)源,使用此種方式要求以太網(wǎng)至少是10Gbps(萬(wàn)兆))
iSCSI(internet SCSI,開(kāi)源,利用現(xiàn)有的TCP/IP網(wǎng)絡(luò)傳輸SCSI報(bào)文,基于IP報(bào)文實(shí)現(xiàn)分組傳送,通過(guò)某個(gè)服務(wù)監(jiān)聽(tīng)在某個(gè)socket上,c/s架構(gòu),client(initiator)發(fā)起請(qǐng)求,server(target)隨時(shí)接收請(qǐng)求并給予響應(yīng))
注:iSCSI與FCoE傳輸性能差別不大
注:storage protocol(FC、iSCSI、FCoE、SAS)
client-side:
如圖:SCSI driver封裝SCSI Cmds,iSCSI driver封裝iSCSI指令,這些驅(qū)動(dòng)可以以硬件(不占用CPU時(shí)間,性能高,OS內(nèi)核直接交由設(shè)備驅(qū)動(dòng)處理,而不經(jīng)由軟件方式工作的內(nèi)核模塊)或軟件(性能差)方式運(yùn)作,適合client上安裝的基于iSCSI的TCP/IP網(wǎng)卡有(性能從高到低依次為):
iSCSI HBA卡(內(nèi)建SCSI指令及TOE引擎的ASIC芯片的適配卡,性能最佳,價(jià)格昂貴,CPU占用率10%)
iSCSI TOE卡(內(nèi)建TOE引擎的ASIC芯片適配卡,但SCSI指令由軟件方式運(yùn)行,iSCSI指令在硬件中完成,CPU占用率40%)
iSCSI initiator驅(qū)動(dòng)程序(完全軟件方式運(yùn)作,性能最差)
?
server-side:
iSCSI協(xié)議的服務(wù)(用戶(hù)空間的守護(hù)進(jìn)程)監(jiān)聽(tīng)在某個(gè)socket上(tcp/3260port)
iSCSI session(同ssh一樣,連接建立后通道會(huì)一直存在)
iSCSI connection(每發(fā)送一次數(shù)據(jù)就是一個(gè)iSCSI connection)
注:server-side只需提供iscsi功能(很多公司銷(xiāo)售的iscsi設(shè)備是極簡(jiǎn)化的OS,僅提供iscsi的基本功能和管理工具,OS在TCP/IP網(wǎng)絡(luò)和iscsi方面做了各種優(yōu)化,所以性能好)
注:若報(bào)文由client-->server,server查看ip首部是否本機(jī),若是則接收,再查看tcp首部的目標(biāo)port是否3260,若是則交由用戶(hù)空間的scsi服務(wù),scsi服務(wù)(iscsi驅(qū)動(dòng))接收到報(bào)文查看指令發(fā)現(xiàn)是個(gè)存儲(chǔ)指令,調(diào)用本地的硬件設(shè)備驅(qū)動(dòng)程序進(jìn)行存儲(chǔ)(這里特殊的是為提高scsi的工作性能,scsi服務(wù)工作在內(nèi)核中)
注:scsi指令只是由iscsi或scsi完成數(shù)據(jù)存取控制機(jī)制的,若本地的設(shè)備不是scsi設(shè)備,則調(diào)用或交由對(duì)應(yīng)的硬盤(pán)驅(qū)動(dòng)程序來(lái)完成
?
?
二、操作(環(huán)境rhel5.8 32bit 2.6.18):
scsi-target-utils(server-side工具,target,只是工具,真正服務(wù)是在內(nèi)核中完成)
iscsi-initiator-utils(client-side驅(qū)動(dòng),initiator)
?
(1)server-side(node4)建立共享,client-side(node{1,2})使用共享存儲(chǔ)(基于IP認(rèn)證)
server-side(node4):
[root@node4 ~]# fdisk /dev/sdb(+5G,不要格式化)
[root@node4 ~]# partprobe /dev/sdb
[root@node4 ~]# yum -y install scsi-target-utils
[root@node4 ~]# rpm -ql scsi-target-utils
/etc/rc.d/init.d/tgtd
/etc/sysconfig/tgtd
/etc/tgt/targets.conf
/usr/sbin/tgt-admin(Linux SCSI Target Configuration Tool,直接用于編輯配置文件)
/usr/sbin/tgtadm(Linux SCSI Target Administration Utility命令行管理工具,創(chuàng)建target、創(chuàng)建lun、IP認(rèn)證等)
[root@node4 ~]# service tgtd start
正在啟動(dòng) SCSI target daemon:?????????????????????????????[確定]
[root@node4 ~]# netstat -tnlp | grep tgtd
tcp???????0????? 0 0.0.0.0:3260??????????????? 0.0.0.0:*?????????????????? LISTEN????? 4863/tgtd??????????
tcp???????0????? 0 :::3260???????????????????? :::*??????????????????????? LISTEN????? 4863/tgtd?
[root@node4 ~]# chkconfig tgtd on
[root@node4 ~]# chkconfig --list tgtd
tgtd?????????? ??? 0:關(guān)閉????? 1:關(guān)閉????? 2:啟用????? 3:啟用????? 4:啟用????? 5:啟用????? 6:關(guān)閉
?
[root@node4 ~]# tgtadm -h(模式化命令,常用模式target、logicalunit、account)
#tgtadm --lld iscsi --mode target --op new--tid ID_NUM --targetname IQN(add a new target with <id> and <name>. <id> must not be zero.添加一個(gè)target,id號(hào)不能為0(0為保留,為本機(jī)所用);IQN,ISCSI Qualified Name)
注:IQN格式:iqn.yyyy-mm.<reserve domain name>:identifier(reserve domain name中各段要倒寫(xiě),如iqn.2015-07.com.magedu:tstore.disk1)
#tgtadm --lld iscsi --mode target --op show(show all the targets)
#tgtadm --lld iscsi --mode logicalunit --op new --tid ID_NUM --lun LUN --backing-store PATH(add a new logicalunit with <lun> to the specific target with <id>,添加邏輯單元到指定的target上,一個(gè)target上最多32個(gè)LUN)
#tgtadm --lld iscsi --mode target --op bind–tid ID_NUM --initiator-address ADDRESS(enable the target toaccept the specific initiators將允許使用此設(shè)備的client地址與target綁定,基于IP認(rèn)證)
注:
--op new|delete|show|update|bind|unbind
--lld(-L),--mode(-m),--op(-o),--tid(-t),--targetname(-T),--lun(-l),--backing-store(-b),--initiator-address(-I)
?
[root@node4 ~]# tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2015-07.com.magedu:teststore.disk1
[root@node4 ~]# tgtadm --lld iscsi --mode target --op show
[root@node4 ~]# tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sdb
[root@node4 ~]# tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 192.168.41.0/24(基于IP認(rèn)證)
[root@node4 ~]# tgtadm --lld iscsi --mode target --op show
……
???????LUN: 0
……
???????LUN: 1
……
???????????Online: Yes
……
???Account information:
???ACL information:
???????192.168.41.0/24
?
client-side(node1):
[root@node1 ~]# rpm -ql iscsi-initiator-utils(系統(tǒng)默認(rèn)已安裝此包)
/etc/iscsi
/etc/iscsi/iscsid.conf
/etc/logrotate.d/iscsiuiolog
/etc/rc.d/init.d/iscsi(啟動(dòng)此項(xiàng),iscsi會(huì)自動(dòng)啟動(dòng)iscsid)
/etc/rc.d/init.d/iscsid
/sbin/iscsi-iname(此命令會(huì)生成每一個(gè)initiator的名稱(chēng))
/sbin/iscsiadm(open-iscsi administration utility,initiator端的管理工具)
/var/lib/iscsi/ifaces(此目錄記錄通過(guò)哪個(gè)網(wǎng)卡連接target)
/var/lib/iscsi/nodes(此目錄下記錄建立關(guān)系的target端node的相關(guān)信息)
/var/lib/iscsi/send_targets(此目錄下記錄與target建立關(guān)系的目錄,目錄名為target端的IP和端口)
[root@node1 ~]# echo"InitiatorName=`iscsi-iname -p iqn.2015-07.com.magedu`" >/etc/iscsi/initiatorname.iscsi (生成指定前綴的initiator名稱(chēng),另此配置文件還可添加別名,如InitiatorAlias=node1.magedu.com)
[root@node1 ~]# cat/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2015-07.com.magedu:62bf666dd2
?
[root@node1 ~]# iscsiadm -h(模式化的命令,常用的模式discovery、node)
#man iscsiadm
#iscsiadm -m discovery [-d DEBUG_LEVEL] -t TYPE -p IP(發(fā)現(xiàn)指定服務(wù)器是否有target輸出或輸出了哪些target;DEBUG_LEVEL有0-8;TYPE四種,sendtargets通常使用此種簡(jiǎn)寫(xiě)為st、slp、isns、fw;-p,--portal入口,指定target服務(wù)器的IP地址)
#iscsiadm -m node -T TARGET_NAME -p IP -l|-u(建立或解除與指定的target間的關(guān)聯(lián)關(guān)系;-l,--login;-u,--logout)
?
[root@node1 ~]# iscsiadm -m discovery -t st -p 192.168.41.134
192.168.41.134:3260,1iqn.2015-07.com.magedu:teststore.disk1
[root@node1 ~]# iscsiadm -m node -T iqn.2015-07.com.magedu:teststore.disk1 -p 192.168.41.134 -l
Logging in to [iface: default, target:iqn.2015-07.com.magedu:teststore.disk1, portal: 192.168.41.134,3260] (multiple)
Login to [iface: default, target:iqn.2015-07.com.magedu:teststore.disk1, portal: 192.168.41.134,3260]successful.
[root@node1 ~]# fdisk -l(可查到關(guān)聯(lián)到本機(jī)的設(shè)備,可進(jìn)行格式化)
……
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
……
[root@node1 ~]# fdisk /dev/sdb(+2G)
[root@node1 ~]# mkdir /mydata
[root@node1 ~]# mkfs.ext3 /dev/sdb1
[root@node1 ~]# mount /dev/sdb1 /mydata
[root@node1 ~]# cd /mydata
[root@node1 mydata]# touch a.txt
[root@node1 mydata]# ls
a.txt?lost+found
?
client-side(node2):執(zhí)行與node1相同的操作,更改此node的InitiatorName,啟動(dòng)服務(wù),發(fā)現(xiàn)target、與target建立關(guān)聯(lián)關(guān)系、掛載設(shè)備
[root@node2 ~]# cd /mydata
[root@node2 mydata]# touch b.txt
[root@node2 mydata]# ls
b.txt?lost+found
[root@node2 mydata]# cd
[root@node2 ~]# cd /var/lib/iscsi
[root@node2 iscsi]# ls
ifaces?isns? nodes? send_targets?slp? static
[root@node2 iscsi]# ls send_targets/192.168.41.134,3260/
iqn.2015-07.com.magedu:teststore.disk1,192.168.41.134,3260,1,default? st_config
注:以上操作,兩node使用的是單機(jī)FS,若兩個(gè)node同時(shí)掛載使用,某一node新創(chuàng)建的一個(gè)文件,在另一node有可能會(huì)看不到(因?yàn)檫€在內(nèi)存中尚未同步到磁盤(pán));若兩node同時(shí)編輯磁盤(pán)中的同一文件,保存后FS會(huì)崩潰
?
(2)基于用戶(hù)名密碼認(rèn)證(CHAP為雙向認(rèn)證,challenge hand authentication protocol,挑戰(zhàn)式握手認(rèn)證協(xié)議,以下舉例是單向認(rèn)證(server-side創(chuàng)建帳號(hào)密碼,要求client認(rèn)證))
client-side(node{1,2}):
[root@node1 mydata]# vim /etc/iscsi/iscsid.conf
node.startup = automatic
node.leading_login = No
# CHAP Settings
node.session.auth.authmethod = CHAP
node.session.auth.username = iscsiuser(server-side建立的用戶(hù)名和密碼,要求client認(rèn)證)
node.session.auth.password = iscsiuser
#node.session.auth.username_in = username_in(client建立的用戶(hù)名和密碼,要求server-side認(rèn)證)
#node.session.auth.password_in = password_in
#discovery.sendtargets.auth.username = username(關(guān)于發(fā)現(xiàn)的用戶(hù)名和密碼認(rèn)證,openiscsi不支持此項(xiàng),忽略)
#discovery.sendtargets.auth.password = password
[root@node1 ~]# cd
[root@node1 ~]# iscsiadm -m node -T iqn.2015-07.com.magedu:teststore.disk1 -p 192.168.41.134 -u(--logout,解除關(guān)聯(lián)關(guān)系)
?[root@node1~]# iscsiadm -m node -T iqn.2015-07.com.magedu:teststore.disk1 -p 192.168.41.134 -o delete(-o delete,將有關(guān)與target上建立關(guān)聯(lián)關(guān)系的相關(guān)文件刪除,若不刪除重啟服務(wù)后會(huì)自動(dòng)登錄到此target)
[root@node1 ~]# rm -rf /var/lib/iscsi/send_targets/
?
server-side(node4):
[root@node4 ~]# tgtadm --lld iscsi --mode target --op show(確保已開(kāi)啟IP認(rèn)證,查看ACL information,因?yàn)?/span>iscsi-initiator不支持discovery認(rèn)證,通過(guò)IP認(rèn)證先發(fā)現(xiàn)后,再用帳號(hào)密碼認(rèn)證)
Account information:
???ACL information:
???????192.168.41.0/24
[root@node4 ~]# tgtadm -h
[root@node4 ~]# tgtadm --lld iscsi --mode account --op new --user iscsiuser --password iscsiuser
[root@node4 ~]# tgtadm --lld iscsi --mode account --op bind --tid 1 --user iscsiuser
[root@node4 ~]# tgtadm --lld iscsi --mode account --op show
Account list:
iscsiuser
[root@node4 ~]# tgtadm --lld iscsi --mode target --op show
???Account information:
???????iscsiuser
???ACL information:
???????192.168.41.0/24
?
client-side(node{1,2}):
[root@node1 ~]# service iscsi restart(no records found表示沒(méi)有任何與target關(guān)聯(lián)的設(shè)備)
iscsiadm: No matching sessions found……
Setting up iSCSI targets: iscsiadm: Norecords found
??????????????????????????????????????????????????????????[? OK? ]
[root@node1 ~]# iscsiadm -m discovery -t st -p 192.168.41.134
192.168.41.134:3260,1iqn.2015-07.com.magedu:teststore.disk1
[root@node1 ~]# iscsiadm -m node -T iqn.2015-07.com.magedu:teststore.disk1 -p 192.168.41.134 -l
Logging in to [iface: default, target:iqn.2015-07.com.magedu:teststore.disk1, portal: 192.168.41.134,3260] (multiple)
Login to [iface: default, target:iqn.2015-07.com.magedu:teststore.disk1, portal: 192.168.41.134,3260]successful.
注:認(rèn)證失敗提示如下:iscsiadm: Could not login to [iface: default, target:iqn.2015-07.com.magedu:teststore.disk1, portal: 192.168.41.134,3260].
iscsiadm: initiator reported error (24 -iSCSI login failed due to authorization failure)
iscsiadm: Could not log into all portals
?
注:client-side重啟服務(wù)后會(huì)自動(dòng)登錄并關(guān)聯(lián)到target;server-side重啟服務(wù)后要想永久有效要編輯配置文件/etc/tgt/targets.conf
?
(3)編輯server-side配置文件/etc/tgt/targets.conf
[root@node4 ~]# vim /etc/tgt/targets.conf
方式一:
default-driver iscsi
<target iqn.2015-07.com.magedu:teststore.disk1>
???backing-store /dev/sdb(這樣寫(xiě)sdb和sdc會(huì)依次被識(shí)別為lun1和lun2)
???backing-store /dev/sdc
???initiator-address 192.168.41.0/24(IP認(rèn)證)
???incominguser iscsiuser iscsiuser(帳號(hào)密碼認(rèn)證)
</target>
注:可將backing-store替換為direct-store,先按次序識(shí)別backing-store指定的硬盤(pán),再按次序識(shí)別direct-strore指定的硬盤(pán),backing-store優(yōu)先級(jí)比direct-store優(yōu)先級(jí)高(backing-store還可指定分區(qū))
方式二:
<targetiqn.2015-07.com.magedu:teststore.disk1>
???<backing-store /dev/sdb>
???????vender_id magedu
???????lun 5
???</backing-store>
???incominguser iscsi iscsi
???initiator-address 192.168.41.131
???initiator-address 192.168.41.132
</target>
注意:第二種方式可指定lun號(hào),每一個(gè)backing-store段都要包起來(lái)
[root@node4 ~]# service tgtd restart(使用第二種方式的配置文件,重啟服務(wù))
停止 SCSI target daemon:?????????????????????????????????[確定]
正在啟動(dòng) SCSI target daemon:?????????????????????????????[確定]
[root@node4 ~]# tgtadm --lld iscsi --mode target --op show
Target 1:iqn.2015-07.com.magedu:teststore.disk1
???System information:
???????Driver: iscsi
???????State: ready
???I_T nexus information:
???LUN information:
???????LUN: 0
???????????Type: controller
???????????SCSI ID: IET???? 00010000
???????????SCSI SN: beaf10
???????????Size: 0 MB, Block size: 1
???????????Online: Yes
???????????Removable media: No
??? ????????Prevent removal: No
???????????Readonly: No
???????????Backing store type: null
???????????Backing store path: None
???????????Backing store flags:
???????LUN: 5
???????????Type: disk
???????????SCSI ID: IET???? 00010005
???????????SCSI SN: beaf15
???????????Size: 10737 MB, Block size: 512
???????????Online: Yes
???????????Removable media: No
???????????Prevent removal: No
???????????Readonly: No
???????????Backing store type: rdwr
???????????Backing store path: /dev/sdb
???????????Backing store flags:
???Account information:
???????iscsi
???ACL information:
???????192.168.41.131
???????192.168.41.132
?
轉(zhuǎn)載于:https://blog.51cto.com/jowin/1726250
總結(jié)
- 上一篇: linux下通过rsync+inotif
- 下一篇: 开源跳板机(堡垒机)Jumpserver