SCSI/ISCSI协议
SCSI即小型計(jì)算機(jī)接口(Small Computer System Interface),指的是一個(gè)龐大協(xié)議體系,到目前為止經(jīng)歷了SCSI-1/SCSI-2/SCSI-3變遷。 SCSI協(xié)議定義了一套不同設(shè)備(磁盤,磁帶,處理器,光設(shè)備,網(wǎng)絡(luò)設(shè)備等)利用該框架進(jìn)行信息交互的模型和必要指令集。
SCSI協(xié)議本質(zhì)上同傳輸介質(zhì)無(wú)關(guān),SCSI可以在多種介質(zhì)上實(shí)現(xiàn),甚至是虛擬介質(zhì)。例如基于光纖的FCP鏈路協(xié)議,基于SAS的鏈路協(xié)議,基于虛擬IP鏈路的ISCSI協(xié)議。通俗點(diǎn)說(shuō)SCSI協(xié)議就是一個(gè)存儲(chǔ)設(shè)備與服務(wù)器之間接口傳遞的一個(gè)規(guī)范。?
存儲(chǔ)中SCSI/ISCSI的使用場(chǎng)景:?
1、SCSI的邏輯拓?fù)?/h2>
邏輯單元(LUN):LUN是SCSI目標(biāo)器中所描述的名字空間資源,一個(gè)目標(biāo)器可以包括多個(gè)LUN,而且每個(gè)LUN的屬性可以有所區(qū)別,比如LUN#0可以是磁盤,LUN#1可以是其他設(shè)備。
啟動(dòng)器(Initiator):本質(zhì)上,SCSI是一個(gè)C/S架構(gòu),其中客戶端成為啟動(dòng)器,負(fù)責(zé)向SCSI目標(biāo)器發(fā)送請(qǐng)求指令,一般主機(jī)系統(tǒng)都充當(dāng)了啟動(dòng)器的角色。
目標(biāo)器(Target):處理SCSI指令的服務(wù)端稱為目標(biāo)器,它接收來(lái)自主機(jī)的指令并解析處理,比如磁盤陣列的角色就是目標(biāo)器。 SCSI的Initiator與Target共同構(gòu)成了一個(gè)典型的C/S模型,每個(gè)指令都是“請(qǐng)求/應(yīng)答”這樣的模型來(lái)實(shí)現(xiàn)。
- Initiator主要任務(wù):發(fā)出SCSI請(qǐng)求。
- Target主要任務(wù):回答SCSI請(qǐng)求,通過(guò)LUN提供業(yè)務(wù),并通過(guò)任務(wù)管理器提供任務(wù)管理功能。
SCSI啟動(dòng)器模型?
主機(jī)的SCSI系統(tǒng)一般工作在“啟動(dòng)器”模式下面,從SCSI的體系結(jié)構(gòu)來(lái)說(shuō),分為了“架構(gòu)層(中間層)”,“設(shè)備層”,“傳輸層”,故此一般的操作系統(tǒng),都將SCSI分為三個(gè)層次,包括Windows, Linux, AIX, Solaris ,BSD。
- Windows下的啟動(dòng)器架構(gòu):Windows將SCSI啟動(dòng)器分為三個(gè)邏輯層次,其中ScsiPort負(fù)責(zé)實(shí)現(xiàn)SCSI的基本框架性處理流程,比如設(shè)備發(fā)現(xiàn),名字空間掃描等。
- Linux下的啟動(dòng)器架構(gòu):Linux將SCSI啟動(dòng)器分為三個(gè)邏輯層次,其中scsi_mod中間層復(fù)雜處理SCSI設(shè)備無(wú)關(guān)和適配器無(wú)關(guān)的流程處理,比如一些異常,名字空間維護(hù)等。HBA驅(qū)動(dòng)提供SCSI指令的打包解包傳輸?shù)孺溌穼?shí)現(xiàn)細(xì)節(jié),設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)特定的SCSI設(shè)備驅(qū)動(dòng),比如著名的sd(SCSI磁盤)驅(qū)動(dòng),st(SCSI磁帶)驅(qū)動(dòng),sr(SCSI光盤設(shè)備)驅(qū)動(dòng)等。
- AIX下的啟動(dòng)器架構(gòu):AIX的結(jié)構(gòu)也是分為三層,即:SCSI設(shè)備驅(qū)動(dòng),SCSI中間層,SCSI適配驅(qū)動(dòng)。
SCSI目標(biāo)層器模型
Target一般依據(jù)SCSI體系結(jié)構(gòu),分為三個(gè)層次,分別是鏈路端口層(Port Layer),中間層( Middle Layer),目標(biāo)設(shè)備層(Device Layer)。其中最重要的是中間層,在中間層中將以SAM/SPC為規(guī)范,對(duì)LUN命名空間,鏈路端口,目標(biāo)設(shè)備,任務(wù),任務(wù)集,會(huì)話等進(jìn)行管理維護(hù)。端口層的驅(qū)動(dòng)都以注冊(cè)的形式動(dòng)態(tài)載入,設(shè)備層的驅(qū)動(dòng)也是動(dòng)態(tài)載入。
- 目標(biāo)器中PORT模型:PORT驅(qū)動(dòng)將動(dòng)態(tài)載入,PORT主要完成的任務(wù)是對(duì)鏈路上攜帶的SCSI指令的解包和封包,比如將指令打包為FPC或者ISCSI或者SAS等,或者將指令從FCP/ISCSI/SAS中解開(kāi)。iSCSI/FCP/SAS等硬件的目標(biāo)器模式驅(qū)動(dòng)都屬于PORT范疇,PORT需要提供的方法函數(shù)可能包括,傳輸報(bào)文(xmit_response),準(zhǔn)備好接受數(shù)據(jù)(xfer_data),管理指令處理完畢回調(diào)(mgmt_task_done),任務(wù)處理結(jié)束(cmd_done),端口控制(復(fù)位等control)等。
- 目標(biāo)器中間層:中間層維護(hù)了“LUN空間”,“任務(wù)集”,“任務(wù)(命令)”等模型,對(duì)于LUN空間維護(hù)有兩種截然不同的實(shí)現(xiàn)方法,一種是所有的PORT都看見(jiàn)的是一個(gè)全局的LUN,并外一種是為每個(gè)PORT維護(hù)一個(gè)LUN空間,其中第一種方法實(shí)現(xiàn)較為簡(jiǎn)單,這里的討論以第一種展開(kāi)。
- 目標(biāo)器中的Device模型:本質(zhì)上Device是一個(gè)SCSI指令“分析器”,通過(guò)處理INQUIRY告訴Initiator當(dāng)前LUN是什么設(shè)備,通過(guò)READ/WRITE處理IO。
2、SCSI協(xié)議和存儲(chǔ)系統(tǒng)
SCSI協(xié)議是主機(jī)與存儲(chǔ)磁盤通信的基本協(xié)議。DAS使用SCSI協(xié)議實(shí)現(xiàn)主機(jī)服務(wù)器與存儲(chǔ)設(shè)備的互聯(lián)。?
控制器首先向總線處理器發(fā)出請(qǐng)求使用總線的信號(hào)。該請(qǐng)求被接受之后,控制器高速緩存就開(kāi)始執(zhí)行發(fā)送操作。在這個(gè)過(guò)程中,控制器占用了總線,總線上所連接的其它設(shè)備都不能使用總線。當(dāng)然,由于總線具備中斷功能,所以總線處理器可以隨時(shí)中斷這一傳輸過(guò)程并將總線控制權(quán)交給其它設(shè)備,以便執(zhí)行更高優(yōu)先級(jí)的操作。
SCSI 控制器相當(dāng)于一個(gè)小型CPU,有自己的命令集和緩存。SCSI是一種特殊的總線結(jié)構(gòu),可以對(duì)計(jì)算機(jī)中的多個(gè)設(shè)備進(jìn)行動(dòng)態(tài)分工操作,對(duì)于系統(tǒng)同時(shí)要求的多個(gè)任務(wù)可以靈活機(jī)動(dòng)的適當(dāng)分配,動(dòng)態(tài)完成。
3、SCSI尋址?
為了對(duì)連接在SCSI總線上的設(shè)備尋址,SCSI協(xié)議引入了SCSI設(shè)備ID和邏輯單元號(hào)LUN(Logical Unit Number)。在SCSI總線上的每個(gè)設(shè)備都必須有一個(gè)唯一的設(shè)備ID,當(dāng)然服務(wù)器中的主機(jī)總線適配器也擁有自己的設(shè)備ID,固定為7。每條總線,包括總線適配器,最多允許有8個(gè)或者16個(gè)設(shè)備ID。設(shè)備ID一方面用以尋址,另一個(gè)作用是標(biāo)識(shí)該設(shè)備在總線使用上的優(yōu)先級(jí)。此外,在同一條總線上連接的不同的設(shè)備的設(shè)備ID必須不同,否則就會(huì)引起尋址和優(yōu)先級(jí)的沖突。
每一個(gè)存儲(chǔ)設(shè)備可能包括若干個(gè)子設(shè)備,如虛擬磁盤、磁帶驅(qū)動(dòng)器等。 因此SCSI協(xié)議引入了邏輯單元號(hào)LUN ID,以便于對(duì)存儲(chǔ)設(shè)備中的子設(shè)備進(jìn)行尋址。
傳統(tǒng)的SCSI控制器連接單條總線,相應(yīng)的只具有一個(gè)總線號(hào)。企業(yè)級(jí)的一個(gè)服務(wù)器則可能配置了多個(gè)SCSI控制器,從而就可能有多條SCSI總線。在引入存儲(chǔ)網(wǎng)絡(luò)之后,每個(gè)FC HBA(Host Bus Adapter)或iSCSI(Internet SCSI)網(wǎng)卡也都各連接著一條總線,因此必須對(duì)每一條總線分配一個(gè)總線號(hào),在他們之間依靠不同的總線號(hào)加以區(qū)分。我們可以使用一個(gè)三元描述標(biāo)識(shí)一個(gè)SCSI目標(biāo):總線號(hào)/目標(biāo)設(shè)備ID/邏輯單元號(hào)LUN ID。
4、ISCSI協(xié)議
iSCSI協(xié)議最早由IBM、CISCO、HP發(fā)起,2004年起作為正式的IETF標(biāo)準(zhǔn),現(xiàn)有的iSCSI協(xié)議依據(jù)SAM2(SCSI Architecture Model-2)。
iSCSI (Internet SCSI)把SCSI命令和塊狀數(shù)據(jù)封裝在TCP中在IP網(wǎng)絡(luò)中傳輸。 iSCSI作為SCSI的傳輸層協(xié)議,基本出發(fā)點(diǎn)是利用成熟的IP網(wǎng)絡(luò)技術(shù)來(lái)實(shí)現(xiàn)和延伸SAN。
4.1 ISCSI協(xié)議棧
iSCSI是互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口(Internet Small Computer System Interface)的簡(jiǎn)稱,是一種在TCP/IP上進(jìn)行數(shù)據(jù)塊傳輸?shù)臉?biāo)準(zhǔn),可以理解為SCSI over IP。 iSCSI可構(gòu)成基于IP的SAN,為用戶提供高速、低價(jià)、長(zhǎng)距離的存儲(chǔ)解決方案。
iSCSI將SCSI命令封裝到TCP/IP數(shù)據(jù)包中,使I/O數(shù)據(jù)塊可通過(guò)IP網(wǎng)絡(luò)傳輸。
iSCSI (Internet SCSI)把SCSI命令和塊狀數(shù)據(jù)封裝在TCP中在IP網(wǎng)絡(luò)中傳輸。iSCSI作為SCSI的傳輸層協(xié)議,基本出發(fā)點(diǎn)是利用成熟的IP網(wǎng)絡(luò)技術(shù)來(lái)實(shí)現(xiàn)和延伸SAN。 iSCSI協(xié)議是SCSI遠(yuǎn)程過(guò)程調(diào)用模型到TCP/IP協(xié)議的映射。SCSI協(xié)議層負(fù)責(zé)生成CDB,并將其送到iSCSI協(xié)議層,然后由 iSCSI協(xié)議層進(jìn)一步封裝成PDU,經(jīng)IP網(wǎng)絡(luò)進(jìn)行傳送。
4.2 ISCSI系統(tǒng)模型
發(fā)起端(Initiator)
- SCSI層負(fù)責(zé)生成CDB(命令描述符塊),將CDB傳給iSCSI。
- iSCSI層負(fù)責(zé)生成iSCSI ?PDU(協(xié)議數(shù)據(jù)單元),并通過(guò)IP網(wǎng)絡(luò)將PDU發(fā)給target。
目標(biāo)器(Target)
- iSCSI層收到PDU,將CDB傳給SCSI層。
- SCSI層負(fù)責(zé)解釋CDB的意義,必要時(shí)發(fā)送響應(yīng)。
4.3 ISCSI體系架構(gòu)
iSCSI節(jié)點(diǎn)將SCSI指令和數(shù)據(jù)封裝成iSCSI包,然后該數(shù)據(jù)封裝被傳送給TCP/IP層,再由TCP/IP協(xié)議將iSCSI包封裝成IP協(xié)議數(shù)據(jù)以適合在網(wǎng)絡(luò)中傳輸。
在支持iSCSI的系統(tǒng)中,用戶在一臺(tái)SCSI存儲(chǔ)設(shè)備上發(fā)出存數(shù)據(jù)或取數(shù)據(jù)的命令,操作系統(tǒng)對(duì)該請(qǐng)求進(jìn)行處理,并將該請(qǐng)求轉(zhuǎn)換成一條或者多條SCSI指令,然后再傳給目標(biāo)SCSI控制卡。iSCSI節(jié)點(diǎn)將指令和數(shù)據(jù)封裝(Encapsulation)起來(lái),形成一個(gè)iSCSI包,然后該數(shù)據(jù)封裝被傳送給TCP/IP層,再由TCP/IP協(xié)議將iSCSI包封裝成IP協(xié)議數(shù)據(jù)以適合在網(wǎng)絡(luò)中傳輸。也可以對(duì)封裝的SCSI命令進(jìn)行加密處理,然后在不安全的網(wǎng)絡(luò)上傳送。
數(shù)據(jù)包可以在局域網(wǎng)或Internet上傳送。在接收存儲(chǔ)控制器上,數(shù)據(jù)報(bào)重新被組合,然后存儲(chǔ)控制器讀取iSCSI包中的SCSI控制命令和數(shù)據(jù)發(fā)送到相應(yīng)的磁盤驅(qū)動(dòng)器上,磁盤驅(qū)動(dòng)器再執(zhí)行初始計(jì)算機(jī)或應(yīng)用所需求的功能。如果發(fā)送的是數(shù)據(jù)請(qǐng)求,那么將數(shù)據(jù)從磁盤驅(qū)動(dòng)器中取出進(jìn)行封裝后發(fā)送給發(fā)出請(qǐng)求的計(jì)算機(jī),而這整個(gè)過(guò)程對(duì)于用戶來(lái)說(shuō)都是透明的。
盡管SCSI命令的執(zhí)行和數(shù)據(jù)準(zhǔn)備可以通過(guò)使用標(biāo)準(zhǔn)TCP/IP和現(xiàn)成的網(wǎng)絡(luò)控制卡的軟件來(lái)完成,但是在利用軟件完成封裝和解封裝的情況下,在主機(jī)處理器上實(shí)現(xiàn)這些功能需要很多的CPU運(yùn)算周期來(lái)處理數(shù)據(jù)和SCSI命令。如果將這些事務(wù)交給專門的設(shè)備處理,則可以將對(duì)系統(tǒng)性能的影響減少到最小程度,因此,發(fā)展在iSCSI標(biāo)準(zhǔn)下并執(zhí)行SCSI命令和完成數(shù)據(jù)準(zhǔn)備的專用iSCSI適配器是有必要的。iSCSI 適配器結(jié)合了NIC(網(wǎng)絡(luò)接口控制器)和HBA(主機(jī)總線適配器)的功能。這種適配器以塊方式取得數(shù)據(jù),利用 TCP/IP處理引擎在適配卡上完成數(shù)據(jù)分化和處理,然后通過(guò)IP網(wǎng)絡(luò)送出IP數(shù)據(jù)包。這些功能的完成使用戶可以在不降低服務(wù)器性能的基礎(chǔ)上創(chuàng)建一個(gè)基于IP的SAN。
?8b/10b編碼是將一組連續(xù)的8位數(shù)據(jù)分解成兩組數(shù)據(jù),一組3位,一組5位,經(jīng)過(guò)編碼后分別成為一組4位的代碼和一組6位的代碼,從而組成一組10位的數(shù)據(jù)發(fā)送出去。
總結(jié)
以上是生活随笔為你收集整理的SCSI/ISCSI协议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何查找计算机SCI论文文献 - 易智编
- 下一篇: UVALive 5871 Arnooks