1. 程式人生 > >linux I/O棧 之 SCSI TARGET (1) 基礎介紹

linux I/O棧 之 SCSI TARGET (1) 基礎介紹

    我們之前介紹了,linux I/O 棧的預習方面。簡單地瞭解了一下整個linux I/O 棧的組成。

從今天開始我們仔細介紹linux I/O棧的匯出I/O棧,linux I/O target。

 一、基礎介紹

     I/O匯出協議棧是什麼?

     從廣義上講,大家每天可能都會去接觸這個東西。

     比如:我們每天使用的行動硬碟,它的內部也是一個I/O匯出協議棧,但是由於它不涉及於I/O命令的解析,它僅僅是做了從SATA轉USB的工作。

     其實硬碟本身也是一個I/O匯出的標準規範,它用的規範往往是在後端儲存協議實現(SAS 、SATA等)。

     那麼我今天主要介紹的是前端匯出I/O協議棧,主要是包括:iscsi、fiber channel等大家比較常見的方式。

     歷史上很多匯出I/O協議棧,如我最早接觸的IET(iSCSI Enterprise Target),他只能匯出iscsi target,還有SCST,他比較全面debug,很多hba板卡廠商推薦它。

     我們重點介紹的是:linux 主線維護的LIO,也就是核心裡的target模組。

     

        linux I/O target的架構是很清晰的,從最上層的管理由CLI實現。

        CLI由/usr/lib/python3/dist-packages/rtslib_fb等支援。

    rtslib_fb通過操作/sys/kernel/config/target目錄下面的目錄和檔案來建立target核心支援。

    target在核心的configfs是一套比較複雜的程式碼,用來管理kernel裡的target的各個例項。

        target core模組由核心實現,它主要是做SCSI CMD的模擬工作,能夠提供各樣先進的能力。

    比如在cluster的角度,支援persistent reservations,ALUA(asymmetric logical unit assigntment),

REFERRALS特性,fence特性等。能夠實現高階VAAI特性,這主要用於vmware exsi。

    這其中主要的SCSI命令unmap,zero,write same,xcopy等也可以適用於其他虛擬化儲存平臺。

    儲存管理引擎包括:標準storage,記憶體map和RDMA等功能。

        最下層的fabric mod主要是匯出協議驅動的支援。

        storage mod,主要是提供backend的種類支援。