一種集群文件系統(tǒng)腦裂處理方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種集群文件系統(tǒng)腦裂處理方法和裝置,所述的方法包括以下步驟:監(jiān)測(cè)各個(gè)節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)有無(wú)響應(yīng)節(jié)點(diǎn)時(shí),記錄所述無(wú)響應(yīng)節(jié)點(diǎn);當(dāng)某一文件收到編輯請(qǐng)求時(shí),檢查該文件的兩個(gè)副本之一是否存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上;若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則不做操作;若該文件的一個(gè)副本存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)其另一個(gè)副本添加修復(fù)標(biāo)識(shí);當(dāng)所述無(wú)響應(yīng)節(jié)點(diǎn)恢復(fù)響應(yīng)后,以帶有修復(fù)標(biāo)識(shí)的所述另一個(gè)副本作為源副本,將所述一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。本發(fā)明的方法和裝置,給出了一種在現(xiàn)有的僅有兩個(gè)副本的情況下也能進(jìn)行腦裂處理的方案,能夠兼顧實(shí)際空間利用率和IO性能。
【專利說(shuō)明】一種集群文件系統(tǒng)腦裂處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及集群文件系統(tǒng)領(lǐng)域,特別是指一種集群文件系統(tǒng)腦裂處理方法和裝置。
【背景技術(shù)】
[0002]腦裂是因?yàn)橛?jì)算機(jī)集群分裂導(dǎo)致的,計(jì)算機(jī)集群中的節(jié)點(diǎn)因?yàn)樘幚砥髅蛘咂渌驎簳r(shí)停止響應(yīng)時(shí),其他節(jié)點(diǎn)可能誤認(rèn)為該節(jié)點(diǎn)“已死”,從而奪取共享磁盤(即資源)的訪問(wèn)權(quán),此時(shí)極有可能假死節(jié)點(diǎn)重新對(duì)共享文件系統(tǒng)產(chǎn)生讀寫操作,從而導(dǎo)致共享磁盤文件系統(tǒng)損壞。對(duì)于分布式文件系統(tǒng),每一個(gè)文件均對(duì)應(yīng)于兩個(gè)副本,用戶編輯該文件時(shí),會(huì)定向到任一副本,并實(shí)時(shí)地將兩個(gè)副本同步更新至相同。當(dāng)存儲(chǔ)某一副本的節(jié)點(diǎn)因?yàn)閿嗑W(wǎng)、宕機(jī)等情況而停止響應(yīng)時(shí),用戶的編輯會(huì)造成兩個(gè)副本的內(nèi)容不同,使相同無(wú)法得知以哪個(gè)副本進(jìn)行同步更新,即發(fā)生分布式文件系統(tǒng)中文件的腦裂。
[0003]目前,處理文件腦裂的方法主要有:增加心跳線降低發(fā)生腦裂的概率,增加文件副本數(shù)(n> = 3)等。現(xiàn)有方案增加心跳線雖能降低概率但成本較高,若發(fā)生腦裂問(wèn)題,需專業(yè)工程師的介入無(wú)疑也增加了成本,降低了效率,耗時(shí)較長(zhǎng)。增加文件副本數(shù)(n> = 3)也能有效避免腦裂,但用戶的實(shí)際存儲(chǔ)空間利用率降低(小于等于磁盤總數(shù)的三分之一),而且副本的增加會(huì)嚴(yán)重降低1性能,這也是許多用戶不能接受的。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的目的在于提出一種簡(jiǎn)單高效的預(yù)防和解決集群文件系統(tǒng)腦裂的方法和裝置。
[0005]基于上述目的本發(fā)明提供的一種集群文件系統(tǒng)腦裂處理方法,包括以下步驟:
[0006]監(jiān)測(cè)各個(gè)節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)有無(wú)響應(yīng)節(jié)點(diǎn)時(shí),記錄所述無(wú)響應(yīng)節(jié)點(diǎn);
[0007]當(dāng)某一文件收到編輯請(qǐng)求時(shí),檢查該文件的兩個(gè)副本之一是否存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上;若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則不做操作;若該文件的一個(gè)副本存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)其另一個(gè)副本添加修復(fù)標(biāo)識(shí);
[0008]當(dāng)所述無(wú)響應(yīng)節(jié)點(diǎn)恢復(fù)響應(yīng)后,以帶有修復(fù)標(biāo)識(shí)的所述另一個(gè)副本作為源副本,將所述一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0009]優(yōu)選的,在修復(fù)文件的兩個(gè)副本的步驟中,將用戶對(duì)該文件的訪問(wèn)請(qǐng)求定向到帶有修復(fù)標(biāo)識(shí)的副本,使該文件處于可訪問(wèn)狀態(tài)。
[0010]優(yōu)選的,所述的方法進(jìn)一步包括對(duì)腦裂文件的處理方法,包括以下步驟:
[0011]將腦裂文件設(shè)置為臨時(shí)訪問(wèn)狀態(tài),使用戶能夠分別訪問(wèn)其兩個(gè)副本;
[0012]獲取用戶指令,為一個(gè)副本添加修復(fù)標(biāo)識(shí),并清除所述腦裂文件的臨時(shí)訪問(wèn)狀態(tài);
[0013]以帶有修復(fù)標(biāo)識(shí)的所述副本作為源副本,將另一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0014]優(yōu)選的,在臨時(shí)訪問(wèn)狀態(tài)下,通過(guò)API接口或標(biāo)準(zhǔn)Linux命令getfattr獲取所述腦裂文件副本的基本信息;通過(guò)API接口或標(biāo)準(zhǔn)Linux命令setfattr來(lái)訪問(wèn)文件副本。
[0015]本發(fā)明還提供了一種集群文件系統(tǒng)腦裂處理裝置,包括:
[0016]監(jiān)測(cè)模塊,用于監(jiān)測(cè)各個(gè)節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)有無(wú)響應(yīng)節(jié)點(diǎn)時(shí),記錄所述無(wú)響應(yīng)節(jié)點(diǎn);
[0017]第一執(zhí)行模塊,用于當(dāng)某一文件收到編輯請(qǐng)求時(shí),檢查該文件的兩個(gè)副本之一是否存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上;若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則不做操作;若該文件的一個(gè)副本存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)其另一個(gè)副本添加修復(fù)標(biāo)識(shí);
[0018]第一修復(fù)模塊,用于當(dāng)所述無(wú)響應(yīng)節(jié)點(diǎn)恢復(fù)響應(yīng)后,以帶有修復(fù)標(biāo)識(shí)的所述另一個(gè)副本作為源副本,將所述一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0019]優(yōu)選的,所述第一修復(fù)模塊還用于在修復(fù)文件的兩個(gè)副本的過(guò)程中,將用戶對(duì)該文件的訪問(wèn)請(qǐng)求定向到帶有修復(fù)標(biāo)識(shí)的副本,使該文件處于可訪問(wèn)狀態(tài)。
[0020]優(yōu)選的,所述的裝置還包括:
[0021]臨時(shí)訪問(wèn)模塊,用于將腦裂文件設(shè)置為臨時(shí)訪問(wèn)狀態(tài),使用戶能夠分別訪問(wèn)其兩個(gè)副本;
[0022]第二執(zhí)行模塊,用于獲取用戶指令,為一個(gè)副本添加修復(fù)標(biāo)識(shí),并清除所述腦裂文件的臨時(shí)訪問(wèn)狀態(tài);
[0023]第二修復(fù)模塊,用于以帶有修復(fù)標(biāo)識(shí)的所述副本作為源副本,將另一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0024]優(yōu)選的,所述臨時(shí)訪問(wèn)模塊通過(guò)API接口或標(biāo)準(zhǔn)Linux命令getfattr獲取所述腦裂文件副本的信息;通過(guò)API接口或標(biāo)準(zhǔn)Linux命令setfattr來(lái)訪問(wèn)文件副本。
[0025]從上面所述可以看出,本發(fā)明提供的集群文件系統(tǒng)腦裂處理方法和裝置,給出了一種在現(xiàn)有的僅有兩個(gè)副本的情況下也能進(jìn)行腦裂處理的方案,能夠兼顧實(shí)際空間利用率和1性能。在處理腦裂和修復(fù)的過(guò)程中,不需要停止當(dāng)前的集群服務(wù)即可進(jìn)行處理,即處理發(fā)生腦裂的文件時(shí),不影響其它非腦裂文件的讀寫訪問(wèn),同時(shí),數(shù)據(jù)修復(fù)過(guò)程中不影響用戶的訪問(wèn)。
【專利附圖】
【附圖說(shuō)明】
[0026]圖1為本發(fā)明實(shí)施例的集群文件系統(tǒng)腦裂處理方法流程圖;
[0027]圖2為本發(fā)明實(shí)施例的腦裂文件解決處理方法流程圖;
[0028]圖3為本發(fā)明實(shí)施例的集群文件系統(tǒng)腦裂處理裝置的示意圖。
【具體實(shí)施方式】
[0029]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
[0030]本發(fā)明實(shí)施例提供了一種集群文件系統(tǒng)腦裂處理方法,對(duì)于運(yùn)行在一個(gè)計(jì)算機(jī)集群中的分布式文件系統(tǒng),即集群文件系統(tǒng),通過(guò)本實(shí)施例的方法有效的預(yù)防文件發(fā)生腦裂,而造成文件損壞、用戶無(wú)法訪問(wèn)的情況。
[0031]參考圖1,為本發(fā)明實(shí)施例的集群文件系統(tǒng)腦裂處理方法流程圖。
[0032]步驟101:監(jiān)測(cè)各個(gè)節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)有無(wú)響應(yīng)節(jié)點(diǎn)時(shí),記錄所述無(wú)響應(yīng)節(jié)點(diǎn)。
[0033]在計(jì)算機(jī)集群中,由一個(gè)外部管理節(jié)點(diǎn)對(duì)計(jì)算機(jī)集群中的各個(gè)節(jié)點(diǎn)進(jìn)行實(shí)時(shí)的監(jiān)測(cè),當(dāng)其監(jiān)測(cè)到有任一節(jié)點(diǎn)因?yàn)閿嗑W(wǎng)、宕機(jī)等因素而進(jìn)入無(wú)響應(yīng)狀態(tài)時(shí),管理節(jié)點(diǎn)將會(huì)把該無(wú)響應(yīng)節(jié)點(diǎn)的名稱報(bào)告給集群文件系統(tǒng),并由集群文件系統(tǒng)記錄該無(wú)響應(yīng)節(jié)點(diǎn)。
[0034]步驟102:當(dāng)某一文件收到編輯請(qǐng)求時(shí),檢查該文件的兩個(gè)副本之一是否存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上;若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則不做操作;若該文件的一個(gè)副本存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)其另一個(gè)副本添加修復(fù)標(biāo)識(shí)。
[0035]本步驟中,對(duì)于集群文件系統(tǒng)中的任一文件接收的用戶的編輯請(qǐng)求時(shí),首先檢查該被要求編輯的文件與步驟101中所述的被記錄的無(wú)響應(yīng)節(jié)點(diǎn)的相關(guān)性,即該文件的兩個(gè)副本中,是否有一個(gè)存儲(chǔ)在所述的無(wú)響應(yīng)節(jié)點(diǎn)上。若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則進(jìn)入正常的文件編輯過(guò)程。若檢查發(fā)現(xiàn),該文件有一個(gè)副本存儲(chǔ)在所述的無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)該文件的另一個(gè)副本,即存儲(chǔ)在正常節(jié)點(diǎn)上的副本添加一個(gè)修復(fù)標(biāo)識(shí),然后用戶進(jìn)行正常的編輯過(guò)程,該帶有修復(fù)標(biāo)識(shí)的副本記錄用戶的編輯內(nèi)容。
[0036]步驟103:當(dāng)所述無(wú)響應(yīng)節(jié)點(diǎn)恢復(fù)響應(yīng)后,以帶有修復(fù)標(biāo)識(shí)的所述另一個(gè)副本作為源副本,將所述一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0037]所述的無(wú)響應(yīng)節(jié)點(diǎn)排除故障恢復(fù)響應(yīng)后,在一般的集群文件系統(tǒng)中,由于此時(shí)被編輯過(guò)的文件的兩個(gè)副本的內(nèi)容不一致,系統(tǒng)無(wú)法得知以哪個(gè)副本為源副本進(jìn)行同步更新,即會(huì)發(fā)生文件的腦裂。在本實(shí)施例中,由于經(jīng)過(guò)步驟102后,經(jīng)過(guò)用戶編輯的副本帶有修復(fù)標(biāo)識(shí),則以該帶有修復(fù)標(biāo)識(shí)的副本作為源副本,將該文件存儲(chǔ)在之前無(wú)響應(yīng)節(jié)點(diǎn)上的副本更新至與所述的源副本相同。此時(shí),該文件的兩個(gè)副本均已經(jīng)恢復(fù)正常,最后將副本上的修復(fù)標(biāo)識(shí)清除。
[0038]在本步驟中所述的文件副本的修復(fù)過(guò)程中,在修復(fù)進(jìn)行時(shí)如果收到對(duì)被修復(fù)的文件的訪問(wèn)請(qǐng)求,此時(shí)將用戶的訪問(wèn)定向到帶有修復(fù)標(biāo)識(shí)的副本上,使得用戶能夠?qū)υ撐募M(jìn)行正常訪問(wèn)。
[0039]本實(shí)施例的集群文件系統(tǒng)腦裂處理方法中,還進(jìn)一步的包括對(duì)于已經(jīng)發(fā)生腦裂的文件的解決處理方法。
[0040]通過(guò)上述的步驟101至步驟103的方法,能夠比較有效的預(yù)防文件發(fā)生腦裂。但是由于集群文件系統(tǒng)的系統(tǒng)工作狀態(tài)復(fù)雜,仍有一定的概率會(huì)有個(gè)別文件出現(xiàn)腦裂的情況。有鑒于此,本發(fā)明實(shí)施例為了能夠最大程度的保證集群文件系統(tǒng)中文件的正常工作,還提供了對(duì)于腦裂文件的解決處理方法,參考圖2,為本發(fā)明實(shí)施例的腦裂文件解決處理方法流程圖。
[0041]所述的腦裂文件解決處理方法包括以下步驟:
[0042]步驟201:將腦裂文件設(shè)置為臨時(shí)訪問(wèn)狀態(tài),使用戶能夠分別訪問(wèn)其兩個(gè)副本。
[0043]一般情況下,發(fā)生腦裂的文件時(shí)無(wú)法被用戶正常訪問(wèn)的,即處于非訪問(wèn)狀態(tài)。在本步驟中,首先將腦裂文件的訪問(wèn)狀態(tài)設(shè)置為臨時(shí)訪問(wèn)狀態(tài),所述的臨時(shí)訪問(wèn)狀態(tài)允許用戶能夠分別訪問(wèn)該腦裂文件的兩個(gè)副本。
[0044]步驟202:獲取用戶指令,為一個(gè)副本添加修復(fù)標(biāo)識(shí),并清除所述腦裂文件的臨時(shí)訪問(wèn)狀態(tài)。
[0045]在腦裂文件處于臨時(shí)訪問(wèn)狀態(tài)后,用戶能夠獲取腦裂文件的兩個(gè)副本的基本信息。所述的基本信息包括副本的存儲(chǔ)節(jié)點(diǎn)、大小、訪問(wèn)時(shí)間等等,可以根據(jù)這些基本信息進(jìn)行判斷哪個(gè)副本是經(jīng)過(guò)用戶最后編輯的正確副本。在某些情況下,通過(guò)基本信息無(wú)法判斷哪個(gè)副本是正確的,那么用戶可以通過(guò)直接訪問(wèn)每個(gè)副本,查看副本數(shù)據(jù)是否正確來(lái)判斷。例如,比如腦裂的是虛擬機(jī)的img文件,img在副本imgA或者imgB時(shí),是否能夠正常啟動(dòng),啟動(dòng)后內(nèi)部數(shù)據(jù)是否正常等等,通過(guò)對(duì)比確定imgA或imgB為正確副本。在另外一些情況下,用戶可能恰恰需要未經(jīng)過(guò)編輯之前的文件,那么用戶可以直接選取不包括最后編輯內(nèi)容的副本為正確副本。通過(guò)上述幾種方法選取好正確副本后,對(duì)其添加一個(gè)修復(fù)標(biāo)識(shí),同時(shí)清除腦裂文件的臨時(shí)訪問(wèn)狀態(tài)。
[0046]作為優(yōu)選的,在本步驟中,通過(guò)API接口或標(biāo)準(zhǔn)Linux命令getfattr獲取所述腦裂文件副本的基本信息;通過(guò)API接口或標(biāo)準(zhǔn)Linux命令setfattr來(lái)訪問(wèn)文件副本。
[0047]步驟203:以帶有修復(fù)標(biāo)識(shí)的所述副本作為源副本,將另一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0048]經(jīng)過(guò)步驟202,被添加有修復(fù)標(biāo)識(shí)的副本為正確副本,則以該帶有修復(fù)標(biāo)識(shí)的副本作為源副本,將該文件存儲(chǔ)在之前無(wú)響應(yīng)節(jié)點(diǎn)上的副本更新至與所述的源副本相同。此時(shí),該文件的兩個(gè)副本均已經(jīng)恢復(fù)正常,最后將副本上的修復(fù)標(biāo)識(shí)清除,以最后完成腦裂文件的解決和修復(fù)。在本步驟的修復(fù)過(guò)程中,同樣的,在修復(fù)進(jìn)行時(shí)如果收到對(duì)被修復(fù)的文件的訪問(wèn)請(qǐng)求,此時(shí)將用戶的訪問(wèn)定向到帶有修復(fù)標(biāo)識(shí)的副本上,使得用戶能夠?qū)υ撐募M(jìn)行正常訪問(wèn)。
[0049]本發(fā)明實(shí)施例還提供了一種集群文件系統(tǒng)腦裂處理裝置,參考圖3,為本發(fā)明實(shí)施例的集群文件系統(tǒng)腦裂處理裝置的示意圖,所述的裝置包括:
[0050]監(jiān)測(cè)模塊301,用于監(jiān)測(cè)各個(gè)節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)有無(wú)響應(yīng)節(jié)點(diǎn)時(shí),記錄所述無(wú)響應(yīng)節(jié)占.
[0051]第一執(zhí)行模塊302,用于當(dāng)某一文件收到編輯請(qǐng)求時(shí),檢查該文件的兩個(gè)副本之一是否存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上;若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則不做操作;若該文件的一個(gè)副本存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)其另一個(gè)副本添加修復(fù)標(biāo)識(shí);
[0052]第一修復(fù)模塊303,用于當(dāng)所述無(wú)響應(yīng)節(jié)點(diǎn)恢復(fù)響應(yīng)后,以帶有修復(fù)標(biāo)識(shí)的所述另一個(gè)副本作為源副本,將所述一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0053]作為優(yōu)選的,本實(shí)施例中,第一修復(fù)模塊303還用于在修復(fù)文件的兩個(gè)副本的過(guò)程中,將用戶對(duì)該文件的訪問(wèn)請(qǐng)求定向到帶有修復(fù)標(biāo)識(shí)的副本,使該文件處于可訪問(wèn)狀態(tài)。
[0054]進(jìn)一步的,本實(shí)施例的裝置還包括:
[0055]臨時(shí)訪問(wèn)模塊304,用于將腦裂文件設(shè)置為臨時(shí)訪問(wèn)狀態(tài),使用戶能夠分別訪問(wèn)其兩個(gè)副本;
[0056]第二執(zhí)行模塊305,用于獲取用戶指令,為一個(gè)副本添加修復(fù)標(biāo)識(shí),并清除所述腦裂文件的臨時(shí)訪問(wèn)狀態(tài);
[0057]第二修復(fù)模塊306,用于以帶有修復(fù)標(biāo)識(shí)的所述副本作為源副本,將另一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
[0058]其中,臨時(shí)訪問(wèn)模塊304通過(guò)API接口或標(biāo)準(zhǔn)Linux命令getfattr獲取所述腦裂文件副本的信息;通過(guò)API接口或標(biāo)準(zhǔn)Linux命令setfattr來(lái)訪問(wèn)文件副本。
[0059]通過(guò)上述實(shí)施例可以看出,本發(fā)明的集群文件系統(tǒng)腦裂處理方法和裝置具有如下有益效果:
[0060]I)即可預(yù)防文件腦裂又能對(duì)腦裂后的文件進(jìn)行災(zāi)后處理,最大限度的提升用戶數(shù)據(jù)的安全性。
[0061]2)提高實(shí)際空間利用率和1性能。
[0062]3)無(wú)須專業(yè)工程師介入,用戶即可完成對(duì)腦裂的預(yù)防和災(zāi)后處理,降低了成本,提高了效率。
[0063]4)根據(jù)業(yè)務(wù)需求,用戶可根據(jù)自身需要對(duì)腦裂文件進(jìn)行處理,具有很大的靈活性。
[0064]所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種集群文件系統(tǒng)腦裂處理方法,其特征在于,包括以下步驟: 監(jiān)測(cè)各個(gè)節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)有無(wú)響應(yīng)節(jié)點(diǎn)時(shí),記錄所述無(wú)響應(yīng)節(jié)點(diǎn); 當(dāng)某一文件收到編輯請(qǐng)求時(shí),檢查該文件的兩個(gè)副本之一是否存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上;若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則不做操作;若該文件的一個(gè)副本存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)其另一個(gè)副本添加修復(fù)標(biāo)識(shí); 當(dāng)所述無(wú)響應(yīng)節(jié)點(diǎn)恢復(fù)響應(yīng)后,以帶有修復(fù)標(biāo)識(shí)的所述另一個(gè)副本作為源副本,將所述一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在修復(fù)文件的兩個(gè)副本的步驟中,將用戶對(duì)該文件的訪問(wèn)請(qǐng)求定向到帶有修復(fù)標(biāo)識(shí)的副本,使該文件處于可訪問(wèn)狀態(tài)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括對(duì)腦裂文件的處理方法,包括以下步驟: 將腦裂文件設(shè)置為臨時(shí)訪問(wèn)狀態(tài),使用戶能夠分別訪問(wèn)其兩個(gè)副本; 獲取用戶指令,為一個(gè)副本添加修復(fù)標(biāo)識(shí),并清除所述腦裂文件的臨時(shí)訪問(wèn)狀態(tài); 以帶有修復(fù)標(biāo)識(shí)的所述副本作為源副本,將另一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在臨時(shí)訪問(wèn)狀態(tài)下,通過(guò)API接口或標(biāo)準(zhǔn)Linux命令getfattr獲取所述腦裂文件副本的基本信息;通過(guò)API接口或標(biāo)準(zhǔn)Linux命令setfattr來(lái)訪問(wèn)文件副本。
5.一種集群文件系統(tǒng)腦裂處理裝置,其特征在于,包括: 監(jiān)測(cè)模塊,用于監(jiān)測(cè)各個(gè)節(jié)點(diǎn),當(dāng)發(fā)現(xiàn)有無(wú)響應(yīng)節(jié)點(diǎn)時(shí),記錄所述無(wú)響應(yīng)節(jié)點(diǎn); 第一執(zhí)行模塊,用于當(dāng)某一文件收到編輯請(qǐng)求時(shí),檢查該文件的兩個(gè)副本之一是否存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上;若該文件的兩個(gè)副本均不存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則不做操作;若該文件的一個(gè)副本存儲(chǔ)在所述無(wú)響應(yīng)節(jié)點(diǎn)上,則對(duì)其另一個(gè)副本添加修復(fù)標(biāo)識(shí); 第一修復(fù)模塊,用于當(dāng)所述無(wú)響應(yīng)節(jié)點(diǎn)恢復(fù)響應(yīng)后,以帶有修復(fù)標(biāo)識(shí)的所述另一個(gè)副本作為源副本,將所述一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述第一修復(fù)模塊還用于在修復(fù)文件的兩個(gè)副本的過(guò)程中,將用戶對(duì)該文件的訪問(wèn)請(qǐng)求定向到帶有修復(fù)標(biāo)識(shí)的副本,使該文件處于可訪問(wèn)狀態(tài)。
7.根據(jù)權(quán)利要求5所述的裝置,其特征在于,還包括: 臨時(shí)訪問(wèn)模塊,用于將腦裂文件設(shè)置為臨時(shí)訪問(wèn)狀態(tài),使用戶能夠分別訪問(wèn)其兩個(gè)副本; 第二執(zhí)行模塊,用于獲取用戶指令,為一個(gè)副本添加修復(fù)標(biāo)識(shí),并清除所述腦裂文件的臨時(shí)訪問(wèn)狀態(tài); 第二修復(fù)模塊,用于以帶有修復(fù)標(biāo)識(shí)的所述副本作為源副本,將另一個(gè)副本修復(fù)至與所述源副本相同,并清除所述修復(fù)標(biāo)識(shí)。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述臨時(shí)訪問(wèn)模塊通過(guò)API接口或標(biāo)準(zhǔn)Linux命令getfattr獲取所述腦裂文件副本的信息;通過(guò)API接口或標(biāo)準(zhǔn)Linux命令setfattr來(lái)訪問(wèn)文件副本。
【文檔編號(hào)】H04L29/08GK104239182SQ201410445997
【公開日】2014年12月24日 申請(qǐng)日期:2014年9月3日 優(yōu)先權(quán)日:2014年9月3日
【發(fā)明者】王曉強(qiáng), 賈德明 申請(qǐng)人:北京鯨鯊軟件科技有限公司