用于云服務(wù)器的基于fpga的數(shù)據(jù)存儲(chǔ)方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云服務(wù)器領(lǐng)域,具體來(lái)說(shuō),涉及一種用于云服務(wù)器的基于現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)的數(shù)據(jù)存儲(chǔ)方法和裝置。
【背景技術(shù)】
[0002]目前,隨著云服務(wù)器的應(yīng)用越來(lái)越廣泛,人們對(duì)云服務(wù)器的不同需求也在日益增加,例如低成本、可配置、結(jié)構(gòu)簡(jiǎn)單等,而為了滿足這些需求,主要是通過(guò)將虛擬化技術(shù)應(yīng)用到云計(jì)算當(dāng)中,從而實(shí)現(xiàn)云服務(wù)器的桌面虛擬化,網(wǎng)絡(luò)虛擬化以及存儲(chǔ)虛擬化等虛擬化功能,而對(duì)于存儲(chǔ)虛擬化來(lái)說(shuō),其具體的應(yīng)用原理是通過(guò)將云計(jì)算服務(wù)器的存儲(chǔ)模塊進(jìn)行虛擬化處理,從而使得在對(duì)云計(jì)算服務(wù)器的存儲(chǔ)空間進(jìn)行訪問(wèn)時(shí),能夠根據(jù)需求集中訪問(wèn)存儲(chǔ)設(shè)備,進(jìn)而使云服務(wù)器的結(jié)構(gòu)更加簡(jiǎn)單,降低系統(tǒng)功耗。
[0003]而為了實(shí)現(xiàn)云計(jì)算服務(wù)器的存儲(chǔ)模塊的虛擬化,在現(xiàn)有技術(shù)中,主要是通過(guò)軟件的方式將服務(wù)器的存儲(chǔ)空間進(jìn)行邏輯的分隔,從而組成不同的邏輯存儲(chǔ)空間,其中,通過(guò)一個(gè)邏輯存儲(chǔ)實(shí)體來(lái)代表底層復(fù)雜的物理驅(qū)動(dòng)器,從而在一定程度上屏蔽單個(gè)存儲(chǔ)設(shè)備的容量、速度等物理特性,以實(shí)現(xiàn)云服務(wù)器的存儲(chǔ)虛擬化,但是這種軟件方式的存儲(chǔ)虛擬化方法只能使單個(gè)處理器來(lái)共享同一實(shí)體的存儲(chǔ)空間,而并不能夠通過(guò)硬件的方式在實(shí)現(xiàn)多個(gè)處理器共享同一實(shí)體存儲(chǔ)空間的同時(shí)又實(shí)現(xiàn)服務(wù)器的存儲(chǔ)空間的虛擬化擴(kuò)展。
[0004]針對(duì)相關(guān)技術(shù)中的上述問(wèn)題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005]針對(duì)相關(guān)技術(shù)中的問(wèn)題,本發(fā)明提出一種用于云服務(wù)器的基于FPGA的數(shù)據(jù)存儲(chǔ)方法和裝置,能夠通過(guò)硬件方式實(shí)現(xiàn)多顆處理器共享同一實(shí)體存儲(chǔ)空間,實(shí)現(xiàn)多顆處理器共享同一存儲(chǔ)空間的虛擬存儲(chǔ),使云服務(wù)器結(jié)構(gòu)更加精簡(jiǎn),降低系統(tǒng)功耗。
[0006]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007]根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于云服務(wù)器的基于FPGA的數(shù)據(jù)存儲(chǔ)方法。
[0008]該數(shù)據(jù)存儲(chǔ)方法包括:
[0009]通過(guò)對(duì)處理器發(fā)送的第一指令進(jìn)行分析,確定第一指令所對(duì)應(yīng)的目標(biāo)硬盤(pán);
[0010]生成表示處理器與目標(biāo)硬盤(pán)建立第一連接的第一連接請(qǐng)求指令并發(fā)送;
[0011]在接收到表示第一連接請(qǐng)求指令執(zhí)行成功的第一連接成功指令的情況下,將第一指令轉(zhuǎn)發(fā)至目標(biāo)硬盤(pán)。
[0012]其中,在通過(guò)對(duì)處理器發(fā)送的第一指令進(jìn)行分析,來(lái)確定第一指令所對(duì)應(yīng)的目標(biāo)硬盤(pán)時(shí),可通過(guò)獲取第一指令中對(duì)應(yīng)于本地虛擬磁盤(pán)的第一地址信息;并根據(jù)預(yù)定的映射規(guī)則對(duì)第一地址信息作地址映射處理,從而得到第一地址信息在目標(biāo)硬盤(pán)中所對(duì)應(yīng)的第二地址信息和/或第一指令所對(duì)應(yīng)的目標(biāo)硬盤(pán)。
[0013]此外,在將處理器發(fā)送的第一指令轉(zhuǎn)發(fā)至目標(biāo)硬盤(pán)時(shí),可通過(guò)該第一連接將第一指令轉(zhuǎn)發(fā)至目標(biāo)硬盤(pán)。
[0014]優(yōu)選的,該數(shù)據(jù)存儲(chǔ)方法進(jìn)一步包括:
[0015]在將第一指令轉(zhuǎn)發(fā)至目標(biāo)硬盤(pán)完成后,生成表示處理器與目標(biāo)硬盤(pán)斷開(kāi)第一連接的第一斷開(kāi)請(qǐng)求指令并發(fā)送。
[0016]優(yōu)選的,該數(shù)據(jù)存儲(chǔ)方法進(jìn)一步包括:
[0017]在接收到來(lái)自硬盤(pán)的表示與目標(biāo)處理器建立第二連接的第二連接請(qǐng)求指令、且第二連接請(qǐng)求指令執(zhí)行成功的情況下,發(fā)送表示第二連接請(qǐng)求指令執(zhí)行成功的第二連接成功指令至硬盤(pán)。
[0018]優(yōu)選的,該數(shù)據(jù)存儲(chǔ)方法進(jìn)一步包括:
[0019]通過(guò)第二連接來(lái)接收來(lái)自硬盤(pán)的第二指令;
[0020]通過(guò)對(duì)第二指令進(jìn)行分析,確定第二指令中對(duì)應(yīng)于硬盤(pán)的第三地址信息;
[0021]根據(jù)預(yù)定的反映射規(guī)則對(duì)第三地址信息作地址反映射處理,從而得到第三地址信息在對(duì)應(yīng)目標(biāo)處理器的本地虛擬磁盤(pán)中的第四地址信息并發(fā)送。
[0022]優(yōu)選的,該數(shù)據(jù)存儲(chǔ)方法進(jìn)一步包括:
[0023]在對(duì)第二指令接收完成后,生成表示目標(biāo)處理器與硬盤(pán)斷開(kāi)第二連接的第二斷開(kāi)請(qǐng)求指令并發(fā)送。
[0024]根據(jù)本發(fā)明的另一方面,提供了一種用于云服務(wù)器的基于FPGA的數(shù)據(jù)存儲(chǔ)系統(tǒng)。
[0025]該數(shù)據(jù)存儲(chǔ)系統(tǒng)包括:
[0026]多個(gè)FPGA 板;
[0027]其中,每個(gè)FPGA板中包括多個(gè)處理器控制單元和一存儲(chǔ)控制器,其中,存儲(chǔ)控制器與多個(gè)處理器控制單元分別連接;
[0028]每個(gè)FPGA板均連接有多個(gè)處理器,其中,多個(gè)處理器與該FPGA板中的多個(gè)處理器控制單元分別--對(duì)應(yīng)連接。
[0029]其中,存儲(chǔ)控制器用于接收和/或響應(yīng)所在的FPGA板所連接的處理器發(fā)送的指令、以及進(jìn)一步用于向與該處理器存在映射關(guān)系的硬盤(pán)發(fā)送指令和/或接收與該處理器存在映射關(guān)系的硬盤(pán)所發(fā)送的指令。
[0030]其中,多個(gè)FPGA板所連接的多個(gè)處理器與硬盤(pán)的映射關(guān)系包括以下至少之一:
[0031]一個(gè)處理器對(duì)應(yīng)多個(gè)硬盤(pán);
[0032]一個(gè)處理器對(duì)應(yīng)一個(gè)硬盤(pán);
[0033]多個(gè)處理器對(duì)應(yīng)一個(gè)硬盤(pán)。
[0034]本發(fā)明通過(guò)硬件方式實(shí)現(xiàn)多顆處理器共享同一實(shí)體存儲(chǔ)空間,實(shí)現(xiàn)多顆處理器共享同一存儲(chǔ)空間的虛擬存儲(chǔ),使云服務(wù)器結(jié)構(gòu)更加精簡(jiǎn),降低系統(tǒng)功耗。
【附圖說(shuō)明】
[0035]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0036]圖1是根據(jù)本發(fā)明實(shí)施例的用于云服務(wù)器的基于FPGA的數(shù)據(jù)存儲(chǔ)方法的流程圖;
[0037]圖2是根據(jù)本發(fā)明實(shí)施例的用于云服務(wù)器的基于FPGA的數(shù)據(jù)存儲(chǔ)系統(tǒng)的框架圖。
【具體實(shí)施方式】
[0038]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0039]根據(jù)本發(fā)明的實(shí)施例,提供了一種用于云服務(wù)器的基于FPGA的數(shù)據(jù)存儲(chǔ)方法。
[0040]如圖1所示,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)方法包括:
[0041]步驟S101,通過(guò)對(duì)處理器發(fā)送的第一指令進(jìn)行分析,確定第一指令所對(duì)應(yīng)的目標(biāo)硬盤(pán);
[0042]步驟S103,生成表示處理器與目標(biāo)硬盤(pán)建立第一連接的第一連接請(qǐng)求指令并發(fā)送;
[0043]步驟S105,在接收到表示第一連接請(qǐng)求指令執(zhí)行成功的第一連接成功指令的情況下,存儲(chǔ)控制器將第一指令轉(zhuǎn)發(fā)至目標(biāo)硬盤(pán)。
[0044]為了更好的理解本發(fā)明的上述技術(shù)方案,下面結(jié)合一具體實(shí)施例來(lái)對(duì)本發(fā)明的上述技術(shù)方案進(jìn)行詳細(xì)闡述。
[0045]圖2示出了本實(shí)施例中的用于云服務(wù)器的基于FPGA的數(shù)據(jù)存儲(chǔ)系統(tǒng)的架構(gòu)圖,從圖2可以看出,為了實(shí)現(xiàn)對(duì)云服務(wù)器中的多個(gè)處理器的存儲(chǔ)空間虛擬化,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)系統(tǒng)由多個(gè)FPGA板(FPGA0?FPGA0)構(gòu)成,其中,每個(gè)FPGA板中設(shè)有多個(gè)處理器控制器(這里為8個(gè))和一個(gè)存儲(chǔ)控制器,其中,該存儲(chǔ)控制器與該FPGA板中的8個(gè)處理器控制器分別連接;
[0046]此外,每個(gè)FPGA板還均連接有多個(gè)處理器,具體的連接方式是通過(guò)FPGA板中的處理器控制器來(lái)實(shí)現(xiàn)處理器的連接,其中,每個(gè)FPGA板中設(shè)置的處理器控制器的數(shù)量和外連的處理器的數(shù)量是相同的,并且,一個(gè)FPGA板中的8個(gè)處理器控制器與該FPGA板外接的8個(gè)處理器與是一一對(duì)應(yīng)連接的,其中,處理器與處理器控制器之間可通過(guò)SATA協(xié)議通信,而為了使本發(fā)明的數(shù)據(jù)存儲(chǔ)系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),還需要使每個(gè)FPGA板均可與外接的硬盤(pán)通信,具體的,在本實(shí)施例中在FPGA板和多個(gè)物理硬盤(pán)之間建立了一個(gè)SAS Expander,該SAS Expander可插入多塊物理硬盤(pán),同時(shí)其還有一個(gè)外設(shè)接口分出多條線來(lái)分別與不同的FPGA板中的存儲(chǔ)控制器連接,可以理解為SAS Expander是對(duì)云服務(wù)器的多個(gè)處理器實(shí)現(xiàn)存儲(chǔ)虛擬化的橋梁,其中,為了方便理解,在本例中將PFGA板和多個(gè)對(duì)應(yīng)的處理器側(cè)叫做控制端,而多個(gè)硬盤(pán)(硬盤(pán)O?硬盤(pán)η)側(cè)叫做設(shè)備端,那么SAS Expander則是用于建立控制端和設(shè)備端的通信連接,從而實(shí)現(xiàn)云服務(wù)器中多個(gè)處理器的數(shù)據(jù)存儲(chǔ),其中,在控制端的處理器控制器與設(shè)備端的硬盤(pán)建立連接之前,系統(tǒng)會(huì)根據(jù)處理器的需求將一個(gè)或多個(gè)硬盤(pán)按照預(yù)定的地址映射規(guī)則分配給多個(gè)處理器,而分配后的結(jié)果可以是一個(gè)處理器對(duì)應(yīng)一個(gè)硬盤(pán),也可以是一個(gè)處理器對(duì)應(yīng)多個(gè)硬盤(pán),還可以是多個(gè)處理器對(duì)應(yīng)多個(gè)硬盤(pán),具體分配方式可以根據(jù)處理器的實(shí)際需要進(jìn)行靈活調(diào)整。
[0047]而在基于圖2所示的系統(tǒng)架構(gòu)來(lái)對(duì)控制端的數(shù)據(jù)進(jìn)行數(shù)據(jù)的虛擬化存儲(chǔ)時(shí),具體的存儲(chǔ)流程以一條指令由處理器00發(fā)往硬盤(pán)I為例來(lái)進(jìn)行詳細(xì)闡述:
[0048]處理器00發(fā)送指令至FPGA板O中對(duì)應(yīng)該處理器00的處理器控制器00,然后該處理器控制器00對(duì)處理器00發(fā)送的指令進(jìn)行分析,具體的,通過(guò)讀取該指令中的地址信息部分并記錄(即對(duì)應(yīng)于本地虛擬磁盤(pán)的第一地址信息),然后根據(jù)預(yù)定的地址映射規(guī)則對(duì)讀取的地址信息作地址映射處理,從而得到該地址信息在目標(biāo)硬盤(pán)I中所對(duì)應(yīng)的第二地址信息(即在硬盤(pán)中的物理存儲(chǔ)地址),和設(shè)備端的目標(biāo)硬盤(pán)I的SAS地址(相當(dāng)于硬盤(pán)I的唯一標(biāo)識(shí)信息),即該指令所對(duì)應(yīng)的目標(biāo)硬盤(pán)為硬盤(pán)1,為了方便理解,下面舉一具體的例子,例如系統(tǒng)預(yù)先對(duì)處理器00分配的存儲(chǔ)空間為100GB,其中O?50GB由硬盤(pán)O提供,51?100GB由硬盤(pán)I提供,而由于是虛擬存儲(chǔ),因此,在控制端側(cè)只可看到O?100G在本地虛擬磁盤(pán)中的對(duì)應(yīng)地址信息(即第一地址信息),那么假如該指令的目的是訪問(wèn)第70GB的信息,那么系統(tǒng)根據(jù)預(yù)定的地址映射規(guī)則就可確定處理器00所要訪問(wèn)的是物理磁盤(pán)I的第20GB的存儲(chǔ)地址(即第二地址信息),從而在控制端的處理器側(cè)無(wú)需確定所要訪問(wèn)的存儲(chǔ)地址在物理硬盤(pán)中的實(shí)際地址,而只需將需要訪問(wèn)的本地虛擬磁盤(pán)中的地址信息加載在指令中發(fā)送至處理器控制器00即可,從而屏蔽了底層硬盤(pán)的驅(qū)動(dòng)器的復(fù)雜性以及存儲(chǔ)系統(tǒng)后端拓?fù)浣Y(jié)構(gòu)的多樣性。
[0049]然后在確定了硬盤(pán)I的SAS地址后就可生成Open Address幀(即表不處理器00與硬盤(pán)I建立連接的請(qǐng)求指令),然后將該Open Address幀發(fā)送至FPGA板O中與各個(gè)處理器控制器相連的存儲(chǔ)控制器0,存儲(chǔ)控制器O就可將該Open Address幀通過(guò)SAS協(xié)議發(fā)送至SAS Expander,以請(qǐng)求建立存儲(chǔ)控制器O與硬盤(pán)I的連接;SAS Expander在接收到該Open Address幀后,就會(huì)建立存儲(chǔ)控制器O和硬盤(pán)I的連接,即處理器00和硬盤(pán)I的連接;
[0050]然后在該連接建立成功后,SAS Expander就會(huì)