文件修復方法及裝置的制造方法
【技術領域】
[0001 ]本發明涉及數據處理領域,尤其涉及一種文件修復方法及裝置。
【背景技術】
[0002]文件系統最初設計時,僅僅是為局域網內的本地文件服務的。而分布式文件系統將服務范圍擴展到了整個網絡。不僅改變了文件的存儲和管理方式,也擁有了本地文件系統所無法具備的數據備份、數據安全等優點。分布式文件系統一般包含客戶端,元數據服務器和數據服務器,客戶端負責文件的訪問接口制定,元數據服務器負責處理文件的布局及屬性,數據服務器負責存儲文件的數據內容。
[0003]對于分布式文件系統,在保證數據可靠性的基礎上,“高吞吐,低延遲”是重要的性能要求。為了實現高并發的鎖機制事務,需要使用讀寫鎖對分布式文件系統進行并發控制,讀寫鎖實際是一種特殊的自旋鎖,它把對共享資源的訪問者劃分成讀者和寫者,讀者只對共享資源進行讀訪問,寫者則需要對共享資源進行寫操作。這種鎖相對于自旋鎖而言,能提高并發性,因為在多處理器系統中,它允許同時有多個讀者來訪問共享資源,最大可能的讀者數為實際的邏輯CPU數。寫者是排他性的,一個讀寫鎖同時只能有一個寫者或多個讀者(與CPU數相關),但不能同時既有讀者又有寫者。讀者稱之為對資源加讀鎖,寫者稱之為對資源加寫鎖。
[0004]為了保證數據的一致性,分布式系統中的文件修復流程需要在鎖保護下進行,而正常的文件訪問流程也需要在鎖保護下進行。現有技術中,如果正常文件訪問流程持有的鎖被文件修復流程搶占,則需要再次加鎖;如果正常文件訪問流程需要加的鎖被文件修復流程所持有,則需要等待文件修復流程釋放鎖之后,才能正常進行。這兩種情況都會使正常文件訪問流程的響應時間延長,影響正常業務的性能。
【發明內容】
[0005]本發明實施例提出了解決分布式文件系統中故障文件修復流程的執行會導致正常業務流程響應時間延長的問題的技術方案。
[0006]在一個方面,本發明實施例提供了一種文件修復方法,包括:
[0007]所述分布式文件系統中的文件修復操作被觸發時,若目標修復文件被鎖保護,則文件修復失敗;
[0008]若所述目標修復文件未被鎖保護,對所述目標修復文件執行加鎖操作,設置鎖屬性為可搶占,對所述目標修復文件進行修復。
[0009]在另一個方面,本發明實施例提供了一種文件修復裝置,包括:
[0010]觸發模塊,用于觸發分布式文件系統中的文件修復操作;
[0011 ]判斷模塊,用于在所述文件修復操作被觸發時,判斷目標修復文件是否被鎖保護,若所述目標修復文件被鎖保護,則向所述觸發模塊返回所述文件修復操作觸發失敗;
[0012]修復控制模塊,用于在所述目標修復文件未被鎖保護時,對所述目標修復文件執行加鎖操作,設置鎖屬性為可搶占,對所述目標修復文件進行修復。
[0013]當前分布式文件系統中存在著故障文件修復流程的執行會導致正常文件訪問流程響應時間延長的問題,本發明實施例對修復流程的加鎖進行限制,當修復流程試圖對文件加鎖時,如果該鎖存在使用者,則不排隊搶占鎖,而是直接失敗,等待下一輪修復時再進行嘗試;當修復流程加鎖成功后,設置鎖屬性為可搶占,從而避免了正常業務持有的鎖被修復流程搶占,以及正常業務等待修復釋放鎖的情況,解決了故障文件修復流程的執行會導致正常業務流程響應時間延長的問題,降低了數據修復對正常業務的影響。
【附圖說明】
[0014]下面將參照附圖描述本發明的具體實施例,其中:
[0015]圖1示出了本發明實施例中文件修復方法的流程示意圖;
[0016]圖2示出了本發明實施例中文件修復裝置的結構示意圖。
【具體實施方式】
[0017]為了使本發明的技術方案及優點更加清楚明白,以下結合附圖對本發明的示例性實施例進行進一步詳細的說明,顯然,所描述的實施例僅是本發明的一部分實施例,而不是所有實施例的窮舉。并且在不沖突的情況下,本說明中的實施例及實施例中的特征可以互相結合。
[0018]發明人在發明過程中注意到:為了保證數據的一致性,分布式系統中的文件修復流程需要在鎖保護下進行,而正常的文件訪問流程也需要在鎖保護下進行。如果正常文件訪問流程持有的鎖被文件修復流程搶占,則需要再次加鎖;如果正常文件訪問流程需要加的鎖被文件修復流程所持有,則需要等待文件修復流程釋放鎖之后,才能正常進行。這兩種情況都會使正常文件訪問流程的響應時間延長,影響正常業務的性能。
[0019]針對上述不足/基于此,本發明實施例提出了一種文件修復方法,下面進行說明。
[0020]圖1示出了本發明實施例中文件修復方法的流程示意圖,如圖所示,包括:
[0021 ]步驟101、對分布式系統中的目標修復文件創建修復任務,本發明實施例中提及的分布式系統可采用基于龍騰服務器的分布式文件系統;
[0022]步驟102、分布式文件系統中的文件修復操作被觸發后,判斷目標修復文件是否被鎖保護,若是,執行步驟103,否則,執行步驟104;
[0023]步驟103、文件修復失敗,等待下一輪文件修復被觸發,返回步驟102。
[0024]步驟104、對目標修復文件執行加鎖操作,設置鎖屬性為可搶占,對目標修復文件進行修復。
[0025]相對于傳統的做法,本發明對修復流程的加鎖進行限制,當修復流程試圖對文件加鎖時,如果該鎖存在使用者,則不排隊搶占鎖,而是直接失敗,等待下一輪修復時再進行嘗試;當修復流程加鎖成功后,設置鎖屬性為可搶占,從而避免了正常業務持有的鎖被修復流程搶占,以及正常業務等待修復釋放鎖的情況,降低了數據修復對正常業務的影響。
[0026]進一步地,當修復流程加鎖成功,鎖屬性被設置為可搶占之后,當正常業務需要對目標修復文件進行修改時,若目標修復文件正在被修復,則將文件修復的鎖置為無效,同時對目標修復文件執行加寫鎖操作,以此達到搶占鎖的效果。
[0027]進一步地,為了保證文件修復任務的順利完成,在目標修復文件修復過程中和/或修復完成后,檢查文件修復的鎖是否被搶占,如果文件修復的鎖被搶占,則重新對目標修復文件執行加鎖操作,并在加鎖成功后,重新對目標修復文件執行修復操作;在目標修復文件修復過程中和/或修復完成后,文件修復的鎖未被搶占,則在文件修復完成后,對該文件進行標注,下一輪文件修復時不再修復該文件。
[0028]基于同一發明構思,本發明實施例中還提供了一種文件修復裝置,由于這些設備解決問題的原理與一種文件修復方法相似,因此這些設備的實施可以參見方法的實施,重復之處不再贅述。
[0029]圖2示出了本發明實施例中文件修復裝置的結構示意圖;如圖所示,裝置可以包括:
[0030]觸發模塊,用于觸發分布式文件系統中的文件修復操作;
[0031 ]判斷模塊,用于在文件修復操作被觸發時,判斷目