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