本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,具體的說(shuō)是涉及一種分布式存儲(chǔ)系統(tǒng)中tgt穩(wěn)定性優(yōu)化方法。
背景技術(shù):
iscsi:internetsmallcomputersysteminterface,是一種基于tcp/ip的存儲(chǔ)協(xié)議,用來(lái)建立和管理ip存儲(chǔ)設(shè)備、主機(jī)和客戶機(jī)等之間的相互連接,并創(chuàng)建存儲(chǔ)區(qū)域網(wǎng)絡(luò)(san)。san使得scsi協(xié)議應(yīng)用于高速數(shù)據(jù)傳輸網(wǎng)絡(luò)成為可能,這種傳輸以數(shù)據(jù)塊級(jí)別(block-level)在多個(gè)數(shù)據(jù)存儲(chǔ)網(wǎng)絡(luò)間進(jìn)行。iscsi架構(gòu)是cs模型,client端為iscsiinitiator,server端為iscsitarget。
tgt是gnu/linux操作系統(tǒng)上,一款全用戶態(tài)的開源的iscsitarget。由于其全用戶態(tài)實(shí)現(xiàn)和框架式的軟件架構(gòu),可以輕易修改或增加backend模塊,以實(shí)現(xiàn)各種后端存儲(chǔ)系統(tǒng)的訪問(wèn)。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中的不足,本發(fā)明要解決的技術(shù)問(wèn)題在于提供了一種分布式存儲(chǔ)系統(tǒng)中tgt穩(wěn)定性優(yōu)化方法。
為解決上述技術(shù)問(wèn)題,本發(fā)明通過(guò)以下方案來(lái)實(shí)現(xiàn):一種分布式存儲(chǔ)系統(tǒng)中tgt穩(wěn)定性優(yōu)化方法,所述優(yōu)化方法應(yīng)用于分布式存儲(chǔ)系統(tǒng)或單機(jī)存儲(chǔ)使用,其特征在于,該優(yōu)化方法是使用tgt對(duì)外提供iscsitarget服務(wù)時(shí),通過(guò)多進(jìn)程與模塊拆分方式,解決單機(jī)內(nèi)tgt形成單點(diǎn)故障的問(wèn)題,增加故障隔離性,極大地減少了故障影響范圍,將系統(tǒng)穩(wěn)定性大幅度提升;
用戶態(tài)進(jìn)程在操作系統(tǒng)實(shí)現(xiàn)了資源隔離與抽象,用戶態(tài)進(jìn)程之間可以做到完全隔離,互不影響,利用進(jìn)程隔離性,將tgt服務(wù)更加細(xì)粒度化,更加可控,更小的影響范圍;
所述優(yōu)化方法包括分布式iscsi存儲(chǔ)系統(tǒng),該分布式iscsi存儲(chǔ)系統(tǒng)包括:
應(yīng)用主機(jī):該應(yīng)用主機(jī)是應(yīng)用程序運(yùn)行的主機(jī),當(dāng)應(yīng)用程序需要使用外部存儲(chǔ)時(shí),通過(guò)iscsiinitiator將控制主機(jī)提供的iscsitarget中的lun映射到本主機(jī)上,應(yīng)用程序就像使用本地磁盤一樣,使用iscsi卷;
控制主機(jī):生成iscsitarget,完成后端存儲(chǔ)資源抽象,將后端存儲(chǔ)資源通過(guò)iscsi提供存儲(chǔ)服務(wù),實(shí)現(xiàn)數(shù)據(jù)通道,iops限制,網(wǎng)絡(luò)raid,糾刪碼特性實(shí)現(xiàn);tgt是一個(gè)iscsitarget框架,具體的數(shù)據(jù)存儲(chǔ)由backend實(shí)現(xiàn),通過(guò)自定義實(shí)現(xiàn)backend,來(lái)適配不同的后端存儲(chǔ)系統(tǒng);
存儲(chǔ)主機(jī):分布式存儲(chǔ)系統(tǒng)中,數(shù)據(jù)最終的存放地點(diǎn),將存儲(chǔ)資源抽象成多個(gè)存儲(chǔ)組件;
所述優(yōu)化方法還包括多進(jìn)程和共享內(nèi)存方法,所述多進(jìn)程和共享內(nèi)存方法是在tgtd進(jìn)程外部,設(shè)置一片共享內(nèi)存區(qū)域和一個(gè)microcontroller模塊,共享內(nèi)存區(qū)域用于傳遞數(shù)據(jù),由microcontroller完成數(shù)據(jù)傳輸和功能特性的具體實(shí)現(xiàn),具體實(shí)施步驟如下:
步驟①:在控制主機(jī)中規(guī)劃存儲(chǔ)資源,每個(gè)存儲(chǔ)資源對(duì)應(yīng)一個(gè)tgtd進(jìn)程、一個(gè)tgtd進(jìn)程只包含一個(gè)target和一個(gè)lun;
步驟②:應(yīng)用主機(jī)通過(guò)網(wǎng)絡(luò)發(fā)現(xiàn)target和lun,根據(jù)需求應(yīng)用主機(jī)選擇所需的lun完成登錄過(guò)程;于是便將lun映射為應(yīng)用主機(jī)的虛擬塊設(shè)備;
步驟③:應(yīng)用主機(jī)上的程序使用虛擬塊設(shè)備,數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳遞tgtd進(jìn)程,tgt框架將iscsi協(xié)議格式的數(shù)據(jù)處理后,以scsi命令格式傳遞到backend模塊;backend模塊處理后,將數(shù)據(jù)封裝成請(qǐng)求存放到共享內(nèi)存區(qū)域,并通知microcontroller有新數(shù)據(jù)到來(lái);
步驟④:microcontroller收到有新數(shù)據(jù)到來(lái)的通知后,從共享內(nèi)存區(qū)域取出相應(yīng)的請(qǐng)求,經(jīng)請(qǐng)求經(jīng)過(guò)處理后通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)落地到存儲(chǔ)主機(jī)中。
相對(duì)于現(xiàn)有技術(shù),本發(fā)明的有益效果是:本發(fā)明的布式存儲(chǔ)系統(tǒng)中tgt穩(wěn)定性優(yōu)化方法在分布式存儲(chǔ)系統(tǒng)中使用,也可以作為單機(jī)存儲(chǔ)使用??梢詫⒑蠖舜鎯?chǔ)系統(tǒng),網(wǎng)絡(luò),本機(jī)的各種異常引起的故障的波及范圍控制在單個(gè)lun中,不會(huì)擴(kuò)散,極大地提高了系統(tǒng)穩(wěn)定性。
附圖說(shuō)明
圖1是本發(fā)明的分布式iscsi存儲(chǔ)系統(tǒng)架構(gòu)圖;
圖2是本發(fā)明的多進(jìn)程方式改進(jìn)結(jié)構(gòu)圖;
圖3是本發(fā)明的多進(jìn)程和共享內(nèi)存方式改進(jìn)結(jié)構(gòu)圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點(diǎn)和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對(duì)本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。
請(qǐng)參照附圖3,本發(fā)明的一種分布式存儲(chǔ)系統(tǒng)中tgt穩(wěn)定性優(yōu)化方法,所述優(yōu)化方法應(yīng)用于分布式存儲(chǔ)系統(tǒng)或單機(jī)存儲(chǔ)使用,該優(yōu)化方法是使用tgt對(duì)外提供iscsitarget服務(wù)時(shí),通過(guò)多進(jìn)程與模塊拆分方式,解決單機(jī)內(nèi)tgt形成單點(diǎn)故障的問(wèn)題,增加故障隔離性,極大地減少了故障影響范圍,將系統(tǒng)穩(wěn)定性大幅度提升;
用戶態(tài)進(jìn)程在操作系統(tǒng)實(shí)現(xiàn)了資源隔離與抽象,用戶態(tài)進(jìn)程之間可以做到完全隔離,互不影響,利用進(jìn)程隔離性,將tgt服務(wù)更加細(xì)粒度化,更加可控,更小的影響范圍;
所述優(yōu)化方法包括分布式iscsi存儲(chǔ)系統(tǒng),該分布式iscsi存儲(chǔ)系統(tǒng)包括:
應(yīng)用主機(jī):該應(yīng)用主機(jī)是應(yīng)用程序運(yùn)行的主機(jī),當(dāng)應(yīng)用程序需要使用外部存儲(chǔ)時(shí),通過(guò)iscsiinitiator將控制主機(jī)提供的iscsitarget中的lun映射到本主機(jī)上,應(yīng)用程序就像使用本地磁盤一樣,使用iscsi卷;
控制主機(jī):生成iscsitarget,完成后端存儲(chǔ)資源抽象,將后端存儲(chǔ)資源通過(guò)iscsi提供存儲(chǔ)服務(wù),實(shí)現(xiàn)數(shù)據(jù)通道,iops限制,網(wǎng)絡(luò)raid,糾刪碼特性實(shí)現(xiàn);tgt是一個(gè)iscsitarget框架,具體的數(shù)據(jù)存儲(chǔ)由backend實(shí)現(xiàn),通過(guò)自定義實(shí)現(xiàn)backend,來(lái)適配不同的后端存儲(chǔ)系統(tǒng);
存儲(chǔ)主機(jī):分布式存儲(chǔ)系統(tǒng)中,數(shù)據(jù)最終的存放地點(diǎn),將存儲(chǔ)資源抽象成多個(gè)存儲(chǔ)組件;
圖1中,有兩個(gè)應(yīng)用主機(jī),分別映射一個(gè)iscsi存儲(chǔ)資源,由于tgt設(shè)計(jì)為單進(jìn)程多線程模型,backend由一組線程來(lái)完成數(shù)據(jù)處理。在圖1中,是通常的iscsi使用方式,這里有兩個(gè)風(fēng)險(xiǎn)點(diǎn)將影響系統(tǒng)穩(wěn)定性:
①所有iscsiinitiator連接到同一個(gè)tgtd進(jìn)程,由這個(gè)tgtd進(jìn)程負(fù)責(zé)本控制主機(jī)所有target和lun??梢钥闯鰐gtd進(jìn)程存在單點(diǎn)的問(wèn)題,只要其中一個(gè)backend程序?qū)е聇gtd進(jìn)程coredump,整個(gè)控制主機(jī)所有的target和lun都會(huì)受到影響。
②上述提到過(guò)backend程序需要完成大量的邏輯,如實(shí)現(xiàn)數(shù)據(jù)通道,iops限制,網(wǎng)絡(luò)raid,糾刪碼特性,cache,網(wǎng)絡(luò)異常處理等,大量的代碼加入到tgt的框架中,會(huì)為tgt引入大量bug。
為了解決上述兩個(gè)影響穩(wěn)定性的問(wèn)題,本發(fā)明提出兩點(diǎn)改進(jìn):
①tgtd完成多進(jìn)程。
②將大量邏輯代碼從backend中剝離,由外部獨(dú)立的進(jìn)程完成。
如圖2所示,為本發(fā)明的多進(jìn)程方式改進(jìn)結(jié)構(gòu)圖。將圖1中的單進(jìn)程tgtd,改成多進(jìn)程tgtd,每個(gè)tgtd進(jìn)程維護(hù)一個(gè)target/lun。應(yīng)用主機(jī)中的每個(gè)iscsi卷都連接到單獨(dú)的tgtd進(jìn)程上,如果backend程序的異常,由于tgtd是純用戶態(tài)的進(jìn)程,只會(huì)影響單個(gè)tgtd進(jìn)程,其他target和lun將完全不受影響。嚴(yán)格控制故障異常影響范圍,對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō),是大幅度提高了穩(wěn)定性。在軟件工程中,代碼量越少,架構(gòu)越簡(jiǎn)單,bug數(shù)量將越少,系統(tǒng)更穩(wěn)定。為了將訪問(wèn)后端存儲(chǔ)、各種高級(jí)功能特性等代碼從tgt剝離,增強(qiáng)tgt的穩(wěn)定性。
如圖3所示,所述優(yōu)化方法還包括多進(jìn)程和共享內(nèi)存方法,所述多進(jìn)程和共享內(nèi)存方法是在tgtd進(jìn)程外部,設(shè)置一片共享內(nèi)存區(qū)域和一個(gè)microcontroller模塊,共享內(nèi)存區(qū)域用于傳遞數(shù)據(jù),由microcontroller完成數(shù)據(jù)傳輸和功能特性的具體實(shí)現(xiàn),具體實(shí)施步驟如下:
步驟①:在控制主機(jī)中規(guī)劃存儲(chǔ)資源,每個(gè)存儲(chǔ)資源對(duì)應(yīng)一個(gè)tgtd進(jìn)程、一個(gè)tgtd進(jìn)程只包含一個(gè)target和一個(gè)lun;
步驟②:應(yīng)用主機(jī)通過(guò)網(wǎng)絡(luò)發(fā)現(xiàn)target和lun,根據(jù)需求應(yīng)用主機(jī)選擇所需的lun完成登錄過(guò)程;于是便將lun映射為應(yīng)用主機(jī)的虛擬塊設(shè)備;
步驟③:應(yīng)用主機(jī)上的程序使用虛擬塊設(shè)備,數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳遞tgtd進(jìn)程,tgt框架將iscsi協(xié)議格式的數(shù)據(jù)處理后,以scsi命令格式傳遞到backend模塊;backend模塊處理后,將數(shù)據(jù)封裝成請(qǐng)求存放到共享內(nèi)存區(qū)域,并通知microcontroller有新數(shù)據(jù)到來(lái);
步驟④:microcontroller收到有新數(shù)據(jù)到來(lái)的通知后,從共享內(nèi)存區(qū)域取出相應(yīng)的請(qǐng)求,經(jīng)請(qǐng)求經(jīng)過(guò)處理后通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)落地到存儲(chǔ)主機(jī)中。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施方式,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。