一種文件鎖實現方法及裝置製造方法
2023-05-10 12:06:46 2
一種文件鎖實現方法及裝置製造方法
【專利摘要】本發明公開一種文件鎖實現方法及裝置,當第一協議訪問文件系統時,該方法包括:將所述第一協議的打開open對象映射為第一文件鎖,其中,open對象是指一次打開open請求所產生的協議數據;根據預設的互斥規則將所述第一文件鎖和上一次訪問文件系統的第二協議對應的第二文件鎖做衝突判斷,根據衝突判斷結果返回創建open請求失敗或者允許第一協議訪問文件系統。本發明所提供的方法和裝置解決多個協議共存於一個網絡附屬存儲時,由於協議壁壘導致數據不能得到保護,文件數據容易被改寫的問題。
【專利說明】一種文件鎖實現方法及裝置
【技術領域】
[0001] 本發明涉及電子【技術領域】,尤其涉及一種文件鎖實現方法及裝置。
【背景技術】
[0002] 目前,網絡附屬存儲(Network Attached Storage, NAS)支持伺服器信息塊 (Server Message Block,SMB),網絡文件系統(Network File System,NFS),文件傳輸協議 (File Transfer Protocol,FTP),超文本傳輸協議(Hyper Text Transfer Protocol,HTTP) 等多種協議,當多種協議的客戶端同時工作在一個伺服器上時,由於協議之間的壁壘,只能 實現協議內的協議一致性,不能實現跨協議的協議一致性。基於上述原因會出現某一協議 訪問了一個已經被其他協議設置拒絕訪問的文件或者目錄,例如:用SMB協議創建的文件 在設置了排他訪問的時候依然可以被NFS協議打開或者刪除,兩個協議對文件系統操作的 流程如圖1所示,當SMB客戶端先打開一個文件filel並設置排他修改時,NFS客戶端的寫 請求就會直接修改filel,這就造成協議規則被破壞,數據不能得到保護,文件數據容易被改 寫,使得用戶體驗不好等問題。
【發明內容】
[0003] 本發明提供一種文件鎖實現方法及裝置,本發明所提供的方法和裝置解決多個協 議共存於一個網絡附屬存儲時,由於協議壁壘導致數據不能得到保護,文件數據容易被改 寫的問題。
[0004] 第一方面,本發明提供一種文件鎖實現方法,第一協議訪問文件系統時,該方法包 括:
[0005] 將所述第一協議的打開open對象映射為第一文件鎖,其中,open對象是指一次打 開open請求所產生的協議數據;
[0006] 根據預設的互斥規則將所述第一文件鎖和上一次訪問文件系統的第二協議對應 的第二文件鎖做衝突判斷,根據衝突判斷結果返回創建open請求失敗或者允許第一協議 訪問文件系統。
[0007] 結合第一方面,在第一種可能的實現方式中,所述衝突判斷包括;
[0008] 根據所述第二文件鎖確定所述第二協議是否允許其他open對象操作所述文件系 統;和/或
[0009] 根據所述第二文件鎖確定所述第二協議是否允許其他open對象緩存數據到所述 文件系統。
[0010] 結合第一方面的第一種可能的實現方式,在第二種可能的實現方式中,根據衝突 判斷結果返回創建open請求失敗或者允許第一協議訪問文件系統包括:
[0011] 當所述衝突判斷結果為所述第二協議不允許其他open對象操作所述文件系統, 則返回創建open請求失敗;否則允許第一協議訪問文件系統;
[0012] 當所述衝突判斷結果為所述第二協議不允許其他open對象緩存數據到所述文件 系統,則在召回第一協議已緩存的數據後,訪問所述文件系統。
[0013] 結合第一方面,或者第一方面的第一至二種可能的實現方式,在第三種可能的實 現方式中,根據預設的互斥規則將所述第一文件鎖和上一次訪問文件系統的第二協議對應 的第二文件鎖做衝突判斷包括:
[0014] 確定所述第二文件鎖中的第一標誌位與所述第一文件鎖中對應的第二標誌位不 相同,則以所述第一標誌位所指示的內容作為衝突判斷的結果。
[0015] 結合第一方面,或者第一方面的第一至三種可能的實現方式,在第三種可能的實 現方式中,當第一協議內部能夠生成open對象,則將所述第一協議的open對象映射為第一 文件鎖包括:
[0016] 確定第一協議的open對象是否有對文件系統的操作請求,如果有任一類型的操 作請求,則將所述第一文件鎖中與任一類型的操作對應的標誌位置位;
[0017] 確定第一協議的open對象是否允許其他open對象操作所述文件系統,如果允許 任一類型的操作,則將所述第一文件鎖中與任一類型的操作對應的標誌位置位;
[0018] 確定第一協議的open對象是否請求客戶端緩存,如果是,則將所述第一文件鎖中 與緩存對應的標誌位置位。
[0019] 結合第一方面的第四種可能的實現方式,在第五種可能的實現方式中,當第一協 議內部不會生成open對象,則確定第一協議的open對象是否有對文件系統的操作請求之 前,該方法還包括:
[0020] 生成臨時的協議open對象,並將所述臨時的協議open對象作為所述第一協議的 open對象。
[0021] 第二方面,本發明提供一種文件鎖實現裝置,第一協議訪問文件系統時,該裝置包 括:
[0022] 映射單元,用於將所述第一協議的打開open對象映射為第一文件鎖,其中,open 對象是指一次打開open請求所產生的協議數據;
[0023] 衝突判斷單元,用於根據預設的互斥規則將所述第一文件鎖和上一次訪問文件系 統的第二協議對應的第二文件鎖做衝突判斷,根據衝突判斷結果返回創建open請求失敗 或者允許第一協議訪問文件系統。
[0024] 結合第二方面,在第一種可能的實現方式中,衝突判斷單元具體用於根據所述第 二文件鎖確定所述第二協議是否允許其他open對象操作所述文件系統;和/或,根據所述 第二文件鎖確定所述第二協議是否允許其他open對象緩存數據到所述文件系統。
[0025] 結合第二方面的第一種可能的實現方式,在第二種可能的實現方式中,衝突判斷 單元具體用於當所述衝突判斷結果為所述第二協議不允許其他open對象操作所述文件系 統,則返回創建open請求失敗;否則允許第一協議訪問文件系統;當所述衝突判斷結果為 所述第二協議不允許其他open對象緩存數據到所述文件系統,則在召回第一協議已緩存 的數據後,訪問所述文件系統。
[0026] 結合第二方面,或者第二方面的第一至二種可能的實現方式,在第三種可能的實 現方式中,衝突判斷單元具體用於確定所述第二文件鎖中的第一標誌位與所述第一文件鎖 中對應的第二標誌位不相同,則以所述第一標誌位所指示的內容作為衝突判斷的結果。
[0027] 結合第二方面,或者第二方面的第一至三種可能的實現方式,在第三種可能的實 現方式中,當第一協議內部能夠生成open對象,則映射單元具體用於確定第一協議的open 對象是否有對文件系統的操作請求,如果有任一類型的操作請求,則將所述第一文件鎖中 與任一類型的操作對應的標誌位置位;確定第一協議的open對象是否允許其他open對象 操作所述文件系統,如果允許任一類型的操作,則將所述第一文件鎖中與任一類型的操作 對應的標誌位置位;確定第一協議的open對象是否請求客戶端緩存,如果是,則將所述第 一文件鎖中與緩存對應的標誌位置位。
[0028] 結合第二方面的第四種可能的實現方式,在第五種可能的實現方式中,當第一協 議內部不會生成open對象,則映射單元還用於生成臨時的協議open對象,並將所述臨時的 協議open對象作為所述第一協議的open對象。
[0029] 上述技術方案中的一個或兩個,至少具有如下技術效果:
[0030] 本發明實施例所提供的方法和裝置,每次open請求都會根據對應的open對象生 成一個文件鎖,所以每個文件鎖是與每個open對象對應的,不管第一協議和第二協議是否 相同,只要前一次open請求對文件系統進行了加鎖處理,則當前的open請求就需要依據互 斥規則做互斥判斷,只有當前的open請求對應的操作是文件系統已加文件鎖允許的操作 才能進行。所以本發明實施例提供的方法和裝置,可以融合異種協議,做到多種協議客戶端 對文件系統訪問的數據一致,從而保證了協議的完整性。
【專利附圖】
【附圖說明】
[0031] 圖1為現有技術中不同的兩個協議對文件系統操作的流程示意圖;
[0032] 圖2為本發明實施例提供的一種文件鎖實現方法的流程示意圖;
[0033] 圖3為本發明實施例中生成open對象的方法流程示意圖;
[0034] 圖4為本發明實施例中一種文件鎖實現裝置的結構示意圖。
【具體實施方式】
[0035] 為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例 中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是 本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員 在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
[0036] 下面結合說明書附圖對本發明實施例作進一步詳細描述。
[0037] 如圖2所示,本發明實施例提供一種文件鎖實現方法,第一協議訪問文件系統時, 該方法包括:
[0038] 步驟201,將所述第一協議的打開open對象映射為第一文件鎖,其中,open對象是 指一次打開open請求所產生的協議數據;
[0039] 本發明實施例所提供的文件鎖(或稱為open鎖)用來整合異種協議的訪問排他 權限以及其他高級特性,即當各種協議要訪問某一個文件或者目錄時,都需要先生成一個 open鎖,每次open請求對應的open鎖標示了該open請求所要進行的操作以及對其他操作 的排他選項;然後用open鎖來做跨協議的互斥判斷。
[0040] 步驟202,根據預設的互斥規則將所述第一文件鎖和上一次訪問文件系統的第二 協議對應的第二文件鎖做衝突判斷,根據衝突判斷結果返回創建open請求失敗或者允許 第一協議訪問文件系統。
[0041] 在本發明實施例中,每次open請求都會根據對應的open對象生成一個open鎖, 所以每個open鎖是與每個open對象對應的,不管第一協議和第二協議是否相同,只要前一 次open請求對文件系統進行了加鎖處理,則當前的open請求就需要依據互斥規則做互斥 判斷,只有當前的open請求對應的操作是文件系統已加 open鎖允許的操作才能進行。
[0042] 在本發明實施例中,通過open鎖可以對用戶的多種操作進行互斥判斷,根據衝突 判斷結果返回創建open請求失敗或者允許第一協議訪問文件系統,可選的衝突判斷包括:
[0043] A,當所述衝突判斷結果為第二協議不允許其他open對象操作所述文件系統,則 返回創建open請求失敗;否則允許第一協議訪問文件系統;
[0044] 在該實施例中,對文件系統的操作包括修改、刪除、插入等一切協議可對文件系統 進行的操作。
[0045] B,當所述衝突判斷結果為所述第二協議不允許其他open對象緩存數據到所述文 件系統,則在召回第一協議已緩存的數據後,訪問所述文件系統。
[0046] 在該實施例中,第二協議相對於第一協議而言,是先對文件系統進行操作的協議, 所以在一般情況下,第一協議要對文件系統進行操作之前,都需要根據第二文件鎖中的標 示確定第二協議是否允許其他協議對文件系統進行操作,如果第二文件鎖標示不允許執行 的操作,第一協議則不能執行。
[0047] 上述對文件系統的操作以及數據緩存的判斷可以是同時進行的也可以有選擇的 進行。
[0048] 為了更清楚詳細的說明本發明實施例所提供文件鎖,以下對文件鎖的一種可實現 的生成方法做具體的說明,具體包括:
[0049] 在該實施例中,文件鎖可以包括3部分:用來做訪問排他的互斥的sharelock,用 來做客戶端緩存互斥的lease和做保留待後續擴充的reserved,可以用一個32bit的整數 標示,如表1 :
[0050]
【權利要求】
1. 一種文件鎖實現方法,其特徵在於,第一協議訪問文件系統時,該方法包括: 將所述第一協議的打開open對象映射為第一文件鎖,其中,open對象是指一次打開 open請求所產生的協議數據; 根據預設的互斥規則將所述第一文件鎖和上一次訪問文件系統的第二協議對應的第 二文件鎖做衝突判斷,根據衝突判斷結果返回創建open請求失敗或者允許第一協議訪問 文件系統。
2. 如權利要求1所述的方法,其特徵在於,所述衝突判斷包括; 根據所述第二文件鎖確定所述第二協議是否允許其他open對象操作所述文件系統; 和/或 根據所述第二文件鎖確定所述第二協議是否允許其他open對象緩存數據到所述文件 系統。
3. 如權利要求2所述的方法,其特徵在於,根據衝突判斷結果返回創建open請求失敗 或者允許第一協議訪問文件系統包括: 當所述衝突判斷結果為所述第二協議不允許其他open對象操作所述文件系統,則返 回創建open請求失敗;否則允許第一協議訪問文件系統; 當所述衝突判斷結果為所述第二協議不允許其他open對象緩存數據到所述文件系 統,則在召回第一協議已緩存的數據後,訪問所述文件系統。
4. 如權利要求1?3任一所述的方法,其特徵在於,根據預設的互斥規則將所述第一文 件鎖和上一次訪問文件系統的第二協議對應的第二文件鎖做衝突判斷包括: 確定所述第二文件鎖中的第一標誌位與所述第一文件鎖中對應的第二標誌位不相同, 則W所述第一標誌位所指示的內容作為衝突判斷的結果。
5. 如權利要求1?4任一所述的方法,其特徵在於,當第一協議內部能夠生成open對 象,則將所述第一協議的open對象映射為第一文件鎖包括: 確定第一協議的open對象是否有對文件系統的操作請求,如果有任一類型的操作請 求,則將所述第一文件鎖中與任一類型的操作對應的標誌位置位; 確定第一協議的open對象是否允許其他open對象操作所述文件系統,如果允許任一 類型的操作,則將所述第一文件鎖中與任一類型的操作對應的標誌位置位; 確定第一協議的open對象是否請求客戶端緩存,如果是,則將所述第一文件鎖中與緩 存對應的標誌位置位。
6. 如權利要求5所述的方法,其特徵在於,當第一協議內部不會生成open對象,則確定 第一協議的open對象是否有對文件系統的操作請求之前,該方法還包括: 生成臨時的協議open對象,並將所述臨時的協議open對象作為所述第一協議的open 對象。
7. -種文件鎖實現裝置,其特徵在於,第一協議訪問文件系統時,該裝置包括: 映射單元,用於將所述第一協議的打開open對象映射為第一文件鎖,其中,open對象 是指一次打開open請求所產生的協議數據; 衝突判斷單元,用於根據預設的互斥規則將所述第一文件鎖和上一次訪問文件系統的 第二協議對應的第二文件鎖做衝突判斷,根據衝突判斷結果返回創建open請求失敗或者 允許第一協議訪問文件系統。
8. 如權利要求7所述的裝置,其特徵在於,衝突判斷單元具體用於根據所述第二文件 鎖確定所述第二協議是否允許其他open對象操作所述文件系統;和/或,根據所述第二文 件鎖確定所述第二協議是否允許其他open對象緩存數據到所述文件系統。
9. 如權利要求8所述的裝置,其特徵在於,衝突判斷單元具體用於當所述衝突判斷結 果為所述第二協議不允許其他open對象操作所述文件系統,則返回創建open請求失敗;否 則允許第一協議訪問文件系統;當所述衝突判斷結果為所述第二協議不允許其他open對 象緩存數據到所述文件系統,則在召回第一協議已緩存的數據後,訪問所述文件系統。
10. 如權利要求7?9任一所述的裝置,其特徵在於,衝突判斷單元具體用於確定所述 第二文件鎖中的第一標誌位與所述第一文件鎖中對應的第二標誌位不相同,則W所述第一 標誌位所指示的內容作為衝突判斷的結果。
11. 如權利要求7?10任一所述的裝置,其特徵在於,當第一協議內部能夠生成open 對象,則映射單元具體用於確定第一協議的open對象是否有對文件系統的操作請求,如果 有任一類型的操作請求,則將所述第一文件鎖中與任一類型的操作對應的標誌位置位;確 定第一協議的open對象是否允許其他open對象操作所述文件系統,如果允許任一類型的 操作,則將所述第一文件鎖中與任一類型的操作對應的標誌位置位;確定第一協議的open 對象是否請求客戶端緩存,如果是,則將所述第一文件鎖中與緩存對應的標誌位置位。
12. 如權利要求11所述的裝置,其特徵在於,當第一協議內部不會生成open對象,則映 射單元還用於生成臨時的協議open對象,並將所述臨時的協議open對象作為所述第一協 議的open對象。
【文檔編號】G06F21/62GK104463010SQ201410616691
【公開日】2015年3月25日 申請日期:2014年10月31日 優先權日:2014年10月31日
【發明者】梁建業, 向光友, 劉軍 申請人:華為技術有限公司