一種pcie ssd陣列的數(shù)據(jù)寫方法及系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及一種PCIE SSD陣列的數(shù)據(jù)寫方法及系統(tǒng)。
【背景技術】
[0002]現(xiàn)有操作系統(tǒng)和磁盤陣列方案都是按照早先機械盤的性能遠遠低于內存的性能設計的,和機械盤的讀寫延時相比,內存的讀寫延時幾乎可以忽略不計,所以不管是常用的操作系統(tǒng)還是陣列的軟件架構,寫的數(shù)據(jù)都是先放到系統(tǒng)內存中再往盤下或者返回給應用。我們以常見的磁盤陣列通過FC共享LUN到主機的情況看一下目前架構的讀寫流程,見圖1。
[0003]圖1的方法沒有考慮回寫的情況,1的數(shù)據(jù)都是先寫到陣列系統(tǒng)內存中再返回給請求方。這個方案在磁盤的性能較低的時候能極高的提高磁盤的讀寫性能(因為可以回寫和cache命中),但采用此架構,磁盤的性能理論上只能達到內存帶寬的一半以下(無論讀寫1數(shù)據(jù)都要在系統(tǒng)內存中讀寫一次),實際還會更低(10命令本身和陣列的操作系統(tǒng)和軟件都會消耗系統(tǒng)內存的容量和帶寬)。在極端理想的情況下,即cache足夠大,所有寫都可以回寫不用下盤,所有讀都可以命中,陣列的性能也只能接近內存帶寬。
[0004]當SSD磁盤出現(xiàn)后,硬盤的寫性能已經(jīng)得到了極大的提高。目前最新的高性能SSD硬盤普遍采取PCIE接口,性能已經(jīng)突破了 SATA和SAS協(xié)議本身的限制。如intel的p3700,讀寫帶寬分別能達2800/2000MB/s的級別。而且SSD的性能還在持續(xù)的提高之中。而內存帶寬的情況在DDR3-1600四通道的情況下讀寫都只有20+GB/s,就算在目前最快的超頻內存DDR4-3000四通道的情況下讀寫也只能分別到達60+GB/s和40+GB/s。在這種情況下普通單機單磁盤的系統(tǒng)內存帶寬還不足以成為性能的瓶頸,但在多磁盤組成RAID組的情況下,或者在陣列的多磁盤情況下,系統(tǒng)內存帶寬則可能出現(xiàn)瓶頸。如48塊intel的p3700固態(tài)硬盤組成的陣列理論寫帶寬可以達到96GB/s,在這種情況下目前的內存性能已成為陣列性能的瓶頸。
【發(fā)明內容】
[0005]本發(fā)明所要解決的技術問題是,針對現(xiàn)有技術不足,提供一種PCIE SSD陣列的數(shù)據(jù)寫方法及系統(tǒng)。
[0006]為解決上述技術問題,本發(fā)明所采用的技術方案是:一種PCIE SSD陣列的數(shù)據(jù)寫方法,包括以下步驟:
1)TGT端FC模塊接收到寫命令并通知陣列驅動;
2)陣列驅動解析寫命令后,根據(jù)LUN的RAID情況分為一個或多個10,分配給不同的PCIE SSD 磁盤;
3)為每個1在對應的盤共享內存上分配buffer;
4)TGT端FC模塊通知INI端接收數(shù)據(jù);
5)TGT端FC模塊直接將接收到的數(shù)據(jù)通過PCIE命令寫入上述步驟3)分配的buffer之中;
6)陣列驅動將分配好的一個或多個1發(fā)送給對應的PCIESSD磁盤;
7)PCIESSD磁盤接收到1命令后,將位于共享內存中的數(shù)據(jù)下刷到FLASH顆粒,完成1命令;
8)陣列驅動通知TGT端FC模塊完成寫命令并回復INI端FC模塊。
[0007]相應的,讀數(shù)據(jù)方法可以包括以下步驟:
1)TGT端FC模塊接收到讀命令并通知陣列驅動;
2)陣列驅動將讀命令根據(jù)LUN的RAID情況分為一個或多個1命令,并分配給不同的PCIE SSD 磁盤;
3)為每個1在對應的盤共享內存上分配buffer;
4)陣列驅動將分配好的一個或多個1命令發(fā)送給對應的PCIESSD磁盤;
5)PCIESSD磁盤收到1命令后,從FLASH中讀出數(shù)據(jù)放到位于PCIE SSD磁盤的共享內存的buffer中,完成1命令;
6)陣列驅動得到1命令完成消息后通知TGT端FC模塊將buffer數(shù)據(jù)回傳;
TGT端FC模塊通過PCIE命令讀取回傳的buffer數(shù)據(jù),回傳給INI端,完成讀命令。
[0008]本發(fā)明還提供了一種PCIE SSD陣列的數(shù)據(jù)寫系統(tǒng),其特征在于,包括:
TGT端FC模塊:用于接收寫命令并通知陣列驅動;通知INI端接收數(shù)據(jù),并將接收到的數(shù)據(jù)通過PCIE命令寫入分配的buffer之中;完成寫命令并回復INI端FC模塊;
陣列驅動:用于在解析寫命令后,根據(jù)LUN的RAID情況分為一個或多個10,分配給不同的PCIE SSD磁盤,為每個1在對應的盤共享內存上分配buffer ;將該命令分配好的一個或多個1發(fā)送給對應的PCIE SSD磁盤;在1命令完成后通知TGT端FC模塊完成寫命令并回復INI端FC模塊;
PCIE SSD磁盤:接收到陣列驅動發(fā)送的1命令后,將位于共享內存中的數(shù)據(jù)下刷到FLASH顆粒,完成1命令。
[0009]與現(xiàn)有技術相比,本發(fā)明所具有的有益效果為:本發(fā)明寫請求的數(shù)據(jù)不經(jīng)過陣列系統(tǒng)內存,所以性能不受陣列系統(tǒng)內存性能的限制,使得陣列寫帶寬可以超過主機內存的帶寬性能;由于寫請求數(shù)據(jù)不使用陣列系統(tǒng)內存,節(jié)約下來的陣列系統(tǒng)內存容量和帶寬可以給陣列系統(tǒng)和1命令本身使用,從總體上提高了陣列的性能。
【附圖說明】
[0010]圖1為現(xiàn)有的寫流程圖;
圖2為本發(fā)明方法的寫流程圖;
圖3為現(xiàn)有架構1的陣列內數(shù)據(jù)流;
圖4為本發(fā)明方法1陣列內數(shù)據(jù)流。
【具體實施方式】
[0011]本發(fā)明基于使用PCIE SSD作為存儲介質的存儲陣列,PCIE SSD包括但不限于基于AHC1、NVMe協(xié)議的SSD盤。
[0012]本發(fā)明需要將PCIE SSD盤的內存共享給主機(SSD盤的主機),目前NVMe 1.2協(xié)議已經(jīng)包含了將磁盤內存共享給主機的接口,其它不支持NVMe 1.2協(xié)議的PCIE SSD盤也可以通過自定義拓展協(xié)議實現(xiàn)將磁盤控制器的內存共享給主機。
[0013]從圖2可知,本發(fā)明和現(xiàn)有方案最大的不同是數(shù)據(jù)不經(jīng)過系統(tǒng)內存,而是直接從FC模塊傳輸?shù)絇CIE SSD盤控制器的共享內存上,從而避免了系統(tǒng)內存性能成為陣列性能的瓶頸,另外由于每塊PCIE SSD盤都有自己的內存,采用本發(fā)明我們只需要保證每塊盤上的內存寫性能能達到本身磁盤讀寫帶寬的兩倍,就能保證磁盤上的內存性能不會成為陣列和磁盤性能的瓶頸了(10數(shù)據(jù)經(jīng)過PCIE SSD的共享內存也需要分別讀寫一次)。
[0014]對比圖3和圖4可知,在不考慮回與和cache命中的情況下,米用本發(fā)明方案與命令都分別可以減少一次1數(shù)據(jù)的寫系統(tǒng)內存的操作。在實際對帶寬性能要求最高的場景下,如地質勘探,都是在短時間內有大量數(shù)據(jù)需要存儲,都是連續(xù)寫業(yè)務或連續(xù)讀業(yè)務,在這種情況下回寫和cache命中的效果幾乎可以忽略不計。所以在真實高帶寬寫場景下,采用本發(fā)明的方法可以在一定程度上使陣列的帶寬性能不受系統(tǒng)內存帶寬的限制,節(jié)約出來的帶寬和容量也讓其它使用系統(tǒng)內存的程序如1命令本身內容以及操作系統(tǒng)能運行得更快,從而提高陣列的整體性能表現(xiàn)。
【主權項】
1.一種PCIE SSD陣列的數(shù)據(jù)寫方法,其特征在于,包括以下步驟; 1)TGT端FC模塊接收到寫命令并通知陣列驅動; 2)陣列驅動解析寫命令后,根據(jù)LUN的RAID情況分為一個或多個10,分配給不同的PCIE SSD 磁盤; 3)為每個1在對應的盤共享內存上分配buffer; 4)TGT端FC模塊通知INI端接收數(shù)據(jù); 5)TGT端FC模塊直接將接收到的數(shù)據(jù)通過PCIE命令寫入上述步驟3)分配的buffer之中; 6)陣列驅動將分配好的一個或多個1發(fā)送給對應的PCIESSD磁盤; 7)PCIESSD磁盤接收到1命令后,將位于共享內存中的數(shù)據(jù)下刷到FLASH顆粒,完成1命令; 8)陣列驅動通知TGT端FC模塊完成寫命令并回復INI端FC模塊。2.—種PCIE SSD陣列的數(shù)據(jù)寫系統(tǒng),其特征在于,包括: TGT端FC模塊:用于接收寫命令并通知陣列驅動;通知INI端接收數(shù)據(jù),并將接收到的數(shù)據(jù)通過PCIE命令寫入分配的buffer之中;完成寫命令并回復INI端FC模塊; 陣列驅動:用于在解析寫命令后,根據(jù)LUN的RAID情況分為一個或多個10,分配給不同的PCIE SSD磁盤,為每個1在對應的盤共享內存上分配buffer ;將該命令分配好的一個或多個1發(fā)送給對應的PCIE SSD磁盤;在1命令完成后通知TGT端FC模塊完成寫命令并回復INI端FC模塊; PCIE SSD磁盤:接收到陣列驅動發(fā)送的1命令后,將位于共享內存中的數(shù)據(jù)下刷到FLASH顆粒,完成1命令。
【專利摘要】本發(fā)明公開了一種PCIE?SSD陣列的數(shù)據(jù)寫方法及系統(tǒng),數(shù)據(jù)不經(jīng)過系統(tǒng)內存,直接從FC模塊傳輸?shù)絇CIE?SSD盤控制器的共享內存上。本發(fā)明避免了系統(tǒng)內存性能成為制約陣列性能的瓶頸,另外由于每塊PCIE?SSD盤都有自己的內存,只需要保證每塊盤上的內存寫性能能達到本身磁盤寫帶寬的兩倍,就能保證磁盤上的內存性能不會成為制約陣列和磁盤性能的瓶頸了。
【IPC分類】G06F3/06
【公開號】CN105204786
【申請?zhí)枴緾N201510686775
【發(fā)明人】王翔, 向平, 周士兵, 姜黎, 馬翼, 田達海, 彭鵬
【申請人】湖南國科微電子股份有限公司
【公開日】2015年12月30日
【申請日】2015年10月22日