Openiscsi的發(fā)現(xiàn)過程

      網(wǎng)友投稿 817 2025-03-31

      這次研究的主要涉及這幾個(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”

      Openiscsi的發(fā)現(xiàn)過程

      注意看加紅的地方,每個(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)容。

      上一篇:通過鼠標(biāo)拖拽輕松創(chuàng)建出多個(gè)相似的Excel圖表的方法
      下一篇:Redis進(jìn)階-Redis的惰性刪除
      相關(guān)文章
      中文字幕亚洲综合久久综合| 亚洲综合色丁香麻豆| 亚洲已满18点击进入在线观看| 精品日韩亚洲AV无码一区二区三区| 亚洲免费观看视频| 国产亚洲真人做受在线观看| 久久久亚洲精品蜜桃臀| 中文字幕精品亚洲无线码一区| 亚洲男人天堂2020| 亚洲第一成人影院| 中文字幕不卡亚洲 | 亚洲中字慕日产2021| 亚洲第一页在线播放| 亚洲熟妇av一区| 亚洲乱码在线播放| 亚洲一区二区三区在线观看蜜桃| 91亚洲国产成人久久精品网址| 亚洲国产理论片在线播放| 亚洲av永久无码精品天堂久久| jlzzjlzz亚洲jzjzjz| 国产AV旡码专区亚洲AV苍井空| 亚洲精华国产精华精华液好用| 亚洲成a∨人片在无码2023| 国产精品手机在线亚洲| 亚洲第一页日韩专区| 中文字幕亚洲日韩无线码| 亚洲精品高清国产一线久久| 亚洲视频在线免费观看| 亚洲天堂中文字幕在线观看| 久久亚洲精品国产亚洲老地址| 亚洲国产精品美女久久久久| av无码东京热亚洲男人的天堂| 国产a v无码专区亚洲av| 亚洲色偷拍另类无码专区| 亚洲av无码乱码国产精品fc2| 久久久久亚洲AV无码永不| 亚洲性色成人av天堂| 亚洲国产精品网站在线播放| 国产av无码专区亚洲国产精品| 亚洲国产精品福利片在线观看| 久久亚洲AV成人无码软件 |