專利名稱:一種多副本存儲系統(tǒng)在線修復的方法
技術領域:
本發(fā)明涉及計算機存儲領域,具體來說,涉及了一種基于對象存儲系統(tǒng)的在線修復方法。
背景技術:
對象存儲系統(tǒng)中,采用多副本的方式能夠提高系統(tǒng)的可靠性。通過普通存儲設備構建的分布式存儲系統(tǒng)中,磁盤故障、網(wǎng)絡故障及節(jié)點宕機是經(jīng)常發(fā)生的,因此系統(tǒng)需要提供在線處理故障的能力,使系統(tǒng)能夠提供穩(wěn)定可靠的服務。當前,大多數(shù)的系統(tǒng)是通過離線的方式進行修復故障,這樣就大大降低了系統(tǒng)的可用性。伴隨著系統(tǒng)規(guī)模不斷擴大、網(wǎng)絡的復雜性大大增加,使得網(wǎng)絡故障處理面臨巨大的挑戰(zhàn),同時大量廉價磁盤設備及廉價服務器的使用,使得系統(tǒng)的磁盤故障和節(jié)點宕機的概率大大增加。
發(fā)明內容
本發(fā)明的目的在于提供一種高可靠性,高可用性的基于對象存儲的對象在線修復方法。一種多副本存儲系統(tǒng)在線修復的方法,將對象采用多副本方式保存,同一對象的不同副本存儲在不同的OSD上;在同一對象的副本中選定一個主副本,每次的修改操作在主副本上進行,主副本修改完成后,將修改操作同步到從副本;主副本出現(xiàn)故障時,向MDS發(fā)起更換主副本請求,MDS選擇一個從副本作為新的主副本,并記錄故障信息日志;從副本出現(xiàn)故障時,主副本將故障信息告知MDS,MDS記錄該故障對象的信息;故障解除后,觸發(fā)故障在線修復,在MDS控制下,由主副本主導修復對象,對象之間是相互獨立的,每修復一個對象,將該對象的最新信息在MDS上修正,如果修復過程中因新的故障終止,重新開始修復時,不再重復修復已經(jīng)修復好的對象;OSD主節(jié)點宕機時,客戶端向MDS申請更換主副本,更換完成后,繼續(xù)操作對象; OSD從節(jié)點宕機時,主節(jié)點記錄一致性日志,并報告MDS副本狀態(tài)。優(yōu)選的,用戶通過所述客戶端與系統(tǒng)進行數(shù)據(jù)讀寫,所述客戶端提供通用文件系統(tǒng)接口,所述客戶端向MDS獲取對象的存儲信息及副本信息;將寫的數(shù)據(jù)發(fā)給主副本,主副本進行內存操作,并記錄內存日志,主副本將寫操作轉發(fā)給從副本,同時也將日志編號帶給從副本;完成內存操作后,主副本應答客戶端;主副本進行主從的磁盤操作,如果出現(xiàn)錯誤,則記錄一致性日志,清除內存的日志。優(yōu)選的,所述副本的修改操作當數(shù)據(jù)轉發(fā)到從副本的內存后才應答客戶端,只有當所有副本同時故障時,才不能保證副本的一致性。
優(yōu)選的,所述OSD記錄了副本之間不一致的日志信息,當對象修復完成時,追加一條標志日志條目記錄此前的對象日志已經(jīng)被應用,在確定所有應用過的日志無效后,可以對日志進行刪除回收磁盤空間。優(yōu)選的,所述副本修復是通過觸發(fā)啟動的,包括手動觸發(fā)和自動觸發(fā),自動觸發(fā)須設定觸發(fā)條件。優(yōu)選的,所述觸發(fā)條件包括磁盤失效,網(wǎng)絡重連和一致性日志過大。本發(fā)明通過在線的方式對副本的一致性進行修復,提高了系統(tǒng)的可靠性和可用性。
圖1為系統(tǒng)的交互模型工作過程圖。圖2從副本網(wǎng)絡故障處理3主副本故障處理4主OSD故障處理5數(shù)據(jù)修復控制圖
具體實施例方式1采用多副本的方式保存對象,提高系統(tǒng)的可靠性,同一對象的不同副本存儲在不同的OSD上;2同一對象的副本中有一個是主副本,修改操作發(fā)給該副本,主副本將操作發(fā)給從副本,修改操作時,當數(shù)據(jù)轉發(fā)到從副本的內存后才應答客戶端,因此只要存在可用的副本,就能保證各個副本的一致性,當所有副本同時故障時,無法保證副本的一致性;3主副本出現(xiàn)故障時,通過換主操作,由MDS選擇新的主副本,MDS記錄故障信息;4從副本出現(xiàn)故障時,主副本告知MDS,MDS記錄該故障對象信息;5故障解除后,觸發(fā)數(shù)據(jù)修復,在MDS的總控制下,由主副本主導修復對象,對象之間是相互獨立的,每修復一個對象,該對象的最新信息在MDS上進行修正,修復過程中因新的故障終止,重新開始修復時,不再重復修復已經(jīng)修復好的對象,數(shù)據(jù)修復的過程是通過觸發(fā)啟動的,支持通過手動觸發(fā)和自動觸發(fā)兩種方式,根據(jù)實際需求,設定自動觸發(fā)的條件, 如磁盤失效、網(wǎng)絡重連及一致性日志過大等;60SD節(jié)點宕機時,客戶端向MDS申請換主,換主完成后,繼續(xù)操作該對象,OSD上記錄了副本之間不一致的日志信息,當對象修復完成時,通過追加一條特定日志條目,表示此前的對象日志已經(jīng)被應用過。在適當?shù)臅r機,對全部應用過的日志進行刪除,回收無效日志占用的磁盤空間。外部數(shù)據(jù)交互過程用戶通過客戶端與系統(tǒng)進行數(shù)據(jù)讀寫,客戶端提供通用文件系統(tǒng)接口,用戶使用時與本地文件系統(tǒng)沒有區(qū)別。內部數(shù)據(jù)交互過程客戶端向MDS獲取對象的存儲信息及副本信息;將寫的數(shù)據(jù)發(fā)給主副本,主副本進行內存操作,并記錄內存日志,主副本將寫操作轉發(fā)給從副本,同時也將日志編號帶給從副本;完成內存操作后,主副本應答客戶端;主副本進行主從的磁盤操作,如果出現(xiàn)錯誤,則記錄一致性日志,清除內存的日志。
下面結合附圖舉例對本發(fā)明做更細地描述圖1為系統(tǒng)的交互模型工作過程圖??蛻舳藦腗DS獲取對象的存儲位置信息,向主副本發(fā)起寫操作;主副本將數(shù)據(jù)接受后,向從副本轉發(fā);從副本接受數(shù)據(jù)后,應答主副本;主副本得到全部從副本應答后,向客戶端應答寫完成。圖2為系統(tǒng)的網(wǎng)絡故障處理圖。1接受來自客戶端的頁面,通過網(wǎng)絡層獲取2進行本地的內存操作3將頁面轉發(fā)給從副本4從副本應答失敗或超時5主副本保存從副本狀態(tài),向MDS報告副本狀態(tài)6后續(xù)的操作不再向失敗的副本發(fā)送數(shù)據(jù)操作,直到修復完成圖3為系統(tǒng)的主副本故障處理。1主副本處理過程中出現(xiàn)故障2主副本向MDS發(fā)起換主請求3MDS將主副本換走4元主副本由主變成從5客戶端向新主副本發(fā)送寫操作,在未修復之前,新主不再向失敗的副本發(fā)送寫操作(原主)圖4為主節(jié)點宕機的處理過程。1客戶端操作過程中發(fā)現(xiàn)主節(jié)點宕機2客戶端向MDS發(fā)起換主3MDS處理換主4客戶端向新的主副本進行操作5原主OSD重啟加入系統(tǒng)時,需要將主變成從,由OSD的重新加入流程進行處理。圖5為在線修復的總體流程在MDS的總體控制下,由OSD的修復工作者線程負責修復單個對象。
權利要求
1.一種多副本存儲系統(tǒng)在線修復的方法,其特征在于將對象采用多副本方式保存,同一對象的不同副本存儲在不同的OSD上;在同一對象的副本中選定一個主副本,每次的修改操作在主副本上進行,主副本修改完成后,將修改操作同步到從副本;主副本出現(xiàn)故障時,向MDS發(fā)起更換主副本請求,MDS選擇一個從副本作為新的主副本,并記錄故障信息日志;從副本出現(xiàn)故障時,主副本將故障信息告知MDS,MDS記錄該故障對象的信息;故障解除后,觸發(fā)故障在線修復,在MDS控制下,由主副本主導修復對象,對象之間是相互獨立的,每修復一個對象,將該對象的最新信息在MDS上修正,如果修復過程中因新的故障終止,重新開始修復時,不再重復修復已經(jīng)修復好的對象;OSD主節(jié)點宕機時,客戶端向MDS申請更換主副本,更換完成后,繼續(xù)操作對象;OSD從節(jié)點宕機時,主節(jié)點記錄一致性日志,并報告MDS副本狀態(tài)。
2.如權利要求1所述的方法,其特征在于用戶通過所述客戶端與系統(tǒng)進行數(shù)據(jù)讀寫, 所述客戶端提供通用文件系統(tǒng)接口,所述客戶端向MDS獲取對象的存儲信息及副本信息; 將寫的數(shù)據(jù)發(fā)給主副本,主副本進行內存操作,并記錄內存日志,主副本將寫操作轉發(fā)給從副本,同時也將日志編號帶給從副本;完成內存操作后,主副本應答客戶端;主副本進行主從的磁盤操作,如果出現(xiàn)錯誤,則記錄一致性日志,清除內存的日志。
3.如權利要求1所述的方法,其特征在于所述副本的修改操作當數(shù)據(jù)轉發(fā)到從副本的內存后才應答客戶端,只有當所有副本同時故障時,才不能保證副本的一致性。
4.如權利要求1所述的方法,其特征在于所述OSD記錄了副本之間不一致的日志信息,當對象修復完成時,追加一條標志日志條目記錄此前的對象日志已經(jīng)被應用,在確定所有應用過的日志無效后,可以對日志進行刪除回收磁盤空間。
5.如權利要求1所述的方法,其特征在于所述副本修復是通過觸發(fā)啟動的,包括手動觸發(fā)和自動觸發(fā),自動觸發(fā)須設定觸發(fā)條件。
6.如權利要求5所述的方法,其特征在于所述觸發(fā)條件包括磁盤失效,網(wǎng)絡重連和一致性日志過大。
全文摘要
本發(fā)明提供了一種多副本存儲系統(tǒng)在線修復的方法,采用多副本的方式保存對象,提高系統(tǒng)的可靠性,同一對象的不同副本存儲在不同的OSD上,同一對象的副本中有一個是主副本,修改操作發(fā)給該副本,主副本將操作發(fā)給從副本,主副本出現(xiàn)故障時,通過換主操作,由MDS選擇新的主副本,MDS記錄故障信息,從副本出現(xiàn)故障時,主副本告知MDS,MDS記錄該故障對象信息,故障解除后,觸發(fā)數(shù)據(jù)修復,在MDS的總控制下,完成數(shù)據(jù)的修復,OSD節(jié)點宕機時,客戶端向MDS申請換主,換主完成后,繼續(xù)操作該對象。本發(fā)明通過在線的方式對副本的一致性進行修復,提高了系統(tǒng)的可靠性和可用性。
文檔編號G06F11/14GK102368222SQ20111032831
公開日2012年3月7日 申請日期2011年10月25日 優(yōu)先權日2011年10月25日
發(fā)明者付根希, 姜國梁, 彭成, 楊浩, 王勇, 苗艷超 申請人:曙光信息產業(yè)(北京)有限公司