我們之前介紹了,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的種類支持。
【本文只在51cto博客作者 “底層存儲技術” https://blog.51cto.com/12580077 個人發布,公眾號發布:存儲之谷】,如需轉載,請于本人聯系,謝謝。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。