国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      并行文件系統(tǒng)發(fā)生故障后的恢復(fù)方法

      文檔序號(hào):7700577閱讀:239來源:國(guó)知局
      專利名稱:并行文件系統(tǒng)發(fā)生故障后的恢復(fù)方法
      技術(shù)領(lǐng)域
      并行文件系統(tǒng)發(fā)生故障后的恢復(fù)方法屬于文件系統(tǒng)領(lǐng)域,尤其涉及其中的可靠性保護(hù)領(lǐng)域。

      背景技術(shù)
      存儲(chǔ)區(qū)域網(wǎng)絡(luò)(Storage Area Network,SAN)是目前被廣泛采用的一種連接外接存儲(chǔ)設(shè)備與服務(wù)器的架構(gòu),它采用光纖通道、磁盤陣列等技術(shù),提供了良好擴(kuò)展性,并被廣泛應(yīng)用于高性能計(jì)算等各個(gè)領(lǐng)域。這種架構(gòu)的特點(diǎn)是,通過專門的網(wǎng)絡(luò)連接各個(gè)存儲(chǔ)設(shè)備,而對(duì)前端提供塊級(jí)別的訪問接口;前端將其視為直接連接的存儲(chǔ)設(shè)備。
      SAN環(huán)境并行文件系統(tǒng)是一種基于存儲(chǔ)區(qū)域網(wǎng)絡(luò)技術(shù)的并行文件系統(tǒng),多個(gè)客戶端可以并行地訪問存儲(chǔ)在SAN存儲(chǔ)設(shè)備中的文件,這種訪問對(duì)用戶來說與訪問本地文件相同。目前,并行文件系統(tǒng)廣泛應(yīng)用于高性能計(jì)算領(lǐng)域,而基于SAN環(huán)境的并行文件系統(tǒng)則進(jìn)一步提高了并行文件系統(tǒng)整體資源利用率與性能。


      發(fā)明內(nèi)容
      本發(fā)明的目的在于當(dāng)SAN環(huán)境并行文件系統(tǒng)在發(fā)生故障并重啟后,系統(tǒng)能夠迅速恢復(fù)其狀態(tài)的一致性。本項(xiàng)發(fā)明主要針對(duì)SAN環(huán)境并行文件系統(tǒng)可靠性的需求,設(shè)計(jì)并實(shí)現(xiàn)了一套在客戶機(jī)和元數(shù)據(jù)服務(wù)器發(fā)生故障并重啟后對(duì)系統(tǒng)狀態(tài)進(jìn)行恢復(fù)的方法。使用本方法可以在系統(tǒng)的機(jī)器發(fā)生故障后對(duì)其進(jìn)行快速有效的恢復(fù),并盡可能減少因發(fā)生故障而重啟對(duì)文件系統(tǒng)造成的影響,保證文件系統(tǒng)的持續(xù)運(yùn)行,提高整個(gè)系統(tǒng)的可靠性和可用性。
      本發(fā)明的特征在于本發(fā)明的核心是元數(shù)據(jù)服務(wù)器通過狀態(tài)有效期維護(hù)客戶機(jī)對(duì)所獲得鎖資源的狀態(tài),客戶機(jī)和元數(shù)據(jù)服務(wù)器各自通過對(duì)方標(biāo)識(shí)及狀態(tài)有效期判斷對(duì)方發(fā)生了由故障導(dǎo)致的重啟,元數(shù)據(jù)服務(wù)器通過日志方法確保對(duì)在自身發(fā)生故障后重啟時(shí)元數(shù)據(jù)一致性的快速恢復(fù)。
      所述方法是在存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN環(huán)境并行文件系統(tǒng)中依次按照以下步驟實(shí)現(xiàn)的 步驟(1).構(gòu)造一個(gè)包括客戶機(jī)、元數(shù)據(jù)服務(wù)器和磁盤陣列在內(nèi)的所述SAN環(huán)境并行文件系統(tǒng),其中 客戶機(jī),至少一臺(tái),實(shí)現(xiàn)各種文件操作以及從所述元數(shù)據(jù)服務(wù)器獲取相關(guān)文件的元數(shù)據(jù), 元數(shù)據(jù)服務(wù)器,至少一臺(tái),通過以太網(wǎng)與所述各客戶機(jī)相連,同時(shí)可以通過光纖交換機(jī)訪問磁盤陣列,把所述分布在各磁盤陣列上的文件數(shù)據(jù)組織成統(tǒng)一的并行文件系統(tǒng)視圖,并為所述各客戶機(jī)提供元數(shù)據(jù)操作服務(wù),在所述并行文件系統(tǒng)中引入了下述不同類型的鎖,包括字節(jié)鎖byte-rangelock、共享保留鎖share reservation、文件授權(quán)鎖file delegation、目錄授權(quán)鎖directory delegation、以及文件布局layout,其中 字節(jié)鎖,用于對(duì)文件提供字節(jié)級(jí)別的訪問控制, 共享保留鎖,用于控制對(duì)文件訪問的機(jī)制,由OPEN操作建立,說明所需的訪問類型以及拒絕的訪問類型, 文件授權(quán)鎖,是可撤銷的鎖,其確保對(duì)所述文件授權(quán)鎖的持有者不會(huì)發(fā)生不一致的OPEN操作和文件變更,以便在多個(gè)客戶機(jī)之間沒有對(duì)文件的沖突請(qǐng)求時(shí),減少不斷向所述元數(shù)據(jù)服務(wù)器發(fā)送請(qǐng)求所造成的開銷,只有當(dāng)有其它客戶機(jī)對(duì)該文件提出訪問請(qǐng)求時(shí),才把該文件授權(quán)鎖撤銷,另外,即使當(dāng)前不存在對(duì)該文件的相互沖突的訪問請(qǐng)求,該元數(shù)據(jù)服務(wù)器也可以在任何時(shí)候撤銷該文件授權(quán)鎖, 目錄授權(quán)鎖,是可撤銷的鎖,其確保對(duì)所述目錄授權(quán)鎖的持有者不會(huì)發(fā)生不一致的目錄修改,以便在多個(gè)客戶機(jī)之間沒有對(duì)目錄的沖突請(qǐng)求時(shí),減少不斷向所述元數(shù)據(jù)服務(wù)器發(fā)送請(qǐng)求所造成的開銷,只有當(dāng)有其它客戶機(jī)對(duì)該目錄提出訪問請(qǐng)求時(shí),才把該目錄授權(quán)鎖撤銷,另外,即使當(dāng)前不存在對(duì)該目錄的相互沖突的訪問請(qǐng)求,該元數(shù)據(jù)服務(wù)器也可以在任何時(shí)候撤銷該目錄授權(quán)鎖, 文件布局,描述文件數(shù)據(jù)到保存該數(shù)據(jù)的存儲(chǔ)設(shè)備之間的對(duì)應(yīng)關(guān)系,確保作為所述布局持有者的客戶機(jī)可以對(duì)文件數(shù)據(jù)進(jìn)行訪問,并且在訪問過程中不會(huì)發(fā)生對(duì)數(shù)據(jù)的不一致變更, 所述元數(shù)據(jù)服務(wù)器定義一個(gè)“狀態(tài)有效期”,這是所述客戶機(jī)所獲得的所有鎖的鎖狀態(tài)有效期,在此時(shí)間區(qū)間內(nèi),該客戶機(jī)獲得的所述元數(shù)據(jù)服務(wù)器授予的鎖有效,在該狀態(tài)有效期結(jié)束前,該客戶機(jī)向該元數(shù)據(jù)服務(wù)器提交的每個(gè)請(qǐng)求都要更新該狀態(tài)有效期,如果未及時(shí)更新,則該狀態(tài)有效期結(jié)束時(shí)該客戶機(jī)所獲得的所有鎖都會(huì)失效,若在該狀態(tài)有效期結(jié)束后,所述元數(shù)據(jù)服務(wù)器準(zhǔn)予了其它客戶機(jī)發(fā)出的與該客戶機(jī)當(dāng)前持有的鎖沖突的鎖請(qǐng)求,則當(dāng)前鎖必須被撤銷,若該元數(shù)據(jù)服務(wù)器發(fā)生故障,在其重啟以后,該客戶機(jī)能在設(shè)定的狀態(tài)有效期內(nèi)對(duì)重啟后的該元數(shù)據(jù)服務(wù)器發(fā)出重新獲得之前持有的鎖狀態(tài)的請(qǐng)求,對(duì)于同一個(gè)所述元數(shù)據(jù)服務(wù)器,所有的狀態(tài)有效期都有一個(gè)設(shè)定的長(zhǎng)度,而該元數(shù)據(jù)服務(wù)器通過唯一設(shè)定的客戶機(jī)標(biāo)識(shí)在該客戶機(jī)重啟后辨識(shí)出是同一臺(tái)客戶機(jī)的不同運(yùn)行實(shí)例,進(jìn)行相應(yīng)的恢復(fù),反之,該客戶機(jī)也能通過唯一設(shè)定的元數(shù)據(jù)服務(wù)器標(biāo)識(shí)辨識(shí)出是同一臺(tái)元數(shù)據(jù)服務(wù)器的不同運(yùn)行實(shí)例,進(jìn)行相應(yīng)的恢復(fù), 另外,所述元數(shù)據(jù)包括用來管理存儲(chǔ)空間的B+樹信息,以及并行文件系統(tǒng)的文件布局layout信息和目錄信息; 磁盤陣列,至少一個(gè),通過所述光纖交換機(jī)為所述客戶機(jī)提供存儲(chǔ); 步驟(2).元數(shù)據(jù)服務(wù)器按以下步驟在發(fā)生故障的客戶機(jī)重啟后,對(duì)其進(jìn)行鎖狀態(tài)的恢復(fù) 步驟(2.1).該元數(shù)據(jù)服務(wù)器獲知所述客戶機(jī)處于非活動(dòng)狀態(tài) 步驟(2.1.1).判斷是否有新建立的客戶機(jī)連接 步驟(2.1.1.1).若無,轉(zhuǎn)步驟(2.1.2); 步驟(2.1.1.2).若有,判斷客戶機(jī)標(biāo)識(shí) 步驟(2.1.1.2.1).該元數(shù)據(jù)服務(wù)器將該客戶機(jī)的owner ID與該院數(shù)據(jù)服務(wù)器上保存的owner ID進(jìn)行比較若兩個(gè)owner ID相同,則該客戶機(jī)是曾經(jīng)與該元數(shù)據(jù)服務(wù)器建立過連接的機(jī)器,轉(zhuǎn)步驟(2.1.1.2.2);否則,該客戶機(jī)是新建立連接的機(jī)器,轉(zhuǎn)步驟(2.3); 步驟(2.1.1.2.2).該元數(shù)據(jù)服務(wù)器將該客戶機(jī)的版本號(hào)與該元數(shù)據(jù)服務(wù)器上保存的版本號(hào)進(jìn)行比較若兩個(gè)版本號(hào)不同,則該客戶機(jī)是同一臺(tái)機(jī)器的不同實(shí)例,轉(zhuǎn)步驟(2.2);否則,轉(zhuǎn)步驟(2.3); 步驟(2.1.2).判斷該客戶機(jī)狀態(tài)有效期是否結(jié)束 如果在狀態(tài)有效期結(jié)束之前該客戶機(jī)沒有及時(shí)更新狀態(tài)有效期,則該元數(shù)據(jù)服務(wù)器可默認(rèn)該客戶機(jī)處于非活躍狀態(tài),從而發(fā)現(xiàn)客戶機(jī)故障;否則,轉(zhuǎn)步驟(2.3); 步驟(2.2).該元數(shù)據(jù)服務(wù)器根據(jù)步驟(2.1)的結(jié)果,分別對(duì)故障客戶機(jī)所持有的所有類型的鎖狀態(tài)進(jìn)行恢復(fù) 步驟(2.2.1).撤銷字節(jié)鎖byte-range lock 根據(jù)狀態(tài)有效期結(jié)束,該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的字節(jié)鎖byte-range lock; 步驟(2.2.2).撤銷共享保留鎖share reservation 根據(jù)狀態(tài)有效期結(jié)束,元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的共享保留鎖share reservation; 步驟(2.2.3).撤銷文件布局layout 當(dāng)該客戶機(jī)重啟時(shí),會(huì)失去所有之前所獲得的有關(guān)文件布局layout的信息; 步驟(2.2.3.1).若狀態(tài)有效期結(jié)束而未被更新,則對(duì)于文件布局layout,該元數(shù)據(jù)服務(wù)器根據(jù)配置文件,選擇在狀態(tài)有效期過期后將文件布局layout立即釋放,或允許文件布局layout一直等待可能的狀態(tài)有效期更新,只要沒有其它文件布局layout請(qǐng)求與當(dāng)前文件布局layout沖突;否則,轉(zhuǎn)步驟(2.2.3.2); 步驟(2.2.3.2).若該客戶機(jī)在狀態(tài)有效期結(jié)束前重啟,并與該元數(shù)據(jù)服務(wù)器重新建立連接,則該元數(shù)據(jù)服務(wù)器據(jù)此釋放與該客戶機(jī)前一實(shí)例相關(guān)聯(lián)的所有文件布局layout狀態(tài); 步驟(2.2.4).恢復(fù)文件及目錄授權(quán)鎖delegation 由于該客戶機(jī)在故障前可能已經(jīng)在本地存儲(chǔ)了一些文件數(shù)據(jù),并且這些數(shù)據(jù)與該客戶機(jī)之前所持有的授權(quán)鎖delegation相關(guān)聯(lián),則該客戶機(jī)就需要向元數(shù)據(jù)服務(wù)器重新建立相應(yīng)的文件狀態(tài); 步驟(2.2.4.1).若狀態(tài)有效期結(jié)束而未被更新,該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的授權(quán)鎖delegation; 步驟(2.2.4.2).若該客戶機(jī)在狀態(tài)有效期結(jié)束前重啟,并與該元數(shù)據(jù)服務(wù)器重新建立連接 步驟(2.2.4.2.1).該客戶機(jī)首先對(duì)授權(quán)鎖delegation進(jìn)行恢復(fù),并將緩存的數(shù)據(jù)刷新到該元數(shù)據(jù)服務(wù)器上,該元數(shù)據(jù)服務(wù)器會(huì)延長(zhǎng)授權(quán)鎖delegation的恢復(fù)時(shí)期,允許超過所定義的狀態(tài)有效期長(zhǎng)度; 步驟(2.2.4.2.2).該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所持有的授權(quán)鎖delegation; 步驟(2.3).恢復(fù)結(jié)束; 步驟(3).客戶機(jī)按以下步驟在發(fā)生故障的元數(shù)據(jù)重啟后,對(duì)自己曾經(jīng)獲得的鎖狀態(tài)進(jìn)行恢復(fù) 步驟(3.1).該客戶機(jī)發(fā)現(xiàn)該元數(shù)據(jù)服務(wù)器重啟 該客戶機(jī)進(jìn)行向該元數(shù)據(jù)服務(wù)器發(fā)送操作請(qǐng)求,卻返回相應(yīng)的錯(cuò)誤;或者狀態(tài)有效期即將結(jié)束,該客戶機(jī)試圖更新狀態(tài)有效期卻發(fā)現(xiàn)無法更新; 步驟(3.2).該客戶機(jī)與該重啟后的元數(shù)據(jù)服務(wù)器重新建立連接,并獲取該元數(shù)據(jù)服務(wù)器重新設(shè)置的狀態(tài)有效期長(zhǎng)度; 步驟(3.3).該客戶機(jī)判斷該元數(shù)據(jù)服務(wù)器是否為之前該客戶機(jī)與之建立連接的元數(shù)據(jù)服務(wù)器; 步驟(3.4).若該元數(shù)據(jù)服務(wù)器為客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,并且若客戶機(jī)持有鎖狀態(tài),則客戶機(jī)分別對(duì)其所持有的所有類型的鎖狀態(tài)進(jìn)行恢復(fù);若該元數(shù)據(jù)服務(wù)器不是客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,則轉(zhuǎn)步驟(3.4.6);若該元數(shù)據(jù)服務(wù)器雖然為客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,但是客戶機(jī)并未持有鎖狀態(tài),則轉(zhuǎn)步驟(3.4.5); 步驟(3.4.1).恢復(fù)字節(jié)鎖byte-range lock 步驟(3.4.1.1).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器發(fā)送撤銷類型reclaim-type的鎖請(qǐng)求; 步驟(3.4.1.2).該元數(shù)據(jù)服務(wù)器重建該鎖狀態(tài); 步驟(3.4.2).恢復(fù)共享保留鎖share reservation 步驟(3.4.2.1).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器發(fā)送撤銷類型reclaim-type的鎖請(qǐng)求; 步驟(3.4.2.2).該元數(shù)據(jù)服務(wù)器重建該鎖狀態(tài); 步驟(3.4.3).恢復(fù)授權(quán)鎖delegation 步驟(3.4.3.1).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器聲明所擁有的授權(quán)鎖delegation; 步驟(3.4.3.2).該元數(shù)據(jù)服務(wù)器授予該客戶機(jī)加了特殊名稱的授權(quán)鎖delegation; 步驟(3.4.3.3).該客戶機(jī)將所修改的狀態(tài)寫回到該元數(shù)據(jù)服務(wù)器; 步驟(3.4.3.4).該元數(shù)據(jù)服務(wù)器撤銷該授權(quán)鎖delegation; 步驟(3.4.4).恢復(fù)文件布局layout 步驟(3.4.4.1).該客戶機(jī)停止使用所有文件布局layout,并刪除之前從元數(shù)據(jù)服務(wù)器收到的device ID到device address的映射; 步驟(3.4.4.2).該客戶機(jī)檢查是否有尚未提交的文件布局layout,若無,轉(zhuǎn)步驟(3.4.5); 步驟(3.4.4.3).該客戶機(jī)采取措施保護(hù)該客戶機(jī)、該元數(shù)據(jù)服務(wù)器和存儲(chǔ)設(shè)備在數(shù)據(jù)狀態(tài)上的同步 步驟(3.4.4.3.1).判斷該客戶機(jī)內(nèi)存是否仍有被修改的但尚未被同步的數(shù)據(jù);若有該客戶機(jī)等待該元數(shù)據(jù)服務(wù)器狀態(tài)恢復(fù)期結(jié)束之后獲取文件布局layout,并將數(shù)據(jù)寫到存儲(chǔ)設(shè)備上; 步驟(3.4.4.3.2).判斷該客戶機(jī)是否異步將數(shù)據(jù)寫到存儲(chǔ)設(shè)備上,但是在其內(nèi)存中仍有一份數(shù)據(jù)副本;若是則可以采用步驟(3.4.4.3.1)的恢復(fù)方法進(jìn)行恢復(fù); 步驟(3.4.4.3.3).判斷該客戶機(jī)是否在內(nèi)存中沒有數(shù)據(jù)的副本,并且該元數(shù)據(jù)服務(wù)器仍處于其狀態(tài)恢復(fù)期;若是,則當(dāng)前文件布局layout不可用; 步驟(3.4.4.3.4).判斷該客戶機(jī)是否在內(nèi)存中沒有數(shù)據(jù)的副本,并且該元數(shù)據(jù)服務(wù)器已經(jīng)結(jié)束了狀態(tài)恢復(fù)期;若是,該客戶機(jī)需要緩存所有的數(shù)據(jù),直到成功的提交文件布局layout; 步驟(3.4.5).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器發(fā)送鎖狀態(tài)重建過程結(jié)束的通知; 步驟(3.4.6).元數(shù)據(jù)服務(wù)器結(jié)束狀態(tài)恢復(fù)期 元數(shù)據(jù)服務(wù)器在可靠的存儲(chǔ)上保存一個(gè)所有具有需要恢復(fù)的鎖狀態(tài)的客戶機(jī)列表,從而獲知是否所有這樣的客戶機(jī)都已經(jīng)完成了鎖狀態(tài)的恢復(fù);服務(wù)器也可以選擇隨時(shí)提前結(jié)束狀態(tài)恢復(fù)期; 步驟(4).按以下步驟對(duì)發(fā)生網(wǎng)絡(luò)分區(qū)(network partition)后鎖狀態(tài)的恢復(fù) 在客戶機(jī)端,其步驟如下 步驟(4.1).一旦在狀態(tài)有效期尚未結(jié)束時(shí)該客戶機(jī)與該元數(shù)據(jù)服務(wù)器恢復(fù)通信,或者在狀態(tài)有效期已經(jīng)結(jié)束后,該客戶機(jī)與該與元數(shù)據(jù)服務(wù)器重新建立連接,該客戶機(jī)對(duì)由主id和從id組成的該元數(shù)據(jù)服務(wù)器標(biāo)識(shí)與緩存在該客戶機(jī)上之前連接的元數(shù)據(jù)服務(wù)器標(biāo)識(shí)進(jìn)行比較,若兩者主id相同且從id也相同,則可見該元數(shù)據(jù)服務(wù)器并未重啟,從而判明發(fā)生了網(wǎng)絡(luò)分區(qū)network partition; 步驟(4.2).客戶機(jī)判斷狀態(tài)有效期是否結(jié)束若未結(jié)束,其鎖狀態(tài)繼續(xù)有效;否則釋放所有鎖狀態(tài); 在元數(shù)據(jù)服務(wù)器端其恢復(fù)步驟如下 步驟(4.1).該元數(shù)據(jù)服務(wù)器在自己保存的客戶機(jī)列表中發(fā)現(xiàn)該客戶機(jī)狀態(tài)有效期結(jié)束; 步驟(4.2).該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所持有的除授權(quán)鎖delegation之外的所有鎖狀態(tài); 步驟(4.3).該元數(shù)據(jù)服務(wù)器直到有其它與當(dāng)前授權(quán)鎖delegation沖突的鎖請(qǐng)求發(fā)生時(shí),才撤銷授權(quán)鎖delegation;在撤銷授權(quán)鎖delegation的時(shí)候,該元數(shù)據(jù)服務(wù)器將被撤銷的授權(quán)鎖delegation的相關(guān)信息寫到可靠的存儲(chǔ)上; 步驟(5).元數(shù)據(jù)服務(wù)器上元數(shù)據(jù)一致性的恢復(fù) 步驟(5.1).元數(shù)據(jù)服務(wù)器重啟; 步驟(5.2).元數(shù)據(jù)服務(wù)器從上次同步點(diǎn)checkpoint起向后依次從磁盤上讀入日志事務(wù),并對(duì)磁盤日志中每條標(biāo)記為成功同步的事務(wù)重新執(zhí)行; 步驟(5.3).元數(shù)據(jù)服務(wù)器修改上次同步點(diǎn)checkpoint指向當(dāng)前最后同步的記錄; 步驟(5.4).元數(shù)據(jù)服務(wù)器正常運(yùn)行。
      本發(fā)明的特征在于 具體的故障恢復(fù)包括兩個(gè)主要方法 1)依靠狀態(tài)有效期,當(dāng)客戶機(jī)發(fā)生故障后,元數(shù)據(jù)服務(wù)器可以通過該客戶機(jī)標(biāo)識(shí)辨識(shí)出該客戶機(jī)的故障以及重啟,并撤銷該客戶機(jī)故障前所獲得的鎖狀態(tài),允許其它客戶機(jī)請(qǐng)求與之前客戶機(jī)所獲得的鎖相沖突的鎖,從而避免了鎖請(qǐng)求的不一致狀態(tài);在元數(shù)據(jù)服務(wù)器發(fā)生故障后重啟時(shí),客戶機(jī)也可以通過狀態(tài)有效期恢復(fù)之前獲得的鎖狀態(tài);另外在發(fā)生網(wǎng)絡(luò)分區(qū)network partition時(shí),也可以依靠狀態(tài)有效期解決鎖請(qǐng)求的不一致問題; 2)在元數(shù)據(jù)服務(wù)器上對(duì)元數(shù)據(jù)的操作記錄日志,這樣當(dāng)元數(shù)據(jù)服務(wù)器故障并重啟后,可以通過讀取日志并執(zhí)行日志上未完成的事務(wù),從而保證文件系統(tǒng)元數(shù)據(jù)始終處于一致的狀態(tài);而其它元數(shù)據(jù)服務(wù)器也可通過執(zhí)行日志上未完成的事務(wù)接管故障的元數(shù)據(jù)服務(wù)器,繼續(xù)對(duì)外提供元數(shù)據(jù)的訪問。
      本發(fā)明通過使用狀態(tài)有效期,以一種簡(jiǎn)單的方式解決了客戶機(jī)所獲得的鎖狀態(tài)在故障后一致性問題,并依靠狀態(tài)有效期保證了在發(fā)生網(wǎng)絡(luò)分區(qū)networkpartition時(shí)鎖請(qǐng)求的一致性;同時(shí),相比傳統(tǒng)文件系統(tǒng)在故障重啟后需要使用磁盤掃描工具(如fsck)進(jìn)行費(fèi)時(shí)(特別是針對(duì)規(guī)模較大的文件系統(tǒng),掃描可能要花費(fèi)幾個(gè)小時(shí)甚至更多的時(shí)間,而這段時(shí)間內(nèi)服務(wù)的中斷可能是不能容忍的)的掃描,本發(fā)明所采用的日志方法可以在短時(shí)間(幾秒或者幾分鐘)內(nèi)使大規(guī)模元數(shù)據(jù)處于一致狀態(tài),盡可能迅速恢復(fù)服務(wù),提高了SAN環(huán)境并行文件系統(tǒng)的可靠性。



      圖1.SAN環(huán)境并行文件系統(tǒng)整體架構(gòu)示意圖。
      圖2.SAN環(huán)境并行文件系統(tǒng)軟件架構(gòu)及恢復(fù)方法所處層次示意圖。
      圖3.客戶機(jī)故障恢復(fù)步驟示意圖。
      圖4.元數(shù)據(jù)服務(wù)器故障恢復(fù)步驟示意圖。
      圖5.元數(shù)據(jù)服務(wù)器故障重啟元數(shù)據(jù)一致性恢復(fù)示意圖。

      具體實(shí)施例方式 本發(fā)明所需的硬件設(shè)備包括由一個(gè)或多個(gè)元數(shù)據(jù)服務(wù)器、一個(gè)或多個(gè)客戶機(jī),以及一個(gè)或多個(gè)光纖盤陣和光纖交換機(jī),或者一個(gè)或多個(gè)以太網(wǎng)交換機(jī)組成。故障恢復(fù)方法運(yùn)行在所述的SAN環(huán)境并行文件系統(tǒng)中。
      故障恢復(fù)方法包括對(duì)鎖狀態(tài)的恢復(fù)方法和對(duì)元數(shù)據(jù)一致性的恢復(fù)方法前者分別運(yùn)行在客戶機(jī)和元數(shù)據(jù)服務(wù)器上;后者作為元數(shù)據(jù)服務(wù)器后端文件系統(tǒng)的日志模塊,只針對(duì)元數(shù)據(jù)服務(wù)器的重啟進(jìn)行元數(shù)據(jù)一致性的恢復(fù)。
      具體實(shí)施的步驟如下 1.鎖狀態(tài)恢復(fù) 鎖狀態(tài)恢復(fù)的一個(gè)重要的要求是,客戶機(jī)和元數(shù)據(jù)服務(wù)器都要知道另一方的狀態(tài)(活躍或者故障)。此外,客戶機(jī)在元數(shù)據(jù)服務(wù)器重啟前后應(yīng)該看到一致的數(shù)據(jù)視圖。在元數(shù)據(jù)服務(wù)器重啟后,所有在元數(shù)據(jù)服務(wù)器發(fā)生故障前已經(jīng)在客戶機(jī)或網(wǎng)絡(luò)buffer中排隊(duì)的讀或者寫操作必須等到客戶機(jī)在重啟后的元數(shù)據(jù)服務(wù)器上成功恢復(fù)了保護(hù)讀和寫操作的鎖。在元數(shù)據(jù)服務(wù)器可以確保客戶機(jī)具有足夠的鎖狀態(tài)以安全處理操作之前,任何到達(dá)元數(shù)據(jù)服務(wù)器的操作都會(huì)被拒絕。
      SAN環(huán)境并行文件系統(tǒng)發(fā)生故障后的恢復(fù)包括對(duì)客戶機(jī)的恢復(fù)、對(duì)元數(shù)據(jù)服務(wù)器的恢復(fù)以及針對(duì)網(wǎng)絡(luò)分區(qū)network partition情況的處理。
      ●客戶機(jī)恢復(fù) 客戶機(jī)的恢復(fù)主要是將其在發(fā)生故障之前所獲得的各種鎖在元數(shù)據(jù)服務(wù)器上恢復(fù)到一致的狀態(tài),包括對(duì)字節(jié)鎖byte-range lock,文件授權(quán)鎖file delegation和目錄授權(quán)鎖directory delegation,共享保留鎖share reservation以及文件布局layout等的狀態(tài)恢復(fù)。
      客戶機(jī)恢復(fù)的步驟為 步驟(1).元數(shù)據(jù)服務(wù)器獲知客戶機(jī)處于非活躍狀態(tài) 步驟(1.1).判斷是否有新建立的客戶機(jī)連接 步驟(1.1.1).若無,轉(zhuǎn)步驟(1.2); 步驟(1.1.2).若有,判斷客戶機(jī)標(biāo)識(shí) 步驟(1.1.2.1).元數(shù)據(jù)服務(wù)器將該客戶機(jī)的owner ID與已經(jīng)保存在本地的owner ID進(jìn)行比較若owner ID相同,則該客戶機(jī)是曾經(jīng)與該元數(shù)據(jù)服務(wù)器建立過連接的機(jī)器,轉(zhuǎn)步驟(1.1.2.2);否則,該客戶機(jī)是新建立連接的機(jī)器,轉(zhuǎn)步驟(3); 步驟(1.1.2.2).元數(shù)據(jù)服務(wù)器將該客戶機(jī)的版本號(hào)與當(dāng)前元數(shù)據(jù)服務(wù)器上保存的版本號(hào)進(jìn)行比較若版本號(hào)不同,則該客戶機(jī)是同一臺(tái)機(jī)器的不同實(shí)例,也就是說該客戶機(jī)發(fā)生了故障并重啟,轉(zhuǎn)步驟(2);否則,轉(zhuǎn)步驟(3); 步驟(1.2).判斷客戶機(jī)狀態(tài)有效期是否結(jié)束 如果在狀態(tài)有效期結(jié)束之前該客戶機(jī)沒有及時(shí)更新狀態(tài)有效期,則該元數(shù)據(jù)服務(wù)器可默認(rèn)該客戶機(jī)處于非活躍狀態(tài)(已經(jīng)結(jié)束操作或者已經(jīng)故障),從而發(fā)現(xiàn)客戶機(jī)發(fā)生故障;否則,轉(zhuǎn)步驟(3); 步驟(2).元數(shù)據(jù)服務(wù)器根據(jù)步驟(1)的結(jié)果,分別對(duì)故障客戶機(jī)所持有的所有類型的鎖狀態(tài)進(jìn)行恢復(fù) 步驟(2.1).撤銷字節(jié)鎖byte-range lock 根據(jù)狀態(tài)有效期結(jié)束,元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的字節(jié)鎖byte-range lock; 步驟(2.2).撤銷共享保留鎖share reservation 根據(jù)狀態(tài)有效期結(jié)束,元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的共享保留鎖share reservation; 步驟(2.3).撤銷文件布局layout 當(dāng)客戶機(jī)重啟時(shí),會(huì)失去所有之前所獲得的有關(guān)文件布局layout的信息; 步驟(2.3.1).若狀態(tài)有效期結(jié)束而未被更新,則對(duì)于文件布局layout,元數(shù)據(jù)服務(wù)器根據(jù)配置文件,選擇在狀態(tài)有效期過期后立即釋放,或允許該文件布局layout一直等待可能的狀態(tài)有效期更新,只要沒有其它文件布局layout請(qǐng)求與當(dāng)前文件布局layout沖突;否則,轉(zhuǎn)步驟(2.3.2); 步驟(2.3.2).若客戶機(jī)在狀態(tài)有效期結(jié)束前重啟,并與元數(shù)據(jù)服務(wù)器重新建立連接,則元數(shù)據(jù)服務(wù)器據(jù)此釋放與該客戶機(jī)前一實(shí)例相關(guān)聯(lián)的所有文件布局layout狀態(tài); 步驟(2.4).恢復(fù)授權(quán)鎖delegation 由于客戶機(jī)在發(fā)生故障前可能已經(jīng)在本地存儲(chǔ)了一些文件數(shù)據(jù),并且這些數(shù)據(jù)與該客戶機(jī)之前所持有的授權(quán)鎖delegation相關(guān)聯(lián),則該客戶機(jī)就需要向元數(shù)據(jù)服務(wù)器重新建立相應(yīng)的文件狀態(tài); 步驟(2.4.1).若狀態(tài)有效期結(jié)束而未被更新,元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的授權(quán)鎖delegation; 步驟(2.4.2).若客戶機(jī)在狀態(tài)有效期結(jié)束前重啟,并與元數(shù)據(jù)服務(wù)器重新建立連接 步驟(2.4.2.1).客戶機(jī)首先對(duì)授權(quán)鎖delegation進(jìn)行恢復(fù),并將緩存的數(shù)據(jù)刷新到元數(shù)據(jù)服務(wù)器上。元數(shù)據(jù)服務(wù)器會(huì)適當(dāng)延長(zhǎng)授權(quán)鎖delegation的恢復(fù)時(shí)期,允許其超過所定義的狀態(tài)有效期長(zhǎng)度。這也意味著來自其它客戶機(jī)的與當(dāng)前授權(quán)鎖delegations沖突的請(qǐng)求需要等待超過狀態(tài)有效期的時(shí)間。因?yàn)檎5氖跈?quán)鎖delegation收回過程會(huì)因?yàn)榭蛻魴C(jī)將所改變的狀態(tài)刷新會(huì)元數(shù)據(jù)服務(wù)器而花費(fèi)比較多的時(shí)間,其它客戶機(jī)需要為可能的沖突的授權(quán)鎖delegation做好準(zhǔn)備。這種更長(zhǎng)的恢復(fù)時(shí)期會(huì)增加客戶機(jī)重啟的時(shí)間窗口,并且需要可靠的存儲(chǔ)使得授權(quán)鎖delegation被恢復(fù); 步驟(2.4.2.2).元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所持有的授權(quán)鎖delegation; 步驟(3).恢復(fù)結(jié)束; ●元數(shù)據(jù)服務(wù)器恢復(fù) 如果元數(shù)據(jù)服務(wù)器因?yàn)橹貑G失了鎖狀態(tài),其必須允許客戶機(jī)發(fā)現(xiàn)這種情況并重新建立丟失的鎖狀態(tài)??蛻魴C(jī)必須能夠重建鎖狀態(tài),而不會(huì)因?yàn)樵獢?shù)據(jù)服務(wù)器允許其它客戶機(jī)的沖突的訪問而導(dǎo)致當(dāng)前客戶機(jī)的有效請(qǐng)求被拒絕。同樣,如果客戶機(jī)沒有為一個(gè)文件重建鎖狀態(tài),則元數(shù)據(jù)服務(wù)器必須阻止客戶機(jī)對(duì)該文件進(jìn)行讀寫操作。
      因?yàn)槊總€(gè)客戶機(jī)必須有機(jī)會(huì)可以在不發(fā)生將沖突的鎖授予給其它客戶機(jī)的情況下恢復(fù)所有其擁有的鎖,需要一段叫做“狀態(tài)恢復(fù)期”的時(shí)期來完成恢復(fù)的過程。在這段時(shí)期里,元數(shù)據(jù)服務(wù)器會(huì)對(duì)鎖操作加以限制,只有撤銷類型“reclaim-type”的鎖請(qǐng)求才被允許;但是如果元數(shù)據(jù)服務(wù)器可以可靠的(不受重啟影響)判斷出授予一個(gè)鎖請(qǐng)求不會(huì)與后續(xù)的恢復(fù)請(qǐng)求相沖突,才能授予一個(gè)新的鎖請(qǐng)求。
      元數(shù)據(jù)服務(wù)器恢復(fù)的操作步驟為 步驟(1).客戶機(jī)獲知元數(shù)據(jù)服務(wù)器重啟,進(jìn)入狀態(tài)恢復(fù)期 客戶機(jī)向元數(shù)據(jù)服務(wù)器發(fā)送操作請(qǐng)求,卻返回相應(yīng)的錯(cuò)誤;或者狀態(tài)有效期即將結(jié)束,客戶機(jī)試圖更新狀態(tài)有效期卻發(fā)現(xiàn)無法更新; 步驟(2).客戶機(jī)與重啟后的元數(shù)據(jù)服務(wù)器重新建立連接,并獲取元數(shù)據(jù)服務(wù)器狀態(tài)有效期長(zhǎng)度(因?yàn)樵獢?shù)據(jù)服務(wù)器重啟后可能會(huì)重新設(shè)置狀態(tài)有效期的長(zhǎng)度); 步驟(3).客戶機(jī)判斷當(dāng)前元數(shù)據(jù)服務(wù)器是否為之前該客戶機(jī)與之建立連接的元數(shù)據(jù)服務(wù)器(因?yàn)橛锌赡芸蛻魴C(jī)與其它元數(shù)據(jù)服務(wù)器建立了連接); 步驟(4).若該元數(shù)據(jù)服務(wù)器為客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,并且若客戶機(jī)持有鎖狀態(tài),則客戶機(jī)分別對(duì)其所持有的所有類型的鎖狀態(tài)進(jìn)行恢復(fù);若該元數(shù)據(jù)服務(wù)器不是客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,則轉(zhuǎn)步驟(4.6);若該元數(shù)據(jù)服務(wù)器雖然為客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,但是客戶機(jī)并未持有鎖狀態(tài),則轉(zhuǎn)步驟(4.5); 步驟(4.1).恢復(fù)字節(jié)鎖byte-range lock 步驟(4.1.1).客戶機(jī)向元數(shù)據(jù)服務(wù)器發(fā)送撤銷類型reclaim-type鎖請(qǐng)求; 步驟(4.1.2).元數(shù)據(jù)服務(wù)器重建該鎖狀態(tài); 步驟(4.2).恢復(fù)共享保留鎖share reservation 步驟(4.2.1).客戶機(jī)向元數(shù)據(jù)服務(wù)器發(fā)送撤銷類型reclaim-type鎖請(qǐng)求; 步驟(4.2.2).元數(shù)據(jù)服務(wù)器重建該鎖狀態(tài); 步驟(4.3).恢復(fù)授權(quán)鎖delegation 當(dāng)元數(shù)據(jù)服務(wù)器重啟后,授權(quán)鎖delegation使用一種與字節(jié)鎖byte-range lock和共享保留鎖share reservation相似的方式收回。但是存在一點(diǎn)語義的不同在正常情況下,如果元數(shù)據(jù)服務(wù)器認(rèn)為一個(gè)授權(quán)鎖delegation不應(yīng)該被授予,則它依然會(huì)執(zhí)行所請(qǐng)求的操作(比如說OPEN),但是不會(huì)授予該操作授權(quán)鎖delegation;而為了撤回,(重啟后的)元數(shù)據(jù)服務(wù)器會(huì)授予該授權(quán)鎖delegation,但是加一個(gè)特殊的名稱,這樣客戶機(jī)認(rèn)為這個(gè)授權(quán)鎖delegation已經(jīng)被元數(shù)據(jù)服務(wù)器授予了但是現(xiàn)在要被收回; 步驟(4.3.1).客戶機(jī)向元數(shù)據(jù)服務(wù)器聲明所擁有的授權(quán)鎖delegation; 步驟(4.3.2).元數(shù)據(jù)服務(wù)器授予客戶機(jī)加了特殊名稱的授權(quán)鎖delegation; 步驟(4.3.3).客戶機(jī)將所修改的狀態(tài)寫回到元數(shù)據(jù)服務(wù)器; 步驟(4.3.4).元數(shù)據(jù)服務(wù)器撤銷授權(quán)鎖delegation; 步驟(4.4).恢復(fù)文件布局layout 步驟(4.4.1).客戶機(jī)停止使用文件布局layout,并刪除之前從元數(shù)據(jù)服務(wù)器收到的device ID到device address的映射; 步驟(4.4.2).客戶機(jī)檢查是否有尚未提交的文件布局layout,若無,轉(zhuǎn)步驟(4.5); 步驟(4.4.3).客戶機(jī)采取措施保護(hù)客戶機(jī)、元數(shù)據(jù)服務(wù)器和存儲(chǔ)設(shè)備在數(shù)據(jù)狀態(tài)上的同步 步驟(4.4.3.1).判斷客戶機(jī)內(nèi)存是否仍有被修改的但尚未被同步的數(shù)據(jù);若有客戶機(jī)等待元數(shù)據(jù)服務(wù)器狀態(tài)恢復(fù)期結(jié)束之后獲取文件布局layout,并將數(shù)據(jù)寫到存儲(chǔ)設(shè)備上; 步驟(4.4.3.2).判斷客戶機(jī)是否異步將數(shù)據(jù)寫到存儲(chǔ)設(shè)備上,但是在其內(nèi)存中仍有一份數(shù)據(jù)副本;若是則可以采用步驟(4.4.3.1)的恢復(fù)方法進(jìn)行恢復(fù); 步驟(4.4.3.3).判斷客戶機(jī)是否在內(nèi)存中沒有數(shù)據(jù)的副本,并且元數(shù)據(jù)服務(wù)器仍處于其狀態(tài)恢復(fù)期;若是,則當(dāng)前文件布局layout不可用; 步驟(4.4.3.4).判斷客戶機(jī)是否在內(nèi)存中沒有數(shù)據(jù)的副本,并且元數(shù)據(jù)服務(wù)器已經(jīng)結(jié)束了狀態(tài)恢復(fù)期;若是,客戶機(jī)需要緩存所有的數(shù)據(jù),直到成功的提交文件布局layout; 步驟(4.5).客戶機(jī)向元數(shù)據(jù)服務(wù)器發(fā)送鎖狀態(tài)重建過程結(jié)束的通知; 步驟(4.6).元數(shù)據(jù)服務(wù)器結(jié)束狀態(tài)恢復(fù)期 元數(shù)據(jù)服務(wù)器在可靠的存儲(chǔ)上保存一個(gè)所有具有需要恢復(fù)的鎖狀態(tài)的客戶機(jī)列表,從而獲知是否所有這樣的客戶機(jī)都已經(jīng)完成了鎖狀態(tài)的恢復(fù);元數(shù)據(jù)服務(wù)器也可以選擇隨時(shí)提前結(jié)束狀態(tài)恢復(fù)期; ●發(fā)生網(wǎng)絡(luò)分區(qū)后的恢復(fù) 在發(fā)生網(wǎng)絡(luò)分區(qū)network partition的時(shí)候,對(duì)客戶機(jī)來說,現(xiàn)象與元數(shù)據(jù)服務(wù)器故障相同,但不同的是在網(wǎng)絡(luò)分區(qū)network partition結(jié)束后,當(dāng)客戶機(jī)與元數(shù)據(jù)服務(wù)器重新建立連接時(shí),可以通過判斷元數(shù)據(jù)服務(wù)器的標(biāo)識(shí)符來獲知其并未重啟,從而元數(shù)據(jù)服務(wù)器并不存在狀態(tài)恢復(fù)期(元數(shù)據(jù)只有重啟后才會(huì)進(jìn)入狀態(tài)恢復(fù)期),因此對(duì)于字節(jié)鎖byte-rang lock,共享保留鎖share reservation和文件布局layout的恢復(fù)狀態(tài),在元數(shù)據(jù)服務(wù)器看來,其現(xiàn)象與客戶機(jī)故障相同, ■發(fā)生網(wǎng)絡(luò)分區(qū)network partition后客戶機(jī)的恢復(fù)步驟為 步驟(1).客戶機(jī)發(fā)現(xiàn)無法與元數(shù)據(jù)服務(wù)器通信(發(fā)送操作無響應(yīng)或者更新狀態(tài)有效期無響應(yīng),然而此時(shí)無法確定是發(fā)生了網(wǎng)絡(luò)分區(qū)network partition還是元數(shù)據(jù)服務(wù)器故障); 步驟(2).客戶機(jī)與元數(shù)據(jù)服務(wù)器恢復(fù)通信(狀態(tài)有效期尚未結(jié)束)或重新建立連接(狀態(tài)有效期已經(jīng)結(jié)束),客戶機(jī)比較該元數(shù)據(jù)服務(wù)器標(biāo)識(shí)(與客戶機(jī)標(biāo)識(shí)類似,分為主id和從id)與本機(jī)緩存的元數(shù)據(jù)服務(wù)器標(biāo)識(shí),若二者主id相同且從id也相同,則可見元數(shù)據(jù)服務(wù)器并未重啟,從而判明發(fā)生了網(wǎng)絡(luò)分區(qū)network partition; 步驟(3).判斷狀態(tài)有效期是否結(jié)束若未結(jié)束,其鎖狀態(tài)繼續(xù)有效;否則釋放所有鎖狀態(tài); ■發(fā)生網(wǎng)絡(luò)分區(qū)network partition后元數(shù)據(jù)服務(wù)器的恢復(fù)步驟為 步驟(1).元數(shù)據(jù)服務(wù)器在自己保存的客戶機(jī)列表中發(fā)現(xiàn)客戶機(jī)狀態(tài)有效期結(jié)束; 步驟(2).元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所持有的除授權(quán)鎖delegation之外的鎖狀態(tài); 步驟(3).元數(shù)據(jù)服務(wù)器延遲撤銷授權(quán)鎖delegation,直到有其它與當(dāng)前授權(quán)鎖delegation沖突的鎖請(qǐng)求發(fā)生,才撤銷該授權(quán)鎖delegation;在撤銷授權(quán)鎖delegation的時(shí)候,將鎖被撤銷的授權(quán)鎖delegation的相關(guān)信息寫到可靠的存儲(chǔ)上; 注以上所說的授權(quán)鎖delegation恢復(fù)都指的是文件授權(quán)鎖file delegation;對(duì)目錄授權(quán)鎖directory delegation,客戶機(jī)只要撤銷當(dāng)前授權(quán)鎖delegation,需要時(shí)重新申請(qǐng)即可。
      2.元數(shù)據(jù)服務(wù)器元數(shù)據(jù)一致性的恢復(fù) 為保證文件系統(tǒng)元數(shù)據(jù)在元數(shù)據(jù)服務(wù)器發(fā)生故障后可以迅速恢復(fù)到一致狀態(tài),SAN環(huán)境并行文件系統(tǒng)采用日志方法在對(duì)元數(shù)據(jù)進(jìn)行修改之前,先將這些修改寫入到一個(gè)先寫日志write-ahead log中,日志寫入成功后,再將對(duì)元數(shù)據(jù)的修改同步到磁盤上。SAN環(huán)境并行文件系統(tǒng)的元數(shù)據(jù)包括管理空間的B+樹信息和文件布局layout以及目錄信息,這些元數(shù)據(jù)作為元數(shù)據(jù)服務(wù)器后端文件系統(tǒng)的數(shù)據(jù)保存在元數(shù)據(jù)服務(wù)器的磁盤上,由后端文件系統(tǒng)進(jìn)行管理。一般來說,帶日志的文件系統(tǒng),其日志有三種模式,分別是write-back,ordered和data。為了保證SAN環(huán)境并行文件系統(tǒng)元數(shù)據(jù)(作為數(shù)據(jù)存儲(chǔ)在后端文件系統(tǒng)中)的一致性,我們對(duì)后端文件系統(tǒng)采用data模式,即將對(duì)后端文件系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)(也即SAN并行文件系統(tǒng)的元數(shù)據(jù))的修改記錄日志。
      在對(duì)SAN環(huán)境并行文件系統(tǒng)的元數(shù)據(jù)修改中,要分別對(duì)B+樹和layout以及目錄信息進(jìn)行修改;也即,在進(jìn)行空間分配或者回收的時(shí)候,需要首先對(duì)B+樹進(jìn)行操作,然后對(duì)文件布局layout和目錄信息進(jìn)行操作。要保證SAN環(huán)境并行文件系統(tǒng)元數(shù)據(jù)的一致性,就必須保證這兩個(gè)操作之間的原子性。因此,需要將這兩個(gè)操作放入到日志中的一條記錄中,也即一個(gè)事務(wù)當(dāng)中。這兩個(gè)操作要么都成功寫入日志從而被執(zhí)行;要么是未完成的日志記錄,在恢復(fù)的時(shí)候不予考慮。
      元數(shù)據(jù)服務(wù)器元數(shù)據(jù)一致性的恢復(fù)步驟為 步驟(1).元數(shù)據(jù)服務(wù)器重啟; 步驟(2).元數(shù)據(jù)服務(wù)器從上次同步點(diǎn)checkpoint起向后依次從磁盤上讀入日志事務(wù),并對(duì)磁盤日志中每條標(biāo)記為成功同步(即元數(shù)據(jù)已經(jīng)成功寫入磁盤,但數(shù)據(jù)尚未寫入磁盤)的事務(wù)進(jìn)行Redo; 步驟(3).元數(shù)據(jù)服務(wù)器修改上次同步點(diǎn)checkpoint指向當(dāng)前最后同步的記錄; 步驟(4).元數(shù)據(jù)服務(wù)器正常運(yùn)行; 本發(fā)明的優(yōu)點(diǎn)如下 1)對(duì)授予客戶機(jī)的鎖狀態(tài)采用狀態(tài)有效期方法,避免了元數(shù)據(jù)服務(wù)器與客戶機(jī)頻繁相互通信以查明對(duì)方的狀態(tài)所帶來的開銷; 2)依靠狀態(tài)有效期方法,有效解決了客戶機(jī)、元數(shù)據(jù)服務(wù)器以及發(fā)生網(wǎng)絡(luò)分區(qū)network partition所帶來的鎖狀態(tài)不一致的問題,并且恢復(fù)迅速,實(shí)現(xiàn)簡(jiǎn)單; 3)對(duì)元數(shù)據(jù)服務(wù)器上的SAN并行文件系統(tǒng)元數(shù)據(jù)的操作采用日志方法,在元數(shù)據(jù)服務(wù)器發(fā)生故障后重啟時(shí)可以迅速恢復(fù)元數(shù)據(jù)的一致性,而避免了傳統(tǒng)的掃描磁盤方式(如fsck)對(duì)大規(guī)模元數(shù)據(jù)的掃描恢復(fù)所帶來的無法容忍的服務(wù)中斷;此外,其它元數(shù)據(jù)服務(wù)器也可通過訪問日志接管故障的元數(shù)據(jù)服務(wù)器,繼續(xù)對(duì)外提供元數(shù)據(jù)的訪問。
      具體實(shí)現(xiàn)如下所述 1.對(duì)鎖狀態(tài)的故障恢復(fù)方法 對(duì)鎖狀態(tài)的故障恢復(fù)方法中的關(guān)鍵結(jié)構(gòu)如下 ●客戶機(jī)標(biāo)識(shí) struct client_owner{verifier co_verifier;opaque co_ownerid; }; 客戶機(jī)標(biāo)識(shí)向元數(shù)據(jù)服務(wù)器唯一地標(biāo)識(shí)了客戶機(jī)的一個(gè)連接實(shí)例。其中,co_ownerid唯一標(biāo)識(shí)了物理機(jī)器;而co_verifier則標(biāo)識(shí)了物理機(jī)器的一次連接,每次連接都會(huì)產(chǎn)生不同的co_verifier。
      ●元數(shù)據(jù)服務(wù)器標(biāo)識(shí) struct server_owner{uint64_t so_minor_id;opaque so_major_id; }; 元數(shù)據(jù)服務(wù)器標(biāo)識(shí)向客戶機(jī)唯一的標(biāo)識(shí)了元數(shù)據(jù)服務(wù)器的一個(gè)連接實(shí)例。其中,so_major_id唯一標(biāo)識(shí)了物理機(jī)器;而so_minor_id則標(biāo)識(shí)了物理機(jī)器的一次連接,每次連接都會(huì)產(chǎn)生不同的so_minor_id。
      ●文件布局layout struct layout{offset lo_offset;length lo_length;layoutiomode lo_iomode;layout_content lo_content; }; enum layoutiomode{LAYOUTIOMODE4_READ=1,LAYOUTIOMODE4_RW=2,LAYOUTIOMODE4_ANY=3 }; 文件布局layout描述了文件數(shù)據(jù)到保存該數(shù)據(jù)的存儲(chǔ)設(shè)備之間的對(duì)應(yīng)關(guān)系;layoutiomode指明了對(duì)該文件布局layout的操作類型。
      ●授權(quán)鎖delegation struct nfs_delegation{struct list_head super_list;struct rpc_cred*cred;struct inode*inode;nfs4_stateid stateid;int type; #define NFS_DELEGATION_NEED_RECLAIM 1long flags;loff_t maxsize;_u64 change_attr;struct rcu_head rcu; }; 引入授權(quán)鎖delegation的目的是為了在多個(gè)客戶機(jī)之間沒有對(duì)文件的沖突請(qǐng)求時(shí),減少不斷向元數(shù)據(jù)服務(wù)器發(fā)送請(qǐng)求所造成的開銷。授權(quán)鎖delegation實(shí)際上將元數(shù)據(jù)服務(wù)器對(duì)文件的鎖控制在不發(fā)生沖突請(qǐng)求的情況下下放給了訪問該文件的客戶機(jī)。
      2.對(duì)元數(shù)據(jù)一致性的故障恢復(fù) SAN環(huán)境并行文件系統(tǒng)的元數(shù)據(jù)日志是存儲(chǔ)在元數(shù)據(jù)服務(wù)器后端文件系統(tǒng)磁盤上的固定長(zhǎng)度的連續(xù)塊(若塊大小為4KB ytes,則日志是總長(zhǎng)度為24556個(gè)塊的長(zhǎng)度可變的事務(wù)記錄,外加一個(gè)journal header塊)。日志以事務(wù)列表起始,日志的最后一塊是journal header。每個(gè)事務(wù)至少包含三個(gè)塊(描述塊,塊列表,提交塊),而journal header只占據(jù)最后一個(gè)塊。
      日志是一個(gè)環(huán)形緩沖區(qū),也就是說一旦日志的最后一塊被寫滿,則接下來從第一塊開始繼續(xù)寫。日志不僅記錄后端文件系統(tǒng)的元數(shù)據(jù),也記錄后端文件系統(tǒng)的數(shù)據(jù)(因?yàn)镾AN環(huán)境并行文件系統(tǒng)的元數(shù)據(jù)是作為數(shù)據(jù)存儲(chǔ)在后端文件系統(tǒng)中的)。
      寫日志的I/O是由一個(gè)進(jìn)程在后臺(tái)執(zhí)行的,這樣減少了對(duì)用戶進(jìn)程的影響。
      SAN環(huán)境并行文件系統(tǒng)的日志整體結(jié)構(gòu)如下 日志的具體結(jié)構(gòu)如下 journal header 日志頭journal header是日志的最后一塊,它描述了日志中第一個(gè)未被同步的事務(wù)所在的位置。

      ■Last flush ID4Bytes,上一次完全同步的事務(wù)的transaction ID; ■Unflushed offset4Bytes,日志中下一個(gè)事務(wù)的offset(用塊號(hào)表示); ■Mount ID4Bytes,已同步的事務(wù)的mount ID; 其中,offset所指向的事務(wù)必須具有比已經(jīng)同步的事務(wù)更高的transactionID或者更高的mount ID,這樣才能被視為未同步的事務(wù)。否則,所有的事務(wù)都為視為已經(jīng)同步,而offset所指的塊會(huì)被用來開始記錄新的日志事務(wù)。
      ●事務(wù) 事務(wù)描述了文件系統(tǒng)中的變更。新塊或者被修改的塊不是直接在文件系統(tǒng)樹中進(jìn)行修改,而是先寫入日志,然后再被映射到它們?cè)谖募到y(tǒng)中的實(shí)際位置。
      一個(gè)事務(wù)包括一個(gè)事務(wù)描述塊,一個(gè)塊列表,以及事務(wù)末端的一個(gè)提交塊。所有這些塊都是在日志之內(nèi)連續(xù)的。
      ●描述快 描述塊包含了transaction ID和mount ID,事務(wù)中包含塊的數(shù)目,magicnumber,以及日志中塊的映射的前半部分。

      ■Transaction ID4Bytes,transaction ID; ■Len4Bytes,事務(wù)長(zhǎng)度,用塊表示; ■Mount ID4Bytes,事務(wù)的mount ID; ■Real blocksBlock size-24,事務(wù)中的塊到實(shí)際塊的映射; ■Magic12Bytes,Magic number。
      ●提交塊 提交塊終結(jié)一個(gè)事務(wù)。它包含一個(gè)transaction ID的副本和事務(wù)的長(zhǎng)度。此外在塊末尾還包含一個(gè)預(yù)留的16Bytes的摘要,同時(shí)也包含塊映射的后半部分。

      ■Transaction ID4Bytes,transaction ID; ■Len4Bytes,事務(wù)的長(zhǎng)度,用塊表示; ■Real blocksBlock size-24,事務(wù)中的塊到實(shí)際塊的映射; ■Digest16Bytes,事務(wù)中所有塊的摘要,未使用。
      SAN環(huán)境并行文件系統(tǒng)記錄日志的方法為 首先新建一個(gè)事務(wù),接下來將修改的數(shù)據(jù)塊填入事務(wù)內(nèi)部,最后寫提交塊,并修改日志頭journal header,將未同步事務(wù)的指針指向當(dāng)前事務(wù)。每個(gè)事務(wù)完成后都要與磁盤進(jìn)行同步;因?yàn)镾AN環(huán)境并行文件系統(tǒng)每次變更的元數(shù)據(jù)足夠多,因此基本上不會(huì)對(duì)磁盤訪問的順序性造成太大的影響。
      SAN環(huán)境并行文件系統(tǒng)按照日志進(jìn)行恢復(fù)的方法為 首先從讀取日志頭journal header,確定上次同步點(diǎn)checkpoint之后的事務(wù)位置。然后讀取日志,按照日志內(nèi)容對(duì)元數(shù)據(jù)進(jìn)行變更,從而恢復(fù)元數(shù)據(jù)的一致性。注意因?yàn)槿罩绢^journal header中記錄了上次同步點(diǎn)checkpoint之后的事務(wù)的位置,因此一旦這個(gè)位置出現(xiàn)在磁盤上,則意味著該條事務(wù)已經(jīng)成功同步;而若該條事務(wù)在同步過程中發(fā)生了掉電或者元數(shù)據(jù)服務(wù)器故障,則日志頭journal header不會(huì)發(fā)生修改,因此仍然指向上一個(gè)事務(wù),而當(dāng)前不完整的事務(wù)不會(huì)在恢復(fù)的時(shí)候被執(zhí)行,因此并不會(huì)對(duì)元數(shù)據(jù)一致性造成損害。
      權(quán)利要求
      1、并行文件系統(tǒng)發(fā)生故障后的恢復(fù)方法,其特征在于所述方法是在存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN環(huán)境并行文件系統(tǒng)中依次按照以下步驟實(shí)現(xiàn)的
      步驟(1).構(gòu)造一個(gè)包括客戶機(jī)、元數(shù)據(jù)服務(wù)器和磁盤陣列在內(nèi)的所述SAN環(huán)境并行文件系統(tǒng),其中
      客戶機(jī),至少一臺(tái),實(shí)現(xiàn)各種文件操作以及從所述元數(shù)據(jù)服務(wù)器獲取相關(guān)文件的元數(shù)據(jù),
      元數(shù)據(jù)服務(wù)器,至少一臺(tái),通過以太網(wǎng)與所述各客戶機(jī)相連,同時(shí)可以通過光纖交換機(jī)訪問磁盤陣列,把所述分布在各磁盤陣列上的文件數(shù)據(jù)組織成統(tǒng)一的并行文件系統(tǒng)視圖,并為所述各客戶機(jī)提供元數(shù)據(jù)操作服務(wù),在所述并行文件系統(tǒng)中引入了下述不同類型的鎖,包括字節(jié)鎖byte-rangelock、共享保留鎖share reservation、文件授權(quán)鎖file delegation、目錄授權(quán)鎖directory delegation、以及文件布局layout,其中
      字節(jié)鎖,用于對(duì)文件提供字節(jié)級(jí)別的訪問控制,
      共享保留鎖,用于控制對(duì)文件訪問的機(jī)制,由OPEN操作建立,說明所需的訪問類型以及拒絕的訪問類型,
      文件授權(quán)鎖,是可撤銷的鎖,其確保對(duì)所述文件授權(quán)鎖的持有者不會(huì)發(fā)生不一致的OPEN操作和文件變更,以便在多個(gè)客戶機(jī)之間沒有對(duì)文件的沖突請(qǐng)求時(shí),減少不斷向所述元數(shù)據(jù)服務(wù)器發(fā)送請(qǐng)求所造成的開銷,只有當(dāng)有其它客戶機(jī)對(duì)該文件提出訪問請(qǐng)求時(shí),才把該文件授權(quán)鎖撤銷,另外,即使當(dāng)前不存在對(duì)該文件的相互沖突的訪問請(qǐng)求,該元數(shù)據(jù)服務(wù)器也可以在任何時(shí)候撤銷該文件授權(quán)鎖,
      目錄授權(quán)鎖,是可撤銷的鎖,其確保對(duì)所述目錄授權(quán)鎖的持有者不會(huì)發(fā)生不一致的目錄修改,以便在多個(gè)客戶機(jī)之間沒有對(duì)目錄的沖突請(qǐng)求時(shí),減少不斷向所述元數(shù)據(jù)服務(wù)器發(fā)送請(qǐng)求所造成的開銷,只有當(dāng)有其它客戶機(jī)對(duì)該目錄提出訪問請(qǐng)求時(shí),才把該目錄授權(quán)鎖撤銷,另外,即使當(dāng)前不存在對(duì)該目錄的相互沖突的訪問請(qǐng)求,該元數(shù)據(jù)服務(wù)器也可以在任何時(shí)候撤銷該目錄授權(quán)鎖,
      文件布局,描述文件數(shù)據(jù)到保存該數(shù)據(jù)的存儲(chǔ)設(shè)備之間的對(duì)應(yīng)關(guān)系,確保作為所述布局持有者的客戶機(jī)可以對(duì)文件數(shù)據(jù)進(jìn)行訪問,并且在訪問過程中不會(huì)發(fā)生對(duì)數(shù)據(jù)的不一致變更,
      所述元數(shù)據(jù)服務(wù)器定義一個(gè)“狀態(tài)有效期”,這是所述客戶機(jī)所獲得的所有鎖的鎖狀態(tài)有效期,在此時(shí)間區(qū)間內(nèi),該客戶機(jī)獲得的所述元數(shù)據(jù)服務(wù)器授予的鎖有效,在該狀態(tài)有效期結(jié)束前,該客戶機(jī)向該元數(shù)據(jù)服務(wù)器提交的每個(gè)請(qǐng)求都要更新該狀態(tài)有效期,如果未及時(shí)更新,則該狀態(tài)有效期結(jié)束時(shí)該客戶機(jī)所獲得的所有鎖都會(huì)失效,若在該狀態(tài)有效期結(jié)束后,所述元數(shù)據(jù)服務(wù)器準(zhǔn)予了其它客戶機(jī)發(fā)出的與該客戶機(jī)當(dāng)前持有的鎖沖突的鎖請(qǐng)求,則當(dāng)前鎖必須被撤銷,若該元數(shù)據(jù)服務(wù)器發(fā)生故障,在其重啟以后,該客戶機(jī)能在設(shè)定的狀態(tài)有效期內(nèi)對(duì)重啟后的該元數(shù)據(jù)服務(wù)器發(fā)出重新獲得之前持有的鎖狀態(tài)的請(qǐng)求,對(duì)于同一個(gè)所述元數(shù)據(jù)服務(wù)器,所有的狀態(tài)有效期都有一個(gè)設(shè)定的長(zhǎng)度,而該元數(shù)據(jù)服務(wù)器通過唯一設(shè)定的客戶機(jī)標(biāo)識(shí)在該客戶機(jī)重啟后辨識(shí)出是同一臺(tái)客戶機(jī)的不同運(yùn)行實(shí)例,進(jìn)行相應(yīng)的恢復(fù),反之,該客戶機(jī)也能通過唯一設(shè)定的元數(shù)據(jù)服務(wù)器標(biāo)識(shí)辨識(shí)出是同一臺(tái)元數(shù)據(jù)服務(wù)器的不同運(yùn)行實(shí)例,進(jìn)行相應(yīng)的恢復(fù),
      另外,所述元數(shù)據(jù)包括用來管理存儲(chǔ)空間的B+樹信息,以及并行文件系統(tǒng)的文件布局layout信息和目錄信息;
      磁盤陣列,至少一個(gè),通過所述光纖交換機(jī)為所述客戶機(jī)提供存儲(chǔ);
      步驟(2).元數(shù)據(jù)服務(wù)器按以下步驟在發(fā)生故障的客戶機(jī)重啟后,對(duì)其進(jìn)行鎖狀態(tài)的恢復(fù)
      步驟(2.1).該元數(shù)據(jù)服務(wù)器獲知所述客戶機(jī)處于非活動(dòng)狀態(tài)
      步驟(2.1.1).判斷是否有新建立的客戶機(jī)連接
      步驟(2.1.1.1).若無,轉(zhuǎn)步驟(2.1.2);
      步驟(2.1.1.2).若有,判斷客戶機(jī)標(biāo)識(shí)
      步驟(2.1.1.2.1).該元數(shù)據(jù)服務(wù)器將該客戶機(jī)的owner ID與該院數(shù)據(jù)服務(wù)器上保存的owner ID進(jìn)行比較若兩個(gè)owner ID相同,則該客戶機(jī)是曾經(jīng)與該元數(shù)據(jù)服務(wù)器建立過連接的機(jī)器,轉(zhuǎn)步驟(2.1.1.2.2);否則,該客戶機(jī)是新建立連接的機(jī)器,轉(zhuǎn)步驟(2.3);
      步驟(2.1.1.2.2).該元數(shù)據(jù)服務(wù)器將該客戶機(jī)的版本號(hào)與該元數(shù)據(jù)服務(wù)器上保存的版本號(hào)進(jìn)行比較若兩個(gè)版本號(hào)不同,則該客戶機(jī)是同一臺(tái)機(jī)器的不同實(shí)例,轉(zhuǎn)步驟(2.2);否則,轉(zhuǎn)步驟(2.3);
      步驟(2.1.2).判斷該客戶機(jī)狀態(tài)有效期是否結(jié)束
      如果在狀態(tài)有效期結(jié)束之前該客戶機(jī)沒有及時(shí)更新狀態(tài)有效期,則該元數(shù)據(jù)服務(wù)器可默認(rèn)該客戶機(jī)處于非活躍狀態(tài),從而發(fā)現(xiàn)客戶機(jī)故障;否則,轉(zhuǎn)步驟(2.3);
      步驟(2.2).該元數(shù)據(jù)服務(wù)器根據(jù)步驟(2.1)的結(jié)果,分別對(duì)故障客戶機(jī)所持有的所有類型的鎖狀態(tài)進(jìn)行恢復(fù)
      步驟(2.2.1).撤銷字節(jié)鎖byte-range lock
      根據(jù)狀態(tài)有效期結(jié)束,該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的字節(jié)鎖byte-range lock;
      步驟(2.2.2).撤銷共享保留鎖share reservation
      根據(jù)狀態(tài)有效期結(jié)束,元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的共享保留鎖share reservation;
      步驟(2.2.3).撤銷文件布局layout
      當(dāng)該客戶機(jī)重啟時(shí),會(huì)失去所有之前所獲得的有關(guān)文件布局layout的信息;
      步驟(2.2.3.1).若狀態(tài)有效期結(jié)束而未被更新,則對(duì)于文件布局layout,該元數(shù)據(jù)服務(wù)器根據(jù)配置文件,選擇在狀態(tài)有效期過期后將文件布局layout立即釋放,或允許文件布局layout一直等待可能的狀態(tài)有效期更新,只要沒有其它文件布局layout請(qǐng)求與當(dāng)前文件布局layout沖突;否則,轉(zhuǎn)步驟(2.2.3.2);
      步驟(2.2.3.2).若該客戶機(jī)在狀態(tài)有效期結(jié)束前重啟,并與該元數(shù)據(jù)服務(wù)器重新建立連接,則該元數(shù)據(jù)服務(wù)器據(jù)此釋放與該客戶機(jī)前一實(shí)例相關(guān)聯(lián)的所有文件布局layout狀態(tài);
      步驟(2.2.4).恢復(fù)文件及目錄授權(quán)鎖delegation
      由于該客戶機(jī)在故障前可能已經(jīng)在本地存儲(chǔ)了一些文件數(shù)據(jù),并且這些數(shù)據(jù)與該客戶機(jī)之前所持有的授權(quán)鎖delegation相關(guān)聯(lián),則該客戶機(jī)就需要向元數(shù)據(jù)服務(wù)器重新建立相應(yīng)的文件狀態(tài);
      步驟(2.2.4.1).若狀態(tài)有效期結(jié)束而未被更新,該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所獲得的授權(quán)鎖delegation;
      步驟(2.2.4.2).若該客戶機(jī)在狀態(tài)有效期結(jié)束前重啟,并與該元數(shù)據(jù)服務(wù)器重新建立連接
      步驟(2.2.4.2.1).該客戶機(jī)首先對(duì)授權(quán)鎖delegation進(jìn)行恢復(fù),并將緩存的數(shù)據(jù)刷新到該元數(shù)據(jù)服務(wù)器上,該元數(shù)據(jù)服務(wù)器會(huì)延長(zhǎng)授權(quán)鎖delegation的恢復(fù)時(shí)期,允許超過所定義的狀態(tài)有效期長(zhǎng)度;
      步驟(2.2.4.2.2).該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所持有的授權(quán)鎖delegation;
      步驟(2.3).恢復(fù)結(jié)束;
      步驟(3).客戶機(jī)按以下步驟在發(fā)生故障的元數(shù)據(jù)重啟后,對(duì)自己曾經(jīng)獲得的鎖狀態(tài)進(jìn)行恢復(fù)
      步驟(3.1).該客戶機(jī)發(fā)現(xiàn)該元數(shù)據(jù)服務(wù)器重啟
      該客戶機(jī)進(jìn)行向該元數(shù)據(jù)服務(wù)器發(fā)送操作請(qǐng)求,卻返回相應(yīng)的錯(cuò)誤;
      或者狀態(tài)有效期即將結(jié)束,該客戶機(jī)試圖更新狀態(tài)有效期卻發(fā)現(xiàn)無法更新;
      步驟(3.2).該客戶機(jī)與該重啟后的元數(shù)據(jù)服務(wù)器重新建立連接,并獲取該元數(shù)據(jù)服務(wù)器重新設(shè)置的狀態(tài)有效期長(zhǎng)度;
      步驟(3.3).該客戶機(jī)判斷該元數(shù)據(jù)服務(wù)器是否為之前該客戶機(jī)與之建立連接的元數(shù)據(jù)服務(wù)器;
      步驟(3.4).若該元數(shù)據(jù)服務(wù)器為客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,并且若客戶機(jī)持有鎖狀態(tài),則客戶機(jī)分別對(duì)其所持有的所有類型的鎖狀態(tài)進(jìn)行恢復(fù);若該元數(shù)據(jù)服務(wù)器不是客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,則轉(zhuǎn)步驟(3.4.6);若該元數(shù)據(jù)服務(wù)器雖然為客戶機(jī)之前曾經(jīng)建立過連接的元數(shù)據(jù)服務(wù)器,但是客戶機(jī)并未持有鎖狀態(tài),則轉(zhuǎn)步驟(3.4.5);
      步驟(3.4.1).恢復(fù)字節(jié)鎖byte-range lock
      步驟(3.4.1.1).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器發(fā)送撤銷類型reclaim-type的鎖請(qǐng)求;
      步驟(3.4.1.2).該元數(shù)據(jù)服務(wù)器重建該鎖狀態(tài);
      步驟(3.4.2).恢復(fù)共享保留鎖share reservation
      步驟(3.4.2.1).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器發(fā)送撤銷類型reclaim-type的鎖請(qǐng)求;
      步驟(3.4.2.2).該元數(shù)據(jù)服務(wù)器重建該鎖狀態(tài);
      步驟(3.4.3).恢復(fù)授權(quán)鎖delegation
      步驟(3.4.3.1).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器聲明所擁有的授權(quán)鎖delegation;
      步驟(3.4.3.2).該元數(shù)據(jù)服務(wù)器授予該客戶機(jī)加了特殊名稱的授權(quán)鎖delegation;
      步驟(3.4.3.3).該客戶機(jī)將所修改的狀態(tài)寫回到該元數(shù)據(jù)服務(wù)器;
      步驟(3.4.3.4).該元數(shù)據(jù)服務(wù)器撤銷該授權(quán)鎖delegation;
      步驟(3.4.4).恢復(fù)文件布局layout
      步驟(3.4.4.1).該客戶機(jī)停止使用所有文件布局layout,并刪除之前從元數(shù)據(jù)服務(wù)器收到的device ID到device address的映射;
      步驟(3.4.4.2).該客戶機(jī)檢查是否有尚未提交的文件布局layout,若無,轉(zhuǎn)步驟(3.4.5);
      步驟(3.4.4.3).該客戶機(jī)采取措施保護(hù)該客戶機(jī)、該元數(shù)據(jù)服務(wù)器和存儲(chǔ)設(shè)備在數(shù)據(jù)狀態(tài)上的同步
      步驟(3.4.4.3.1).判斷該客戶機(jī)內(nèi)存是否仍有被修改的但尚未被同步的數(shù)據(jù);若有該客戶機(jī)等待該元數(shù)據(jù)服務(wù)器狀態(tài)恢復(fù)期結(jié)束之后獲取文件布局layout,并將數(shù)據(jù)寫到存儲(chǔ)設(shè)備上;
      步驟(3.4.4.3.2).判斷該客戶機(jī)是否異步將數(shù)據(jù)寫到存儲(chǔ)設(shè)備上,但是在其內(nèi)存中仍有一份數(shù)據(jù)副本;若是則可以采用
      步驟(3.4.4.3.1)的恢復(fù)方法進(jìn)行恢復(fù);
      步驟(3.4.4.3.3).判斷該客戶機(jī)是否在內(nèi)存中沒有數(shù)據(jù)的副本,并且該元數(shù)據(jù)服務(wù)器仍處于其狀態(tài)恢復(fù)期;若是,則當(dāng)前文件布局layout不可用;
      步驟(3.4.4.3.4).判斷該客戶機(jī)是否在內(nèi)存中沒有數(shù)據(jù)的副本,并且該元數(shù)據(jù)服務(wù)器已經(jīng)結(jié)束了狀態(tài)恢復(fù)期;若是,該客戶機(jī)需要緩存所有的數(shù)據(jù),直到成功的提交文件布局layout;
      步驟(3.4.5).該客戶機(jī)向該元數(shù)據(jù)服務(wù)器發(fā)送鎖狀態(tài)重建過程結(jié)束的通知;
      步驟(3.4.6).元數(shù)據(jù)服務(wù)器結(jié)束狀態(tài)恢復(fù)期
      元數(shù)據(jù)服務(wù)器在可靠的存儲(chǔ)上保存一個(gè)所有具有需要恢復(fù)的鎖狀態(tài)的客戶機(jī)列表,從而獲知是否所有這樣的客戶機(jī)都已經(jīng)完成了鎖狀態(tài)的恢復(fù);服務(wù)器也可以選擇隨時(shí)提前結(jié)束狀態(tài)恢復(fù)期;
      步驟(4).按以下步驟對(duì)發(fā)生網(wǎng)絡(luò)分區(qū)(network partition)后鎖狀態(tài)的恢復(fù)在客戶機(jī)端,其步驟如下
      步驟(4.1).一旦在狀態(tài)有效期尚未結(jié)束時(shí)該客戶機(jī)與該元數(shù)據(jù)服務(wù)器恢復(fù)通信,或者在狀態(tài)有效期已經(jīng)結(jié)束后,該客戶機(jī)與該與元數(shù)據(jù)服務(wù)器重新建立連接,該客戶機(jī)對(duì)由主id和從id組成的該元數(shù)據(jù)服務(wù)器標(biāo)識(shí)與緩存在該客戶機(jī)上之前連接的元數(shù)據(jù)服務(wù)器標(biāo)識(shí)進(jìn)行比較,若兩者主id相同且從id也相同,則可見該元數(shù)據(jù)服務(wù)器并未重啟,從而判明發(fā)生了網(wǎng)絡(luò)分區(qū)network partition;
      步驟(4.2).客戶機(jī)判斷狀態(tài)有效期是否結(jié)束若未結(jié)束,其鎖狀態(tài)繼續(xù)有效;否則釋放所有鎖狀態(tài);
      在元數(shù)據(jù)服務(wù)器端其恢復(fù)步驟如下
      步驟(4.1).該元數(shù)據(jù)服務(wù)器在自己保存的客戶機(jī)列表中發(fā)現(xiàn)該客戶機(jī)狀態(tài)有效期結(jié)束;
      步驟(4.2).該元數(shù)據(jù)服務(wù)器撤銷該客戶機(jī)所持有的除授權(quán)鎖delegation之外的所有鎖狀態(tài);
      步驟(4.3).該元數(shù)據(jù)服務(wù)器直到有其它與當(dāng)前授權(quán)鎖delegation沖突的鎖請(qǐng)求發(fā)生時(shí),才撤銷授權(quán)鎖delegation;在撤銷授權(quán)鎖delegation的時(shí)候,該元數(shù)據(jù)服務(wù)器將被撤銷的授權(quán)鎖delegation的相關(guān)信息寫到可靠的存儲(chǔ)上;
      步驟(5).元數(shù)據(jù)服務(wù)器上元數(shù)據(jù)一致性的恢復(fù)
      步驟(5.1).元數(shù)據(jù)服務(wù)器重啟;
      步驟(5.2).元數(shù)據(jù)服務(wù)器從上次同步點(diǎn)checkpoint起向后依次從磁盤上讀入日志事務(wù),并對(duì)磁盤日志中每條標(biāo)記為成功同步的事務(wù)重新執(zhí)行;
      步驟(5.3).元數(shù)據(jù)服務(wù)器修改上次同步點(diǎn)checkpoint指向當(dāng)前最后同步的記錄;
      步驟(5.4).元數(shù)據(jù)服務(wù)器正常運(yùn)行。
      全文摘要
      并行文件系統(tǒng)發(fā)生故障后的恢復(fù)方法屬于文件系統(tǒng)領(lǐng)域,其特征在于客戶機(jī)向服務(wù)器申請(qǐng)一個(gè)“狀態(tài)有效期”,在該有效期內(nèi)維持鎖狀態(tài)的有效性;客戶機(jī)和服務(wù)器各自通過對(duì)方標(biāo)識(shí)及“狀態(tài)有效期”判斷對(duì)方狀態(tài);服務(wù)器將對(duì)元數(shù)據(jù)的修改記入日志,在其發(fā)生故障后重啟時(shí),只需讀取日志并執(zhí)行未完成事務(wù)即可恢復(fù)元數(shù)據(jù)一致性;此外,其它服務(wù)器也可通過讀取日志接管故障的服務(wù)器。使用“狀態(tài)有效期”避免了客戶機(jī)和服務(wù)器為確認(rèn)對(duì)方狀態(tài)頻繁相互通信所帶來的網(wǎng)絡(luò)開銷,減少了鎖狀態(tài)恢復(fù)的復(fù)雜性;而服務(wù)器記錄元數(shù)據(jù)日志的方法則便于迅速恢復(fù)元數(shù)據(jù)一致性,該方法與基于磁盤掃描的傳統(tǒng)方法相比,縮短了恢復(fù)時(shí)間,顯著提高了系統(tǒng)的可靠性。
      文檔編號(hào)H04L29/06GK101567805SQ20091008548
      公開日2009年10月28日 申請(qǐng)日期2009年5月22日 優(yōu)先權(quán)日2009年5月22日
      發(fā)明者舒繼武, 洋 劉, 易樂天, 巍 薛 申請(qǐng)人:清華大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1