我們之前介紹了,linux I/O 棧的預(yù)習(xí)方面。簡(jiǎn)單地了解了一下整個(gè)linux I/O 棧的組成。
我們提供的服務(wù)有:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、丁青ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(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板卡廠商推薦它。
我們重點(diǎn)介紹的是:linux 主線維護(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的種類支持。
【本文只在51cto博客作者 “底層存儲(chǔ)技術(shù)” https://blog.51cto.com/12580077 個(gè)人發(fā)布,公眾號(hào)發(fā)布:存儲(chǔ)之谷】,如需轉(zhuǎn)載,請(qǐng)于本人聯(lián)系,謝謝。