一種數(shù)據(jù)存儲系統(tǒng)及其使用方法
【專利摘要】本發(fā)明提供了一種數(shù)據(jù)存儲系統(tǒng)及其使用方法,包括:SATA指令解析模塊,用于分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA指令進(jìn)行解析,并發(fā)送至對應(yīng)的地址映射模塊;地址映射模塊,用于在SATA指令中指示存儲的地址空間后發(fā)送至仲裁模塊,其中,所指示的地址空間是分配給發(fā)出SATA指令的CPU的地址空間;仲裁模塊,用于將各地址映射模塊發(fā)來的SATA指令逐一發(fā)送至RAID控制模塊;RAID控制模塊,用于在確定SATA指令被分配發(fā)送至的磁盤中地址空間后,將SATA指令發(fā)送至各數(shù)據(jù)封裝模塊;數(shù)據(jù)封裝模塊,用于與其對應(yīng)的磁盤相連,將SATA指令進(jìn)行封裝并發(fā)送至磁盤。采用本發(fā)明的技術(shù)方案,能夠?qū)崿F(xiàn)多CPU共享存儲,提高了磁盤的利用率,實現(xiàn)了存儲資源的按需配置。
【專利說明】一種數(shù)據(jù)存儲系統(tǒng)及其使用方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種數(shù)據(jù)存儲系統(tǒng)及其使用方法。
【背景技術(shù)】
[0002] 在高性能計算領(lǐng)域,服務(wù)器單節(jié)點往往配置大量多核CPU以滿足服務(wù)器對高運算 速率和高并發(fā)數(shù)的要求,傳統(tǒng)的服務(wù)器為每個CPU單獨配置存儲部分,使得整機(jī)的結(jié)構(gòu)復(fù) 雜。
[0003] 在云服務(wù)器共享存儲體系的結(jié)構(gòu)中,采用軟件方式實現(xiàn)的多CPU共享存儲使得 (PU帶寬成倍增加,而磁盤讀寫速率卻難以提升。
[0004] 現(xiàn)有技術(shù)的不足在于:現(xiàn)有的存儲架構(gòu),不能從硬件底層實現(xiàn)多CPU共享存儲。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供了一種數(shù)據(jù)存儲系統(tǒng)及其使用方法,用以實現(xiàn)CPU共享存儲。
[0006] 本發(fā)明提供了一種數(shù)據(jù)存儲系統(tǒng),包括:至少一個SATA指令解析模塊、至少一個 地址映射模塊、仲裁模塊、RAID控制模塊、以及至少一個數(shù)據(jù)封裝模塊;其中:
[0007] SATA指令解析模塊,用于分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對 SATA指令進(jìn)行解析,并發(fā)送至對應(yīng)的地址映射模塊;
[0008] 地址映射模塊,用于在接收到SATA指令解析模塊發(fā)來的SATA指令時,在SATA指 令中指示存儲的地址空間后發(fā)送至仲裁模塊,其中,所指示的地址空間是分配給發(fā)出SATA 指令的CPU的地址空間;
[0009] 仲裁模塊,用于將各地址映射模塊發(fā)來的SATA指令逐一發(fā)送至RAID控制模塊;
[0010] RAID控制模塊,用于在確定SATA指令被分配發(fā)送至的磁盤中地址空間后,將SATA 指令發(fā)送至各數(shù)據(jù)封裝模塊;
[0011] 數(shù)據(jù)封裝模塊,用于與其對應(yīng)的磁盤相連,將SATA指令進(jìn)行封裝并發(fā)送至磁盤。
[0012] 本發(fā)明還提供了一種數(shù)據(jù)存儲系統(tǒng)的使用方法,包括:
[0013] SATA指令解析模塊接收其對應(yīng)的CPU發(fā)送的SATA指令,并將該SATA指令發(fā)送至 地址映射模塊;
[0014] 地址映射模塊在接收到仲裁模塊發(fā)來的SATA指令時,在SATA指令中指示存儲的 地址空間后發(fā)送至數(shù)據(jù)封裝模塊,其中,所指示的地址空間是分配給發(fā)出SATA指令的CPU 的地址空間;
[0015] 仲裁模塊將地址映射模塊發(fā)來的SATA指令逐一發(fā)送至RAID控制模塊;
[0016] RAID控制模塊在確定SATA指令被分配發(fā)送至的磁盤中地址空間后,將SATA指令 發(fā)送至各數(shù)據(jù)封裝模塊;
[0017] 數(shù)據(jù)封裝模塊將SATA指令封裝后發(fā)送至磁盤。
[0018] 本發(fā)明的有益效果是:
[0019] 本發(fā)明實施例提供的技術(shù)方案中,對于各CPU發(fā)出的SATA指令,經(jīng)過SATA指令解 析模塊的解析,地址映射模塊在SATA指令中指示存儲的地址空間后由仲裁模塊逐一發(fā)送 至RAID控制模塊,而經(jīng)RAID控制模塊確定SATA指令被分配發(fā)送至的磁盤中地址空間,數(shù) 據(jù)封裝模塊將SATA指令封裝并發(fā)送至各磁盤。采用本發(fā)明的技術(shù)方案,能夠從硬件底層實 現(xiàn)多CPU共享存儲,提高了磁盤的利用率,實現(xiàn)了存儲資源的按需配置。
【專利附圖】
【附圖說明】
[0020] 下面將參照附圖描述本發(fā)明的具體實施例,其中:
[0021] 圖1為本發(fā)明實施例中數(shù)據(jù)存儲系統(tǒng)的實施結(jié)構(gòu)示意圖。
[0022] 圖2為本發(fā)明實施例中數(shù)據(jù)存儲系統(tǒng)第一實施例的實施結(jié)構(gòu)示意圖。
[0023] 圖3為本發(fā)明實施例中數(shù)據(jù)存儲系統(tǒng)的使用流程示意圖。
【具體實施方式】
[0024] 為了使本發(fā)明的技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本發(fā)明的示例性 實施例進(jìn)行進(jìn)一步詳細(xì)的說明,顯然,所描述的實施例僅是本發(fā)明的一部分實施例,而不是 所有實施例的窮舉。
[0025] 發(fā)明人在發(fā)明過程中注意到:
[0026] 目前現(xiàn)有技術(shù)中,在高性能計算領(lǐng)域,服務(wù)器單節(jié)點往往配置大量多核CPU以滿 足服務(wù)器對高運算速率和高并發(fā)數(shù)的要求,傳統(tǒng)的服務(wù)器為每個CPU單獨配置存儲部分, 使得整機(jī)的結(jié)構(gòu)復(fù)雜。如果要實現(xiàn)共享同一實體存儲空間,即為不同的CPU分配不同的地 址空間,通常是通過軟件的方式,將存儲空間進(jìn)行邏輯的分隔,組成不同的邏輯存儲空間。 這樣的方式需要對操作系統(tǒng)以及軟件做一些改動。
[0027] 這種方案的不足在于:對操作系統(tǒng)及軟件的改變,必然會帶來一些兼容性、穩(wěn)定性 的問題,后期維護(hù)及升級也需投入較大的人力成本?,F(xiàn)有技術(shù)中尚未有利用硬件的方式實 現(xiàn)共享同一實體存儲空間的方案。
[0028] 針對上述不足,本發(fā)明實施例中提供了一種數(shù)據(jù)存儲系統(tǒng)及其使用方法,下面進(jìn) 行說明。
[0029] 圖1為本發(fā)明實施例中數(shù)據(jù)存儲系統(tǒng)的實施結(jié)構(gòu)示意圖,如圖所示,可以包括至 少一個SATA指令解析模塊(如圖1所示,標(biāo)記為1011、1012至101N)、至少一個地址映射模 塊(如圖1所示,標(biāo)記為1021、1022至102N)、仲裁模塊103、RAID控制模塊104、以及至少 一個數(shù)據(jù)封裝模塊(如圖1所示,標(biāo)記為1051、1052至105N);其中:
[0030] SATA指令解析模塊,用于分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對 SATA指令進(jìn)行解析,并發(fā)送至對應(yīng)的地址映射模塊;
[0031] 地址映射模塊,用于在接收到SATA指令解析模塊發(fā)來的SATA指令時,在SATA指 令中指示存儲的地址空間后發(fā)送至仲裁模塊,其中,所指示的地址空間是分配給發(fā)出SATA 指令的CPU的地址空間;
[0032] 仲裁模塊,用于將各地址映射模塊發(fā)來的SATA指令逐一發(fā)送至RAID控制模塊;
[0033] RAID控制模塊,用于在確定SATA指令被分配發(fā)送至的磁盤中地址空間后,將SATA 指令發(fā)送至各數(shù)據(jù)封裝模塊;
[0034] 數(shù)據(jù)封裝模塊,用于與其對應(yīng)的磁盤相連,將SATA指令進(jìn)行封裝并發(fā)送至磁盤。
[0035] 具體實施中,可以米用基于 RAID (Redundant Arrays of independent Disks 獨立 冗余磁盤陣列)卡的磁盤陣列替代傳統(tǒng)的機(jī)械硬盤,可以提高硬盤存取帶寬,靈活的擴(kuò)展 存儲容量,提高存儲系統(tǒng)的可靠性和容錯能力。
[0036] RAID是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤 組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能與數(shù)據(jù)備份能力的技術(shù)。RAID特色 是N塊硬盤同時讀取速度加快及提供容錯性。RAID擴(kuò)大了存儲能力可由多個硬盤組成容量 巨大的存儲空間,并且降低了單位容量的成本,市場上最大容量的硬盤每兆容量的價格要 大大高于普及型硬盤,因此采用多個普及型硬盤組成的陣列其單位價格要低得多。提高了 存儲速度單個硬盤速度的提高均受到各個時期的技術(shù)條件限制,要更進(jìn)一步往往是很困難 的,而使用RAID,則可以讓多個硬盤同時分?jǐn)倲?shù)據(jù)的讀或?qū)懖僮鳎虼苏w速度有成倍地提 高。可靠性方面,RAID系統(tǒng)可以使用兩組硬盤同步完成鏡像存儲,這種安全措施對于網(wǎng)絡(luò) 服務(wù)器來說是最重要不過的了。RAID控制器的一個關(guān)鍵功能就是容錯處理。容錯陣列中如 有單塊硬盤出錯,不會影響到整體的繼續(xù)使用,高級RAID控制器還具有拯救數(shù)據(jù)功能。
[0037] 具體實施中,CPU可以構(gòu)成一個陣列,由一個或多個高端或低端的CPU組合而成, 分布在服務(wù)器的一個節(jié)點上,構(gòu)成該節(jié)點的計算單元,通過SATA3. 0總線連接外接存儲設(shè) 備,并支持向下兼容SATA1.0和SATA2. 0。
[0038] 實施中,SATA指令解析模塊還可以用于在接收到CPU發(fā)送的SATA指令時,將SATA 指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至地址映射模塊。
[0039] 具體實施中,按照協(xié)議規(guī)范,CPU和磁盤之間是串行進(jìn)行數(shù)據(jù)交互的。串行的數(shù)據(jù) 一來頻率太高無法處理,再有就是都經(jīng)過了編碼和加擾操作,所以從CPU接收到的SATA指 令可能無法直接進(jìn)行處理,因此,需對接收到的SATA指令進(jìn)行串并轉(zhuǎn)換,將串行數(shù)據(jù)變?yōu)?并行數(shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以及解擾操作,這樣才能得到可處理的SATA指令,然后 將其發(fā)送至地址映射模塊。
[0040] 實施中,SATA指令解析模塊還可以用于對CPU發(fā)送的SATA指令進(jìn)行標(biāo)識;
[0041] 具體實施中,SATA指令解析模塊可以對接收到的SATA指令通過打包的方式來進(jìn) 行標(biāo)識,也可以用標(biāo)記CPU的ID號的方式來進(jìn)行標(biāo)識,其目的是為了標(biāo)記是由哪個CPU發(fā) 送的指令。
[0042] 實施中,地址映射模塊還可以用于根據(jù)標(biāo)識確定發(fā)出SATA指令的CPU的地址空 間。
[0043] 具體實施中,標(biāo)識過的SATA指令傳送到地址映射模塊后,地址映射模塊就可以知 道是哪個CPU的SATA指令,及對應(yīng)哪個地址空間。
[0044] 實施中,SATA指令解析模塊還可以用于在RAID控制模塊不空閑時,暫存SATA指 令,在RAID控制模塊空閑時將其發(fā)送至仲裁模塊。
[0045] 具體實施中,SATA指令解析模塊可能并不是接收到SATA指令立馬發(fā)送給仲裁模 塊,而要進(jìn)行暫存。暫存的作用是等待RAID控制模塊空閑時,將暫存的SATA指令發(fā)往仲裁 模塊。
[0046] 具體實施中,仲裁模塊可以選擇嚴(yán)格優(yōu)先序的、輪轉(zhuǎn)的或加權(quán)輪轉(zhuǎn)的仲裁方案對 SATA指令進(jìn)行選取,實現(xiàn)對不同優(yōu)先級CPU的仲裁。
[0047] 實施中,地址映射模塊還可以用于通過修改SATA指令的地址域,將其映射到分配 給該CPU的地址空間的方式來在SATA指令中指示存儲的地址空間。
[0048] 實施中,數(shù)據(jù)封裝模塊還可以用于在接收到RAID控制模塊發(fā)來的SATA指令時,將 SATA指令進(jìn)行串并轉(zhuǎn)換,8b/ 10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至磁盤。
[0049] 具體實施中,如前所述,按照協(xié)議規(guī)范,CPU和磁盤之間是串行進(jìn)行數(shù)據(jù)交互的,因 此,可以將SATA指令進(jìn)行串并轉(zhuǎn)換,將并行數(shù)據(jù)變?yōu)榇袛?shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以 及加擾操作,這樣得到磁盤可處理的SATA指令,然后發(fā)送至磁盤。
[0050] 實施中,數(shù)據(jù)封裝模塊還可以用于在接收到磁盤發(fā)來的響應(yīng)結(jié)果時,將響應(yīng)結(jié)果 進(jìn)行串并轉(zhuǎn)換,8b/ 10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至RAID控制模塊。
[0051] 具體實施中,按照協(xié)議規(guī)范,CPU和磁盤之間是串行進(jìn)行數(shù)據(jù)交互的。串行的數(shù)據(jù) 一來頻率太高無法處理,再有就是都經(jīng)過了編碼和加擾操作,所以從磁盤接收到的響應(yīng)結(jié) 果可能無法直接進(jìn)行處理,因此,需對接收到的響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,將串行數(shù)據(jù)變?yōu)椴?行數(shù)據(jù),并進(jìn)行8b/10b編碼轉(zhuǎn)換以及解擾操作,這樣才能得到可處理的響應(yīng)結(jié)果,然后將 其發(fā)送至RAID控制模塊。
[0052] 實施中,RAID控制模塊還可以用于通過修改響應(yīng)結(jié)果的地址域,將其反映射到分 配給該CPU的地址空間的方式來在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
[0053] 具體實施中,RAID控制模塊將接收到的SATA指令中的地址域進(jìn)行地址映射后發(fā) 送給磁盤,磁盤本身會將響應(yīng)結(jié)果傳回給RAID控制模塊,然后RAID控制模塊在對這個響應(yīng) 結(jié)果中的地址域修改后進(jìn)行地址反映射,再傳給仲裁模塊。其中,地址映射與地址反映射是 一個互為相反的過程。
[0054] 實施中,數(shù)據(jù)封裝模塊還可以用于在SATA指令解析模塊不空閑時,暫存響應(yīng)結(jié) 果,在SATA指令解析模塊空閑時將其發(fā)送至仲裁模塊。
[0055] 實施中,數(shù)據(jù)封裝模塊還可以用于對磁盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識;地址映射模 塊還可以用于根據(jù)標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
[0056] 具體實施中,每個SATA指令解析模塊對發(fā)送給仲裁模塊的SATA指令都會進(jìn)行標(biāo) 識,使地址映射模塊得知是哪個CPU的指令,地址映射模塊根據(jù)這個標(biāo)識除了進(jìn)行地址映 射,RAID控制模塊根據(jù)數(shù)據(jù)封裝模塊對響應(yīng)結(jié)果的標(biāo)識進(jìn)行地址反映射,將修改后的響應(yīng) 結(jié)果通過SATA指令解析模塊發(fā)送給對應(yīng)的CPU。
[0057] 實施中,SATA指令解析模塊還可以用于在接收到地址映射模塊發(fā)送的響應(yīng)結(jié)果 時,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,將其發(fā)送至CPU。
[0058] 實施中,RAID控制模塊還可以用于根據(jù)管理節(jié)點給出的RAID級別的要求,選擇相 應(yīng)RAID算法,確定SATA指令被分配發(fā)送至的磁盤中地址空間。
[0059] 具體實施中,管理節(jié)點可以看做是上層管理軟件,通過寄存器配置,可以告訴FPGA 的RAID控制模塊用戶需要使用RAID0還是RAID1。RAID控制模塊可以根據(jù)這些寄存器的 變化,實現(xiàn)不同的功能。上層管理軟件可以提供與用戶的交互界面,用戶可根據(jù)需求選擇不 同的地址映射模式,對于重要的數(shù)據(jù),使用RAID1,可以保障數(shù)據(jù)的安全可靠,對于一些不重 要的數(shù)據(jù),使用RAID0能夠節(jié)約存儲資源。硬件RAID不同于軟件RAID,沒有過多的資源開 銷。
[0060] 具體實施中,RAID控制模塊可以根據(jù)一些控制邏輯,實現(xiàn)最基本的把將要發(fā)往某 一個磁盤盤的指令和數(shù)據(jù),分發(fā)到了多個磁盤上,或者分發(fā)到不同磁盤的不同分區(qū)。同一塊 數(shù)據(jù)可以被分割成多個區(qū)段,分別存放在不同磁盤上。至于具體每個指令和數(shù)據(jù)會被重定 向到哪個磁盤的哪個空間,可以由軟件配置和計算,并且通知RAID控制邏輯完成。
[0061] 例如,把一個需要發(fā)往磁盤1的數(shù)據(jù),同時發(fā)給磁盤1和磁盤3,就可以實現(xiàn)數(shù)據(jù) 的備份。本發(fā)明實施例中并沒有使用RAID卡,而是由軟件配合FPGA實現(xiàn)RAID功能。由于 走得是SATA協(xié)議,所以數(shù)據(jù)封裝仍然是SATA的數(shù)據(jù)封裝模塊,也就是說磁盤端和CPU端的 數(shù)據(jù)封裝模塊相同。RAID0把N塊同樣的磁盤用硬件的形式通過RAID控制模塊串聯(lián)在一 起創(chuàng)建一個大的卷集??墒拐麄€系統(tǒng)能使用的存儲容量達(dá)到最大。也可以在N塊磁盤上選 擇合理的分區(qū)來創(chuàng)建帶區(qū)集,將原先順序?qū)懭脒@一組串聯(lián)磁盤的數(shù)據(jù)分散到所有N個磁盤 中,每個磁盤只寫N分之一,N塊磁盤并行操作,不僅提高了讀寫速率,還可以為系統(tǒng)提供更 多的空間。RAID1在RAID0的基礎(chǔ)上,將一塊磁盤的數(shù)據(jù)鏡像到另一塊磁盤,該功能可以保 證系統(tǒng)的可靠性,也很容易由RAID控制模塊實現(xiàn)。只需要在磁盤端做簡單的地址映射,把 一條指令分兩個路徑發(fā)出去即可。
[0062] 實施中,SATA指令解析模塊、地址映射模塊、仲裁模塊、RAID控制模塊、以及數(shù)據(jù) 封裝模塊在FPGA上實現(xiàn)。
[0063] 具體實施中,磁盤控制器可以采用RAID控制器連接多塊帶SATA 口的SSD,通過配 置不同RAID級別,可以實現(xiàn)存儲效率和可靠性之間的平衡。
[0064] RAID控制器可以采用MegaRAID SAS9286-8e,包含八個外接SATA 口,可連接最多 240個帶有SATA或SAS接口的HDD或SSD固態(tài)硬盤(Solid State Disk)存儲設(shè)備。
[0065] RAID控制器可以按需的調(diào)整RAID級別,實現(xiàn)云服務(wù)器存儲部分的性能和可靠性 的平衡。云服務(wù)器單塊板卡或單節(jié)點上可以包含一個或多個CPU,這些CPU共享一塊存儲陣 列,可以實現(xiàn)存儲資源的按需分配,系統(tǒng)可以根據(jù)功能和應(yīng)用情況,將閑置的存儲資源更多 的分配給有需要的CPU。
[0066] 具體實施中,通過FPGA邏輯實現(xiàn)RAID控制器功能,這種做法不僅降低了硬件成 本,優(yōu)化了系統(tǒng)結(jié)構(gòu),也省去了數(shù)據(jù)封裝硬核,縮短了存儲延遲,降低了系統(tǒng)的開發(fā)難度。 [0067] 為了描述的方便,以上所述數(shù)據(jù)存儲系統(tǒng)的各部分以功能分為各種部件或單元分 別描述。當(dāng)然,在實施本發(fā)明時可以把各部件或單元的功能在同一個或多個軟件或硬件中 實現(xiàn)。
[0068] 下面結(jié)合具體的實施示例來進(jìn)行說明。
[0069] 實施例一:
[0070] 如圖2所示,SATA指令解析模塊1011、SATA指令解析模塊1012、SATA指令解析 模塊1013、以及SATA指令解析模塊101N分別與其對應(yīng)的CPU相連,當(dāng)SATA指令解析模塊 1011、SATA指令解析模塊1012、SATA指令解析模塊1013、以及SATA指令解析模塊101N接 收到其對應(yīng)CPU發(fā)來的SATA指令時,首先將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以 及解擾操作,得到可處理的SATA指令;然后通過打包的方式對SATA指令進(jìn)行標(biāo)識,來標(biāo)記 是由哪個CPU發(fā)送的SATA指令;其次當(dāng)RAID控制模塊104不空閑時,暫存SATA指令;當(dāng) RAID控制模塊104空閑時,將該SATA指令發(fā)送至仲裁模塊103 ;接著,仲裁模塊103根據(jù)優(yōu) 先序的、輪轉(zhuǎn)的或加權(quán)輪轉(zhuǎn)的仲裁方案對地址映射模塊102發(fā)來的SATA指令進(jìn)行仲裁,按 照該仲裁結(jié)果逐一發(fā)送至RAID控制模塊104 ;然后RAID控制模塊104根據(jù)管理節(jié)點給出 的RAID級別的要求,選擇相應(yīng)RAID算法,確定發(fā)出SATA指令的CPU對應(yīng)的磁盤中地址空 間;找到存儲的地址空間后,分別發(fā)送至數(shù)據(jù)封裝模塊1051、數(shù)據(jù)封裝模塊1052、數(shù)據(jù)封裝 模塊1053、以及數(shù)據(jù)封裝模塊105N,在其上將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以 及加擾操作后發(fā)送至磁盤陣列。
[0071] 磁盤接收到SATA指令后,返回一個響應(yīng)結(jié)果。首先,數(shù)據(jù)封裝模塊1051、數(shù)據(jù)封裝 模塊1052、數(shù)據(jù)封裝模塊1053、以及數(shù)據(jù)封裝模塊105N在接收到磁盤發(fā)來的響應(yīng)結(jié)果時, 將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作,變?yōu)榭商幚淼捻憫?yīng)結(jié)果;然后 RAID控制模塊104通過對這個響應(yīng)結(jié)果中的地址域修改后進(jìn)行地址反映射,其中,地址映 射與地址反映射是一個互為相反的過程;其次對磁盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識,SATA指令 解析模塊1011、SATA指令解析模塊1012、SATA指令解析模塊1013、以及SATA指令解析模 塊101N根據(jù)標(biāo)識確定接收響應(yīng)結(jié)果的CPU ;接著,數(shù)據(jù)封裝模塊1051、數(shù)據(jù)封裝模塊1052、 數(shù)據(jù)封裝模塊1053、以及數(shù)據(jù)封裝模塊105N在SATA指令解析模塊102不空閑時,暫存響應(yīng) 結(jié)果,在其空閑時將其發(fā)送至仲裁模塊103 ;SATA指令解析模塊1011、SATA指令解析模塊 1012、SATA指令解析模塊1013、以及SATA指令解析模塊101N在接收到地址映射模塊102 發(fā)送的響應(yīng)結(jié)果時,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,將其發(fā)送 至對應(yīng)的CPU。至此完成一次完整的交互。
[0072] 基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種數(shù)據(jù)存儲系統(tǒng)的使用方法,由 于該使用方法的原理與一種數(shù)據(jù)存儲系統(tǒng)相似,因此該方法的實施可以參見數(shù)據(jù)存儲系統(tǒng) 的實施,重復(fù)之處不再贅述。
[0073] 圖2為本發(fā)明實施例中數(shù)據(jù)存儲系統(tǒng)的使用流程示意圖,如圖所示,可以包括如 下步驟:
[0074] 步驟20USATA指令解析模塊接收其對應(yīng)的CPU發(fā)送的SATA指令,并將該SATA指 令發(fā)送至地址映射模塊;
[0075] 步驟202、地址映射模塊在接收到仲裁模塊發(fā)來的SATA指令時,在SATA指令中指 示存儲的地址空間后發(fā)送至數(shù)據(jù)封裝模塊,其中,所指示的地址空間是分配給發(fā)出SATA指 令的CPU的地址空間;
[0076] 步驟203、仲裁模塊將地址映射模塊發(fā)來的SATA指令逐一發(fā)送至RAID控制模塊;
[0077] 步驟204、RAID控制模塊在確定SATA指令被分配發(fā)送至的磁盤中地址空間后,將 SATA指令發(fā)送至各數(shù)據(jù)封裝模塊;
[0078] 步驟205、數(shù)據(jù)封裝模塊將SATA指令封裝后發(fā)送至磁盤。
[0079] 進(jìn)一步的,在SATA指令解析模塊接收到CPU發(fā)送的SATA指令時,可以將SATA指 令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,將其發(fā)送至地址映射模塊。
[0080] 進(jìn)一步的,在SATA指令解析模塊接收到CPU發(fā)送的SATA指令時,可以對CPU發(fā)送 的SATA指令進(jìn)行標(biāo)識;
[0081] 在地址映射模塊接收到SATA指令時,可以根據(jù)所述標(biāo)識確定發(fā)出SATA指令的CPU 的地址空間。
[0082] 進(jìn)一步的,在SATA指令解析模塊接收到CPU發(fā)送的SATA指令時,可以在RAID控 制模塊不空閑時,暫存SATA指令,在RAID控制模塊空閑時將其發(fā)送至仲裁模塊。
[0083] 進(jìn)一步的,在地址映射模塊接收到SATA指令解析模塊發(fā)來的SATA指令時,可以通 過修改SATA指令的地址域的方式來在SATA指令中指示存儲的地址空間,將SATA指令映射 到分配給該CPU的地址空間。
[0084] 進(jìn)一步的,在數(shù)據(jù)封裝模塊接收到RAID控制模塊發(fā)來的SATA指令時,可以將SATA 指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,發(fā)送至磁盤。
[0085] 進(jìn)一步的,在數(shù)據(jù)封裝模塊將SATA指令發(fā)送至磁盤后,可以接收磁盤發(fā)來的響應(yīng) 結(jié)果,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作后,發(fā)送至RAID控制模塊。
[0086] 進(jìn)一步的,在RAID控制模塊接收到磁盤發(fā)來的響應(yīng)結(jié)果時,可以通過修改響應(yīng)結(jié) 果的地址域,將其反映射到分配給該CPU的地址空間的方式來在響應(yīng)結(jié)果中指示響應(yīng)的地 址空間。
[0087] 進(jìn)一步的,在RAID控制模塊接收到數(shù)據(jù)封裝模塊發(fā)來的響應(yīng)結(jié)果時,可以在SATA 指令解析模塊不空閑時,暫存響應(yīng)結(jié)果,在SATA指令解析模塊空閑時將其發(fā)送至仲裁模 塊。
[0088] 進(jìn)一步的,在數(shù)據(jù)封裝模塊接收到磁盤發(fā)來的響應(yīng)結(jié)果時,可以對磁盤發(fā)送的響 應(yīng)結(jié)果進(jìn)行標(biāo)識;
[0089] 在地址映射模塊接收仲裁模塊發(fā)送的響應(yīng)結(jié)果時,可以根據(jù)所述標(biāo)識確定接收響 應(yīng)結(jié)果的CPU。
[0090] 進(jìn)一步的,在SATA指令解析模塊接收到地址映射模塊發(fā)送的響應(yīng)結(jié)果時,可以將 響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾操作后,將其發(fā)送至CPU。
[0091] 進(jìn)一步的,在RAID控制模塊在接收到仲裁模塊發(fā)來的SATA指令時,可以根據(jù)管理 節(jié)點給出的RAID級別的要求,選擇相應(yīng)RAID算法,確定SATA指令被分配發(fā)送至的磁盤中 地址空間。
[0092] 進(jìn)一步的,在FPGA上對SATA指令進(jìn)行解析、地址映射、仲裁、RAID控制以及數(shù)據(jù) 封裝。
[0093] 實施中,SATA指令和響應(yīng)結(jié)果都可以是以幀的形式存在。
[0094] 進(jìn)一步的,在物理層對SATA指令或響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換。
[0095] 具體實施中,物理層可以基于Stratix V的Transceiver Native Physic Ip實現(xiàn)。
[0096] 進(jìn)一步的,在鏈路層對SATA指令或響應(yīng)結(jié)果進(jìn)行加解擾操作。
[0097] 進(jìn)一步的,在鏈路層對SATA指令進(jìn)行CRC校驗。
[0098] 進(jìn)一步的,在鏈路層對SATA指令的發(fā)送及接收進(jìn)行流控。
[0099] 進(jìn)一步的,在傳輸層上,接收到從鏈路層發(fā)來的幀;檢查幀頭以及長度,若丟棄錯 誤的巾貞時,告知鏈路層。
[0100] 進(jìn)一步的,在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的幀;檢查幀頭以及長度,若丟棄錯 誤的幀時,告知網(wǎng)絡(luò)層。
[0101] 進(jìn)一步的,在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的SATA指令;
[0102] 將SATA指令按照指令中指示存儲的地址空間,映射到分配給該CPU的地址空間。
[0103] 進(jìn)一步的,在傳輸層上,接收到從鏈路層發(fā)來的響應(yīng)結(jié)果;
[0104] 將響應(yīng)結(jié)果按照地址空間的標(biāo)識,映射到發(fā)出響應(yīng)結(jié)果的磁盤對應(yīng)的CPU的地址 空間。
[0105] 進(jìn)一步的,在網(wǎng)絡(luò)層上,對傳輸層接收到的SATA指令進(jìn)行標(biāo)識;發(fā)送至仲裁模塊 102。
[0106] 進(jìn)一步的,在網(wǎng)絡(luò)層上,接收到從仲裁模塊103發(fā)來的響應(yīng)結(jié)果;發(fā)送至傳輸層。
[0107] 本發(fā)明實施例提供的數(shù)據(jù)存儲系統(tǒng)及其使用方法,對于各CPU發(fā)出的SATA指令, 經(jīng)過SATA指令解析模塊的解析,地址映射模塊在SATA指令中指示存儲的地址空間后由仲 裁模塊逐一發(fā)送至RAID控制模塊,而經(jīng)RAID控制模塊確定SATA指令被分配發(fā)送至的磁盤 中地址空間,數(shù)據(jù)封裝模塊將SATA指令封裝并發(fā)送至各磁盤。采用本發(fā)明的技術(shù)方案,能 夠從硬件底層實現(xiàn)多CPU共享存儲,提高了磁盤的利用率,實現(xiàn)了存儲資源的按需配置。
[0108] 本發(fā)明通過RAID卡控制多個磁盤同時存取數(shù)據(jù),可以大大提升磁盤端的存取帶 寬,使其與CPU端相匹配。不僅可以提升整個存儲系統(tǒng)的性能,而且可以通過不同RAID級 的設(shè)置提升系統(tǒng)的可靠性和容錯能力。
[0109] 以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其進(jìn)行限制。因此,在不背離本 發(fā)明的精神及其實質(zhì)的情況下,本領(lǐng)域技術(shù)人員可作出各種改變、替換和變型。很顯然,但 這些改變、替換和變型都應(yīng)涵蓋于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1. 一種數(shù)據(jù)存儲系統(tǒng),其特征在于,所述系統(tǒng)包括:至少一個SATA指令解析模塊、至少 一個地址映射模塊、仲裁模塊、RAID控制模塊、以及至少一個數(shù)據(jù)封裝模塊;其中: SATA指令解析模塊,用于分別與相對應(yīng)的CPU相連,接收CPU發(fā)送的SATA指令,對SATA 指令進(jìn)行解析,并發(fā)送至對應(yīng)的地址映射模塊; 地址映射模塊,用于在接收到SATA指令解析模塊發(fā)來的SATA指令時,在SATA指令中 指示存儲的地址空間后發(fā)送至仲裁模塊,其中,所指示的地址空間是分配給發(fā)出SATA指令 的CPU的地址空間; 仲裁模塊,用于將各地址映射模塊發(fā)來的SATA指令逐一發(fā)送至RAID控制模塊; RAID控制模塊,用于在確定SATA指令被分配發(fā)送至的磁盤中地址空間后,將SATA指令 發(fā)送至各數(shù)據(jù)封裝模塊; 數(shù)據(jù)封裝模塊,用于與其對應(yīng)的磁盤相連,將SATA指令進(jìn)行封裝并發(fā)送至磁盤。
2. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述SATA指令解析模塊進(jìn)一步用 于在接收到CPU發(fā)送的SATA指令時,將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾 操作后,將其發(fā)送至地址映射模塊。
3. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述SATA指令解析模塊進(jìn)一步用 于對CPU發(fā)送的SATA指令進(jìn)行標(biāo)識; 所述地址映射模塊進(jìn)一步用于根據(jù)所述標(biāo)識確定發(fā)出SATA指令的CPU的地址空間。
4. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述SATA指令解析模塊進(jìn)一步用 于在RAID控制模塊不空閑時,暫存SATA指令,在RAID控制模塊空閑時將其發(fā)送至仲裁模 塊。
5. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述地址映射模塊進(jìn)一步用于通 過修改SATA指令的地址域,將其映射到分配給該CPU的地址空間的方式來在SATA指令中 指示存儲的地址空間。
6. 如權(quán)利要求5所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)封裝模塊進(jìn)一步用于在 接收到RAID控制模塊發(fā)來的SATA指令時,將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以 及加擾操作后,發(fā)送至磁盤。
7. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)封裝模塊進(jìn)一步用于在 接收到磁盤發(fā)來的響應(yīng)結(jié)果時,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作 后,發(fā)送至RAID控制模塊。
8. 如權(quán)利要求7所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述RAID控制模塊進(jìn)一步用于通 過修改響應(yīng)結(jié)果的地址域,將其反映射到分配給該CPU的地址空間的方式來在響應(yīng)結(jié)果中 指示響應(yīng)的地址空間。
9. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)封裝模塊進(jìn)一步用于在 SATA指令解析模塊不空閑時,暫存響應(yīng)結(jié)果,在SATA指令解析模塊空閑時將其發(fā)送至仲裁 模塊。
10. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述數(shù)據(jù)封裝模塊進(jìn)一步用于對 磁盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識; 所述地址映射模塊進(jìn)一步用于根據(jù)所述標(biāo)識確定接收響應(yīng)結(jié)果的CPU。
11. 如權(quán)利要求1所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述SATA指令解析模塊進(jìn)一步用 于在接收到地址映射模塊發(fā)送的響應(yīng)結(jié)果時,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換 以及加擾操作后,將其發(fā)送至CPU。
12. 如權(quán)利要求1至11任一所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述RAID控制模塊進(jìn) 一步用于根據(jù)管理節(jié)點給出的RAID級別的要求,選擇相應(yīng)RAID算法,確定SATA指令被分 配發(fā)送至的磁盤中地址空間。
13. 如權(quán)利要求1至12任一所述的數(shù)據(jù)存儲系統(tǒng),其特征在于,所述SATA指令解析模 塊、地址映射模塊、仲裁模塊、RAID控制模塊、以及數(shù)據(jù)封裝模塊在FPGA上實現(xiàn)。
14. 如權(quán)利要求1至13任一所述的數(shù)據(jù)存儲系統(tǒng)的使用方法,其特征在于,所述方法包 括步驟: SATA指令解析模塊接收其對應(yīng)的CPU發(fā)送的SATA指令,并將該SATA指令發(fā)送至地址 映射模塊; 地址映射模塊在接收到仲裁模塊發(fā)來的SATA指令時,在SATA指令中指示存儲的地址 空間后發(fā)送至數(shù)據(jù)封裝模塊,其中,所指示的地址空間是分配給發(fā)出SATA指令的CPU的地 址空間; 仲裁模塊將地址映射模塊發(fā)來的SATA指令逐一發(fā)送至RAID控制模塊; RAID控制模塊在確定SATA指令被分配發(fā)送至的磁盤中地址空間后,將SATA指令發(fā)送 至各數(shù)據(jù)封裝模塊; 數(shù)據(jù)封裝模塊將SATA指令封裝后發(fā)送至磁盤。
15. 如權(quán)利要求14所述的使用方法,其特征在于,在SATA指令解析模塊接收到CPU發(fā) 送的SATA指令時,進(jìn)一步包括,將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及解擾操作 后,將其發(fā)送至地址映射模塊。
16. 如權(quán)利要求14所述的使用方法,其特征在于,在SATA指令解析模塊接收到CPU發(fā) 送的SATA指令時,進(jìn)一步包括,對CPU發(fā)送的SATA指令進(jìn)行標(biāo)識; 在地址映射模塊接收到SATA指令時,進(jìn)一步包括,根據(jù)所述標(biāo)識確定發(fā)出SATA指令的 CPU的地址空間。
17. 如權(quán)利要求14所述的使用方法,其特征在于,在SATA指令解析模塊接收到CPU發(fā) 送的SATA指令時,進(jìn)一步包括,在RAID控制模塊不空閑時,暫存SATA指令,在RAID控制模 塊空閑時將其發(fā)送至仲裁模塊。
18. 如權(quán)利要求14所述的使用方法,其特征在于,在地址映射模塊接收到SATA指令解 析模塊發(fā)來的SATA指令時,進(jìn)一步包括,通過修改SATA指令的地址域的方式來在SATA指 令中指示存儲的地址空間,將SATA指令映射到分配給該CPU的地址空間。
19. 如權(quán)利要求18所述的使用方法,其特征在于,在數(shù)據(jù)封裝模塊接收到RAID控制模 塊發(fā)來的SATA指令時,進(jìn)一步包括,將SATA指令進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加擾 操作后,發(fā)送至磁盤。
20. 如權(quán)利要求14所述的使用方法,其特征在于,在數(shù)據(jù)封裝模塊將SATA指令發(fā)送至 磁盤后,進(jìn)一步包括,接收磁盤發(fā)來的響應(yīng)結(jié)果,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn) 換以及解擾操作后,發(fā)送至RAID控制模塊。
21. 如權(quán)利要求20所述的使用方法,其特征在于,在RAID控制模塊接收到磁盤發(fā)來的 響應(yīng)結(jié)果時,進(jìn)一步包括,通過修改響應(yīng)結(jié)果的地址域,將其反映射到分配給該CPU的地址 空間的方式來在響應(yīng)結(jié)果中指示響應(yīng)的地址空間。
22. 如權(quán)利要求20所述的使用方法,其特征在于,在RAID控制模塊接收到數(shù)據(jù)封裝模 塊發(fā)來的響應(yīng)結(jié)果時,進(jìn)一步包括,在SATA指令解析模塊不空閑時,暫存響應(yīng)結(jié)果,在SATA 指令解析模塊空閑時將其發(fā)送至仲裁模塊。
23. 如權(quán)利要求20所述的使用方法,其特征在于,在數(shù)據(jù)封裝模塊接收到磁盤發(fā)來的 響應(yīng)結(jié)果時,進(jìn)一步包括,對磁盤發(fā)送的響應(yīng)結(jié)果進(jìn)行標(biāo)識; 在地址映射模塊接收仲裁模塊發(fā)送的響應(yīng)結(jié)果時,進(jìn)一步包括,根據(jù)所述標(biāo)識確定接 收響應(yīng)結(jié)果的CPU。
24. 如權(quán)利要求20所述的使用方法,其特征在于,在SATA指令解析模塊接收到地址映 射模塊發(fā)送的響應(yīng)結(jié)果時,進(jìn)一步包括,將響應(yīng)結(jié)果進(jìn)行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換以及加 擾操作后,將其發(fā)送至CPU。
25. 如權(quán)利要求14至24任一所述的使用方法,其特征在于,在RAID控制模塊在接收到 仲裁模塊發(fā)來的SATA指令時,進(jìn)一步包括,根據(jù)管理節(jié)點給出的RAID級別的要求,選擇相 應(yīng)RAID算法,確定SATA指令被分配發(fā)送至的磁盤中地址空間。
26. 如權(quán)利要求14至25任一所述的使用方法,其特征在于,在FPGA上對SATA指令進(jìn) 行解析、地址映射、仲裁、RAID控制以及數(shù)據(jù)封裝。
27. 如權(quán)利要求14所述的使用方法,其特征在于,在物理層對SATA指令或響應(yīng)結(jié)果進(jìn) 行串并轉(zhuǎn)換,8b/10b編碼轉(zhuǎn)換。
28. 如權(quán)利要求14所述的使用方法,其特征在于,在鏈路層對SATA指令或響應(yīng)結(jié)果進(jìn) 行加解擾操作。
29. 如權(quán)利要求28所述的使用方法,其特征在于,在鏈路層對SATA指令進(jìn)行CRC校驗。
30. 如權(quán)利要求29所述的使用方法,其特征在于,在鏈路層對SATA指令的發(fā)送及接收 進(jìn)行流控。
31. 如權(quán)利要求14所述的使用方法,其特征在于, 在傳輸層上,接收到從鏈路層發(fā)來的幀; 檢查幀頭以及長度,若丟棄錯誤的幀時,告知鏈路層。
32. 如權(quán)利要求31所述的使用方法,其特征在于, 在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的幀; 檢查幀頭以及長度,若丟棄錯誤的幀時,告知網(wǎng)絡(luò)層。
33. 如權(quán)利要求31所述的使用方法,其特征在于, 在傳輸層上,接收到從網(wǎng)絡(luò)層發(fā)來的SATA指令; 將SATA指令按照指令中指示存儲的地址空間,映射到分配給該CPU的地址空間。
34. 如權(quán)利要求33所述的使用方法,其特征在于, 在傳輸層上,接收到從鏈路層發(fā)來的響應(yīng)結(jié)果; 將響應(yīng)結(jié)果按照地址空間的標(biāo)識,映射到發(fā)出響應(yīng)結(jié)果的磁盤對應(yīng)的CPU的地址空 間。
35. 如權(quán)利要求14所述的使用方法,其特征在于, 在網(wǎng)絡(luò)層上,對傳輸層接收到的SATA指令進(jìn)行標(biāo)識; 發(fā)送至仲裁模塊。
36.如權(quán)利要求35所述的使用方法,其特征在于, 在網(wǎng)絡(luò)層上,接收到從仲裁模塊發(fā)來的響應(yīng)結(jié)果; 發(fā)送至傳輸層。
【文檔編號】G06F12/02GK104123228SQ201410347213
【公開日】2014年10月29日 申請日期:2014年7月21日 優(yōu)先權(quán)日:2014年7月21日
【發(fā)明者】聶華, 楊曉君, 周雪 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司