[發明專利]一種分布式文件系統的實現方法有效
| 申請號: | 202310752241.0 | 申請日: | 2023-06-26 |
| 公開(公告)號: | CN116501713B | 公開(公告)日: | 2023-09-22 |
| 發明(設計)人: | 許忠文;鄧敏;袁瑞 | 申請(專利權)人: | 成都諧盈科技有限公司 |
| 主分類號: | G06F16/182 | 分類號: | G06F16/182;G06F16/16 |
| 代理公司: | 成都開拓專利代理事務所(特殊普通合伙) 51394 | 代理人: | 宋鵬程 |
| 地址: | 610000 四川省成都市*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 分布式 文件系統 實現 方法 | ||
1.一種分布式文件系統的實現方法,其特征在于,包括配置分布式文件系統的文件接口、文件系統接口以及文件管理接口;
所述文件接口、文件系統接口以及文件管理接口的實現包括客戶端和服務器端;所述客戶端用于提供接口的定義,所述服務器端用于提供接口的具體實現;
所述文件接口用于提供對分布式文件系統內文件的讀寫能力;基于函數配置文件接口的各操作和屬性;
所述文件接口的操作包括讀取操作、寫入操作、文件大小獲取操作、文件關閉操作以及設置文件讀寫指針位置操作;
所述讀取操作的實現步驟如下:
定義用于從文件中讀取指定長度數據的讀取函數,所述讀取函數使用兩個參數來輸出要讀取的數據和所讀取數據的長度,再使用分配函數從堆上分配一個CORBA對象,并將CORBA對象的最大值設置為指定長度,再分配一個緩沖區保存數據,接著將讀取數據的參數標記為已釋放狀態,表示所有權已傳遞給調用方,最后從文件描述符中讀取指定數量的數據塊到緩沖區中,并將讀取的數據存儲在變量中;若讀取操作中出現錯誤,則拋出異常;
所述寫入操作的實現步驟如下:
定義用于將指定長度的數據寫入文件中的寫入函數,所述寫入函數包括兩個參數,兩個所述參數分別指定要寫入的數據和所寫入的數據的長度;若數據長度大于0,則從文件描述符中寫入相應數量的數據,對應的寫入操作的實際字節數被存儲在變量中,若寫入操作期間出現錯誤,則拋出異常;若沒有錯誤且成功寫入了所有數據,則在文件接口內部對應的變量上增加寫入數據塊的字節數;
所述文件大小獲取操作的實現步驟如下:
定義用于獲取文件大小的文件大小獲取函數,所述文件大小獲取函數通過一個參數來設置CORBA環境變量,接著創建一個指向完整路徑名的字符串指針,將完整的路徑名保存在完整路徑名變量中,接著調用文件大小獲取函數來獲得文件的大小,并將結果保存在大小值變量中;若在獲取文件大小的過程中出現錯誤,則拋出異常,并返回異常值,最后釋放完整路徑名變量所占用的內存,并返回文件大小;
所述文件關閉操作的實現步驟如下:
定義用于關閉文件的文件關閉調用函數,通過文件關閉調用函數來調用文件關閉函數來實現文件的關閉,并判斷是否關閉成功,若關閉失敗則拋出異常并打印錯誤信息;若關閉成功,則調用在POA中卸載對象的函數將當前對象從POA中退出;
所述設置文件讀寫指針位置操作的實現步驟如下:
定義用于將文件讀寫指針移動到指定位置的指針移動函數,首先檢查目標位置是否超出文件大小的范圍,若超出則拋出異常,若未超出則調用設置文件位置的函數設置文件讀寫指針的位置,并將結果保存在變量中;
所述文件系統接口定義遠程訪問物理文件系統的操作,用戶能夠通過文件管理器訪問分布式文件系統;基于函數配置文件系統接口的各類操作;
所述文件系統接口的各類操作包括文件刪除操作、復制操作、存在操作、文件列出操作、打開操作、創建操作、目錄創建操作、目錄刪除操作以及文件系統屬性查詢操作;
所述文件刪除操作的實現步驟如下:
定義用于刪除文件的文件刪除函數,檢查文件名是否合法,若合法則獲取文件的完整路徑名,并將路徑名存儲在完整路徑名變量中,接著調用文件刪除函數來刪除文件,并判斷是否刪除成功,若刪除失敗則拋出異常;若刪除成功則釋放完整路徑名變量字符串所占用的空間;
所述復制操作的實現步驟如下:
定義用于從源文件復制內容到目標文件的復制函數,首先判斷源文件名稱和目標文件名稱是否相同,若相同則生成異常;若不相同,則調用復制函數來完成文件復制,接著判斷是否復制成功,復制成功后釋放對象所占用的資源;
所述存在操作的實現步驟如下:
定義用于判斷文件是否存在的判斷函數,首先檢查文件名是否合法,若合法則獲取文件的完整路徑名,并將該路徑名存儲在完整路徑名變量中,再調用判斷函數來確認文件是否存在,若文件存在則釋放完整路徑名變量字符串所占用的空間,并返回表示文件存在的值;若文件不存在,則釋放完整路徑名變量字符串所占用的空間,并返回表示文件不存在的值;
所述文件列出操作的實現步驟如下:
定義用于列出指定模式匹配的文件系統中的所有文件信息的匹配函數,首先將要查找的路徑模式存儲在本地模式中,接著檢查模式是否為合法的文件名模式,如果模式合法,則通過匹配函數查找匹配項,若存在匹配項,則創建一個包含匹配項數量的對象,并通過設置該對象的最大值和長度來指定緩沖區的最大容量和長度,接著迭代遍歷匹配到的每個文件中,并將文件信息添加到對象中,最后釋放資源并返回對象;
所述打開操作的實現步驟如下:
定義用于打開指定文件的打開函數,以便后續進行讀取或寫入操作,打開函數的參數包括文件系統對象的服務端、文件名稱、“只讀”和“創建”,在打開操作實現過程中,“創建”參數的值為0,表示如果文件不存在,不會自動創建一個新的文件,首先檢查文件名稱是否合法,若合法,將文件名稱與文件系統路徑合并,并存在完整路徑名變量中,接著打開文件,并獲取文件對象,最后釋放完整路徑名變量并返回打開的文件對象;
所述創建操作的實現步驟如下:
定義用于創建指定名稱文件的創建函數,首先傳入一個參數和文件名,然后通過調用打開函數來打開或創建該文件,并將得到的對象返回;使用打開函數進行調用時,將“只讀”參數設為0,并將“創建”參數設為1;其中“只讀”值為0時表示創建文件時既具備讀取又具備寫入的權限;“創建”值為1時則表示如果該文件不存在,則文件打開函數將創建該文件;
所述目錄創建操作的實現步驟如下:
定義用于創建新目錄的目錄創建函數,首先檢查目錄名是否有效,若有效則將根目錄路徑與給定的目錄名相連,得到它的絕對路徑,最后調用核心框架文件系統的內部創建目錄的機制來創建目錄,并將計算出的絕對路徑作為參數傳遞,目錄創建函數最后釋放動態分配的內存并返回;
所述目錄刪除操作的實現步驟如下:
定義用于刪除文件系統中的目錄的目錄刪除函數,首先檢查目錄名是否有效,如果有效則將根目錄與給定的目錄名相連,得到其完整路徑,然后在該目錄不包含任何文件時直接刪除該目錄,若該目錄包含文件,則返回錯誤信息,目錄刪除函數最后釋放動態分配的內存并返回;
所述文件系統屬性查詢操作的實現步驟如下:
定義用于查詢文件系統屬性的查詢函數,獲取指定目錄的大小和可用空間,并遍歷傳入的屬性列表,若屬性為CF_FileSystem_SIZE則將“大小”值放入屬性值,若屬性為CF_FileSystem_AVAILABLE_SPACE則將“可用空間”值放入屬性值,否則返回出錯信息,最后根據是否有無效屬性將對應的異常信息返回或釋放分配的內存并返回;
所述文件管理接口在繼承文件系統接口的同時還具備掛載和卸載的操作;基于函數配置文件管理接口的各類操作;
當應用調用文件、文件系統或文件管理的某個接口的某個操作時,首先應用調用客戶端的對應接口并把相應的參數傳遞給所述客戶端,然后客戶端使用EORB_Object_invoke()函數將文件系統對象和操作作為參數進行傳遞,通過CORBA遠程調用該操作;在遠程調用的過程中,通過對象適配器觸發文件系統服務端對象進行響應,通過文件系統服務端的結構體指針找到對應的操作并將結果傳遞給客戶端,最后客戶端將結果返回給應用。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于成都諧盈科技有限公司,未經成都諧盈科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310752241.0/1.html,轉載請聲明來源鉆瓜專利網。





