[發明專利]一種分布式的文件存儲方法有效
| 申請號: | 201611207434.4 | 申請日: | 2016-12-23 |
| 公開(公告)號: | CN108241640B | 公開(公告)日: | 2022-04-08 |
| 發明(設計)人: | 李振釗;王焰輝;曾剛 | 申請(專利權)人: | 中科星圖股份有限公司 |
| 主分類號: | G06F16/13 | 分類號: | G06F16/13;G06F16/182 |
| 代理公司: | 北京安博達知識產權代理有限公司 11271 | 代理人: | 徐國文 |
| 地址: | 101399 北京市順義區臨空經濟核*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 分布式 文件 存儲 方法 | ||
1.一種分布式的文件存儲方法,所述方法應用的系統結構包括管理服務器和多個文件服務器,所述管理服務器負責管理文件的清洗比對入庫,而文件服務器用于存儲數據;管理服務器和文件服務器之間,以及各個文件服務器之間通過網絡連接;所述網絡為局域網、互聯網或者廣域網;
其特征在于,該方法包括以下步驟:
步驟100:使用多個文件存儲服務器實現分布式的文件存儲,并使用管理服務器對所述文件存儲服務器進行管理;
步驟200:當需要存儲文件時,由管理服務器根據文件長度,確定是否對文件分塊,如果需要分塊則確定文件的分塊方式,將文件或者分塊發送到相應的文件存儲服務器進行存儲;
步驟300:文件存儲服務器根據接收的文件或數據塊的哈希值確定該數據的存儲方式;
所述方法的具體步驟如下:
(1)管理服務器接收需要存儲的文件;
所述管理服務器作為整個系統與外界的接口,接收外界發送來的文件,并負責采用后續的步驟將該文件存儲到文件服務器中;互聯網上的Web 服務器相當于所述管理服務器,接收用戶上傳的文件并存儲;
(2)所述管理服務器檢查所述文件的長度L,如果L小于預定義的最小數據塊長度MinBlockLength,則提取該文件的最后一個字節B,轉到步驟3;如果L ≥MinBlockLength,則轉到步驟5;
所述長度都是以字節為單位,由于一個字節為8位,則必然有0≤B≤255;所述最小數據塊長度是對文件分塊時的最小長度,其具體值可以由管理員根據具體情況設定;該MinBlockLength=1024字節;
(3)預先給系統中的256個文件服務器編號,分別命名為Server(i),其中 0≤i≤255,管理服務器將該文件發送到Server(B),同時保存該文件的相關信息;
根據數據塊結尾的字節,對數據塊進行分類;一個字節一共有256個取值,將數據塊分成256類,并且對應的分配到256個文件服務器,每個文件服務器的編號與其負責的數據塊的分類即結尾字節的值相同;
256個文件服務器為適用于大型的數據存儲系統,如果需要縮減成本,文件服務器之間可以進行復用,即多個數據塊類別共享一個文件服務器,該文件服務器有多個編號;
所述文件的相關信息包括文件的名字、大小、文件服務器的編號,由此管理服務器可以查詢到該文件;
(4)所述Server(B)計算該文件的哈希值,根據該哈希值判斷該文件是否已存儲在服務器中,如果已存儲,則該文件是重復數據,僅為該文件保留一個指針,指向已存儲的數據即可;如果并未存儲,則Server(B)存儲該文件和其哈希值,方法結束;
文件服務器保存了每個存儲的文件或數據塊的哈希值,因此將該文件的哈希值與已有哈希值進行比較,就可以判斷該文件是否是重復數據,如果是重復數據,就不用再次存儲整個文件;
(5)所述管理服務器準備對該文件進行數據分塊,首先設置初始的分塊向量 V=0;
(6)所述管理服務器從該文件的第MinBlockLength個字節開始向后掃描,當掃描某個字節等于分塊向量時,記錄該字節的位置P1,然后再從 P1+MinBlockLength的位置開始掃描,尋找并記錄下一個等于分塊向量的字節位置,如此循環,直到文件的末尾;換言之,每一次掃描的開始位置與上一次記錄位置的距離都是MinBlockLength,直到達到文件的末尾;
(7)根據步驟6的所記錄的位置,將每個位置作為一個數據塊的結尾,對文件進行分塊,由此可以得到一個或多個數據塊,設得到KV個數據塊;
步驟7得到的數據塊可能有兩類,第一類是以分塊向量V結尾的數據塊,第二類是文件的最后一個數據塊,即以B結尾的數據塊;其中第二類的數據塊的數量只能是1或者0,第一類數據塊的數據量也可能為0,這取決于文件的具體內容;
(8)分塊向量V增加1,如果V≤255,則返回步驟6,否則繼續步驟9;
所述步驟6-8是一個循環,基于0到255的每個分塊向量值進行文件掃描,從而獲得了多種數據塊分割形式,數量從K0到K255;
(9)對K0到K255按照從大到小進行排序,如果有相等的KV,則下標大的在前,獲取排在最前的(即最大的)4個值,假設為KV1,KV2,KV3,KV4 ;
(10)按照V1到V4四個分塊向量對該文件的分塊結果,將各個數據塊按照其結尾字節發送到相應的文件服務器進行重復性檢測;
如前所述,如果一個數據塊的結尾字節是X,則將該數據塊發送到Server(X);
(11)每個文件服務器對接收到的每個數據塊,計算其哈希值,根據該哈希值判斷該數據塊是否是重復數據,即該數據塊與已存儲的數據塊相同,將判斷結果發送給管理服務器;
(12)所述管理服務器根據步驟11接收到的判斷結果,從四種分塊方式中選擇重復數據量最多的兩種,如果重復數據量相同,則隨機選擇;根據這兩種分塊方式,通知相應的文件服務器進行存儲;管理服務器自身保存該文件的相關信息,包括其兩種分塊方式和相應的文件服務器;
文件服務器的存儲方式與步驟4相同,如果是重復的數據塊,則只保留指針和相應的哈希值,如果是不重復的數據塊,則保存該數據塊和相應的哈希值。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中科星圖股份有限公司,未經中科星圖股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611207434.4/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種數據去重方法
- 下一篇:一種分布式數據庫的操作方法





