基于數(shù)據(jù)仲裁者副本的分布式存儲系統(tǒng)及方法
【技術領域】
[0001]本發(fā)明涉及分布式存儲系統(tǒng),特別是涉及基于數(shù)據(jù)仲裁者副本的分布式存儲系統(tǒng)及方法。
【背景技術】
[0002]隨著信息技術的發(fā)展,全球數(shù)據(jù)呈爆炸式增長。集中式存儲服務器過度依靠傳統(tǒng)磁性存儲設備,操作不便,性能難以得到擴展,而近期出現(xiàn)的在線集中式存儲服務器,技術亟需完善,無法滿足系統(tǒng)高可靠,可擴展性等要求,而且會是性能熱點,異常出錯的情況時有發(fā)生。在線的分布式存儲很好的解決了這些問題。
[0003]ceph是一套開源統(tǒng)一分布式存儲系統(tǒng),具有優(yōu)異的數(shù)據(jù)存取性能,系統(tǒng)可靠性有明顯提升,同時具有存儲性能的可擴展性,在電子商務,在線企業(yè)數(shù)據(jù)管理和大規(guī)模數(shù)據(jù)存儲和分析等領域都有廣泛的使用,并獲得了大量的開源組織的支持,加速了新型分布式存儲系統(tǒng)的普及。ceph雖然作為一個成功的開源項目,得到各個領域工作人員的廣泛應用,但ceph也存在一些問題,有待改進。ceph中使用單個數(shù)據(jù)存儲對象數(shù)據(jù)的多個副本備份的存儲策略,以此保證數(shù)據(jù)的高可靠,在出現(xiàn)掉線等異常的情況下,不易丟失存儲信息。在實際生產(chǎn)環(huán)境中為避免兩套副本的解決方法引起的分布式存儲“腦裂”問題,一般使用三副本的方法來保證了數(shù)據(jù)存儲的較高可靠性,但三副本策略在高性能的分布式塊存儲設備的條件下,其有效的數(shù)據(jù)存儲容量被過分壓縮,硬件成本過高的劣勢也很明顯,不利于在實際生產(chǎn)過程中的推廣實施并投入使用。且三副本的存儲方法導致存儲操作對象、操作歷史信息以及讀寫數(shù)據(jù)信息需要被放大寫三倍,才能保證三副本方法的實施,在寫入效率也不高的問題。
[0004]在數(shù)據(jù)的讀寫流程方面ceph采用的是ROWA(Read-One-Write-All)的基本策略,Write操作必須將存儲數(shù)據(jù)對象所包含的信息寫入所有副本進行備份,所有的Read操作都從主副本讀取存儲數(shù)據(jù)對象及列表信息。存儲操作發(fā)生的客戶端將直接和數(shù)據(jù)備份模塊顯示平臺0SD(on-screem display)I通信,客戶端向分布式存儲服務器發(fā)送寫入操作請求,發(fā)起數(shù)據(jù)對象寫入操作(Writel)。數(shù)據(jù)副本存儲模塊顯示0SD(0b ject-based StorageDevice,基于對象的存儲設備)1收到寫入操作請求后,分別向數(shù)據(jù)副本存儲模塊OSD(Object-based Storage Devi ce,基于對象的存儲設備)2和數(shù)據(jù)副本存儲模塊OSD(Object-based Storage Device,基于對象的存儲設備)3發(fā)起數(shù)據(jù)對象寫入操作(>rite2、Write3)。當數(shù)據(jù)副本存儲模塊0SD(0bject_based Storage Device,基于對象的存儲設備)2和數(shù)據(jù)副本存儲模塊顯示平臺0SD(0bject-based Storage Device,基于對象的存儲設備)3各自完成數(shù)據(jù)對象寫入操作后,將分別向數(shù)據(jù)副本存儲模塊顯示平臺0SD(0bject-based Storage Device,基于對象的存儲設備)I發(fā)送完成寫入的相應確認信息(Ack4,Ack5)。當數(shù)據(jù)副本存儲模塊顯示平臺0SD(on_screem display)I確信其他兩個數(shù)據(jù)副本存儲模塊顯示平臺0SD(0bject-based Storage Device,基于對象的存儲設備)的數(shù)據(jù)對象寫入操作完成后,則數(shù)據(jù)副本存儲模塊0SD(0bject-based Storage Device,基于對象的存儲設備)1也完成數(shù)據(jù)寫入,并向客戶端確認數(shù)據(jù)對象寫入操作完成(Ack6)。這樣的實現(xiàn)保證數(shù)據(jù)對象寫入操作過程中的可靠性,盡可能避免造成分布式存儲系統(tǒng)遇到異常時可能產(chǎn)生的數(shù)據(jù)丟失問題,簡化了系統(tǒng)實現(xiàn)的機構復雜度和實現(xiàn)難度,在有限程度上提高了數(shù)據(jù)的讀取性能,但由于需要所有副本全部寫入,勢必造成數(shù)據(jù)寫入確認機制冗雜,數(shù)據(jù)對象寫入操作延時較大,系統(tǒng)整體每秒平均輸入輸出1PS( Input/Output Per Secend)不高的問題。
[0005]綜上,現(xiàn)有技術中是ceph分布式存儲系統(tǒng)對數(shù)據(jù)存儲和輸入輸出以及寫入和讀出操作的控制方法中,為防止雙副本產(chǎn)生的腦裂問題而采用三副本的存儲策略,從而產(chǎn)生了寫入效率不高和存儲設備實際使用率低的問題,提高了系統(tǒng)的冗余容量成本,寫入性能相對低下。使用三副本寫入方法還會產(chǎn)生的寫入延時和每秒輸入輸出慢的問題。
【發(fā)明內容】
[0006]鑒于以上現(xiàn)有技術的缺點,本發(fā)明的目的在于提供基于數(shù)據(jù)仲裁者副本分布式存儲系統(tǒng)及方法,用于解決有效存儲空間相對較小以及現(xiàn)有技術中雙副本存儲方法存在的腦裂等問題。
[0007]為實現(xiàn)上述目的及其他相關目的,本發(fā)明提供一種基于數(shù)據(jù)仲裁者副本分布式存儲系統(tǒng)及方法,用于在線分布式存儲數(shù)據(jù),基于數(shù)據(jù)仲裁者副本的分布式存儲方法包括以下步驟:S1、分布式存儲系統(tǒng)接收數(shù)據(jù)寫入操作請求;S2、分布式存儲系統(tǒng)收到寫入操作請求后,開始數(shù)據(jù)寫入操作,并將寫入的數(shù)據(jù)同步地寫入數(shù)據(jù)副本存儲模塊中;S3、數(shù)據(jù)副本存儲模塊的數(shù)據(jù)寫入操作完成,數(shù)據(jù)副本存儲模塊直接回發(fā)寫操作確認信息;S4、數(shù)據(jù)仲裁者副本模塊繼續(xù)從數(shù)據(jù)副本存儲模塊上異步地寫入數(shù)據(jù),進行完整的數(shù)據(jù)仲裁信息備份;用于支持數(shù)據(jù)迀移與修復;S5、數(shù)據(jù)仲裁者副本模塊寫入操作完成,回發(fā)異步寫操作確認信息。
[0008]于本發(fā)明的一實施方式中,數(shù)據(jù)寫入操作流程采用ffrite-Quorum數(shù)據(jù)寫入流程,若數(shù)據(jù)副本存儲模塊總數(shù)為n,則完成數(shù)據(jù)寫入操作的數(shù)據(jù)副本存儲模塊數(shù)大于η/2后,直接返回寫入操作確認信息,剩余副本模塊上的數(shù)據(jù)信息從數(shù)據(jù)副本存儲模塊上異步地寫入。
[0009]于本發(fā)明的一實施方式中,數(shù)據(jù)仲裁信息為操作歷史記錄信息,用于修復數(shù)據(jù)副本存儲模塊因異常未寫入的數(shù)據(jù);數(shù)據(jù)副本存儲模塊中全部寫入數(shù)據(jù)對象的元數(shù)據(jù)、數(shù)據(jù)體和操作歷史記錄信息;數(shù)據(jù)仲裁者副本模塊中不對數(shù)據(jù)體進行寫操作。
[0010]于本發(fā)明的一實施方式中,基于數(shù)據(jù)仲裁者副本的分布式存儲方法還包括以下步驟:SI’、判斷是否存在數(shù)據(jù)副本存儲模塊下線;S2’、若是,則分布式存儲體統(tǒng)排除下線的數(shù)據(jù)副本存儲模塊,調整寫入操作針對的數(shù)據(jù)副本存儲模塊數(shù);S3’、判斷已下線的數(shù)據(jù)副本存儲模塊是否重新上線;S4 ’、若是,則該數(shù)據(jù)副本存儲模塊從其他數(shù)據(jù)副本存儲模塊或數(shù)據(jù)仲裁者副本模塊獲取完整的操作歷史記錄信息和數(shù)據(jù)體,進行數(shù)據(jù)修復;S5’、若否,則未下線的數(shù)據(jù)副本存儲模塊繼續(xù)進行數(shù)據(jù)寫入操作。
[0011]于本發(fā)明的一實施方式中,步驟S4’還包括:S41’、下線的數(shù)據(jù)副本存儲模塊遍歷自身的操作歷史記錄信息;S42’、下線的數(shù)據(jù)副本存儲模塊中的操作歷史記錄信息與數(shù)據(jù)仲裁者副本模塊中的操作歷史記錄信息合并,獲得完整的操作歷史記錄信息;S43’、重新上線的數(shù)據(jù)副本存儲模塊按照合并的歷史操作記錄信息從其他未掉線的數(shù)據(jù)副本存儲模塊補充寫入丟失的元數(shù)據(jù)和數(shù)據(jù)體。
[0012]于本發(fā)明的一實施方式中,基于數(shù)據(jù)仲裁者副本的分布式存儲系統(tǒng),用于在線分布式存儲數(shù)據(jù),基于數(shù)據(jù)仲裁者副本的分布式存儲系統(tǒng)安裝于服務器平臺中,包括:第一數(shù)據(jù)副本存儲模塊、第二數(shù)據(jù)副本存儲模塊和數(shù)據(jù)仲裁者副本模塊;第一數(shù)據(jù)副本存儲模塊用于存儲待讀取元數(shù)據(jù)、數(shù)據(jù)體和操作歷史記錄信息,第二數(shù)據(jù)副本存儲模塊的規(guī)格與第一數(shù)據(jù)副本存儲模塊相同,用于備份元數(shù)據(jù)、數(shù)據(jù)體和操作歷史記錄信息;數(shù)據(jù)仲裁者副本模塊用于備份元數(shù)據(jù)、和完整的操作歷史記錄信息。
[0013]于本發(fā)明的一實施方式中,第一副本模塊包括:操作元數(shù)據(jù)存儲模塊、歷史記錄信息模塊和數(shù)據(jù)體存儲模塊;第二副本模塊包括:操作元數(shù)據(jù)備份模塊、歷史記錄信息備份模塊和數(shù)據(jù)體備份模塊。
[0014]于本發(fā)明的一實施方式中,數(shù)據(jù)仲裁者副本模塊包括:元數(shù)據(jù)備份模塊和歷史記錄信息備份模塊。
[0015]于本發(fā)明的一實施方式中,基于數(shù)據(jù)仲裁者副本的分布式存儲系統(tǒng)可以擴展為分布式存儲多活數(shù)據(jù)中心。
[0016]于本發(fā)明的一實施方式中,分布式存儲多活數(shù)據(jù)中心包括數(shù)據(jù)中心模塊和數(shù)據(jù)仲裁者中心模塊。
[0017]如上,本發(fā)明提供的基于數(shù)據(jù)仲裁者副本分布式存儲系統(tǒng)及方法,具有以下有益效果:
[0018]在數(shù)據(jù)的讀寫流程方面本發(fā)明提供的基于數(shù)據(jù)仲裁者副本的ceph分布式存儲系統(tǒng)及方法將存儲數(shù)據(jù)對象所包含的信息采用異步的方式,先將數(shù)據(jù)存儲對象包含的信息同步寫入第一數(shù)據(jù)副本存儲模塊和第二數(shù)據(jù)副本存儲模塊,再異步地將完整的操作歷史信息寫入數(shù)據(jù)仲裁者副本模塊中備份存儲,所有的對對象數(shù)據(jù)信息的讀操作都有線從第一副本模塊中讀取存儲數(shù)據(jù)對象信息及列表信息。存儲操作發(fā)生的客戶端首先直接和第一數(shù)據(jù)副本存儲模塊通信,客戶端向分布式存儲系統(tǒng)的服務器端發(fā)送寫入操作請求,發(fā)起數(shù)據(jù)對象寫入操作。第一數(shù)據(jù)副本存儲模塊收到寫入操作請求后,先向第二數(shù)據(jù)副本存儲模塊同步發(fā)出與備份數(shù)據(jù)對應的寫入操作請求,再異步地向數(shù)據(jù)仲裁者副本模塊發(fā)起數(shù)據(jù)對象寫入操作。當?shù)谝粩?shù)據(jù)副本存儲模塊、第二數(shù)據(jù)副本存儲模塊和數(shù)據(jù)仲裁者副本模塊各自完成數(shù)據(jù)對象寫入操作后,第二數(shù)據(jù)副本存儲模塊向第一數(shù)據(jù)副本存儲模塊發(fā)送完成寫入的相應確認信息。第一數(shù)據(jù)副本存儲模塊和第二數(shù)據(jù)副本存儲模塊的操作歷史信息完整,所有數(shù)據(jù)對象信息寫入操作完成后,服務