本發(fā)明涉及分布式存儲(chǔ),尤其是涉及一種利用spdk(storageperformance?development?kit)實(shí)現(xiàn)的,基于唯一客戶端標(biāo)識(shí)的分布式存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)骷夹g(shù)。
背景技術(shù):
1、當(dāng)前分布式存儲(chǔ)的各自開源實(shí)現(xiàn)或者商業(yè)實(shí)現(xiàn)絕大多數(shù)都基于linux操作系統(tǒng)平臺(tái)進(jìn)行開發(fā)。對(duì)于其他非linux平臺(tái)(如windows,esx等)的存儲(chǔ)訪問需求,需要構(gòu)建基于標(biāo)準(zhǔn)scsi(small?computer?system?interface,小型計(jì)算機(jī)系統(tǒng)接口)/nvme(non-volatilememory?express)協(xié)議的存儲(chǔ)網(wǎng)關(guān)。
2、而在多臺(tái)主機(jī)共享同一存儲(chǔ)資源的應(yīng)用場(chǎng)景,繞不開使用persistentreservation(pr,持久預(yù)留)以及compare-and-write(caw,比較并交換)兩種存儲(chǔ)鎖機(jī)制來實(shí)現(xiàn)不同存儲(chǔ)訪問客戶端的訪問權(quán)限控制。標(biāo)準(zhǔn)scsi/nvme協(xié)議中的pr以及caw鎖機(jī)制都是基于一對(duì)一鏈路信息的訪問權(quán)限控制,其訪問權(quán)限控制均在存儲(chǔ)網(wǎng)關(guān)的scsi/nvme?target層實(shí)現(xiàn),對(duì)于客戶端的多路徑訪問方式,需要在存儲(chǔ)網(wǎng)關(guān)間同步pr存儲(chǔ)鎖信息,同時(shí)為了保證嚴(yán)格意義上的caw鎖原子性,需要在存儲(chǔ)網(wǎng)關(guān)間選擇處理caw鎖的主網(wǎng)關(guān)節(jié)點(diǎn),如果其他從網(wǎng)關(guān)節(jié)點(diǎn)收到caw請(qǐng)求則將請(qǐng)求轉(zhuǎn)發(fā)主網(wǎng)關(guān)節(jié)點(diǎn)處理。不管是pr存儲(chǔ)鎖的存儲(chǔ)網(wǎng)關(guān)同步,或是caw存儲(chǔ)鎖的選主轉(zhuǎn)發(fā)邏輯,都依賴于復(fù)雜的集群套件或分布式組件實(shí)現(xiàn)(如dlm,corosync,etcd等)。這不僅進(jìn)一步提高了自有分布式存儲(chǔ)系統(tǒng)的復(fù)雜程度,還增加了整個(gè)存儲(chǔ)系統(tǒng)的風(fēng)險(xiǎn)點(diǎn),給分布式存儲(chǔ)的運(yùn)維帶來一定難度。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的就是為了提供一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,旨在提升自有分布式存?chǔ)系統(tǒng)對(duì)不同操作系統(tǒng)平臺(tái)的兼容性,實(shí)現(xiàn)訪問權(quán)限控制并支持多種客戶端跨協(xié)議共享訪問同一存儲(chǔ)卷,同時(shí)簡(jiǎn)化部署和降低自有分布式存儲(chǔ)系統(tǒng)復(fù)雜性及提高分布式存儲(chǔ)鎖性能。
2、本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):
3、一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒ǎ龇椒òǎ?/p>
4、在自有分布式存儲(chǔ)系統(tǒng)中,增設(shè)spdk存儲(chǔ)網(wǎng)關(guān);
5、通過spdk存儲(chǔ)網(wǎng)關(guān)的target層與存儲(chǔ)訪問客戶端建立連接,并為客戶端設(shè)置客戶端標(biāo)識(shí);
6、獲取客戶端請(qǐng)求并判斷請(qǐng)求類型;
7、若客戶端請(qǐng)求為pr鎖請(qǐng)求,則利用pr透?jìng)髦噶顚в锌蛻舳藰?biāo)識(shí)的客戶端請(qǐng)求傳遞給pbdx驅(qū)動(dòng)進(jìn)行轉(zhuǎn)化并透?jìng)鞯阶杂蟹植际酱鎯?chǔ)系統(tǒng)進(jìn)行處理;
8、若客戶端請(qǐng)求為io請(qǐng)求且客戶端標(biāo)識(shí)已設(shè)置,則將客戶端標(biāo)識(shí)應(yīng)用到每個(gè)io請(qǐng)求描述符,隨后將帶有客戶端標(biāo)識(shí)的io請(qǐng)求交由pbdx驅(qū)動(dòng)轉(zhuǎn)化并透?jìng)鞯阶杂蟹植际酱鎯?chǔ)系統(tǒng)進(jìn)行處理;
9、若客戶端請(qǐng)求為io請(qǐng)求且客戶端標(biāo)識(shí)未設(shè)置,則直接在自有分布式存儲(chǔ)系統(tǒng)中進(jìn)行io操作,無需進(jìn)行訪問權(quán)限檢查;
10、若客戶端請(qǐng)求為查詢請(qǐng)求,則根據(jù)查詢請(qǐng)求從自有分布式存儲(chǔ)系統(tǒng)中獲取對(duì)應(yīng)存儲(chǔ)訪問客戶端的信息,根據(jù)信息中的客戶端標(biāo)識(shí)反查出其對(duì)應(yīng)的存儲(chǔ)訪問客戶端,
11、處理、操作和反查結(jié)束后,將結(jié)果返回客戶端。
12、進(jìn)一步地,所述pbdx驅(qū)動(dòng)內(nèi)置命令解析器,且是spdk存儲(chǔ)網(wǎng)關(guān)的bdev層內(nèi)置自有分布式存儲(chǔ)系統(tǒng)訪問客戶端驅(qū)動(dòng),用于將標(biāo)準(zhǔn)協(xié)議的客戶端請(qǐng)求轉(zhuǎn)化為自有分布式存儲(chǔ)系統(tǒng)內(nèi)部對(duì)應(yīng)的請(qǐng)求。
13、進(jìn)一步地,任一客戶端的客戶端標(biāo)識(shí)都是唯一且不變的。
14、進(jìn)一步地,所述客戶端標(biāo)識(shí)由spdk?target層根據(jù)存儲(chǔ)訪問客戶端的配置進(jìn)行設(shè)置,并保存到對(duì)應(yīng)存儲(chǔ)訪問客戶端連接描述結(jié)構(gòu)體中。
15、更進(jìn)一步地,所述客戶端標(biāo)識(shí)的設(shè)置包括:
16、若客戶端通過iscsi(internet?small?computer?system?interface,internet小型計(jì)算機(jī)系統(tǒng)接口)方式接入自有分布式存儲(chǔ)系統(tǒng),則根據(jù)iscsi客戶端的iqn(iscsiqualified?name,iscsi限定名)設(shè)置客戶端標(biāo)識(shí);
17、若客戶端通過nvme(non-volatile?memory?express,非易失性內(nèi)存主機(jī)控制器接口規(guī)范)方式接入自有分布式存儲(chǔ)系統(tǒng),則根據(jù)nvme客戶端的nqn(nvme?qualified?name,nvme限定名)設(shè)置客戶端標(biāo)識(shí);
18、若客戶端通過vhost-scsi(virtual?host?scsi)方式接入自有分布式存儲(chǔ)系統(tǒng),則根據(jù)vhost?controller(虛擬主機(jī)控制器)設(shè)置客戶端標(biāo)識(shí)。
19、進(jìn)一步地,獲取的請(qǐng)求為pr鎖請(qǐng)求時(shí),為pr透?jìng)髦噶钤O(shè)置請(qǐng)求發(fā)出客戶端的客戶端標(biāo)識(shí)。
20、進(jìn)一步地,若pr透?jìng)髦噶羁蛻舳藰?biāo)識(shí)未設(shè)置,則視為參數(shù)錯(cuò)誤,返回einval。
21、進(jìn)一步地,所述自有分布式存儲(chǔ)系統(tǒng)的處理包括:
22、接收帶有客戶端標(biāo)識(shí)的客戶端請(qǐng)求;
23、識(shí)別客戶端標(biāo)識(shí),根據(jù)客戶端標(biāo)識(shí)碼給予客戶端相應(yīng)權(quán)限;
24、驗(yàn)證客戶端權(quán)限是否允許客戶端進(jìn)行客戶端請(qǐng)求中的操作,若驗(yàn)證通過,則根據(jù)請(qǐng)求進(jìn)行相應(yīng)操作,并將操作結(jié)果返回客戶端,若驗(yàn)證不通過,則駁回客戶端請(qǐng)求。
25、進(jìn)一步地,通過調(diào)用spdk存儲(chǔ)網(wǎng)關(guān)的bdev層io接口將帶有客戶端標(biāo)識(shí)的io請(qǐng)求交由pbdx驅(qū)動(dòng)轉(zhuǎn)化并透?jìng)鞯阶杂蟹植际酱鎯?chǔ)系統(tǒng)進(jìn)行處理。
26、更進(jìn)一步地,所述io接口包括讀、寫、compare和write?zero接口。
27、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
28、本發(fā)明提供了一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒ǎ瑢?biāo)準(zhǔn)scsi或nvme協(xié)議基于鏈路標(biāo)識(shí)的存儲(chǔ)鎖轉(zhuǎn)化為基于客戶端標(biāo)識(shí)的存儲(chǔ)鎖,實(shí)現(xiàn)了訪問權(quán)限控制并支持多種客戶端跨協(xié)議共享訪問同一存儲(chǔ)卷,提高了對(duì)不同操作系統(tǒng)平臺(tái)的兼容性以及存儲(chǔ)資源的靈活性和利用率,在spdk存儲(chǔ)網(wǎng)關(guān)層將客戶端請(qǐng)求透?jìng)鞯阶杂蟹植际酱鎯?chǔ)系統(tǒng)實(shí)現(xiàn),實(shí)現(xiàn)了存儲(chǔ)網(wǎng)關(guān)的無狀態(tài)化,有效降低了對(duì)開源同步組件的依賴,簡(jiǎn)化存儲(chǔ)網(wǎng)關(guān)部署,減少整個(gè)存儲(chǔ)系統(tǒng)故障風(fēng)險(xiǎn)點(diǎn);
29、pbdx驅(qū)動(dòng)自帶命令解析器,能夠直接解析并轉(zhuǎn)化scsi或nvme標(biāo)準(zhǔn)協(xié)議的客戶端請(qǐng)求,避免了多次協(xié)議轉(zhuǎn)換和對(duì)spdk?bdev接口層的大幅修改,保障了請(qǐng)求信息的完整性;
30、通過將客戶端請(qǐng)求直接透?jìng)鞯阶杂蟹植际酱鎯?chǔ)系統(tǒng)處理,減少了在存儲(chǔ)網(wǎng)關(guān)層的處理時(shí)間,提高了存儲(chǔ)訪問的效率。
1.一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,其特征在于,所述方法包括?/p>
2.根據(jù)權(quán)利要求1所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒ǎ涮卣髟谟?,所述pbdx驅(qū)動(dòng)內(nèi)置命令解析器,且是spdk存儲(chǔ)網(wǎng)關(guān)的bdev層內(nèi)置的自有分布式存儲(chǔ)系統(tǒng)訪問客戶端驅(qū)動(dòng),用于將標(biāo)準(zhǔn)協(xié)議的客戶端請(qǐng)求轉(zhuǎn)化為自有分布式存儲(chǔ)系統(tǒng)內(nèi)部對(duì)應(yīng)的請(qǐng)求。
3.根據(jù)權(quán)利要求1所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒ǎ涮卣髟谟?,任一客戶端的客戶端?biāo)識(shí)都是唯一且不變的。
4.根據(jù)權(quán)利要求1所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,其特征在于,所述客戶端?biāo)識(shí)由spdk?target層根據(jù)存儲(chǔ)訪問客戶端的配置進(jìn)行設(shè)置,并保存到對(duì)應(yīng)存儲(chǔ)訪問客戶端連接描述結(jié)構(gòu)體中。
5.根據(jù)權(quán)利要求4所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,其特征在于,所述客戶端?biāo)識(shí)的設(shè)置包括:
6.根據(jù)權(quán)利要求1所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,其特征在于,獲取的請(qǐng)求為pr鎖請(qǐng)求時(shí),根據(jù)客戶端信息獲取到對(duì)應(yīng)客戶端標(biāo)識(shí),為pr鎖指令設(shè)置請(qǐng)求發(fā)出客戶端的客戶端標(biāo)識(shí)。
7.根據(jù)權(quán)利要求6所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,其特征在于,若無法獲取到pr指令的客戶端的客戶端標(biāo)識(shí),則視為參數(shù)錯(cuò)誤,返回einval。
8.根據(jù)權(quán)利要求1所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,其特征在于,所述自有分布式存?chǔ)系統(tǒng)的處理包括:
9.根據(jù)權(quán)利要求1所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒?,其特征在于,通過調(diào)用spdk存儲(chǔ)網(wǎng)關(guān)的bdev層io接口將帶有客戶端標(biāo)識(shí)的io請(qǐng)求交由pbdx驅(qū)動(dòng)轉(zhuǎn)化并透?jìng)鞯阶杂蟹植际酱鎯?chǔ)系統(tǒng)進(jìn)行處理。
10.根據(jù)權(quán)利要求9所述的一種基于客戶端標(biāo)識(shí)的spdk存儲(chǔ)網(wǎng)關(guān)客戶端請(qǐng)求透?jìng)鞣椒ǎ涮卣髟谟?,所述io接口包括讀、寫、compare和write?zero接口。