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