Openiscsi的發(fā)現(xiàn)過程
這次研究的主要涉及這幾個(gè)組件:
iscsiadmin
iscsiadmin是提供給用戶使用的命令行程序,主要功能就是設(shè)置iSCSI的一些相關(guān)功能屬性,比如發(fā)現(xiàn)iqn;設(shè)置認(rèn)證模式、用戶名、密碼;連接SCSI設(shè)備等等。但是iscsiadm又不做具體的工作,它只是把這些信息通過IPC調(diào)用傳遞給iscsid這個(gè)服務(wù)程序,由iscsid來執(zhí)行真正的操作。而這里的IPC實(shí)際上就是一個(gè)本地的socket,iscsid監(jiān)聽這個(gè)本地socket,iscsiadm通過這個(gè)socket和iscsid交互。
iscsid
iscsid可以看做是用戶和內(nèi)核的一個(gè)橋梁,它通過mgmt_ipc(本地socket)這個(gè)東西和iscsiadm交互,響應(yīng)用戶的請求;利用control_fd(netlink)和內(nèi)核交互,把用戶的指令發(fā)送給內(nèi)核。
scsi_transport_iscsi
這是iscsi傳輸層,一個(gè)內(nèi)核模塊。Linux在設(shè)計(jì)的時(shí)候,非常好的利用了面向?qū)ο蟮脑O(shè)計(jì)思想,這個(gè)模塊就可以看做是一個(gè)對scsi傳輸層的抽象,它僅實(shí)現(xiàn)一些傳輸層通用的流程,具體的實(shí)現(xiàn)由它的子類們完成。
iscsi_tcp
基于tcp協(xié)議的iSCSI傳輸模塊,是上面講到的scsi_transport_iscsi的具體實(shí)現(xiàn)。傳輸層需要的基于tcp的數(shù)據(jù)收發(fā)就是這個(gè)模塊實(shí)現(xiàn)的。
這里要注意一個(gè)問題,上圖實(shí)際上少畫了一條線,iscsid到tgtd之間應(yīng)該有一個(gè)socket路徑。在創(chuàng)建連接、Session和進(jìn)行認(rèn)證的時(shí)候,實(shí)際上是iscsid創(chuàng)建了一個(gè)socket,和tgtd進(jìn)行交互。以上操作都正確完成了之后,iscsid會(huì)將這個(gè)socket的句柄傳遞到內(nèi)核,iscsi_tcp正是使用的這個(gè)socket。
后續(xù)計(jì)劃
后面主要會(huì)研究一下這三個(gè)方面:
iscsi的登陸認(rèn)證流程,基于chap的認(rèn)證流程。
iscsi磁盤的掃描流程,一個(gè)target的設(shè)備如何映射到主機(jī)上成為一個(gè)sd設(shè)備。
iscsi磁盤的IO流程,從讀寫函數(shù)開始,一個(gè)IO請求是如何變成scsi命令,然后發(fā)送到target端的。
發(fā)現(xiàn)過程
發(fā)現(xiàn)target的過程比較簡單,從復(fù)雜的代碼中總結(jié)出主要的流程如下圖。這個(gè)流程和命令iscsiadm -m discovery -t st -p 192.168.8.1相對應(yīng):
這個(gè)發(fā)現(xiàn)的流程的代碼寫的挺復(fù)雜,但是總結(jié)出的流程還是比較簡單的。主要就是iscsiadm這個(gè)程序和tgtd這個(gè)程序通過socket交互,取得所有的target。從tgtd側(cè)返回的target格式如下:
“TargetName=iqn.2013-07.sds.ginkgo:ws
“TargetName=iqn.2013-07.sds.ginkgo:ws\0TargetAddress=192.168.8.1:3260,1\0”
TargetAddress=192.168.8.1:3260,1“TargetName=iqn.2013-07.sds.ginkgo:ws\0TargetAddress=192.168.8.1:3260,1\0”
”注意看加紅的地方,每個(gè)屬性都是以字符休止符隔開的
函數(shù)調(diào)用過程
經(jīng)過下圖的函數(shù)調(diào)用流程,initiator端就取得到了target端所有的iqn12
Socket編程 TCP/IP
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。