国产精品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)進行操作的方法和裝置制造方法

      文檔序號:6541961閱讀:135來源:國知局
      對文件系統(tǒng)進行操作的方法和裝置制造方法
      【專利摘要】本發(fā)明公開了一種對文件系統(tǒng)進行操作的方法和裝置。所述方法包括:根據(jù)接收的操作請求為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖;根據(jù)所述操作請求為所述目標節(jié)點添加讀鎖或者寫鎖;對所述目標節(jié)點進行所述操作請求所請求的操作;從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖。本發(fā)明可以為文件系統(tǒng)內(nèi)的每個節(jié)點添加獨立的鎖,可以同時對不同操作路徑上的多個目標節(jié)點進行相應(yīng)的操作而不會相互收到影響,也可以對相同操作路徑上的不同節(jié)點同時進行讀操作,當對操作路徑上的最下面的節(jié)點進行寫操作時不影響同時對該操作路徑上的其他節(jié)點進行讀操作,增加了文件系統(tǒng)的吞吐量。
      【專利說明】對文件系統(tǒng)進行操作的方法和裝置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明實施例涉及數(shù)據(jù)操作技術(shù),尤其涉及一種對文件系統(tǒng)進行操作的方法和裝置。
      【背景技術(shù)】
      [0002]在樹型目錄結(jié)構(gòu)的文件系統(tǒng)中,處理并發(fā)操作時必須對文件系統(tǒng)的所有節(jié)點進行并發(fā)同步鎖定,以確保操作被有序?qū)懭肴罩尽?br> [0003]現(xiàn)有技術(shù)中,文件系統(tǒng)控制部分在進行讀寫操作的處理時,使用可重入讀寫鎖(Reentrant Read WriteLock)來協(xié)調(diào)文件系統(tǒng)中的鎖機制。
      [0004]首先,根據(jù)讀寫操作請求先將整個文件系統(tǒng)加鎖。例如,對于讀操作(例如,讀取文件夾中的文件列表,獲取文件信息,獲取文件內(nèi)容等),對要操作的文件系統(tǒng)的所有節(jié)點加讀鎖,對于寫操作(例如,在文件夾中新增文件,在文件中寫入內(nèi)容,修改文件夾信息或文件信息等),對要操作的文件系統(tǒng)的所有節(jié)點加寫鎖。
      [0005]然后,對目標節(jié)點進行讀操作或?qū)懖僮?。因為使用了可重入讀寫鎖機制,多個讀操作線程可以共享同一個讀鎖,讀鎖和寫鎖之間則為互斥狀態(tài),即文件系統(tǒng)上添加讀鎖時,則不可對文件系統(tǒng)進行寫操作;文件系統(tǒng)上添加寫鎖時,則不可對文件系統(tǒng)進行讀操作。
      [0006]當對目標節(jié)點進行的是寫操作時,完成寫操作后,還需要將寫操作的信息寫入日志。最后,解除文件系統(tǒng)中的讀鎖或?qū)戞i,讓其他線程操作文件系統(tǒng)。
      [0007]但是,如圖1所示,由于文件系統(tǒng)中鎖是全局的,所以文件系統(tǒng)中的所有節(jié)點只能實現(xiàn)讀操作之間鎖共享,讀寫操作間互斥。
      [0008]文件系統(tǒng)中以Hadoop HDFS為例在執(zhí)行操作時,如圖2所示,在文件系統(tǒng)寫入日志結(jié)束前都會保證操作者一直持有寫鎖或者讀鎖。在讀操作線程訪問文件系統(tǒng)的時候,寫操作線程因為讀鎖和寫鎖的互斥原則,無法進行寫操作;反之如果寫操作線程在進行時讀操作也無法進行。因此,在讀寫操作并發(fā)時,會因為文件系統(tǒng)讀寫鎖的互斥導(dǎo)致文件系統(tǒng)吞吐量下降。

      【發(fā)明內(nèi)容】

      [0009]有鑒于此,本發(fā)明實施例提供一種對文件系統(tǒng)進行操作的方法和裝置,以提高文件系統(tǒng)的吞吐量。
      [0010]第一方面,本發(fā)明實施例提供了一種對文件系統(tǒng)進程操作的方法,所述方法包括:
      [0011]根據(jù)接收的操作請求為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖;
      [0012]根據(jù)所述操作請求為所述目標節(jié)點添加讀鎖或者寫鎖;
      [0013]對所述目標節(jié)點進行所述操作請求所請求的操作;
      [0014]從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖。
      [0015]第二方面,本發(fā)明實施例還提供了一種對文件系統(tǒng)進行操作的裝置,所述裝置包括:
      [0016]第一添加模塊,用于根據(jù)接收的操作請求為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖;
      [0017]第二添加模塊,用于根據(jù)所述操作請求為所述目標節(jié)點添加讀鎖或者寫鎖;
      [0018]操作模塊,用于對所述目標節(jié)點進行所述操作請求所請求的操作;
      [0019]釋放模塊,用于從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖。
      [0020]本發(fā)明實施例提供的對文件系統(tǒng)進行操作的方法和裝置,通過為操作路徑上的除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖,且為所述目標節(jié)點添加操作請求相應(yīng)的讀鎖或者寫鎖,即如果為目標節(jié)點加的是寫鎖,那么該目標節(jié)點的文件系統(tǒng)操作路徑中其他的節(jié)點還可用于讀操作,也就是說一個文件系統(tǒng)能夠同時加讀鎖和寫鎖,解決了現(xiàn)有文件系統(tǒng)讀寫操作間互斥的問題。這樣,在讀寫操作并發(fā)時,可以同時對文件系統(tǒng)進行讀操作和寫操作,提高了文件系統(tǒng)的吞吐量。
      【專利附圖】

      【附圖說明】
      [0021]圖1是現(xiàn)有技術(shù)中的讀寫鎖的結(jié)構(gòu)示意圖;
      [0022]圖2是現(xiàn)有技術(shù)中讀寫鎖互斥的示意圖;
      [0023]圖3是本發(fā)明第一實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖;
      [0024]圖4是本發(fā)明第一實施例提供的對文件系統(tǒng)進行操作的方法中的文件系統(tǒng)內(nèi)的節(jié)點添加的鎖的示意圖;
      [0025]圖5是本發(fā)明第二實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖;
      [0026]圖6是本發(fā)明第二實施例提供的一種對文件系統(tǒng)進行操作的方法中的操作路徑上的節(jié)點添加鎖的示意圖;
      [0027]圖7是本發(fā)明第三實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖;
      [0028]圖8是本發(fā)明第三實施例提供的一種對文件系統(tǒng)進行操作的方法中的操作路徑上的節(jié)點添加鎖的示意圖;
      [0029]圖9是本發(fā)明第四實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖;
      [0030]圖10是本發(fā)明第四實施例提供的一種對文件系統(tǒng)進行操作的方法中的操作路徑上的節(jié)點添加鎖的示意圖;
      [0031]圖11是本發(fā)明第五實施例提供的一種對文件系統(tǒng)進行操作的裝置的示意圖?!揪唧w實施方式】
      [0032]下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
      [0033]圖3示出了本發(fā)明的第一實施例。
      [0034]圖3是本發(fā)明第一實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖,該方法適用于并發(fā)條件下對文件系統(tǒng)的操作,例如:可以同時對多個不同文件夾下的文件或者文件夾進行寫操作,可由計算機執(zhí)行,如圖3所示,該方法具體包括如下步驟:
      [0035]步驟31,根據(jù)接收的操作請求為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖。
      [0036]計算機為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖,例如:文件系統(tǒng)操作路徑為(/根目錄/文件夾A/文件夾B/文件C),即目標節(jié)點為文件C,則為該操作路徑上除目標節(jié)點文件C外的所有節(jié)點添加讀鎖的順序為:根目錄_>文件夾A->文件夾B。
      [0037]其中,文件系統(tǒng)是一種存儲和組織計算機數(shù)據(jù)的方法,它使得對其訪問和查找變得容易,文件系統(tǒng)使用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設(shè)備使用數(shù)據(jù)塊的概念,用戶使用文件系統(tǒng)來保存數(shù)據(jù)不必關(guān)心數(shù)據(jù)實際保存在硬盤(或者光盤)的地址為多少的數(shù)據(jù)塊上,只需要記住這個文件的所屬目錄和文件名。在寫入新數(shù)據(jù)之前,用戶不必關(guān)心硬盤上的那個塊地址有沒有被使用,硬盤上的存儲空間管理(分配和釋放)功能由文件系統(tǒng)自動完成,用戶只需要記住數(shù)據(jù)被寫入到了哪個文件中即可。
      [0038]示例性的,為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖之前,還包括:
      [0039]解析所述操作路徑,獲得操作路徑上的所有節(jié)點信息;
      [0040]根據(jù)獲得的所述操作路徑上的所有節(jié)點信息,觸發(fā)所述為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖。
      [0041]示例性的,為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖的過程中,如果所述目標節(jié)點外的所有節(jié)點中存在已加寫鎖的節(jié)點,則在所述已加寫鎖的節(jié)點上的鎖釋放后再添加讀鎖。這是因為文件系統(tǒng)中節(jié)點上的讀寫鎖互斥。
      [0042]步驟32,根據(jù)所述操作請求為所述目標節(jié)點添加讀鎖或者寫鎖。
      [0043]其中,所述操作請求所請求的操作可以為讀操作或者寫操作。當所述操作請求所請求的操作為讀操作(如:獲取文件夾中文件列表、獲取文件夾或者文件的信息等)時,計算機為所述目標節(jié)點添加讀鎖;當所述操作請求所請求的操作為寫操作(如:文件夾或者文件的創(chuàng)建、重命名、文件內(nèi)容的修改等)時,計算機為所述目標節(jié)點添加寫鎖。
      [0044]示例性的,根據(jù)操作請求為所述目標節(jié)點添加讀鎖或者寫鎖的過程中,如果所述目標節(jié)點已加與所述操作請求相斥的鎖,則在所述目標節(jié)點上的鎖釋放后,再為所述目標節(jié)點添加讀鎖或?qū)戞i。
      [0045]步驟33,對所述目標節(jié)點進行所述操作請求所請求的操作。
      [0046]根據(jù)所述操作請求所請求的操作,計算機對所述目標節(jié)點進行相應(yīng)的操作。例如:所述操作請求所請求的操作為獲取文件夾(如文件夾B)中文件列表的讀操作,則計算機獲取目標節(jié)點(即文件夾B)的文件列表。
      [0047]其中,所述目標節(jié)點可以只有一個,也可以至少兩個,當同時存在兩個目標節(jié)點時,對一個目標節(jié)點進行寫操作而不影響對另一個目標節(jié)點進行讀操作。
      [0048]步驟34,從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖。
      [0049]對所述目標節(jié)點完成所述操作請求所請求的操作后,首先釋放所述目標節(jié)點上的鎖,然后以自下而上的順序釋放所述操作路徑上的除目標節(jié)點外的所有節(jié)點上的鎖。
      [0050]本實施例通過為操作路徑上的除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖,且為所述目標節(jié)點添加操作請求相應(yīng)的讀鎖或者寫鎖,圖4是本發(fā)明第一實施例提供的一種對文件系統(tǒng)進行操作的方法中的文件系統(tǒng)內(nèi)的節(jié)點添加的鎖的示意圖,如圖4所示,由于可以為文件系統(tǒng)內(nèi)的每個節(jié)點添加獨立的鎖,可以同時為不同操作路徑上的多個目標節(jié)點添加讀鎖或者寫鎖,因此可以同時對不同操作路徑上的多個目標節(jié)點進行相應(yīng)的操作而不會相互收到影響,也可以對相同操作路徑上的不同節(jié)點同時進行讀操作,當對操作路徑上的最下面的節(jié)點進行寫操作時不影響同時對該操作路徑上的其他節(jié)點進行讀操作,增加了文件系統(tǒng)的吞吐量。文件系統(tǒng)使用讀寫鎖,并且根據(jù)文件系統(tǒng)的操作路徑從根目錄開始自上而下的獲取讀寫鎖,使用這種方法保證在同一時刻不會有兩個請求同時操作一個文件系統(tǒng)節(jié)點,同時不同的文件系統(tǒng)節(jié)點不會被同時鎖定。
      [0051]示例性的,根據(jù)操作請求為所述目標節(jié)點添加讀鎖或者寫鎖,包括:
      [0052]根據(jù)寫操作請求為至少兩個目標節(jié)點的同一父節(jié)點添加寫鎖。
      [0053]當操作請求所請求的操作為跨節(jié)點操作時,為至少兩個目標節(jié)點的同一父節(jié)點添加寫鎖,例如移動文件A到文件夾B中,需要給文件A和文件夾B的共同父節(jié)點加上寫鎖。
      [0054]示例性的,當所述操作請求所請求的操作為寫操作時,在對所述目標節(jié)點進行所述操作請求所請求的操作之后,包括:
      [0055]將所述寫操作的信息寫入日志。
      [0056]當所述操作請求所請求的操作為寫操作時,在對所述目標節(jié)點進行寫操作后,將所述寫操作的信息寫入日志,確保當計算機出現(xiàn)問題時,可以根據(jù)日志恢復(fù)該寫操作的信息。同時,在添加鎖的過程中區(qū)分讀寫操作是否可能沖突,避免日志無法回放。
      [0057]圖5示出了本發(fā)明的第二實施例。
      [0058]圖5是本發(fā)明第二實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖,該方法適用于當操作請求所請求的操作為寫操作時,以修改操作路徑(/文件夾A/文件夾B/文件C)的目標節(jié)點文件C的內(nèi)容為例,該方法具體包括如下步驟:
      [0059]步驟51、解析操作路徑(/文件夾A/文件夾B/文件C),獲得文件系統(tǒng)的該操作路徑上的所有節(jié)點信息:文件夾A、文件夾B、文件C。
      [0060]步驟52、從文件系統(tǒng)根目錄開始,為操作路徑上除目標節(jié)點文件C外的所有節(jié)點(根目錄、文件夾A、文件夾B)以自上而下的順序添加讀鎖,如果出現(xiàn)讀寫互斥的情況就阻塞等待,直到添加讀鎖成功。
      [0061]步驟53、為目標節(jié)點文件C添加寫鎖,如果出現(xiàn)讀寫互斥的情況就阻塞等待,直到添加寫鎖成功。
      [0062]圖6是本發(fā)明第二實施例提供的一種對文件系統(tǒng)進行操作的方法中的操作路徑上的節(jié)點添加鎖的示意圖,如圖6所示,為根目錄、文件夾A、文件夾B添加了讀鎖,為目標節(jié)點文件C添加了寫鎖。
      [0063]步驟54、修改目標節(jié)點文件C的內(nèi)容,并寫入日志。
      [0064]步驟55、釋放目標節(jié)點文件C上的寫鎖,從節(jié)點文件夾B開始依次自下而上釋放操作路徑上除目標節(jié)點外的所有節(jié)點上的讀鎖,直到根目錄節(jié)點。
      [0065]本實施例通過為操作路徑上的目標節(jié)點文件C外的所有節(jié)點添加讀鎖,為目標節(jié)點文件C添加寫鎖,從而可以修改目標節(jié)點文件C的內(nèi)容。
      [0066]圖7示出了本發(fā)明的第三實施例。
      [0067]圖7是本發(fā)明第三實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖,該方法適用于當操作請求所請求的操作為讀操作時,以獲取操作路徑(/文件夾A/文件夾B)的目標節(jié)點文件夾B中的文件列表為例,該方法具體包括如下步驟:
      [0068]步驟71、解析操作路徑(/文件夾A/文件夾B),獲得文件系統(tǒng)的該操作路徑上的所有節(jié)點信息:文件夾A、文件夾B。
      [0069]步驟72、從文件系統(tǒng)根目錄開始,為操作路徑上除目標節(jié)點文件夾B外的所有節(jié)點(根目錄、文件夾A)以自上而下的順序添加讀鎖,如果出現(xiàn)讀寫互斥的情況就阻塞等待,直到添加讀鎖成功。
      [0070]步驟73、為目標節(jié)點文件夾B添加讀鎖,如果出現(xiàn)讀寫互斥的情況就阻塞等待,直到添加讀鎖成功。
      [0071]圖8是本發(fā)明第三實施例提供的一種對文件系統(tǒng)進行操作的方法中的操作路徑上的節(jié)點添加鎖的示意圖,如圖8所示,為根目錄、文件夾A及目標節(jié)點文件夾B添加了讀鎖。
      [0072]步驟74、獲取目標節(jié)點文件夾B中的文件列表。
      [0073]步驟75、從目標節(jié)點文件夾B開始依次自下而上釋放操作路徑上的所有節(jié)點上的讀鎖,直到根目錄節(jié)點。
      [0074]本實施例通過為操作路徑上的包括目標節(jié)點文件夾B的所有節(jié)點添加讀鎖,從而可以獲取目標節(jié)點文件夾B中的文件列表。
      [0075]圖9示出了本發(fā)明的第四實施例。
      [0076]圖9是本發(fā)明第四實施例提供的一種對文件系統(tǒng)進行操作的方法的流程圖,該方法適用于當操作請求所請求的操作為為跨節(jié)點操作時,以將(/文件夾A/文件夾B/文件C)中的文件C移動到(/文件夾A/文件夾B/文件夾D)中的文件夾D中為例,該方法具體包括如下步驟:
      [0077]步驟91、解析操作路徑,獲得第一目標節(jié)點文件C與第二目標節(jié)點文件夾D的同一父節(jié)點文件夾B。
      [0078]步驟92、從文件系統(tǒng)根目錄開始,為操作路徑上除第一目標節(jié)點文件C、第二目標節(jié)點文件夾D與同一父節(jié)點文件夾B外的所有節(jié)點(根目錄、文件夾A)以自上而下的順序添加讀鎖,如果出現(xiàn)讀寫互斥的情況就阻塞等待,直到添加讀鎖成功。
      [0079]步驟93、為第一目標節(jié)點文件C與第二目標節(jié)點文件夾D的同一父節(jié)點文件夾B添加寫鎖。
      [0080]圖10是本發(fā)明第四實施例提供的一種對文件系統(tǒng)進行操作的方法中的操作路徑上的節(jié)點添加鎖的示意圖,如圖10所示,為根目錄、文件夾A添加了讀鎖,并且為第一目標節(jié)點文件C與第二目標節(jié)點文件夾D的同一父節(jié)點文件夾B添加了寫鎖。
      [0081]步驟94、移動第一目標節(jié)點文件C到第二目標節(jié)點文件夾D中,并將操作的信息寫入日志。
      [0082]步驟95、釋放文件夾B上的寫鎖,并從文件夾A開始依次自下而上釋放操作路徑上的所有節(jié)點上的讀鎖,直到根目錄節(jié)點。[0083]本實施例通過解析操作路徑,獲得第一目標節(jié)點文件C與第二目標節(jié)點文件夾D的同一父節(jié)點文件夾B,為操作路徑上的文件夾B以上的節(jié)點添加讀鎖,為第一目標節(jié)點文件C與第二目標節(jié)點文件夾D的同一父節(jié)點文件夾B添加寫鎖,從而可以實現(xiàn)移動第一目標節(jié)點文件C到第二目標節(jié)點文件夾D中。
      [0084]圖11示出了本發(fā)明的第五實施例。
      [0085]圖11是本發(fā)明第五實施例提供的一種對文件系統(tǒng)進行操作的裝置的示意圖,本實施例所示的裝置用于實現(xiàn)圖3所示實施例提供的方法。如圖11所示,本實施例所述的對文件系統(tǒng)進行操作的裝置包括:第一添加模塊111、第二添加模塊112、操作模塊113和釋放模塊114。
      [0086]其中,第一添加模塊111用于根據(jù)接收的操作請求為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖。
      [0087]第二添加模塊112用于根據(jù)所述操作請求為所述目標節(jié)點添加讀鎖或者寫鎖。
      [0088]操作模塊113用于對所述目標節(jié)點進行所述操作請求所請求的操作。
      [0089]釋放模塊114用于從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖。
      [0090]本實施例通過第一添加模塊111為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖,第二添加模塊112根據(jù)操作請求為所述目標節(jié)點添加讀鎖或者寫鎖,操作模塊113對所述目標節(jié)點進行所述操作請求所請求的操作,釋放模塊114從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖,實現(xiàn)了為文件系統(tǒng)內(nèi)的每個節(jié)點添加獨立的鎖,可以同時為不同操作路徑上的多個目標節(jié)點添加讀鎖或者寫鎖,因此可以同時對不同操作路徑上的多個目標節(jié)點進行相應(yīng)的操作而不會相互收到影響,也可以對相同操作路徑上的不同節(jié)點同時進行讀操作,當對操作路徑上的最下面的節(jié)點進行寫操作時不影響同時對該操作路徑上的其他節(jié)點進行讀操作,增加了文件系統(tǒng)的吞吐量。文件系統(tǒng)使用讀寫鎖,并且根據(jù)文件系統(tǒng)的操作路徑從根目錄開始自上而下的獲取讀寫鎖,使用這種方法保證在同一時刻不會有兩個請求同時操作一個文件系統(tǒng)節(jié)點,同時不同的文件系統(tǒng)節(jié)點不會被同時鎖定。
      [0091]示例性的,所述裝置還包括:
      [0092]解析模塊,用于在所述第一添加模塊為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖之前,解析所述操作路徑,獲得操作路徑上的所有節(jié)點信息;
      [0093]觸發(fā)模塊,用于根據(jù)所述解析模塊獲得的所述操作路徑上的所有節(jié)點信息,觸發(fā)所述為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖。
      [0094]示例性的,所述第一添加模塊為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖的過程中,如果所述目標節(jié)點外的所有節(jié)點中存在已加寫鎖的節(jié)點,則還用于在所述已加寫鎖的節(jié)點上的鎖釋放后再添加讀鎖。
      [0095]示例性的,所述第二添加模塊根據(jù)操作請求為所述目標節(jié)點添加讀鎖或者寫鎖的過程中,如果所述目標節(jié)點已加與所述操作請求相斥的鎖,則還用于在所述目標節(jié)點上的鎖釋放后,再為所述目標節(jié)點添加讀鎖或?qū)戞i。
      [0096]示例性的,所述第二添加模塊還用于根據(jù)寫操作請求為至少兩個目標節(jié)點的同一父節(jié)點添加寫鎖。
      [0097]示例性的,當所述操作請求所請求的操作為寫操作時,所述裝置還包括:
      [0098]寫入模塊,用于在所述操作模塊對所述目標節(jié)點進行所述操作請求所請求的操作之后,將所述寫操作的信息寫入日志。
      [0099]注意,上述僅為本發(fā)明的較佳實施例及所運用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實施例,對本領(lǐng)域技術(shù)人員來說能夠進行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護范圍。因此,雖然通過以上實施例對本發(fā)明進行了較為詳細的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。
      【權(quán)利要求】
      1.一種對文件系統(tǒng)進行操作的方法,其特征在于,所述方法包括: 根據(jù)接收的操作請求為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖; 根據(jù)所述操作請求為所述目標節(jié)點添加讀鎖或者寫鎖; 對所述目標節(jié)點進行所述操作請求所請求的操作; 從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖之前,還包括: 解析所述操作路徑,獲得操作路徑上的所有節(jié)點信息; 根據(jù)獲得的所述操作路徑上的所有節(jié)點信息,觸發(fā)所述為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖。
      3.根據(jù)權(quán)利要求1所述的方法,其特征在于,為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖的過程中,如果所述目標節(jié)點外的所有節(jié)點中存在已加寫鎖的節(jié)點,則在所述已加寫鎖的節(jié)點上的鎖釋放后再添加讀鎖。
      4.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)操作請求為所述目標節(jié)點添加讀鎖或者寫鎖的過程中,如果所述目標節(jié)點已加與所述操作請求相斥的鎖,則在所述目標節(jié)點上的鎖釋放后,再為所述目標節(jié)點添加讀鎖或?qū)戞i。
      5.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,根據(jù)操作請求為所述目標節(jié)點添加讀鎖或者寫鎖,包括: 根據(jù)寫操作請求為至少兩個目標節(jié)點的同一父節(jié)點添加寫鎖。
      6.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,當所述操作請求所請求的操作為寫操作時,在對所述目標節(jié)點進行所述操作請求所請求的操作之后,包括: 將所述寫操作的信息寫入日志。
      7.一種對文件系統(tǒng)進行操作的裝置,其特征在于,所述裝置包括: 第一添加模塊,用于根據(jù)接收的操作請求為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖; 第二添加模塊,用于根據(jù)所述操作請求為所述目標節(jié)點添加讀鎖或者寫鎖; 操作模塊,用于對所述目標節(jié)點進行所述操作請求所請求的操作; 釋放模塊,用于從所述目標節(jié)點開始,以自下而上的順序釋放所述操作路徑上的所有節(jié)點上的鎖。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 解析模塊,用于在所述第一添加模塊為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖之前,解析所述操作路徑,獲得操作路徑上的所有節(jié)點信息; 觸發(fā)模塊,用于根據(jù)所述解析模塊獲得的所述操作路徑上的所有節(jié)點信息,觸發(fā)所述為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖。
      9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第一添加模塊為文件系統(tǒng)操作路徑上除目標節(jié)點外的所有節(jié)點以自上而下的順序添加讀鎖的過程中,如果所述目標節(jié)點外的所有節(jié)點中存在已加寫鎖的節(jié)點,則還用于在所述已加寫鎖的節(jié)點上的鎖釋放后再添加讀鎖。
      10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第二添加模塊根據(jù)操作請求為所述目標節(jié)點添加讀鎖或者寫鎖的過程中,如果所述目標節(jié)點已加與所述操作請求相斥的鎖,則還用于在所述目標節(jié)點上的鎖釋放后,再為所述目標節(jié)點添加讀鎖或?qū)戞i。
      11.根據(jù)權(quán)利要求7-10任一項所述的裝置,其特征在于,所述第二添加模塊還用于根據(jù)寫操作請求為至少兩個目標節(jié)點的同一父節(jié)點添加寫鎖。
      12.根據(jù)權(quán)利要求7-10任一項所述的裝置,其特征在于,當所述操作請求所請求的操作為寫操作時,所述裝置還包括: 寫入模塊,用于在所述操作模塊對所述目標節(jié)點進行所述操作請求所請求的操作之后,將所述寫操作的信 息寫入日志。
      【文檔編號】G06F17/30GK103942269SQ201410117401
      【公開日】2014年7月23日 申請日期:2014年3月26日 優(yōu)先權(quán)日:2014年3月26日
      【發(fā)明者】馬文金 申請人:北京京東尚科信息技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1