iSCSI initiator軟件架構

SCSI分層

Linux內(nèi)核中SCSI代碼結構分為三層,它們和塊設備驅(qū)動的關系如下圖所示:


SCSI分層

iscsi initiator要實現(xiàn)SCSI底層,即負責將scsi命令封裝成網(wǎng)絡報文發(fā)送給target。

Open-iSCSI

Open-iSCSI 是Linux內(nèi)核支持的標準iSCSI Initiator,它包括:

  • 用戶態(tài)下的iscsid, iscsiadm等工具
  • 內(nèi)核模塊iscsi_tcp.ko, libiscsi_tcp.ko, libiscsi.ko, scsi_transport_iscsi.ko
  • /etc/iscsi/initiatorname.iscsi和/etc/iscsi/iscsid.conf

iscsid守護進程

iscsid主要負責根據(jù)配置在系統(tǒng)啟動時發(fā)起到target的登錄,在 /var/lib/iscsi/send_targets 目錄下包含iSCSI portals的配置信息,每個portal對應一個文件,例如192.168.36.212,3260

iscsiadm

用來管理(更新、刪除、插入、查詢)iSCSI配置數(shù)據(jù)庫文件的命令行工具,能夠?qū)SCSI nodes、sessions、connections和discovery records進行一系列的操作

Open-iSCSI軟件架構

軟件架構

Open-iSCSI的整個流程為

  1. iscsid守護進程讀取配置文件,創(chuàng)建本地socket和netlink socket
  2. 執(zhí)行Iscsiadm命令,通過本地socket連接iscsid
  3. iscsid建立和target之間的TCP connection,完成login
  4. iscsid通過netlink socket通知內(nèi)核,進入iSCSI內(nèi)核代碼
  5. iSCSI觸發(fā)Linux的通用SCSI層以及塊設備層,向內(nèi)核中注冊塊設備/dev/sdb及其request queue
  6. 用戶訪問塊設備時,通過request queue的回調(diào)函數(shù)進入SCSI通用層,最后調(diào)用iSCSI注冊的回調(diào)函數(shù)
  7. iscsi_tcp.ko完成和target之間的TCP通信
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容