我們之前介紹了,linux I/O 棧的預(yù)習(xí)方面。簡(jiǎn)單地了解了一下整個(gè)linux I/O 棧的組成。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),遂溪企業(yè)網(wǎng)站建設(shè),遂溪品牌網(wǎng)站建設(shè),網(wǎng)站定制,遂溪網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,遂溪網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。從今天開(kāi)始我們仔細(xì)介紹linux I/O棧的導(dǎo)出I/O棧,linux I/O target。
一、基礎(chǔ)介紹
I/O導(dǎo)出協(xié)議棧是什么?
從廣義上講,大家每天可能都會(huì)去接觸這個(gè)東西。
比如:我們每天使用的移動(dòng)硬盤(pán),它的內(nèi)部也是一個(gè)I/O導(dǎo)出協(xié)議棧,但是由于它不涉及于I/O命令的解析,它僅僅是做了從SATA轉(zhuǎn)USB的工作。
其實(shí)硬盤(pán)本身也是一個(gè)I/O導(dǎo)出的標(biāo)準(zhǔn)規(guī)范,它用的規(guī)范往往是在后端存儲(chǔ)協(xié)議實(shí)現(xiàn)(SAS 、SATA等)。
那么我今天主要介紹的是前端導(dǎo)出I/O協(xié)議棧,主要是包括:iscsi、fiber channel等大家比較常見(jiàn)的方式。
歷史上很多導(dǎo)出I/O協(xié)議棧,如我最早接觸的IET(iSCSI Enterprise Target),他只能導(dǎo)出iscsi target,還有SCST,他比較全面debug,很多hba板卡廠(chǎng)商推薦它。
我們重點(diǎn)介紹的是:linux 主線(xiàn)維護(hù)的LIO,也就是內(nèi)核里的target模塊。
linux I/O target的架構(gòu)是很清晰的,從最上層的管理由CLI實(shí)現(xiàn)。
CLI由/usr/lib/python3/dist-packages/rtslib_fb等支持。
rtslib_fb通過(guò)操作/sys/kernel/config/target目錄下面的目錄和文件來(lái)創(chuàng)建target內(nèi)核支持。
target在內(nèi)核的configfs是一套比較復(fù)雜的代碼,用來(lái)管理kernel里的target的各個(gè)實(shí)例。
target core模塊由內(nèi)核實(shí)現(xiàn),它主要是做SCSI CMD的仿真工作,能夠提供各樣先進(jìn)的能力。
比如在cluster的角度,支持persistent reservations,ALUA(asymmetric logical unit assigntment),
REFERRALS特性,fence特性等。能夠?qū)崿F(xiàn)高級(jí)VAAI特性,這主要用于vmware exsi。
這其中主要的SCSI命令unmap,zero,write same,xcopy等也可以適用于其他虛擬化存儲(chǔ)平臺(tái)。
存儲(chǔ)管理引擎包括:標(biāo)準(zhǔn)storage,內(nèi)存map和RDMA等功能。
最下層的fabric mod主要是導(dǎo)出協(xié)議驅(qū)動(dòng)的支持。
storage mod,主要是提供backend的種類(lèi)支持。
【本文只在51cto博客作者 “底層存儲(chǔ)技術(shù)” https://blog.51cto.com/12580077 個(gè)人發(fā)布,公眾號(hào)發(fā)布:存儲(chǔ)之谷】,如需轉(zhuǎn)載,請(qǐng)于本人聯(lián)系,謝謝。